我想通过UART从我的ESP8266设备向Arduino Uno板发送数据。
ESP8266已经刷入了NodeMCU固件(构建版本的时间戳为:
ESP开发板通过我的笔记本电脑USB串行电缆供电。我正在使用 this one 这个,它为我提供5V以给我的板子供电,并且我知道我的Mac上的USB可以提供所需的500mA。
Arduino也通过我的电脑上的另一个USB端口供电。
ESP板和Arduino连接如下:
我在Arduino上运行的代码是:
当我重置我的ESP板时,在Arduino串行监视器上看到的是垃圾信息。
ESP8266已经刷入了NodeMCU固件(构建版本的时间戳为:
nodemcu-master-8-modules-2017-05-30-19-21-49-integer
)。该固件仅使用以下模块进行构建:file, gpio, net, node, tmr, uart, websocket, wifi
。ESP8266开发板本身是Adafruit Huzzah板。ESP开发板通过我的笔记本电脑USB串行电缆供电。我正在使用 this one 这个,它为我提供5V以给我的板子供电,并且我知道我的Mac上的USB可以提供所需的500mA。
Arduino也通过我的电脑上的另一个USB端口供电。
ESP板和Arduino连接如下:
ESP8266
TX RX GND
| | |
| | |
10 11 |
RX TX GND
Arduino
Adafruit Huzzah板块声称:
TX引脚是模块的输出,为3.3V逻辑电平。RX引脚是模块的输入,兼容5V(该引脚上有电平转换器)。
因此这两者之间不需要电平转换器。
我在ESP8266板上运行的代码,名为init.lua
:
uart.setup(0,115200,8,0,1)
tmr.alarm(0, 5000, 0, function()
uart.write(0, "A", 19)
end)
我在Arduino上运行的代码是:
#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]);
}
}
当我重置我的ESP板时,在Arduino串行监视器上看到的是垃圾信息。
⸮⸮⸮⸮⸮⸮Z,⸮}⸮߿⸮ߏ⸮\⸮⸮LYLYLYLYL⸮L⸮L⸮L⸮L⸮L (((((⸮$⸮$⸮$⸮$⸮$⸮$⸮4⸮0⸮@⸮@⸮@⸮@⸮@⸮@⸮@⸮@⸮@⸮@⸮@⸮@ ((((⸮$:⸮&i(⸮⸮
稍有延迟后,它开始打印出一行又一行的垃圾文字。很明显,在某个地方存在不匹配的问题。
我已经查找了此事的先前问题,但我找到的唯一一个与我的用途最接近的问题仅简单声明应该阅读文档,这并没有什么帮助。
有人知道这里出了什么问题吗?