树莓派3B+ 的串口配置和使用教程

树莓派3B+ 串口使用

    • 配置并修改文件
    • 创建一个py文件

配置并修改文件

  • 打开命令行输入 :
sudo systemctl disable hciuart

这样便禁用了蓝牙

  • 然后输入:
sudo nano /boot/config.txt

在最后一行加入 dtoverlay=pi3-miniuart-bt,保存修改并退出。

  • 继续输入
sudo raspi-config

将串口配置为Enable状态,然后重启。

  • 重启后打开命令行输入 :
sudo vim /boot/cmdline.txt
  • 删掉里面类似于的console=serial1,115200的内容,用delete键就行,然后按ctrl+c,输入:w保存修改,用:q退出vim。
    否则的话后面会报错:Permisson denied。
  • 回到命令行,继续输入
python3

然后会返回版本号。
- 继续输入

import serial
ser=serial.Serial('/dev/ttyAMA0',115200)

设置波特率115200,第三个是校验位,这里我没填。然后可以检查串口是否打开:

ser.isOpen()

命令行会返回True

  • 连接树莓派和串口调试工具,两个设备之间TXD连RXD,RXD连TXD,然后GND连GND。
    打开串口调试助手,设置波特率115200。
    树莓派3B+ 的串口配置和使用教程_第1张图片
  • 在命令行继续输入
ser.write(b'serial test')

命令行会返回 11,串口调试助手会输出serial test,如下:
树莓派3B+ 的串口配置和使用教程_第2张图片

  • 完成树莓派串口输出

创建一个py文件

import serial #串口
import time #后面延时使用
ser=serial.Serial('/dev/ttyAMA0',115200)#波特率115200 无校验
if ser.isOpen == True:
	ser.open()

ser.write(b'serial test') #输出

try:
	while True:
	data=ser.inWaiting()#获取缓冲区字符
	if data !=0:
		sh=ser.read(data)#读取内容
		print(sh)
		ser.flushInput()#清空缓冲区
		time.sleep(0.1) #延时
		
except KeyboardInterrupt:  
	ser.close #关闭

如果要输出一串十六进制的数组
可以这样:

import serial #串口
import time #后面延时使用

def send_byte():
	jy=[0xFF,0xAF,0x01,0x55];
	ser.write(bytes((jy)[:len(jy)]))
	time.sleep(0.1)
	
ser=serial.Serial('/dev/ttyAMA0',115200)#波特率115200 无校验
if ser.isOpen == True:
	ser.open()
ser.write(b'serial test') #输出
try:
	while True:
	send_byte()
	data=ser.inWaiting()#获取缓冲区字符
	if data !=0:
		sh=ser.read(data)#读取内容
		print(sh)
		ser.flushInput()#清空缓冲区
		time.sleep(0.1) #延时
		
except KeyboardInterrupt:  
	ser.close #关闭

你可能感兴趣的:(树莓派)