天天看点

python 串口write 返回值_MicroPython 玩转硬件系列4:串口小实验1.引言2.环境介绍2.1.硬件2.2.软件3.串口发送4.串口接收5.自发自收实验

1.引言

本篇介绍ESP32上通过MicroPython实现串口数据的收发。

2.环境介绍

2.1.硬件

ESP32 小板:

python 串口write 返回值_MicroPython 玩转硬件系列4:串口小实验1.引言2.环境介绍2.1.硬件2.2.软件3.串口发送4.串口接收5.自发自收实验

Micro USB线:

python 串口write 返回值_MicroPython 玩转硬件系列4:串口小实验1.引言2.环境介绍2.1.硬件2.2.软件3.串口发送4.串口接收5.自发自收实验

USB转TTL:

python 串口write 返回值_MicroPython 玩转硬件系列4:串口小实验1.引言2.环境介绍2.1.硬件2.2.软件3.串口发送4.串口接收5.自发自收实验

2.2.软件

1) PC端Wndows系统,Python 2.7环境 或者 Python 3.4以及更新的版本

2) 板子上Micropython 环境

将板子G12引脚和USB转TTL的RXD引脚短接

将板子G13引脚和USB转TTL的TXD引脚短接

将板子GND引脚和USB转TTL的GND引脚短接

3.串口发送

代码如下:

from machine import UART,Pinuart = UART(2, baudrate=115200, rx=13,tx=12,timeout=10)uart.write("ESP32 uart send example!")
           

运行结果如下,

python 串口write 返回值_MicroPython 玩转硬件系列4:串口小实验1.引言2.环境介绍2.1.硬件2.2.软件3.串口发送4.串口接收5.自发自收实验

完成的功能即:ESP32通过串口发送数据给USB转TTL

4.串口接收

代码如下:

from machine import UART,Pinuart = UART(2, baudrate=115200, rx=13,tx=12,timeout=10)while True:    if uart.any():        rev_data = uart.read()        print(rev_data)
           

结果如下:在左侧窗口里发送什么,右侧窗口就会接收到什么。

python 串口write 返回值_MicroPython 玩转硬件系列4:串口小实验1.引言2.环境介绍2.1.硬件2.2.软件3.串口发送4.串口接收5.自发自收实验

完成的功能即:USB转TLL通过串口发送数据给ESP32

如果改为:

from machine import UART,Pinuart = UART(2, baudrate=115200, rx=13,tx=12,timeout=10)while True:    if uart.any():        rev_data = uart.read()        print(rev_data.decode())
           

结果如下:

python 串口write 返回值_MicroPython 玩转硬件系列4:串口小实验1.引言2.环境介绍2.1.硬件2.2.软件3.串口发送4.串口接收5.自发自收实验

两者的输出结果有差异,这里涉及到Python中bytes和str两种数据类型的问题,readline函数的返回值是bytes类型。

python 串口write 返回值_MicroPython 玩转硬件系列4:串口小实验1.引言2.环境介绍2.1.硬件2.2.软件3.串口发送4.串口接收5.自发自收实验

strings可以被编码(encode)成字bytes,bytes也可以解码(decode)成strings

更多关于UART使用可以参考:docs.micropython.org/en/latest/library/machine.UART.html

5.自发自收实验

cirmall.com/bbs/thread-102657-1-1.html 这里有个自发自收的例子,将G12和G13短接在一起。

运行结果如下:

python 串口write 返回值_MicroPython 玩转硬件系列4:串口小实验1.引言2.环境介绍2.1.硬件2.2.软件3.串口发送4.串口接收5.自发自收实验

使用上一篇介绍的通过 ampy --port COM3 run --no-output uart.py 方法,在串口中可以看到输出结果如下:

python 串口write 返回值_MicroPython 玩转硬件系列4:串口小实验1.引言2.环境介绍2.1.硬件2.2.软件3.串口发送4.串口接收5.自发自收实验

细心的读者,有没有发现两者输出结果有什么不同吗?

如果没看出来的话,提示一下,大家看看Send Byte: 后面有什么不同。

这个原因我想了一段时间,大家知道什么原因吗,欢迎评论区留言。