虽然Edison本身就装在一块Arduino扩展板上,但当要接的传感器太多了的时候一个扩展板也不够用了。因此需要再用一Arduino板扩展功能。而两者需要通信才能达到一个整体的效果,因此这里介绍如何用USB连接Arduino和Edison来达到通信的目的。接下来进入教程正文:
一、硬件
1.系统内装有python解释器的Edison开发板
2.电源
3.Arduino
4.Arduino usb连接线
二、为Arduino烧录程序
打开Arduino IDE,给你的Arduino烧录以下程序:
String txt;
void setup(){
Serial.begin(9600);
}
void loop(){
if (Serial.available()){
txt = Serial.readString();
Serial.print("character received:");
Serial.println(txt);
}
}
这个程序的功能就是当Arduino接收到Edison通过串口发来的消息后,在这段消息前加上“character received:”再发送回给Edison。
三、连接
Edison在一个micro usb口供电的情况下是不会启用usb type-A口的,所以请务必用专用电源给Edison供电。然后查看Edison上连接的串口设备:在ssh连接上Edison后输入
ls /dev/tty*
再把Arduino通过USB连接线插到Edison的USB口。再查看一次Edison上的串口设备。这个时候会发现列表中多了一个设备,这个串口名就是你Arduino的啦。如图:
四、为Edison编写代码
这里要用到python的一个名为serial的模块,专门用来获取串口的数据。因为我的Edison上显示Arduino的串口名是/dev/ttyACM0,所以serial.Serial()的第一个参数就是/dev/ttyACM0,如果你的串口名不是这个,就替换为你设备上显示的端口名就好了。示例使用的是python2。
import serial
ser = serial.Serial(‘/dev/ttyACM0’, 9600, timeout=1)
ser.open()
try:
while 1:
txt = raw_input()
ser.write(txt)
response = ser.readline()
print response
except KeyboardInterrupt:
ser.close()
五、运行和调试
启动程序,之后输入hello:
>>> hello
character received:hello
可以看出Edison和Arduino已经开始通信啦。