ESP32-Micropython串口通信
Posted pocean2012
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ESP32-Micropython串口通信相关的知识,希望对你有一定的参考价值。
上一节建立了Micropython环境,详细的esp32各类应用及例子官方文档其实介绍的很详细,可以仔细阅读并通过代码进行验证。
Quick reference for the ESP32 — MicroPython 1.18 documentation
我们这一节先把串口做个测试,串口库的说明参见
Quick reference for the ESP32 — MicroPython 1.18 documentation
其中ESP32支持三个串口
因为micropython的上位机工具占用了UART0 ,而我们需要通过外部串口来下命令,所以使用串口2,也就是将USB转串口的小板的RX/TX分别接到17/16 ,然后编写串口命令读取的练习程序
from machine import UART
import machine
import utime
led=machine.Pin(22,machine.Pin.OUT)
uart=UART(2,115200)
uart.init(115200,bits=8,parity=None,stop=1) # 8N1
while True:
cmd=uart.readline()
if cmd!=None:
cmd=cmd.decode()
print("get cmd from uart:",cmd)
print("it's length: ",len(cmd))
if cmd.startswith("ON"):
led.on()
print("led on")
elif cmd.startswith("OFF"):
led.off()
print("led off")
这里用到了字符串判断的函数startswith来判断ON, 忽略了后面的换行符等
python的字符串函数如果忘记的话,可以参加下面的文章
python字符串内置函数 - twelvezuo - 博客园
运行结果
led也随着命令的输入亮或者灭。
有个小问题,GPIO的ON /OFF和实际高低电平不匹配,所以可以用另外一个函数value来输出确定的状态,此外为了更友好,初始化完成后也对串口输出打印信息,让控制端可以得到明确的信息
from machine import UART
import machine
import utime
print("====1.blinkByCmd.py=======\\r\\n")
led=machine.Pin(22,machine.Pin.OUT)
uart=UART(2,115200)
uart.init(115200,bits=8,parity=None,stop=1) # 8N1
uart.write("====1.blinkByCmd.py=======\\r\\n")
uart.write("esp32 uart2 init ok. \\r\\n")
led.value(1)
while True:
cmd=uart.readline()
if cmd!=None:
cmd=cmd.decode()
print("get cmd from uart:",cmd)
print("it's length: ",len(cmd))
if cmd.startswith("ON"):
led.value(0)
print("led on")
uart.write("led on. \\r\\n")
elif cmd.startswith("OFF"):
led.value(1)
print("led off")
uart.write("led off. \\r\\n")
观察结果,更加友好了。
以上是关于ESP32-Micropython串口通信的主要内容,如果未能解决你的问题,请参考以下文章
01. ESP32 Micropython编程(Thonny)