这次我要通过树莓派3B的串口和电脑互相发送数据,但是树莓派只有一个实实在在能用的串口ttyAMA0,另外一个还是迷你的串口,无法正常使用
那这样我们就要利用到我的前一篇文章,既然串口要被使用,我们就不能使用串口连接登录树莓派,可以采用一根网线登录或者ssh登录
1、修改文件
输入 sudo vim /boot/cmdline.txt
删掉里面的 console=serial1,115200 和 kgdboc=serial1,115200 ,这样你才能正常地使用串口,不然后面会出现Permission denied
最终变为:
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
2、安装python-serial模块
输入 sudo apt-get install python-serial
安装一看发现原来就有的,笑哭
我咋就没从python开始安装呢。。。
树莓派还是比较完备的,python2、3都有,不少模块也都随身携带,在此赞一下
3、启动python IDE
输入 python3
创建serial实例ser,端口为 ‘/dev/ttyAMA0',波特率设置为115200bps,第三个为校验位,可以不写
>>> import serial
>>> ser = serial.Serial('/dev/ttyAMA0',115200)
检验串口是否打开,若未打开则输入 ser.open() 打开
>>> ser.isOpen()
True
4、打开串口调试助手
我用的是百度下的友善串口调试助手,端口设置好之后我们点击上方的启动按钮,下方就会出现opened的绿色字样
然后我们在树莓派的python里发消息,检测发送是否正常:
>>> ser.write(b'Raspberry pi')
12
接收成功!
最后我们写一个python脚本代码,实现串口的发送和接收:
# -*- coding: utf-8 -*
import serial
import time
ser = serial.Serial('/dev/ttyAMA0', 115200)
if ser.isOpen == False:
ser.open() # 打开串口
ser.write(b"Raspberry pi is ready")
try:
while True:
size = ser.inWaiting() # 获得缓冲区字符
if size != 0:
response = ser.read(size) # 读取内容并显示
print response
ser.flushInput() # 清空接收缓存区
time.sleep(0.1) # 软件延时
except KeyboardInterrupt:
ser.close()
运行树莓派端的python程序,我们试着发送一串消息过去
树莓派成功接收,大功告成!