Обмен данными ESP32-243S028 (СYD) и NANO UART.

AFV

✩✩✩✩✩✩✩
17 Дек 2023
11
0
Передача данных UART (Serial port) ESP32 to NANO работает отлично. Передача в обратную сторону не работает совершенно. Пакеты от NANO отправляются и всё esp32 их не видит. Использую делитель напряжения. Не могу не как разобраться посему сигнал не приходит

Отправка данных из NANO:
void readSendDTH(){
  // функция получает и отправляет данные в Serial

  if(millis()- msdth > 2000){
    float h = dht.readHumidity();
    float t = dht.readTemperature();
    msdth = millis();
    
    if(!isnan(h) & !isnan(t)){
      // если данные корректны
      datatemphum.temp = t;
      datatemphum.hum = h;
      Serial.write((byte*)&datatemphum, sizeof(datatemphum));
  
    }
  }
}

Приём данных ESP32:
void getDTH(){
   // принимаем данные от DTH
  if(Serial.available() > 0 ){
    Serial.readBytes((byte*)&datatemphum, sizeof(datatemphum));
    lv_label_set_text_fmt(label_temp,  "Temperature: %.2f", datatemphum.temp);
    }
}
Делитель напряжения подключен так:

code_language.lua:
TX Nano ---[1kΩ]---.
                   +---[2kΩ]--- GND
                   |
RX ESP32 ----------'
 

Bruzzer

★★★✩✩✩✩
23 Май 2020
587
176
Я не работал с данным устройством.
Но общая рекомендация, если есть сомнение в работоспособности узла, то сначала проверяется именно работоспособность, без доп. алгоритмов. Например отправляете с NANO раз в секунду байт. На ESP выводите в Serial на USB, то что получили.
 
  • Лойс +1
Реакции: AFV

AFV

✩✩✩✩✩✩✩
17 Дек 2023
11
0
@Bruzzer, не приходит, если с компьютера отправляю через монитор порта, всё приходит.
 

Sergo_ST

★★★★★★✩
15 Мар 2020
1,056
877
@AFV, Если ваша ESP32 имеет на борту USB -> TTL преобразователь(по типу CH340) и вы подключаете ESP32 через её USB порт к пк, то ничего приходить от Nano и не будет, тк RX ESP32 подключен к TX TTL преобразователя.

Насколько я знаю у семейства ESP32 есть несколько UART-ов на борту, и их можно переназначать практически на любые пины, поэтому стоит использовать другие пины для подключения Nano, переназначив пины UART на новые.

Вот часть кода для инициализации 1-го UART-а на произвольные пины:
C++:
#include <HardwareSerial.h>
HardwareSerial SerialNANO(1); //название нового Serial - SerialNANO(номер UART)

void setup() {
  SerialNANO.begin(скорость, SERIAL_8N1, пин RX, пин TX); //инициализация UART

  //Обращаться к новому UART нужно через имя SerialNANO:
  //SerialNANO.write();
  //SerialNANO.read();
  //SerialNANO.print();
  //SerialNANO.println();
  //SerialNANO.available();
}
 
Изменено:
  • Лойс +1
Реакции: AFV и Bruzzer

Bruzzer

★★★✩✩✩✩
23 Май 2020
587
176
@AFV,
Вы слов не жалейте. Пишите подробнее.
На этой плате есть много разъемов. ESP32-243S028

Что не приходит? Подробно пишите как подключаете. Что откуда и как отправляете. Как проверяете получение.

>если с компьютера отправляю через монитор порта, всё приходит.
Аналогично.
 

AFV

✩✩✩✩✩✩✩
17 Дек 2023
11
0
@Sergo_ST, Спасибо вам большое! Сделал как вы написали, всё заработало!