Интерфейс ESP8266 и Arduino

Я подключил Arduino к ESP8266 с помощью

Контакт 2 Arduino, подключенный к Tx ESP. Контакт 3 Arduino, подключенный к Rx ESP через делитель напряжения. Arduino GND, подключенный к GND ESP. Arduino 3v3, подключенный к CH_PD ESP.

Я запитал ESP8266, используя регулятор напряжения 1117.

Когда я изначально купил ESp8266, он работал, но теперь показывает бесконечный поток мусорных значений...

Arduino запрограммирован следующим кодом

#include <SoftwareSerial.h>

SoftwareSerial esp8266(2,3); // make RX Arduino line is pin 2, make TX Arduino line is pin 3.
                             // This means that you need to connect the TX line from the esp to the Arduino's pin 2
                             // and the RX line from the esp to the Arduino's pin 3
void setup()
{
  Serial.begin(9600);
  esp8266.begin(9600); // your esp's baud rate might be different
}

void loop()
{
  if(esp8266.available()) // check if the esp is sending a message 
  {
    while(esp8266.available())
    {
      // The esp has data so display its output to the serial window 
      char c = esp8266.read(); // read the next character.
      Serial.write(c);
    }  
  }



  if(Serial.available())
  {
    // the following delay is required because otherwise the arduino will read the first letter of the command but not the rest
    // In other words without the delay if you use AT+RST, for example, the Arduino will read the letter A send it, then read the rest and send it
    // but we want to send everything at the same time.
    delay(1000); 

    String command="";

    while(Serial.available()) // read the command character by character
    {
        // read one character
      command+=(char)Serial.read();
    }
    esp8266.println(command); // send the read character to the esp8266
  }
}

person AngryBird    schedule 09.06.2015    source источник
comment
вы уверены, что это C?   -  person Natasha Dutta    schedule 09.06.2015
comment
Разве вы не знали? Язык Arduino — это просто набор функций C/C++, которые можно вызывать из вашего кода... Посетите: arduino.cc/en/Main/FAQ для получения дополнительной информации   -  person AngryBird    schedule 09.06.2015
comment
@AngryBird Здесь нет языка под названием C/C++. Ардуино больше C++, чем C.   -  person unwind    schedule 09.06.2015
comment
@angrybird И что? Я не понял, как сделать этот конкретный код действительным для тега c.   -  person Natasha Dutta    schedule 09.06.2015
comment
Как выглядит код esp8266, который отправляет данные? Я использую SoftwareSerial с esp-01 и не испытываю проблем при использовании скорости 9600 бод.   -  person August    schedule 06.07.2015


Ответы (5)


Ваш esp8266, вероятно, работает со скоростью 56000 или 115200 бод, а не 9600. Это приведет к чтению мусора.

Если 115200, он не будет работать на обычных цифровых контактах с программным серийным номером.

Если более старая плата, то можно попробовать поменять на 56000:-

 esp8266.begin(56000); // your esp's baud rate might be different

В противном случае вам нужно будет подключить esp8266 к порту HardwareSerial.

 Serial.begin(115200);
person Visual Micro    schedule 28.06.2015

Код кажется правильным, но вы должны проверить скорость передачи данных ESP8266, возможно, другую. Проверьте следующее:

  1. Проверьте только скорость передачи данных ESP8266, как только она у вас появится, объявите ту же скорость передачи в вашем Arduino.

  2. Проверьте свою модель Arduino, некоторые клоны, такие как nano, управляют напряжением, отличным от исходного,

person Victor Quintana    schedule 23.10.2017

Загрузите код и проверьте последовательный монитор на наличие ответа с определенной скоростью передачи данных. Если вы не получили ответа на определенной скорости передачи данных, измените скорость передачи данных, пока не получите ответ. Для нескольких модулей скорость передачи данных по умолчанию будет 57600. Поэтому проверьте ее.

Вы можете использовать приведенный выше код и изменить скорость передачи esp8266.begin(56000);, изменить скорость передачи, например, 9600,56000,112500 и т. д., и проверить последовательный монитор со скоростью 9600 бод.

Serial.begin(9600);

вы получите ответ на мониторе, а также попробуйте сбросить модуль Wi-Fi, подключив 3,3 В к контакту RST на 1-2 секунды. Надеюсь, поможет.

person vallabh    schedule 20.11.2017

В дополнение к другим ответам попробуйте заменить делитель напряжения преобразователем логического уровня, потому что esp имеет логику 3,3 В, а логику Arduino 5 В.

person LucasRT    schedule 28.11.2017

Проверьте логическое значение, так как esp8266 работает на скорости 3,3 В и последовательном порту. В некоторых случаях ESP8266 может иметь внутренние сбои и создавать мусорные значения. Что касается ESP8266, проверьте здесь Мне очень помогло

person Venkat Sai    schedule 17.12.2017