2017-06-11 16 views
3

Ich möchte Daten von meinem ESP8266-Gerät über UART an eine Arduino Uno-Karte senden.Daten über UART von ESP8266 (NodeMCU) an Arduino senden

Der ESP8266 wurde mit der NodeMCU Firmware geflasht (der Build hat den folgenden Zeitstempel: nodemcu-master-8-modules-2017-05-30-19-21-49-integer). Die Firmware wurde nur mit den folgenden Modulen erstellt: file, gpio, net, node, tmr, uart, websocket, wifi. Das ESP8266 Board selbst ist ein Adafruit Huzzah Board.

Die ESP-Karte wird über ein serielles Kabel von meinem Laptop USB gespeist. Das Kabel, das ich verwende, ist , das mir 5V für die Stromversorgung meines Boards zur Verfügung stellt und ich weiß, dass der USB auf meinem Mac die 500mA benötigt, die benötigt werden.

Der Arduino wird auch über den anderen USB-Port an meinem Computer mit Strom versorgt.

Das ESP-Platine und die Arduino verbunden sind, wie folgt:

ESP8266 
TX  RX GND 
|   |  | 
|   |  | 
10  11 | 
RX  TX GND 
Arduino 

Die Adafruit Huzzah Platte behauptet, dass:

Der TX Stift der Ausgang von dem Modul ist und 3,3V Logik. Der RX-Pin ist der Eingang in das Modul und ist 5V konform (es gibt eine Ebene Schieber auf diesem Stift)

So sollte es keine Notwendigkeit für eine Ebene zwischen diesen beiden umgewandelt werden.

Der Code, den ich auf dem Esp8266 Board leite, wie init.lua ist:

uart.setup(0,115200,8,0,1) 

tmr.alarm(0, 5000, 0, function() 
    uart.write(0, "A", 19) 
end) 

Der Code, den ich auf dem Arduino leite ist:

#include <SoftwareSerial.h> 

#define rxPin 10 
#define txPin 11 

MeetAndroid meetAndroid; 
SoftwareSerial sSerial(rxPin, txPin); 
uint8_t lastByte; 
uint8_t serialBuffer[64]; 
int count = 0; 
int onboardLed = 13; 


void setup() { 
    pinMode(rxPin, INPUT); 
    pinMode(txPin, OUTPUT); 
    Serial.begin(115200); 
    sSerial.begin(115200); 
    pinMode(onboardLed, OUTPUT); 
    digitalWrite(onboardLed, HIGH); 

} 

void loop() { 
    while (sSerial.available() > 0) { 
    serialBuffer[count] = sSerial.read(); 
    count++; 
    } 
    for (int i = 0; i < count; i++) { 
    Serial.println(serialBuffer[i]); 
    } 
} 

Was ich auf dem Serial Monitor sehen in einmal Arduino setze ich mein ESP Board ist Müll:

⸮⸮⸮⸮⸮⸮Z,⸮}⸮߿⸮ߏ⸮\⸮⸮LYLYLYLYL⸮L⸮L⸮L⸮L⸮L (((((⸮$⸮$⸮$⸮$⸮$⸮$⸮4⸮0⸮@⸮@⸮@⸮@⸮@⸮@⸮@⸮@⸮@⸮@⸮@⸮@ ((((⸮$:⸮&i(⸮⸮ 

Nach einer kurzen Verzögerung es Anfang s Zeile für Zeile des Abfalls nach dieser Anfangszeile auszudrucken. Mir ist klar, dass irgendwo ein Missverhältnis besteht.

Ich habe nach früheren Fragen zu diesem Thema gesucht, aber das einzige, das ich finden konnte, das war am nächsten zu meiner Verwendung, erklärte einfach, dass one ought to read the docs, die nicht sehr hilfreich war.

Weiß jemand, was hier nicht stimmt?

+0

Hallo arbeite ich an einem Projekt zu verwenden, die in einer ähnlichen Situation mit Ihnen. Hast du die Lösung gefunden? Ich denke, dass Software-Serien nicht ordnungsgemäß auf 115200 Baudrate funktionieren? –

Antwort

1

Sie müssen eine korrekte Baudrate einstellen. Sie können die Baudrate in der unteren rechten Ecke des seriellen Monitors einstellen.

Ich ziehe den Standard Debug-Baudrate von 9600.

+1

@catileptic einzige Sache, die ich hinzufügen wird, ist Ihre Baudrate ist 115200 so, 9600 zu verwenden, müssen Sie es in beiden Geräten ändern –

+0

Ja, habe ich nicht erwähnt, sorry. Danke Nikhil! – anonjnr

Verwandte Themen