准备: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才是高电平)。
- 细心的小伙伴发现了接收到的每句后总是多一个,想想多了一个什么字符呢?