好记性不如铅笔头

linux, 操作系统, 树莓派

树莓派学习笔记:串口通讯

最近在学习树莓派,想使用树莓派的串口(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();

 

发表评论

19 + 16 =

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据