十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

MicroPython WiPy REPL 入门:Telnet 与 UART 串口双通道交互式终端完全指南

MicroPython WiPy REPL 入门:Telnet 与 UART 串口双通道交互式终端完全指南 MicroPython WiPy REPL 入门Telnet 与 UART 串口双通道交互式终端完全指南【免费下载链接】micropythonMicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems项目地址: https://gitcode.com/gh_mirrors/mi/micropythonREPLRead Evaluate Print Loop读取-求值-打印循环是 MicroPython 内置的交互式命令行环境是调试 WiPy 板卡、验证硬件控制代码最直接的手段。本指南基于 docs/wipy/tutorial/repl.rst系统讲解如何在 WiPy 上启用并通过 Telnet 或 USB 串口接入 REPL覆盖 Windows / macOS / Linux 三平台的连接步骤、REPL 常用操作与软/硬复位技巧帮助你用最短路径完成从上电到交互式控制 GPIO的实战闭环。REPL 是什么为什么它是 WiPy 开发的第一入口REPL 的全称是Read Evaluate Print Loop它是 MicroPython 提供的交互式提示符用户输入一行代码解释器立即求值并打印结果。对 WiPy基于 TI CC3200 的无线开发板而言REPL 是测试代码最快的方式你可以在不烧录脚本的情况下逐条运行命令、读取传感器数据、切换引脚电平、检查模块状态。REPL 与编写main.py脚本两种方式互补脚本用于固化业务逻辑REPL 用于即时验证与排错。从源码结构看REPL 的输入输出并不只绑定在某个物理端口上而是通过os.dupterm 机制将标准终端重定向到任意流对象如 UART这也是本教程在 UART 上复制 REPL功能实现的底层基础。连接前的准备两条接入路径要使用 REPL必须先建立一条到 WiPy 的会话通道官方提供两种方式方式前置条件典型用途Telnet网络WiPy 已上电处于 WLAN AP 模式默认wipy-wlan热点IP192.168.1.1无线调试无需接线UART 串口有线USB 转串口转换器接到 WiPy 的两个 UART 之一无线配置被破坏后的兜底通道默认 Telnet 会话参数WiPy 出厂默认开启 Telnet 服务连接参数如下见 docs/wipy/general.rst热点 SSID以wipy-wlan开头密钥www.wipy.io设备 IP192.168.1.1AP 模式下Telnet 端口23默认端口登录凭据用户名micro密码python如需修改登录名、密码和超时时间可通过network.Server类控制例如import network server network.Server(login(user, password), timeout60)在 UART0 上启用 REPL 复制通过 USB 转串口连接到 UART0即扩展板上可用的那一路后还需要显式将 REPL 复制到该 UART 上方法是在 REPL 中执行 from machine import UART import os uart UART(0, 115200) os.dupterm(uart)其中UART(0, 115200)创建 UART0 实例并设置波特率 115200os.dupterm(uart)将该 UART 注册为额外的终端。建议把这段代码放进boot.py这样每次复位后都会自动执行无需手动重复输入。从实现层面看os.dupterm由 extmod/os_dupterm.c 提供它维护一个全局终端对象表dupterm_objs[]数量由MICROPY_PY_OS_DUPTERM决定注册时校验对象必须实现read/write/ioctl流接口运行时mp_os_dupterm_rx_chr()从注册的流逐字节读取输入读到中断字符会触发键盘中断mp_os_dupterm_tx_strn()把 REPL 输出广播到所有注册终端。传入None可注销终端调用os.dupterm(None)即恢复仅保留原始终端。在 docs/wipy/tutorial/wlan.rst 中还有一个重要提示当你把 WiPy 从 AP 模式切换到 STA 模式时无线连接会断开此时 Telnet 会立即失效。两条对策正是本教程的核心技巧——其一把 WLAN 配置代码写进boot.py让复位后自动执行其二就是先在 UART 上复制 REPL改用 USB 串口继续发指令。由此可见UART dupterm 是 WiPy 无线调试场景下不可或缺的安全通道。Windows 平台连接步骤Telnet 方式连接 WiPy 默认热点SSID 以wipy-wlan开头。下载免费的 PuTTY 终端软件。打开 PuTTY连接类型选择Telnet端口保持默认23在主机地址栏输入 WiPy 的 IPAP 模式下为192.168.1.1点击Open。按提示输入micro/python登录。UART 串口方式先安装扩展板上 USB 转串口芯片FTDI的驱动程序驱动装好后系统会枚举出一个 COM 端口号。打开 PuTTY左侧面板点击 Session右侧选择Serial单选按钮在 Serial Line 框中输入前面找到的 COM 口如COM4波特率填115200点击 Open。若此前已在 REPL 中执行过os.dupterm(uart)或已写入boot.py即可看到提示符。macOS 平台连接步骤打开终端Terminal后Telnet 方式$ telnet 192.168.1.1UART 串口方式$ screen /dev/tty.usbmodem* 115200screen会通配匹配 USB 调制解调器设备名波特率同样为 115200。退出screen的默认快捷键组合是CTRL-A CTRL-\。如果键盘上没有\键例如需要使用 ALT-SHIFT-7 之类的组合键才能打出\可以通过重映射退出命令解决创建~/.screenrc在其中添加一行bind q quit这样就能用CTRL-A Q退出screen。Linux 平台连接步骤打开终端后Telnet 方式$ telnet 192.168.1.1UART 串口方式$ screen /dev/ttyUSB0 115200除了screen还可以使用picocom或minicom等串口终端工具。需要注意两点设备名可能不是ttyUSB0也许是ttyUSB1或更大的编号用ls /dev/ttyUSB*确认实际设备。串口设备访问通常需要权限将自己加入uucp或dialout用户组不同发行版组名不同或使用sudo运行终端程序。使用 REPL 提示符从 Hello World 到 GPIO 控制连接成功后串口程序界面上可能是一片空白和闪烁的光标先按一次回车Enter即可看到 MicroPython 提示符。用经典的 Hello World 验证通道是否畅通 print(hello WiPy!) hello WiPy!注意是解释器提示符不需要输入只需输入提示符后面的内容再按回车。print是 MicroPython 的内建函数除内置模块外还可直接输入算术表达式验证求值 1 2 3 4 // 2 2 20 * py pypypypypypypypypypypypypypypypypypypypyWiPy 与普通 MicroPython 端口的一个显著差异是出于 Flash 空间限制WiPy 固件不包含浮点运算支持也没有 math 模块因此所有除法必须使用整除运算符//4 / 2这种写法会直接报错详见 docs/wipy/general.rst。掌握基础后可以在 REPL 中直接控制硬件。下面用 GPIO 点亮/熄灭板载 LED 并关闭心跳指示heartbeat完整验证引脚输出能力 from machine import Pin import wipy wipy.heartbeat(False) # disable the heartbeat led Pin(GP25, modePin.OUT) led(1) led(0) led.toggle()这段代码做了四件事wipy.heartbeat(False)关闭默认的心跳 LED默认每 4 秒闪烁一次表示系统存活见 docs/wipy/general.rst避免其干扰观察Pin(GP25, modePin.OUT)以字符串引脚 ID 创建输出引脚WiPy 的引脚以GPxx字符串标识引脚驱动能力可通过Pin.LOW_POWER/Pin.MED_POWER/Pin.HIGH_POWER分别配置 2mA / 4mA / 6mAled(1)与led(0)分别置高置低led.toggle()翻转电平。wipy.heartbeat的实现位于 ports/cc3200/mods/modwipy.c无参数调用时返回当前心跳状态mperror_is_heartbeat_enabled()返回的布尔值传入参数时调用mperror_enable_heartbeat()设置开关并返回None。这与 docs/wipy/quickref.rst 中记录的三种用法完全对应wipy.heartbeat(False) # 关闭心跳 LED wipy.heartbeat(True) # 开启心跳 LED wipy.heartbeat() # 查询心跳状态如果 REPL 完全没有响应可以尝试软复位或硬复位见下一节。复位板卡软复位与硬复位REPL 使用过程中若出现问题WiPy 提供两种复位方式软复位Soft Reset在 REPL 提示符下按CTRL-D即可执行软复位。软复位只清空 MicroPython 虚拟机的状态硬件外设不受影响详见 docs/wipy/tutorial/reset.rst。屏幕会显示类似如下信息 MPY: soft reboot MicroPython v1.4.6-146-g1d8b5e5 on 2015-10-21; WiPy with CC3200 Type help() for more information. 软复位后boot.py会重新执行因此如果已将 UART 复制 REPL 的代码写入boot.py复位后串口通道会自动恢复。在 Telnet 会话中执行软复位通常不会断开网络连接这是它优于硬复位的一点——参考 docs/wipy/tutorial/wlan.rst 中检查复位原因与连接状态以在不破坏连接的前提下软复位的建议。在脚本内部也可以通过sys.exit()触发等效的软复位行为。此外从复位原因判断是否首次上电也是编写boot.py时的常用技巧例如import machine if machine.reset_cause() ! machine.SOFT_RESET: # 仅在硬复位/上电时执行一次性初始化 pass硬复位Hard Reset如果软复位无效可以执行硬复位等效于断电重开按下板上的 RST 开关位于心跳 LED 旁边的黑色小按钮。注意通过 Telnet 进行硬复位会直接结束当前会话断开你用来连接 WiPy 的终端程序因此需要重新连接才能继续操作。两种复位的对比总结如下复位类型触发方式影响范围Telnet 会话软复位REPL 按CTRL-D或脚本内sys.exit()仅清空虚拟机状态硬件外设不受影响通常保持连接硬复位按板上 RST 开关等效断电重启所有外设重新初始化会话断开需重新连接连接失败排查清单综合本教程及 docs/wipy/general.rst 的内容当 REPL 连不上时可按下表逐项排查现象可能原因解决办法Telnet 无法连接未连接 WiPy 默认热点连接 SSID 以wipy-wlan开头的网络密钥www.wipy.ioTelnet 拒绝登录凭据错误使用micro/python若已通过network.Server改过则用新凭据串口无输出波特率不匹配确认终端设为 115200且串口为 UART0 所在 COM 口串口连上但无未执行 dupterm先按回车或检查boot.py中是否含os.dupterm(uart)代码切换 WLAN 模式后断连STA 模式下 IP 变化/网络断开改用 UART 通道调试或将配置写入boot.py完全无响应脚本崩溃或硬故障先软复位CTRL-D无效则按 RST 硬复位延伸阅读docs/wipy/tutorial/wlan.rstWLAN 分步配置演示 STA/AP 模式切换与静态 IP 设置docs/wipy/tutorial/reset.rst软/硬复位、安全模式与文件系统格式化docs/wipy/general.rstTelnet/FTP 默认凭据、心跳 LED 行为、引脚电气特性与注意事项docs/wipy/quickref.rstUART、Pin、Timer、WLAN、Server 等模块的快速参考extmod/os_dupterm.cos.dupterm终端复制机制的源码实现ports/cc3200/mods/modwipy.cwipy.heartbeat模块的源码实现【免费下载链接】micropythonMicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems项目地址: https://gitcode.com/gh_mirrors/mi/micropython创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表