Неверные символы в последовательном мониторе при подключении через USB 3.0
Я протестировал DHT11 + Arduino Uno с помощью очень простого примера-скетча. Плата Arduino была подключена к USB 3.0, и иногда я видел неправильные символы в последовательном мониторе, например, «Humidit?: _7%» вместо «Humidity: 37%». Этот странный эффект исчезал, когда я подключал плату к USB 2.0. Скорость передачи данных в коде всегда была такой же, как скорость передачи данных в настройках терминала.
Когда я увеличиваю скорость передачи данных, я вижу меньше плохих символов, но они не исчезают, пока Arduino подключен к USB 3.0.
Операционная система Ubuntu 20, это был первый раз, когда я подключил плату к USB 3.0. Это нормально?
Набросок:
/**
* DHT11 Sensor Reader
* This sketch reads temperature and humidity data from the DHT11 sensor and prints the values to the serial port.
* It also handles potential error states that might occur during reading.
*
* Author: Dhruba Saha
* Version: 2.1.0
* License: MIT
*/
// Include the DHT11 library for interfacing with the sensor.
#include <DHT11.h>
// Create an instance of the DHT11 class.
// - For Arduino: Connect the sensor to Digital I/O Pin 2.
// - For ESP32: Connect the sensor to pin GPIO2 or P2.
// - For ESP8266: Connect the sensor to GPIO2 or D4.
DHT11 dht11(4);
void setup() {
// Initialize serial communication to allow debugging and data readout.
// Using a baud rate of 9600 bps.
Serial.begin(9600);
// Uncomment the line below to set a custom delay between sensor readings (in milliseconds).
// dht11.setDelay(1500); // Set this to the desired delay. Default is 500ms.
}
void loop() {
int temperature = 0;
int humidity = 0;
// Attempt to read the temperature and humidity values from the DHT11 sensor.
int result = dht11.readTemperatureHumidity(temperature, humidity);
// Check the results of the readings.
// If the reading is successful, print the temperature and humidity values.
// If there are errors, print the appropriate error messages.
if (result == 0) {
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print(" °C\tHumidity: ");
Serial.print(humidity);
Serial.println(" %");
} else {
// Print error message based on the error code.
Serial.println(DHT11::getErrorString(result));
}
}
@Mik, 👍1
Обсуждение1 ответ
Пожалуйста, проверьте, нет ли несоответствия скорости передачи данных. Я имею в виду, что вы определили serial.begin(9600) в своем коде. Откройте последовательный монитор, выбрав ту же скорость передачи данных. Если проблема не в этом, проверьте кабель. Если у вас другая операционная система, например Windows, проверьте также и всю настройку с ней.
- Arduino Uno не загружает код и перегревается
- Arduino Uno R3 не распознается Arduino IDE в Ubuntu 21.04
- Как программировать микрочипы напрямую через USB
- Последовательная связь Arduino и AVR через USB
- Serial.write без приемника
- Два адруино подключены к малине по usb, но один переподключается во время выполнения кода обработки
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
Вы используете внутренний последовательный приемопередатчик UNO, верно?, @timemage
@timemage Думаю, да, на данный момент я не знаю вариантов общения, кроме как по умолчанию, @Mik
Это действительно похоже на плохой кабель или плохой порт USB на ПК. Сам Arduino не знает разницы, 2.0 это или 3.0. Когда вы меняете с 2.0 на 3.0, вы используете тот же кабель, просто в другом порту на ПК?, @Delta_G
@Delta_G да, я использую тот же кабель. USB 3.0 находится на плате расширения PCI-E, но другие устройства (донглы BT и WiFi, флэш-карты) работают правильно с этим кабелем, этим портом и его соседями. Гораздо лучше, чем со встроенными портами 2.0 материнской платы., @Mik
Я все еще думаю, что проблема будет где-то на стороне ПК., @Delta_G