美文网首页1Z实验室 MicroPython ESP32
用ESP32-MicroPython点亮一个LED-1Z实验室

用ESP32-MicroPython点亮一个LED-1Z实验室

作者: 1Z实验室阿凯 | 来源:发表于2018-08-10 12:02 被阅读1211次

导引

本文主要讲解如何给ESP32-MicroPython编写程序,程序如何执行。 主要两种方式,一种是REPL交互式终端, 另外一种方式是通过ampy同步文件,两种方式相互结合。

1zlab: Make Things Easy

REPL连接

安装picocom

picocom是linux下的串口(终端)调试工具, 最简单易用。

https://developer.ridgerun.com/wiki/index.php/Setting_up_Picocom_-_Ubuntu

sudo apt-get install picocom

通过picocom连接ESP32终端

REPL的全称是Read读入+ Evaluate执行 + Print打印 + Loop循环

连接MicroPython开发板的中断,直接输入就是输入一句,执行一句,并且将结果打印到终端上面。

首先需要通过串口链接MicroPython的终端:

sudo picocom -b 115200 /dev/ttyUSB0

-b 是制定波特率boundrate 为115200

/dev/ttyUSB0 是设备端口号

日志

连接上窗口的时候,会打印一些ESP32开发板的信息:

scorpion@tl ~/P/MicroPython> sudo picocom -b 115200 /dev/ttyUSB0
[sudo] password for scorpion: 
picocom v2.2

port is        : /dev/ttyUSB0
flowcontrol    : none
baudrate is    : 115200
parity is      : none
databits are   : 8
stopbits are   : 1
escape is      : C-a
local echo is  : no
noinit is      : no
noreset is     : no
nolock is      : no
send_cmd is    : sz -vv
receive_cmd is : rz -vv -E
imap is        : 
omap is        : 
emap is        : crcrlf,delbs,

Type [C-a] [C-h] to see available commands

Terminal ready

如果没出出现如下标识,说明正在执行其他程序, 你需要先将程序中断。

>>> 

CTRL+C 中断程序,接下来你就可以在终端里面敲入Python的指令。

首先导入machine 模块

>>> import machine

然后写入machine. 按下Tab按键

>>> machine.

温馨提示: TAB 可以补全代码.

然后我们就可以看到machine下都有哪些子模块。

>>> machine.
__name__        mem8            mem16           mem32
freq            reset           unique_id       idle
disable_irq     enable_irq      time_pulse_us   Timer
WDT             Pin             Signal          TouchPad
ADC             DAC             I2C             PWM
SPI             UART

声明一个管脚,GPIO编号为13, 模式为输出模式

>>> pinR = machine.Pin(13, machine.Pin.OUT)

管脚写入高点平

>>> pinR.value(1)

PS: 如果你手里有LED模块的话, 可以将LED模块与ESP32的13号引脚相连接, 你也可以随意指定引脚编号。

REPL快捷键(控制指令)

MicroPython终端交互里面有一些控制指令的快捷键。

  • CTRL + C 中断程序
  • CTRL + D 软重启
  • CTRL + E 进入代码片段粘贴模式
  CTRL-A        -- on a blank line, enter raw REPL mode
  CTRL-B        -- on a blank line, enter normal REPL mode
  CTRL-C        -- interrupt a running program
  CTRL-D        -- on a blank line, do a soft reset of the board
  CTRL-E        -- on a blank line, enter paste mode

粘贴整段代码

如果你觉得一行一行的代码敲起来比较麻烦,你可以整段整段copy。

MicroPython有一个粘贴模式。

你可以先copy下面的代码片段:

'''
功能介绍: LED闪烁例程
'''
import utime
import machine

# 声明一个引脚 例如 D13 作为LED的引脚
led_pin = machine.Pin(13, machine.Pin.OUT)

while True:
    # 点亮LED -> 高电平
    led_pin.value(1)
    # 延时 500ms
    utime.sleep_ms(500)
    # 关闭LED -> 低电平
    led_pin.value(0)
    # 延时500ms
    utime.sleep_ms(500)

然后在picocom的REPL里面按CTRL+E进入粘贴模式, 右键粘贴刚才的代码片段。

注意:粘贴好代码后,不要尝试修改粘贴好的代码,或者追加

>>> 
paste mode; Ctrl-C to cancel, Ctrl-D to finish
=== 

然后中端会提示你Ctrl + C 撤销刚才粘贴的代码, 就当啥也没发生过。

你可以按Ctrl+D 执行你刚才粘贴的代码。

注意: 如果代码片段长了之后,可能会出现粘贴不全的问题, 这类情况,建议直接上传文件。

断开REPL的连接

退出picocom, 断开与ESP32开发板的连接

Ctrl + A 是转义键

Ctrl + A 然后按Ctrl + Q 就能够退出终端。

Ampy文件管理工具

Ampy简介

不同与其他的MicroPython开发板, ESP32连接到电脑上,并不会出现其文件系统,需要借助其他工具实现文件上传与下载。

Ampy是Adafruit公司推出的用于对ESP32文件系统进行管理的工具, 可以用于将本地的.py文件同步到ESP32的文件系统中。

Ampy的原理就是进入REPL,在REPL中完成文件的同步。所以在使用Ampy之前,需要先中断原来picocom的连接.

另外如果原来的程序在一直print 打印输出,则ampy也无法正常使用,在使用前需要先在Picocom的REPL里面中断掉原有的循环语句。

安装Ampy

通过pip 安装ampy

sudo pip install adafruit-ampy --upgrade

安装成功, 查看ampy的版本号:

$ ampy --version
ampy, version 1.0.3

调试执行-run

首先打开文本编辑器, 创建一个文件叫做led.py

然后,粘贴如下内容:

'''
功能介绍: LED闪烁例程
'''
import utime
import machine

# 声明一个引脚 例如 D13 作为LED的引脚
led_pin = machine.Pin(13, machine.Pin.OUT)

while True:
    # 点亮LED -> 高电平
    led_pin.value(1)
    # 延时 500ms
    utime.sleep_ms(500)
    # 关闭LED -> 低电平
    led_pin.value(0)
    # 延时500ms
    utime.sleep_ms(500)

接下来在终端执行代码:

sudo ampy --port /dev/ttyUSB0 run led.py 

然后ESP32开发板就会执行led.py 里面的内容。 这个效果跟REPL里面的Paste 粘贴模式 效果是一样的。

上传文件-put

文件上传使用put指令,把之前写好的led.py 上传到ESP32的文件系统里面。

sudo ampy --port /dev/ttyUSB0 put led.py

通过终端重新链接, 查看刚刚存入的.py文件.

>>> import os
>>> os.listdir()
['boot.py', 'led.py']

如果你希望你写的代码可以上电执行的话,需要把代码写在main.py里面。

首先需要创建一个main.py 我们直接将之前的 led.py 重命名为main.py

cp led.py main.py

然后将main.py上传到板子上

sudo ampy --port /dev/ttyUSB0 put main.py 

接下来, 按硬件上的复位 Reset按钮, 硬件开始执行LED小灯的程序.

删除文件-rm

删除文件使用rm 指令。

ampy --port /dev/ttyUSB0 rm led.py 

ESP32开发板的局限

首先是ESP32没有板载LED, 板子上的LED只是 POWER LIGHT

所以我们需要外接LED,去测试基本的I/O

MicroPython的官网也没找到ESP32的文档.

其此插入ESP32不会显示文件系统, 也就是不可以通过在文件系统中放置boot.py main.py的方式进行编程

唯一的方法就是 terminal 终端交互式编程.

参考文章

Getting Started with MicroPython on ESP32 – Hello World, GPIO, and WiFi

https://www.cnx-software.com/2017/10/16/esp32-micropython-tutorials/

ad.png

相关文章

  • 用ESP32-MicroPython点亮一个LED-1Z实验室

    导引 本文主要讲解如何给ESP32-MicroPython编写程序,程序如何执行。 主要两种方式,一种是REPL交...

  • 这是今天最美的刷屏!7小时1500万,“一块钱画作”背后的故事更

    苗世明: “星星的孩子”用艺术点亮生命 这是腾讯公益中一个名为“用艺术点亮生命”的项目。 在这里你可以看到来自25...

  • 花🌹

    用鲜花点亮生活!

  • 用阅读点亮心灵

    今天是我们阅读组的课堂研讨,很感谢立律和娟儿承担了这次的课堂教学任务,让我没那么赶,两位亲真的辛苦了。 ...

  • 用爱点亮世界

    遇见倒地的老人扶还是不扶,是大家一直纠结的话题。我没想太多,扶了。 第一次遇到这种情况,也没什么经验,第一反应就是...

  • 用责任点亮青春

    “面对强大的敌手,明知不敌也要毅然亮剑。即使倒下,下要成为一座山,一道岒。”《亮剑》中的这番话,时常在我眼边回响。...

  • 用爱点亮清晨

    01 “早上好,请喝一杯粥!” 随着亲切的问候,一杯热腾腾的粥,从戴着塑料手套的手里传递过来。奉粥的人穿着统一的橘...

  • 用艺术点亮生活

    无论任何时候,深处何种状态,都要用心享受当下的生活。曾经有大师对我们说:人生在世,一定要学会一门艺术。 我想,最好...

  • 用仪式点亮生活!

    今天,你举行仪式了吗? 起床的时候,用卫生间的时候,早餐的时候, 工作的路上,或与爱人告别的时候? “最好还是在原...

  • 用阅读点亮人生

    古人云:“读万卷书,行万里路。”哲人也说:“书籍是人类进步的阶梯。”培养阅读习惯,当一个人爱上阅读,他将同...

网友评论

    本文标题:用ESP32-MicroPython点亮一个LED-1Z实验室

    本文链接:https://www.haomeiwen.com/subject/zcykbftx.html