站长统计
使⽤Python操作树莓派串⼝
最近在考虑树莓派串⼝的事情,需要实现串⼝数据接收,python处理后再发送出去。今天就来测试⼀下,看看怎么实现。    先来看看树莓派的GPIO串⼝TXD、RXD 的位置。
·    1、开始之前需要开启串⼝,并关闭串⼝登录。
1、开始之前需要开启串⼝,并关闭串⼝登录。
可以vnc过去可视化界⾯来操作,也可以终端输⼊sudo raspi-config来命令⾏操作,操作完成后的结果就是第⼆张图。
2、查看当前串⼝分配⽅式。
python怎么读取串口数据2、查看当前串⼝分配⽅式。
终端运⾏ls /dev -al | grep serial,查看到Serial0 就是GPIO映射的串⼝,默认是ttyS0。Serial1 就是板载蓝⽛映射的串⼝,默认是ttyAMA0。我们使⽤的是ttyS0。
3、python测试
3、python测试
以9600波特率打开串⼝ttyS0,serial.Serial('/dev/ttyS0', 9600)。因为是软连接,/dev/ttyS0可以写成/dev/serial0。
发送字符串,然后循环接收。发送字符串需要转换为bytearray ,也可以写成“***”.encode() 。
硬件上将将树莓派串⼝与pc端连接起来,TXD与RXD要反过来接⼊。
笔者测试时直接将TXD、RXD 短接起来,运⾏结果如下,测试成功:
在笔者测试时,⼀直提⽰错误:“module 'serial' has no attribute 'Serial'”,调试了好久,搜索⼀下才知道命名的serial.py与模块重名了,import serial其实是把⾃⼰给import了,坑。更换为serial_test.py后正常。
4、串⼝数据接收,python处理后再发送出去
4、串⼝数据接收,python处理后再发送出去
那接下来就是完成串⼝数据接收,python函数处理后再发送出去的过滤加⼯功能,框架代码如下。your_own_function()定义⾃⼰的过滤加⼯功能。
5、树莓派的两个串⼝说明
5、树莓派的两个串⼝说明
实现了python操作串串⼝实践后,我们再来深⼊的了解⼀下树莓派的串⼝。树莓派4B的外设⼀共包含两个串⼝,⼀个是硬件串⼝
(/dev/ttyAMA0),⼀个是mini串⼝(/dev/ttyS0)。
硬件串⼝:有单独的波特率时钟源,性能⾼,可靠。
mini串⼝:性能低、功能简单、没有波特率专⽤的时钟源⽽是由CPU内核时钟提供,所以波特率收到内核时钟的影响,内核若在智能调整功耗降低主频时,相应的这个mini串⼝的波特率便受到牵连了。当然可以固定内核的时钟频率,如果不考虑功耗的情况下。
树莓派(3/4代)板载蓝⽛模块,所以默认的硬件串⼝是给蓝⽛模块使⽤的,⽽性能较差的mini串⼝是分配给GPIO串⼝TXD0、RXD0。
如果想要使硬件串⼝分配给GPIO,那么需要将两者映射互相交换,这需要修改配置⽂件。编辑/⽂件,在对应的⽂件末尾加⼊dtoverlay=pi3-disable-bt,蓝⽛使⽤硬件串⼝,所以我们在 /⾥⾯加上 dtoverlay=pi3-disable-bt ,ttyAMA0 得以释放,这时候树莓派也⾃动交换了ttyAMA0和ttyS0,把serial0 分配给了 ttyAMA0 。最后接着输⼊ sudo reboot重启⽣效。
在此查看串⼝分配⽅式:ls /dev -al | grep serial,ttyAMA0与ttyS0已经交换了。再次运⾏python3 serial_test.py测试成功。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。