Software zwischen Arduino Uno und Esp8266


7

Ich habe ein Arduino UNO und HUZZAH ESP8266 Modul. Ich muss Daten zwischen Arduino UNO und ESP-Modul über Software Serial senden. Im Moment habe ich das ESP-Modul Daten schreiben und Arduino UNO-Anzeigedaten, aber es funktioniert nicht. Wenn ich das Arduino UNO starte und seinen seriellen Monitor öffne, wird nichts mit dem folgenden Quellcode gedruckt.

  1. ESP8266 RX PIN an Arduino UNO PIN 2 angeschlossen.
  2. ESP8266 TX PIN mit Arduino UNO PIN 3 verbunden.
  3. Verwenden Sie das mit HUZZAH ESP8266 gelieferte FTDI-Kabel, um dieses Modul mit Strom zu versorgen. Ich habe gerade die RX- und TX-Pins wie oben erwähnt einzeln mit den ARDUINO-PIN 2 und 3 verbunden.

Irgendwelche Ideen, warum nicht arbeiten? Unten finden Sie den Code für beide Module. Vielen Dank,

Arduino UNO

#include <SoftwareSerial.h>

SoftwareSerial ESPserial(2, 3); // RX | TX

void setup(void){
  //Start hardware Serial communication
  Serial.begin(115200);

  //Start the software serial for communication with the ESP8266 component
  ESPserial.begin(57600);  

}


void loop(void){



if (ESPserial.available()){
  Serial.println("ESP available!!!");
  Serial.println(ESPserial.read());
}


}

HUZZAH ESP8266

#include <ESP8266WiFi.h>

#include <SoftwareSerial.h>

SoftwareSerial ESPserial(2, 3); // RX | TX

void setup(void){
  //Start the software serial for communication with the Arduino UNO component
  ESPserial.begin(57600);

  //TODO: setup Wifi
}


void loop(void){
   ESPserial.write("This message generated by ESP module.");
   delay(500);
}

Was ist der Arduino Pin 2?

RX auf dem Arduino sollte mit TX auf dem esp verbunden sein und umgekehrt, es sieht so aus, als hätten Sie RX mit RX verbunden ...

Der Arduino Pin 2 ist digital.

@ Marquinio ja, aber ist es TX oder RX?

Antworten:


4

Stelle sicher das:

  1. Der RX-Pin am Arduino UNO ist mit dem TX-Pin am ESP8266 verbunden.
  2. Der TX-Pin am Arduino UNO ist mit dem RX-Pin am ESP8266 verbunden.
  3. Die Baudrate sollte sowohl vom Arduino als auch vom ESP8266 auf den gleichen Wert eingestellt werden.

Ich weiß nichts über dein Arduino, aber wenn du dir dieses Schema ansiehst, sollten dein RX und TX getauscht werden.

Geben Sie hier die Bildbeschreibung ein


Dies ist ein sehr häufiger Fehler, der auf den ersten Blick nicht offensichtlich erscheint.

3
Ja, das hat mein Problem behoben. Das ESP erhält jetzt Daten, die in Bytes zu sein scheinen. Ich werde versuchen herauszufinden, wie man lesbare Zeichenfolgen sendet / liest, aber das ist eine andere Geschichte. Mein Elektronikwissen ist sehr begrenzt, danke.

2

Hinzufügen zu der obigen Antwort. UNOs TX liegt bei 5 V, während der RX des ESP8266 bei 3,3 V liegt, da es sich um ein 3,3 V-Modul handelt. Es ist daher besser, einen Widerstandsteiler zu verwenden, um UNO 'TX auf 3,3 V zu bringen und dann an den RX von ESP zu speisen, anstatt sie direkt miteinander zu verbinden.


1
Umgekehrt reicht der 3,3-V-TX-Pin des ESP8266 normalerweise aus, um den 5-V-RX-Pin des Uno anzusteuern.
Linhartr22

0

// ESP

#include "SoftwareSerial.h"

SoftwareSerial ArduinoUno(D2,D3); //Rx, Tx

void setup() {

Serial.begin(9600);

ArduinoUno.begin(4800);

pinMode(D2, INPUT);

pinMode(D3, OUTPUT);

}

void loop() {

}

/******************************************************************************/

// UNO

#include "SoftwareSerial.h"

SoftwareSerial ArduinoUno(3,2); //Rx, Tx

void setup() {

Serial.begin(9600);

ArduinoUno.begin(4800);

}

void loop() {

  if(ArduinoUno.available() > 0){

    //float val = ArduinoUno.parseFloat();

    Serial.println(ArduinoUno.read());

  }

  delay(30);

}

Formatieren Sie Ihren Code richtig (STRG + K)
MichaelT
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.