两大开源硬件树莓派与Arduino的USB串口通讯
本文参考并结合两篇相关文章进行操作。
1、搭建树莓派串口通信开发环境
树莓派中安装python的GPIO模块(库文件),在树莓派中总链接不上,所以建议直接登录网址手动下载,并且可以选择最新版本(博主此时用的是RPi.GPIO-0.6.3)
https://sourceforge.net/projects/raspberry-gpio-python/files/
通过SSH方式(不在此介绍,博主用的是filezilla进行SSH传输)传输到树莓派中
tar xvzf RPi.GPIO-0.6.3.tar.gz(tar解压)
cd RPi.GPIO-0.6.3 (进入解压后的文件夹)
sudo python setup.py install (安装GPIO库文件)
安装serial,用于串口或者USB通信
sudo apt-get install python-serial
测试环境(nano/vi/vim,如果出现命令错误的三个都可以试一下,博主这里因为系统不支持vim命令所以用了vi)
sudo vi test.py
编辑如下代码
import serial
import RPi.GPIO
保存退出然后运行
sudo python test.py
没有报错说明环境搭建成功
2、安装串口调试工具
sudo apt-get install minicom
配置minicom
sudo minicom -s
启动出现配置菜单
选serial port setup →进入串口配置
输入A →配置串口驱动为/dev/ttyAMA0
输入E →配置速率为9600 8N1
输入F →将 Hardware Flow Control 设 为 NO
回车→退出
修改Modem and dialing,将Init string,Reset string,Hang-up string设置为空。
设置完成后,在配置菜单选Save setup as df1保存(将当前设置保存为默认设置)
选Exit→退出。
3、树莓派与arduino通过USB进行通信
①将树莓派与arduino通过usb线进行连接
②在树莓派终端输入
ls /dev/tty*
查看两者连接端口的名字。查看是否出现ttyACM0 。看到ttyACM0就说明二者可以通讯了
另一篇则提出是ttyUSB0或者ttyUSB1,博主无法解释,欢迎有大牛在评论解释一下。
所以博主认为可以在二者连接之前可以运行一次ls /dev/tty*,连接之后再运行一次ls /dev/tty*,看哪个是多出来的就知道是哪个了。
③编写树莓派与arduino通信代码。
Arduino:
void setup()
{
Serial.begin(9600); // 9600 bps
}
void loop()
{
if ( Serial.available())
{
if('s' == Serial.read())
Serial.println("Hello Raspberry,I am Arduino.");
}
}
把上面代码烧录到arduino中,再与树莓派usb链接。
RPI(树莓派)
import serial #import serial module
ser = serial.Serial('/dev/ttyACM1', 9600,timeout=1); #open named port at 9600,1s timeot#try and exceptstructure are exception handler
try:
while 1:
ser.write('s');#writ a string to port
response = ser.readall();#read a string from port
print response;
except:
ser.close();
上面代码在树莓派中保存为communication.py文件。
注:这里千万不要命名为serial.py,否则后面运行会出现 AttributeError: 'module' object has no attribute 'Serial' 的错误。
对代码的简单说明:树莓派向arduino发送一个字符‘s’,arduino向树莓派回复字符串“hello raspberry,i am arduino”。
④运行程序
在树莓派终端运行
sudo python communication.py
实际上博主是在做mfrc522,所以效果图略有不同,只要显示Hello Raspberry,I am Arduino.就说明可以了。
参考链接:
- song527730241. 使用串口连接Arduino与树莓派开发板[EB/OL]. https://blog.****.net/song527730241/article/details/50884890, 2016-03-04
- goasis. 树莓派与arduino通信[EB/OL]. https://blog.****.net/u011577439/article/details/51762076, 2016-06-26
- https://stackoverflow.com/questions/11403932/python-attributeerror-module-object-has-no-attribute-serial