【小实验】之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测试效果:

!1500872510581-arduino.png

到这里,Arduino端开发完毕。

接着NEO这边只要刷了最新固件,就可以测试。使用杜邦线将NEO和UNO链接起来:

NEO UNO
TXD2 RX
RXD2 TX
GND GND

效果如图:
!

迫不及待的上电测试,为了方便观察通信,我们起两个终端,一个是NEO的串口console,另一个是网络telnet(需要提前电脑连接NEO的网络)。

!

  1. 按照wiki中介绍的串口教程,还是需要先对串口进行初始化,运行如下命令:
root@Widora:/#  uarttest /dev/ttyS2 115200 8 0 1 0

运行后Ctrl + C 强行结束即可。
2. 可以进行通信测试了。使用网络控制台接收串口数据:

root@Widora:/# cat /dev/ttyS2
  1. 使用串口控制台发送数据,命令是:
root@Widora:/# echo A > /dev/ttyS2
  1. 好了,数据来了:
    !

后记:

  1. 目前未进行电平匹配,UNO是5V TTL,而NEO是3.3V TTL,实际产品上一定要进行电平匹配。一般是3.3V---->5V方向通信容易出问题(5V TTL认为大于3.5V才是高电平)。
  2. 细心的小伙伴发现了接收到的每句后总是多一个,想想多了一个什么字符呢?