ESP32:搞定终端下MicroPython编程

前言

今天第一次真正给板子刷上MicroPython,因为我出门只带了几天前说的刚买那个中柏电脑,刷成了纯linux系统,就想试试从开源工具刷写开发板。

困扰

按照流程很轻松就能用esp-tool.py清空flash,然后刷上固件,但怎样编写程序就没有资料了。有教程说可以挂载成u盘一样的设备,但至少这个板子不行。经过疯狂寻找,正当我快放弃时找到这样一篇文章[1]

进而通过向REPL方向的寻找,确定了一种只需linux终端就可用的方法,而且无需Thonny
(但是需要adafruit-ampy :P)

简要流程

picocom

  1. sudo apt-get install picocom #该步骤安装的是串口终端助手,在[1]中有提到
  2. 配置串口权限,文末附上参考脚本,记得变通
  3. sudo picocom -b 115200 /dev/ttyUSB0 #串口连接开发板
  4. 注意看picocom给出的信息:Type [C-a] [C-h] to see available commands 就是先按ctrl+a,再按ctrl+h
  5. 连接后按几下回车才会出现熟悉的REPL界面

ampy

  1. pip给出提示大概意思就是不要用sudo,所以我用的是 pip install adafruit-ampy
  2. ampy –version 我用不了,不造是为虾米,反正不粽药啦
  3. 但是ampy –help 有用,可以看到具体操作和linux shell 类似,mkdir、ls、rm、rmdir都不用说了。
  4. ampy –port /dev/ttyUSB0 run led.py #跑当前目录下的led.py文件[5],ctrl+c没法打断
  5. ampy –port /dev/ttyUSB0 reset #给板子软重启,如果死循环没写到main.py就能打断了。但如果写到main.py的话据说[1]只能重刷固件了

注意

picocom 开启时用不了ampy,因为picocom会占用串口,按ctrl+a,之后ctrl+x退出picocom

参考

配置串口权限的脚本:

1
2
3
4
5
6
#!/bin/bash
ls -al /dev/ttyUSB0
chmod 666 /dev/ttyUSB0
sudo chmod 666 /dev/ttyUSB0
ls -al /dev/ttyUSB0
exit 0

还有如下几篇文章以供参考:

  1. http://yhhuang1966.blogspot.com/2019/07/micropython-on-esp32.html
  2. https://www.cirmall.com/bbs/thread-102620-1-1.html 介绍了picocom和ampy两种方法,对从底层了解和开发板通信帮助很大
  3. https://docs.micropython.org/en/v1.8.3/esp8266/esp8266/tutorial/repl.html 官方文档,介绍了REPL的基本操作
  4. https://docs.micropython.org/en/v1.8.3/esp8266/esp8266/tutorial/filesystem.html#creating-and-reading-files 介绍了文件和文件夹的增删,但没有改查
  5. led.py
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    '''
    功能介绍: LED闪烁例程
    '''
    import utime
    import machine

    # 声明一个引脚 例如 22 作为我们特定开发板板载LED的引脚
    led_pin = machine.Pin(22, machine.Pin.OUT)

    for i in range(20):
    # 点亮LED -> 高电平
    led_pin.value(1)
    # 延时 500ms
    utime.sleep_ms(500)
    # 关闭LED -> 低电平
    led_pin.value(0)
    # 延时500ms
    utime.sleep_ms(500)

ESP32:搞定终端下MicroPython编程
https://zhaosn.github.io/2022/ESP32-pyinShell/
作者
Zhao SN
发布于
2022年10月13日
更新于
2022年10月28日
许可协议