【小实验】之NEO与UNO串口通信
-
准备:Widora NEO * 1,Arudino UNO * 1,杜邦线三条。
写Arduino代码,最简单的就实现串口数据回环吧,为了更容易识别数据,目前设计程序如下:
- 设备-----> UNO 发送数据“A”
- UNO-----> 设备 返回数据"I received:A"
- 波特率115200,8数据位,无校验,1停止位。
arduino程序如下:
// the setup routine runs once when you press reset: void setup() { Serial.begin(115200); } int rev = 0; void loop() { if (Serial.available() > 0) { rev = Serial.read(); Serial.print("I received:"); Serial.write(rev); } delay(1); // delay in between reads for stability }
使用Arduino IDE测试效果:
到这里,Arduino端开发完毕。
接着NEO这边只要刷了最新固件,就可以测试。使用杜邦线将NEO和UNO链接起来:
NEO UNO TXD2 RX RXD2 TX GND GND 效果如图:
迫不及待的上电测试,为了方便观察通信,我们起两个终端,一个是NEO的串口console,另一个是网络telnet(需要提前电脑连接NEO的网络)。
- 按照wiki中介绍的串口教程,还是需要先对串口进行初始化,运行如下命令:
root@Widora:/# uarttest /dev/ttyS2 115200 8 0 1 0
运行后Ctrl + C 强行结束即可。
2. 可以进行通信测试了。使用网络控制台接收串口数据:root@Widora:/# cat /dev/ttyS2
- 使用串口控制台发送数据,命令是:
root@Widora:/# echo A > /dev/ttyS2
- 好了,数据来了:
后记:
- 目前未进行电平匹配,UNO是5V TTL,而NEO是3.3V TTL,实际产品上一定要进行电平匹配。一般是3.3V---->5V方向通信容易出问题(5V TTL认为大于3.5V才是高电平)。
- 细心的小伙伴发现了接收到的每句后总是多一个,想想多了一个什么字符呢?