Последовательная связь arduino mega и D1 Wemos Mini

Может ли кто-нибудь помочь мне последовательно подключить arduino mega к D1 Wemos Mini? Пожалуйста, дайте мне знать наиболее эффективные и простые шаги для настройки связи.

Используя следующее руководство:

https://engineeringprojectshub.com/serial-communication-between-nodemcu-and- ардуино/усилитель/

Следующая схема: https://i.stack.imgur.com/oOKwL.png

, 👍0

Обсуждение

Rx к Tx3 и Tx к RX3, земля и 3,3 В. Готово. в Mega в коде используйте Serial3 для связи с esp8266., @Juraj

@Juraj Устойчив ли Wemos Mini 5V? В противном случае потребуется делитель напряжения между Mega TX и Wemos RX., @chrisl

@AliHassanRaza В чем именно у вас проблема с настройкой соединения? Последовательный (также известный как UART) имеет только 2 линии плюс заземление. В сети есть много обучающих программ. Они тебе не помогли? Что именно вы не могли понять там?, @chrisl

@chrisl, делитель напряжения ограничит скорость и усложнит устранение неполадок ... esp8266 может выдерживать логический подтягивающий ток 5 В для теста. в долгосрочной настройке я рекомендую переключатель уровня, а не делитель напряжения, @Juraj

Я ничего не получаю, когда пытаюсь последовательно их передать., @Ali Hassan Raza

Затем вам нужно показать нам свой код и проводку. Пожалуйста, отредактируйте свой вопрос и добавьте информацию туда, а не в комментарии, так как комментарии носят временный характер., @chrisl

если (особенно доступно()>0) { Serial.println("Внутри"); целочисленные данные = esp.read(); Serial.println(данные); } Он не входит в это состояние ни на стороне arduino, ни на стороне esp., @Ali Hassan Raza

Используя следующий учебник: https://engineeringprojectshub.com/serial-communication-between-nodemcu-and-arduino/amp/, @Ali Hassan Raza

что такое есп? Серийный? используйте аппаратный Serial3 (или 1 или 2). SoftwareSerial не работает на всех контактах Mega, @Juraj


1 ответ


Лучший ответ:

2

Помимо обеспечения подключения TX -> RX и подключения всех заземлений, вы можете использовать SerialTransfer.h для автоматической пакетной передачи. и проанализируйте ваши данные для связи между Arduino без головной боли. Библиотека устанавливается через Arduino IDE и включает множество примеров.

Вот функции библиотеки:

Эта библиотека:

  • можно загрузить с помощью диспетчера библиотек Arduino IDE (поиск «SerialTransfer.h»)
  • работает с программными серийными библиотеками
  • не блокирует
  • использует разделители пакетов
  • использует последовательное заполнение служебных байтов
  • использует CRC-8 (многочлен 0x9B с таблицей поиска)
  • позволяет использовать пакеты с динамическим размером (пакеты могут иметь длину полезной нагрузки от 1 до 254 байт)
  • может передавать байты, целые числа, числа с плавающей запятой и даже структуры!!

Пример скетча TX Arduino:

#include "SerialTransfer.h"

SerialTransfer myTransfer;

void setup()
{
  Serial.begin(115200);
  Serial1.begin(115200);
  myTransfer.begin(Serial1);
}

void loop()
{
  char buff[] = "hi";

  myTransfer.txObj(buff, sizeof(buff));
  myTransfer.sendData(sizeof(buff));
  delay(100);
}

Пример скетча RX Arduino:

#include "SerialTransfer.h"

SerialTransfer myTransfer;

void setup()
{
  Serial.begin(115200);
  Serial1.begin(115200);
  myTransfer.begin(Serial1);
}

void loop()
{
  if(myTransfer.available())
  {
    char buff[40];
    
    myTransfer.rxObj(buff, sizeof(buff));
    
    Serial.println("New Data: ");
    Serial.write(buff, sizeof(buff));
    Serial.println();
  }
  else if(myTransfer.status < 0)
  {
    Serial.print("ERROR: ");

    if(myTransfer.status == -1)
      Serial.println(F("CRC_ERROR"));
    else if(myTransfer.status == -2)
      Serial.println(F("PAYLOAD_ERROR"));
    else if(myTransfer.status == -3)
      Serial.println(F("STOP_BYTE_ERROR"));
  }
}
,