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")
  

观察结果,更加友好了。

 

版权声明:本文为CSDN博主「pocean2012」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/pocean2012/article/details/122852392

上一节建立了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")
  

观察结果,更加友好了。

 

版权声明:本文为CSDN博主「pocean2012」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/pocean2012/article/details/122852392

生成海报
点赞 0

pocean2012

我还没有学会写个人说明!

暂无评论

相关推荐

ESP32-Micropython(二)串口通信

上一节建立了Micropython环境,详细的esp32各类应用及例子官方文档其实介绍的很详细,可以仔细阅读并通过代码进行验证。 Quick reference for the ESP32 — MicroPytho

串口通信小试牛刀

串口通信小试牛刀 目录 串口通信小试牛刀一、串口通信协议:RS-232 1.串口通信协议2. RS-2323.RS232电平与TTL电平的区别4.USB/TTL转232模块(以CH340芯片模块为例&#xff09