MicroPython-ESP32串⼝通信
串⼝通信:
UART执⾏标准UART/USART双⼯串⾏通信协议,关于串⼝通信你需要的预备知识有码元,波特率,奇偶校验等概念。
硬件接线:
两个单⽚机设备进⾏串⼝通信,或者单⽚机通过USB转TTL模块与PC进⾏串⼝通信。
关于USB转TTL
设备与设备之间⾄少需要接三个线。如下图所⽰:
GND是地线,提供低电平的参考电压
RX 信息接收端
TX 信息发送端
⾄于VCC接⼝,可接可不接, 如果USB转TTL的正负极接反了容易导致电脑主板的烧毁。
要注意他们两个单⽚机的⼯作电压是否匹配,例如ESP32的⼯作电压是3.3v那么另外⼀个VCC接⼝也只能接VCC。有的USB转TTL模块有3.3v与5v两个接⼝,可以将ESP32开发板的VCC与USB转TTL的3.3v接⼝相连接,或者将ESP32的VIN接⼝与USB转TTL的5v接⼝相连接。
单⽚机A的RX 接单⽚机B的TX, 单⽚机B的RX 接单⽚机A的TX。
UART构造器:
ESP32⾃⾝只有两个UART资源
导⼊UART 模块:from machine import UART
UART对象的构造器函数:UART(id, baudrate, bits, parity, rx, tx, stop, timeout)
id : 串⼝编号:ESP32的UART资源只有两个, id有效取值范围为1,2
bandrate: 波特率(时钟频率):常⽤波特率为:9600 (默认),115200,信息接受双⽅的波特率必须⼀致,否则会乱码。
bits:单个字节的位数(⽐特数):8 (默认),7,9
parity: 校验⽅式:None 不进⾏校验(默认),0 偶校验,1 奇校验
rx:接收⼝的GPIO编号
tx:发送⼝的GPIO编号
stop: 停⽌位个数:1 (默认),2
timerout: 超时时间:取值范围: 0 < timeout ≤ 2147483647
演⽰实例:
from machine import UART
uart = UART(2, baudrate=115200, rx=13,tx=12,timeout=10)
UART的API讲解:
字符串读写:
# 读⼊10个字符,返回⼀个⽐特对象
# 读取所有的有效字符
# 读⼊⼀⾏
# 读⼊并且保存在缓存中
uart.write('abc')  # write the 3 characters
# 向串⼝写⼊3个字符abc
字符读写:
# 读⼊⼀个字符
uart.writechar(42)  # write 1 character
# 写⼊ASCALL码为42的字符
uart.writechar(ord('*')) # 等同于uart.writechar(42)
检测串⼝是否有数据:
uart.any()          # returns the number of characters waiting
ESP32串⼝通信-字符串数据⾃发实验:接线将开发板的 13号引脚与12号引脚⽤杜邦线相连接
from machine import UART,Pin
import utime
# 初始化⼀个UART对象
uart = UART(2, baudrate=115200, rx=13,tx=12,timeout=10)
count = 1
while True:
print('\n\n===============CNT {}==============='.format(count))
# 发送⼀条消息
print('Send: {}'.format('hello {}\n'.format(count)))
print('Send Byte :') # 发送字节数
uart.write('hello {}\n'.format(count))
# 等待1s钟
utime.sleep_ms(1000)
if uart.any():
# 如果有数据读⼊⼀⾏数据返回数据为字节类型
# 例如  b'hello 1\n'
bin_data = adline()
# 将⼿到的信息打印在终端
print('Echo Byte: {}'.format(bin_data))
# 将字节数据转换为字符串字节默认为UTF-8编码
print('Echo String: {}'.format(bin_data.decode()))
# 计数器+1
count += 1
print('---------------------------------------')
样例输出:
===============CNT 1===============
Send: hello 1
Send Byte :
8
Echo Byte: b'hello 1\n'
Echo String: hello 1
---------------------------------------
===============CNT 2===============
Send: hello 2
Send Byte :
8
Echo Byte: b'hello 2\n'python怎么读取串口数据
Echo String: hello 2
---------------------------------------
===============CNT 3===============
Send: hello 3
Send Byte :
8
Echo Byte: b'hello 3\n'
Echo String: hello 3
---------------------------------------
上⽂讲解了如何使⽤ESP32的UART资源,如何发送与接收字符串。 如果后续深⼊学习的话,可能还涉及到:
1. PC串⼝调试助⼿的使⽤。
2. ⾃定义⼆进制通信协议。⼆进制数据打包与解包,需要⽤到python的的struct模块。
3. 使⽤PySerial让PC与ESP32进⾏串⼝通信
出品:1Z实验室(1ZLAB: Make Things Easy)
1Z实验室 Make Things Easy . 致⼒于在机器⼈+计算机视觉+⼈⼯智能的重叠区域, 制作⼩⽩友好的教程.

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