最近在学习树莓派,想使用树莓派的串口(GPIO)与PC通讯,顺便学习python。就尝试着在树莓派和PC间进行串口通讯,这里备份下实现方式。
CONTENTS
启用树莓派串口
以下转自【 http://ju.outofmemory.cn/entry/19541 】
系统中对应的串口设备是/dev/ttyAMAO,但默认用于内核输出日志的。若想连接串口设备,比如GPS模块,需要改动系统这个默认配置。
启用方法:
1 修改 /boot/cmdline.txt
首先备份文件
pi@raspberrypi ~ $ cd /boot/ pi@raspberrypi /boot $ sudo cp cmdline.txt cmdline_bak
然后将cmdline.txt文件中的【 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 】删除,文件对比如下:
pi@raspberrypi /boot $ cat cmdline.txt dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait pi@raspberrypi /boot $ cat cmdline_txt_bak dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
2 修改 /etc/inittab
首先备份文件
pi@raspberrypi ~ $ cd /etc/ pi@raspberrypi /etc $ sudo cp inittab inittab_bak
然后将inittab文件的【 T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100 】注释掉,即前面加【 # 】。
3 重启树莓派 sudo reboot
测试方法:
重启成功之后,先测试下串口是否OK,将串口连到PC上,使用SSH连接到树莓派上。
输入命令,查看串口的文件名称【 ls /dev/tty* 】,输出如下,一般为【 /dev/ttyAMA0 】。
给树莓派安装测试软件:
sudo apt-get install minicom
安装好之后,输入命令【 sudo minicom -s 】启动minicom,【-s】选项表示要进行设置,会弹出如下页面:
minicom功能有很多,但是我们目前只使用最简单的功能。
通过上下键选择【 Serial port setup 】,进入配置页面, 如下:
按【 A 】键,修改设备名称,其他的配置可以根据实际情况,作者的配置如上图。输入回车配置完成。
通过上下键选择到【 Save setup as dfl 】,将配置保存为默认。
通过上下键选择到【 Exit 】,退出设置,进入通讯界面,选择【 Exit from Minicom 】,是退出整个minicom。
通讯界面如下:
打开PC上的串口通讯软件,就可以进行测试了。测试完成之后,退出方法也很简单,按【 CTRL-A 】键,然后按【 Z 】键,进入命令页面:
输入【 Q 】即可退出minicom。
使用python进行串口编程
由于树莓派系统附带了python,因此我们可以很简单的使用python来进行串口通讯,python进行串口通讯依赖一个库【 pyserial 】。
安装pyserial
pyserial的几个页面地址:
官网:【 http://pyserial.sourceforge.net/index.html 】
下载:【 https://pypi.python.org/pypi/pyserial 】
API: 【 http://pyserial.sourceforge.net/pyserial_api.html 】
简单使用:【 http://pyserial.sourceforge.net/shortintro.html 】
pyserial的安装方式很简单,下载tar.gz包,解压缩,然后运行命令即可。如下图所示。
这里需要说明的是,如果是在win7上安装,直接在命令行里面输入python即可。如果是在树莓派上,那么需要使用命令【 sudo python3 setup.py install 】来进行安装。
安装成功后检测方法也很简单。如下图导入库,不报错说明是OK的,win7的检测如下图:
树莓派的安装及检测如下:
pi@raspberrypi ~ $ ls Desktop ocr_pi.png pyserial-2.7.tar.gz python_games pi@raspberrypi ~ $ tar -zxf pyserial-2.7.tar.gz pi@raspberrypi ~ $ ls Desktop ocr_pi.png pyserial-2.7 pyserial-2.7.tar.gz python_games pi@raspberrypi ~ $ cd pyserial-2.7/ pi@raspberrypi ~/pyserial-2.7 $ sudo python3 setup.py install 。。。。。 。。。。。 pi@raspberrypi ~ $ python3 Python 3.2.3 (default, Mar 1 2013, 11:53:50) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import serial; >>>
使用pyserial
当两边的系统都安装好之后,就可以使用最简单的python脚本进行端口通讯测试了。win7的如下:
import serial; ser = serial.Serial("COM1", 115200, timeout=1); ser.write(b"Hello World"); ser.close();
树莓派的如下:
import serial; ser = serial.Serial("/dev/ttyAMA0", 115200); ser.read(); ser.write(b"Hello World From Raspberry"); ser.close();
发表评论