电子设备或者模块在需要同外界进行通信时,经常采用串行通信的方式,即逐位传输一系列二进制编码数据。基于单片机的电子设备的串口有很大一部分使用的是 TTL电平标准,它的逻辑1电平是5V,逻辑0电平是0V;而我们常用的PC机串行口所使用的却是RS-232C电平标准,它的逻辑1电平是 -3V~-12V,逻辑0电平是+3V~+12V。由于两者的电平范围相差很远,因此必须在RS-232C和TTL电路之间进行电平和逻辑关系的变换之 后,才能在PC机和这类电子设备间实现串行通信。一般来讲,实现这种变换的电路可以用分立元件搭建,也可以使用MAX232这样的集成电路芯片。
我们开发的电子积木串口适配器,就是采用了MAX232芯片的电平转换模块,可以很方便地在Arduino和PC间建立起串口通信。由于Arduino自带的是USB转串口的方案,实际使用时如果觉得复杂或是稳定性不够,可以考虑这一串品适配器,由于缺少了USB转串口这一中间环节,通信方式更加直接。不过目前该模块还只能用在Arduino MEGA上,并且只能用在串口COM1, COM2, COM3上,原因可能是COM0是直接同USB转串口芯片连接的,它与MAX232之间似乎不是很兼容。
基于串口的电子积木使用的都是4芯的IIC/COM连接线,利用它可以将串口适配器非常方便地连接到Arduino MEGA专用传感器扩展板上,从而完成同Arduino的通信:
最后再用一根串口线连接PC和串口适配器,硬件部分的连接就完成了:
至于软件部分,在PC端我们可以借用SSCOM这样的串口调试工具,而Arduino这端则使用如下的测试代码:
int val = 0; void setup() { Serial1.begin(9600); } void loop() { val = Serial1.read(); if (-1 != val) { if ('A' == val || 'a' == val) { Serial1.println("Hello from Arduino!"); } } }
将上述代码下载到Arduino中执行后,Arduino会一直等待从PC端过来的命令,如果按受到字符A,则向PC端发送”Hello from Arduino!”这一字符串:

No tags
