目录
树莓派的设置:
-
修改串口映射关系:硬件串口为主串口
主串口:serial0
硬件串口(/dev/ttyAMA0):由于板载蓝牙模块的存在,默认被分配给了蓝牙模块进行通信。性能高,可靠
mini串口(/dev/ttyS0):被默认分配给了排针引出的GPIO(14,15)。这个串口可以用于与GPIO引脚相关的通信任务。波特率受内核时钟影响
初始状态图 |
dtoverlay=pi3-miniuart-bt force_turbo=1 更改后的图 |
-
禁用串口的控制台功能
树莓派IO口引出的串口默认是控制使用的,为了通过串口配置树莓派
重启树莓派
串口小助手的设置:
不发送新行
编码:utf-8
接线图:
树莓派的针脚如下:
接线共地,tx----rx rx----tx
非常常见的接法
Python代码:
# -*- coding: utf-8 -*
#! /usr/bin/python
import serial
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)#采用bcm编号方式
gpio_bcm = 26
GPIO.setup(gpio_bcm,GPIO.OUT)#指定使用26号端口
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)
if response ==b'1':
GPIO .output(gpio_bcm,GPIO.HIGH)
print("开灯!!")
elif response == b'0':
GPIO.output(gpio_bcm,GPIO.LOW)
print("关灯!!")
ser.flushInput() # 清空接收缓存区
time.sleep(0.5) # 软件延时
except KeyboardInterrupt:
ser.close()
树莓派 | 电脑 |
b’1’ | 1 |
b’0’ | 0 |
b’hello’ | hello |
b’\xc4\xe3\xba\xc3’ | 你好 |