串口通信——硬串口

为了便于后期问题的解决,在此我们梳理一下Arduino的硬串口(HardwareSerial)与软串口(SoftwareSerial)之前的区别与联系,以及在使用过程中应该注意的问题。


Arduino面板

以常见的Arduino UNO为例,面板上只有一组串行端口,即引脚 0(RX)和1(TX)。 电脑与Arduino的通信即通过这两个端口进行,USB口通过一个转换芯片(通常为ATmega16 u2)与这两个串口引脚连接,虽然表面上电脑没有直接用外置的电线与这两个引脚相连,但是二者之间的效果是一样的。当Arduino控制器使用USB线与计算机相连时,两者之间便建立了串口连接。通过此连接,Arduino控制器可与计算机相互传数据了。

通常一个串口只能连接一个设备进行通信(划重点)。

为了让读者理解的更加深刻,在此以曾经犯过的一个错误为例:


连线图

项目是通过Arduino+ESP8266实现联网传输数据的功能,为了提高性能我选择了ESP8266通信端口与Arduino的硬串口相连接。程序编译没有错误,但是在上传的过程中总是报错,而这个错误就是因为我的串口同时和两个设备相连接导致的。


软件报错明细

相信聪明的读者,肯定不会犯这种幼稚错误的,在此博君一笑。

2018/7/4