【小实验】之NEO与UNO串口通信


  • administrators

    准备: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测试效果:

    0_1500872510290_arduino.png

    到这里,Arduino端开发完毕。

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

    NEO UNO
    TXD2 RX
    RXD2 TX
    GND GND

    效果如图:
    0_1500873031137_IMG_0130.JPG

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

    0_1500873441420_console.png

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

    运行后Ctrl + C 强行结束即可。

    1. 可以进行通信测试了。使用网络控制台接收串口数据:
    root@Widora:/# cat /dev/ttyS2
    
    1. 使用串口控制台发送数据,命令是:
    root@Widora:/# echo A > /dev/ttyS2
    
    1. 好了,数据来了:
      0_1500873766633_test.png

    后记:

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