基于ESP32+MicroPython点亮LED灯

描述

    1. 连接开发板
    1. micropython 关于 GPIO 的描述
    1. 控制 led 的亮灭

对于应用程序,我们第一个程序是打印。对于嵌入式,我们第一个程序是点灯。

1. 连接开发板

将开发板链接到电脑,打开 Thonny,配置串口,如下:

ESP32

配置串口

然后就会发现 IED 的 shell 显示已经连接到 esp32 解释器,如下:

ESP32

连接esp32

这时候 IDE 已经串口连接到开发板了,若没有连接,请自行翻看环境配置章节内容。

2. micropython 关于 GPIO 的描述

led 的控制,是通过将 GPIO 配置成输出模式,然后控制输出电平的高低来实现的。

对于任何嵌入式开发,数据手册和 demo 是必不可少的,对于 Micropython 开发,我们必看的是 MicroPython 官方的文档GPIO 章节 ^[1]^ 。如下:

ESP32

配置gpio

大概意思是说 GPIO 的使用是通过 machine.Pin 类来实现的:

from machine import Pin

p0 = Pin(0, Pin.OUT)    # create output pin on GPIO0
p0.on()                 # set pin to "on" (high) level
p0.off()                # set pin to "off" (low) level
p0.value(1)             # set pin to on/high

p2 = Pin(2, Pin.IN)     # create input pin on GPIO2
print(p2.value())       # get value, 0 or 1

p4 = Pin(4, Pin.IN, Pin.PULL_UP) # enable internal pull-up resistor
p5 = Pin(5, Pin.OUT, value=1) # set pin high on creation
p6 = Pin(6, Pin.OUT, drive=Pin.DRIVE_3) # set maximum drive strength

引脚范围(含):0-19、21-23、25-27、32-39。这些对应 ESP32 芯片实际的 GPIO 管脚号。注意许多最终用户板使用他们自己的临时引脚编号(例如标记为 D0、D1 等)。有关电路板逻辑引脚和物理芯片引脚之间的映射,请参阅您的电路板文档。

支持四种驱动强度,引脚使用Pin()这个构造函数或Pin.init()方法,通过drive的关键字参数 ,可以设置不同的对应最大安全源/灌电流和近似内部驱动器电阻:

  • Pin.DRIVE_0:5 毫安/ 130 欧姆
  • Pin.DRIVE_1:10 毫安/ 60 欧姆
  • Pin.DRIVE_2:20mA / 30 欧姆(如果未配置则为默认强度)
  • Pin.DRIVE_3:40 毫安/ 15 欧姆

Pin()和 Pin.init()的 hold 关键字参数将启用 ESP32 的“pad hold”功能。当设置为 True 时,引脚配置(方向,拉电阻和输出值)将保持不变,任何进一步的改变(包括改变输出电平)将不应用。设置 hold=False 将立即应用任何未完成的引脚配置更改并释放引脚。当一个引脚已经保持时,使用 hold=True 将应用任何配置更改,然后立即重新应用 hold。

笔记:

  • Pin 1 和 3 分别是 REPL UART TX 和 RX
  • Pins 6, 7, 8, 11, 16, and 17 用于连接嵌入式 flash,不建议用于其他用途
  • 引脚 34-39 仅供输入,也没有内部上拉电阻
  • 有关睡眠期间管脚行为的讨论,请参见深度睡眠模式^[2]^

有一个更高级别的抽象 machine.Signal^[3]^ 。可用于反转引脚的信号。

3. 控制 led 的亮灭

下面我们看一下我们的原理图,首先看一下我们关于 LED 的原理图:

ESP32

led原理图

我们可知,控制 led 的引脚为 IO2,当引脚输出高电平,led 亮,输出低电平,led 灭。

我们现在 ide 的 shell 里面控制 led,在 shell 界面里面按行输入下面内容,每输入一行点击一次回车,当出现>>>的时候输入下一行,如下:

ESP32

命令行控制led

当输入pin.on()时候,观察 led 会亮起,当输入pin.off()led 会熄灭。

注意:

on 和 off 控制的是 GPIO 输出高低,只是凑巧本开发板是共阴极的,因此 on 的时候引脚输出高,正好 led 亮。

对于共阳极的 led,on 是熄灭,off 是亮起。

上面我们是在控制台打印的,想让 esp32 上电就运行程序需要将程序下载到 esp32 中,方法如下,点击boot.py,在输入如下内容:

from machine import Pin
import time

pin = Pin(2, Pin.OUT)

while True:
    pin.on()
    time.sleep(1)
    pin.off()
    time.sleep(1)

如下图:

ESP32

led闪烁

保存后,先点击运行当前脚本按钮,看一下写的是否有错误,正确的话此时 led 就会闪烁了。

按一下开发板的复位键,程序发现程序就可以开机运行了。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分