网易首页 > 网易号 > 正文 申请入驻

树莓派4BGPIO串口通讯设置(3B+通用)

0
分享至

树莓派最大的魅力就是接口丰富,借助这些开放的接口,可以实现很多好玩又实用的功能,比如通过接口控制电机实现智能小车的动力控制、通过接口控制LED灯珠亮灭给心上人制造IT男独有的浪漫等等。

同时我们也将树莓派用在了一系列智能化改造的项目中,通过树莓派的GPIO进行串口通讯,控制智能电量表、水表、电子阀门等工业设备,将传统工业设备管理升级改造为智能化工业物联网设备管理。这里先给大家介绍一下开启树莓派串口的设置步骤。然后会另起一篇文章,以项目实例的形式通过控制电量表来了解树莓派串口通讯在项目中的应用。

注:文章中的树莓派串口设置,默认使用的是官方系统。第三方系统的串口设置请大家结合这篇文章按第三方系统参数说明自行测试。

基本介绍:

树莓派3/4B有两个串口,分别为“硬件串口” /dev/ttyAMA0 和“mini串口” /dev/ttyS0。“硬件串口”有单独的波特率时钟源,性能高、可靠,“mini串口”性能低,功能也简单,并且没有波特率专用的时钟源而是由CPU内核时钟提供,因此“mini串口”有个致命的弱点是:波特率受到内核时钟的影响,内核若在智能调整功耗降低主频时,相应的这个mini串口的波特率便受到牵连。

其实这里说的时钟的影响对我来说太高深了,对此真的是没有太多的认知,只是查找的相关资料中是这么描述的。那么个人的理解是“硬件串口”是全功能的,而“mini串口”则是阉割过的。

在实际项目中遇到的问题是,如果使用“mini串口” /dev/ttyS0,在通讯需要奇偶校验时会报错。所以项目中为了稳定还是推荐使用“硬件串口” /dev/ttyAMA0 。

在树莓派3/4B中,由于板载蓝牙模块,因此这个“硬件串口”被默认分配给与蓝牙模块通信了,而把“mini串口”默认分配给了排针引出的GPIO Tx Rx。在开启串口通讯不做任何设置的时候,默认的串口通讯使用的是“mini串口”。如果要在项目中使用,为了通讯稳定,需要进行“硬件串口”与“mini串口”默认映射对换,把“硬件串口” /dev/ttyAMA0映射分配给GPIO的Tx Rx。

GPIO的对照表,Tx Rx的BCM编码为14 15

设置步骤

1.启动串口

先查看一下串口启动的情况:

ls -l /dev

如果没配置过串口,那么正常情况应该会得到下面的结果:

crw-rw---- 1 root video 237, 0 1月 15 15:17 rpivid-vp9mem

lrwxrwxrwx 1 root root 7 1月 15 15:17 serial1 -> ttyAMA0

drwxrwxrwt 2 root root 40 2月 14 2019 shm

只有serial1 -> ttyAMA0,没有看到ttyS0的相关映射。之所以在没有开启串口的时候能看到ttyAMA0的映射,就是上面讲过的,树莓派3/4B将ttyAMA0默认用于板载蓝牙通讯。

启动串口:

修改系统配置文件/boot/config.txt

sudo vi /boot/config.txt

在配置文件中添加:

#ENABLE UARTenable_uart=1

重启树莓派

sudo reboot

启动起来以后,再查看一下串口启动情况

ls -l /dev

结果如下:

crw-rw---- 1 root video 238, 0 1月 15 15:17 rpivid-vp9mem

lrwxrwxrwx 1 root root 7 1月 15 15:17 serial0 -> ttyS0

lrwxrwxrwx 1 root root 5 1月 15 15:17 serial1 -> ttyAMA0

drwxrwxrwt 2 root root 40 2月 14 2019 shm

在设置中启用串口后,会发现 /dev目录下变成了两个: serial0 -> ttyS0 和 serial1 ->ttyAMA0,这就是开启成功了。

2.禁用蓝牙(硬件串口与mini串口映射对换)

因为蓝牙也使用硬件串口,所以我们在 /boot/config.txt里面加上 dtoverlay=pi3-disable-bt ,ttyAMA0 得以释放,这时候树莓派也自动交换了ttyAMA0和ttyS0,把serial0 分配给了 ttyAMA0 。

映射对换的目的是将硬件串口作用在GPIO接口的Tx Rx上。我的项目上没有用到蓝牙通讯,所以禁用蓝牙后也没有再次开启,也没有测试再次开启蓝牙通讯是否正常,如果项目中有用到蓝牙通讯,那么进行这一步的时候要谨慎。

修改系统配置文件/boot/config.txt

sudo vi /boot/config.txt

在文件中添加:

dtoverlay=pi3-disable-bt

这里有个坑要注意一下:树莓派4B的参数值也是pi3-disable-bt。别问为什么,我也不知道。。。一开始查资料都是关于树莓派3的设置,于是想当然地在树莓派4B上就用pi4-disable-bt,结果不行。折腾了好几个小时,抱着试试看的心态,把pi4改成pi3后成功了。

重启树莓派

sudo reboot

查看一下串口状态,看看ttyAMA0和ttyS0的映射是否对调

ls -l /dev

可以看到结果中,ttyAMA0和ttyS0的映射对调了

crw-rw---- 1 root video 238, 0 1月 15 15:17 rpivid-vp9mem

lrwxrwxrwx 1 root root 7 1月 15 15:17 serial0 -> ttyAMA0

lrwxrwxrwx 1 root root 5 1月 15 15:17 serial1 -> ttyS0

drwxrwxrwt 2 root root 40 2月 14 2019 shm

3.禁用串口控制台功能

树莓派默认将IO引出的串口用作于控制台使用,在没有网络的时候,可以通过串口对树莓派进行控制管理

所以经过前面的步骤做好串口映射交换后,还是不能正常地使用串口模块进行通讯。需要禁用串口控制台功能,使串口为我们自由使用。

分别通过如下两个命令停止和禁用串口的控制台功能。(由于我们前面已经交换了串口的映射关系,因此这里注意是ttyAMA0。)

sudo systemctl stop serial-getty@ttyAMA0.service

sudo systemctl disable serial-getty@ttyAMA0.service

最后还需要删除一个东西:

sudo vi /boot/cmdline.txt

在打开的文件中删去或注释掉

console=serial0,115200

这样树莓派的串口就设置好了,可以通过串口进行通讯收发消息了。

测试通讯示例代码

这里给出一个小的测试示例,来测试串口通讯。下一篇文章会详细写一下通讯示例和详细的测试过程。 示例是Python写的,如果没有serial库,要安装一下

sudo apt-get install python-serial

代码:

# -*- coding:utf-8 -*-

import RPi.GPIO as GPIO

import serial

ser = serial.Serial("/dev/ttyAMA0",9600,timeout=1)

ser.parity = serial.PARITY_EVEN # 奇偶校验设置,在没有交换端口的时候,这里就是错误产生的地方

print(ser.portstr)

command = "hello world"print("send:" + command)

len = ser.write(command.encode())

print("len = " + str(len))

print("You can always send data, press Ctrl + C to exit")

while 1:

# strInput = raw_input('enter some words:') # python2.7的交互方式

strInput = input('enter some words:')

ser.write(strInput.encode())

ser.flush()

以上就是树莓派3/4B串口的全部设置过程,在项目中实际遇到了不少坑后总结出来的。我会尽快更新一篇串口使用实战,把用到的设备,开发代码,踩过的坑都会详细讲一下,希望大家喜欢。

最后,大家觉得有用就点个关注呗:)

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
全红婵瘦了一大圈!回老家罕见跳舞,留长头发,不再跳水了?

全红婵瘦了一大圈!回老家罕见跳舞,留长头发,不再跳水了?

情感大头说说
2026-07-06 07:39:29
日本没想到,暴涨签证费,没等来中方取消制裁,赴日航班量反腰斩

日本没想到,暴涨签证费,没等来中方取消制裁,赴日航班量反腰斩

冰语历史
2026-07-05 22:34:34
电车成快消品被坐实,存量电车车龄仅1.8年,车主后悔莫及

电车成快消品被坐实,存量电车车龄仅1.8年,车主后悔莫及

柏铭锐谈
2026-07-06 00:58:04
印度民众急眼了!不满中方的签证政策,公开喊话:快给印度免签!

印度民众急眼了!不满中方的签证政策,公开喊话:快给印度免签!

凡知
2026-07-05 15:51:42
中国海军成功组织潜射战略导弹试射

中国海军成功组织潜射战略导弹试射

新华社
2026-07-06 13:03:01
图赫尔8.5分!英格兰评分:贝林9.5分!凯恩没进前三 一将不及格

图赫尔8.5分!英格兰评分:贝林9.5分!凯恩没进前三 一将不及格

刀锋体育
2026-07-06 13:17:16
一箱油半箱税:3 亿油车养全国马路,既大且重的电车还能白蹭多久

一箱油半箱税:3 亿油车养全国马路,既大且重的电车还能白蹭多久

电科技网
2026-07-04 18:12:17
为何越来越多人开始“逃离别墅”?过来人:这4个原因太现实了!

为何越来越多人开始“逃离别墅”?过来人:这4个原因太现实了!

室内设计师有料儿
2026-06-30 20:18:23
太残忍了!刚开完庆功宴就被裁员 007开发者自曝经历

太残忍了!刚开完庆功宴就被裁员 007开发者自曝经历

游民星空
2026-07-05 17:15:42
挪威淘汰巴西,赛后哈兰德高情商表态引热议,球迷:深得瓜瓜真传

挪威淘汰巴西,赛后哈兰德高情商表态引热议,球迷:深得瓜瓜真传

俯身冲顶
2026-07-06 12:17:32
少林寺新方丈释印乐,上任才10个月,少林寺被曝一下少了800多万

少林寺新方丈释印乐,上任才10个月,少林寺被曝一下少了800多万

许三岁
2026-06-14 09:57:24
彻底不装了!郭德纲曝儿子猛料不到两天,杨议怒骂,郭汾阳成赢家

彻底不装了!郭德纲曝儿子猛料不到两天,杨议怒骂,郭汾阳成赢家

梁蜱爱玩车
2026-07-05 05:35:18
杜塞尔多夫主教练谈樊振东:我们对他怀有极大敬意,队员们几乎不太敢主动搭话

杜塞尔多夫主教练谈樊振东:我们对他怀有极大敬意,队员们几乎不太敢主动搭话

台州交通广播
2026-07-06 01:09:30
人伦大乱正在毁掉无数中国家庭:3种乱象就在日常,拖垮一家人

人伦大乱正在毁掉无数中国家庭:3种乱象就在日常,拖垮一家人

阿凯销售场
2026-07-04 15:35:28
没想到,美国250周年庆典,中国飞机成为最大亮点

没想到,美国250周年庆典,中国飞机成为最大亮点

兵国大事
2026-07-05 21:35:37
太孤独啊!冯小刚前往济州岛旅游,安静坐在商务舱末排,无人搭理

太孤独啊!冯小刚前往济州岛旅游,安静坐在商务舱末排,无人搭理

火山詩话
2026-07-06 07:03:49
突发!一上海半导体设备公司终止IPO

突发!一上海半导体设备公司终止IPO

新浪财经
2026-07-06 11:48:28
创世界杯历史!美国射手染红不禁赛 白宫施压FIFA 下轮对手:震惊

创世界杯历史!美国射手染红不禁赛 白宫施压FIFA 下轮对手:震惊

我爱英超
2026-07-06 05:09:03
杀哨兵抢枪,灭出纳夺巨款,两次被捕两次逃脱,梁开武11年亡命路

杀哨兵抢枪,灭出纳夺巨款,两次被捕两次逃脱,梁开武11年亡命路

易玄
2026-07-05 11:45:02
2026年7月6日,全国各大银行最新存款利率

2026年7月6日,全国各大银行最新存款利率

星辰宇的不羁
2026-07-06 12:25:39
2026-07-06 15:56:49
拖拉夫小司机
拖拉夫小司机
以项目学习技术,边学边实践
4文章数 12关注度
往期回顾 全部

数码要闻

经典地图浮雕加持!荣耀WIN H9三角洲行动联名游戏本外观曝光:7月10日发售

头条要闻

烟花厂最危险区防爆挡墙是空心的 被中央巡查组抓现行

头条要闻

烟花厂最危险区防爆挡墙是空心的 被中央巡查组抓现行

体育要闻

世界杯最强17岁,贝林厄姆主动和他交换球衣

娱乐要闻

全红婵回老家罕见跳舞,不跳水了?

财经要闻

6天赌光2.8亿 !赵薇前夫赌桌往事曝光

科技要闻

WPS滥收费、背刺用户?官方回应

汽车要闻

纵置后驱2.3T+10AT 新款福特探险者售30.98万起

态度原创

教育
时尚
数码
健康
房产

教育要闻

贵州高考俄语129分学员分享成绩提升80分的俄语学习经验!

“雕塑感穿搭”突然大火!时髦的人都在穿

数码要闻

联想YOGA AI MINI迷你主机新配置开启预约

听说少吃点能抗衰老?专家讲解!

房产要闻

总裁空缺17个月、现金缺口超1000亿:金融局“局外人”入局万科

无障碍浏览 进入关怀版