如何在Python3中对接Pico Pi并执行其存储的MicroPython代码
可行实现方案分两类,可根据你的使用场景选择:
方案1:主机侧Python3调用Pico本地程序(适配你需要用tkinter等常规GUI库的需求)
你可以通过USB串口通信实现主机Python3触发Pico执行本地存储的程序,同时直接在主机侧用tkinter、PyQt等成熟GUI库开发交互界面即可,步骤如下:
- Pico端烧录标准MicroPython固件,将需要执行的功能代码预存在Pico本地,同时编写串口监听逻辑,收到约定指令后调用对应程序执行,结果可通过串口回传给主机。
Pico端示例代码(存入Pico的main.py):import machine import sys # 预存在Pico本地的功能程序示例1:翻转板载LED def run_led_program(): led = machine.Pin(25, machine.Pin.OUT) led.toggle() return "LED执行完成" # 预存在Pico本地的功能程序示例2:读取芯片温度 def run_temp_program(): adc = machine.ADC(4) temp = 27 - (adc.read_u16() * (3.3 / 65535 - 0.706)/0.001721 return f"芯片温度:{round(temp, 2)}℃" # 持续监听串口指令 while True: if sys.stdin.any(): cmd = sys.stdin.readline().strip() if cmd == "run_led": print(run_led_program()) elif cmd == "run_temp": print(run_temp_program()) - 主机Python3安装
pyserial依赖,通过串口发送约定指令即可触发Pico执行对应程序,GUI界面的按钮点击事件直接绑定指令发送逻辑即可。
主机侧示例代码:import serial import time # 串口路径根据实际设备修改:Windows为COMx,Linux/macOS为/dev/tty.usbmodemxxx ser = serial.Serial("/dev/tty.usbmodem14101", 9600, timeout=1) time.sleep(2) # 等待串口连接稳定 # 发送指令调用Pico本地的LED程序 ser.write(b"run_led\n") print(ser.readline().decode("utf-8")) # 发送指令调用Pico本地的温度读取程序 ser.write(b"run_temp\n") print(ser.readline().decode("utf-8"))
方案2:Pico脱机运行轻量GUI
如果不需要依赖主机,可直接为Pico外接SPI/I2C接口的LCD/OLED屏幕,使用MicroPython兼容的microgui、lvgl MicroPython移植版等轻量GUI库,直接在Pico本地运行GUI逻辑,所有程序都存储在Pico本地无需主机参与,适合小型脱机交互项目。
内容的提问来源于stack exchange,提问作者DJ ej Ejs
相关产品推荐
相关产品推荐

