【雕爷学编程】MicroPython手册之esp — ESP8266 和 ESP32

在这里插入图片描述

MicroPython是为了在嵌入式系统中运行Python 3编程语言而设计的轻量级版本解释器。与常规Python相比,MicroPython解释器体积小(仅100KB左右),通过编译成二进制Executable文件运行,执行效率较高。它使用了轻量级的垃圾回收机制并移除了大部分Python标准库,以适应资源限制的微控制器。

MicroPython主要特点包括:
1、语法和功能与标准Python兼容,易学易用。支持Python大多数核心语法。
2、对硬件直接访问和控制,像Arduino一样控制GPIO、I2C、SPI等。
3、强大的模块系统,提供文件系统、网络、图形界面等功能。
4、支持交叉编译生成高效的原生代码,速度比解释器快10-100倍。
5、代码量少,内存占用小,适合运行在MCU和内存小的开发板上。
6、开源许可,免费使用。Shell交互环境为开发测试提供便利。
7、内置I/O驱动支持大量微控制器平台,如ESP8266、ESP32、STM32、micro:bit、掌控板和PyBoard等。有活跃的社区。

MicroPython的应用场景包括:
1、为嵌入式产品快速构建原型和用户交互。
2、制作一些小型的可 programmable 硬件项目。
3、作为教育工具,帮助初学者学习Python和物联网编程。
4、构建智能设备固件,实现高级控制和云连接。
5、各种微控制器应用如物联网、嵌入式智能、机器人等。

使用MicroPython需要注意:
1、内存和Flash空间有限。
2、解释执行效率不如C语言。
3、部分库函数与标准版有差异。
4、针对平台优化语法,订正与标准Python的差异。
5、合理使用内存资源,避免频繁分配大内存块。
6、利用原生代码提升速度关键部位的性能。
7、适当使用抽象来封装底层硬件操作。

总体来说,MicroPython让Python进入了微控制器领域,是一项重要的创新,既降低了编程门槛,又提供了良好的硬件控制能力。非常适合各类物联网和智能硬件的开发。

在这里插入图片描述

MicroPython的esp是指针对ESP8266和ESP32芯片的MicroPython固件和相关软件库。ESP8266和ESP32是一类广泛应用于物联网和嵌入式系统的低成本、低功耗的Wi-Fi和蓝牙模块。MicroPython的esp为这两种芯片提供了高级的脚本编程环境,使开发者能够使用Python语言进行快速原型设计和开发。

以下是对MicroPython的esp的基本概念和定义的详细解释:

1、MicroPython:MicroPython是一种精简版的Python编程语言,专门为嵌入式系统和物联网设备设计。它提供了Python语言的核心功能和语法,并在资源受限的环境下进行了优化,使得它可以运行在微控制器等资源有限的设备上。

2、ESP8266:ESP8266是一款低成本、低功耗的Wi-Fi模块/芯片,由Espressif Systems开发。它内置了TCP/IP协议栈,可以用于连接互联网,并具备较强的处理能力。MicroPython的esp提供了针对ESP8266的固件和相关软件库,使开发者可以使用MicroPython语言进行ESP8266应用的开发。

3、ESP32:ESP32是Espressif Systems推出的一款高度集成的Wi-Fi和蓝牙模块/芯片,与ESP8266相比,它具备更强大的处理能力、更多的外设接口和更多的内存。MicroPython的esp也提供了针对ESP32的固件和相关软件库,使开发者可以使用MicroPython语言进行ESP32应用的开发。

4、MicroPython的esp固件:MicroPython的esp固件是专门针对ESP8266和ESP32芯片的MicroPython固件版本。这些固件经过了针对性的优化,使得它们可以在ESP8266和ESP32上运行,并提供了与硬件交互、网络通信和外设控制等功能的API。

5、软件库:MicroPython的esp还提供了一系列与ESP8266和ESP32硬件相关的软件库,用于简化和加速开发过程。这些软件库提供了丰富的功能接口,涵盖了Wi-Fi、蓝牙、GPIO(通用输入输出)、I2C、SPI、PWM等常用的硬件和通信协议,使开发者可以方便地访问和控制硬件资源。

MicroPython的esp为ESP8266和ESP32芯片提供了MicroPython固件和软件库,使得开发者可以使用MicroPython语言轻松开发应用程序,从简单的物联网项目到复杂的嵌入式系统。它提供了方便的编程环境和丰富的硬件接口,使得开发者能够快速原型设计和开发各种应用。

MicroPython 的 esp 模块提供了以下功能:

通过 esp.osdebug() 方法,可以设置或禁用芯片的调试输出,以便在串口上查看内部信息。
通过 esp.sleep_type() 方法,可以设置或获取芯片的睡眠模式,以便在低功耗状态下运行。
通过 esp.deepsleep() 方法,可以使芯片进入深度睡眠模式,以便在最低功耗状态下运行。
通过 esp.flash_id() 方法,可以获取芯片的闪存 ID,以便识别不同的闪存类型。
通过 esp.flash_size() 方法,可以获取芯片的闪存大小,以便分配不同的存储空间。
通过 esp.flash_user_start() 方法,可以获取用户可用的闪存起始地址,以便存储用户数据。
通过 esp.flash_erase() 方法,可以擦除指定的闪存扇区,以便重新写入数据。
通过 esp.flash_read() 和 esp.flash_write() 方法,可以读取或写入指定的闪存地址,以便操作数据。
通过 esp.neopixel_write() 方法,可以向连接到芯片的 NeoPixel LED 灯带发送数据,以便控制灯光效果。
通过 esp.dht_readinto() 方法,可以从连接到芯片的 DHT 温湿度传感器读取数据,以便测量环境参数。
通过 esp.freemem() 方法,可以获取芯片当前可用的内存大小,以便优化内存使用。

MicroPython 的 esp 模块的主要特点:

该模块提供了与 ESP8266 和 ESP32 模块相关的特定功能,如调试输出、睡眠模式、深度睡眠、闪存操作、NeoPixel 控制、DHT 传感器读取等。
该模块可以让用户更好地利用 ESP8266 和 ESP32 芯片的硬件资源和性能,实现更多的功能和效果。
该模块可以与其他 MicroPython 模块和函数相互配合,实现更高层次的抽象和封装,简化编程过程和逻辑。

MicroPython 的 esp 模块的应用场景有:

用于实现与网络和蓝牙设备之间的通信和交互,如连接和控制 Wi-Fi 路由器、蓝牙音箱、蓝牙键盘等。
用于实现与传感器和执行器之间的通信和交互,如读取和控制温度、湿度、光照、声音、运动等参数和状态。
用于实现创意和艺术的表达,如使用 NeoPixel LED 灯带制作一些装置或装饰品,实现有趣或美观的动态效果。

需注意事项:

在使用该模块之前,需要确保 ESP8266 或 ESP32 开发板已经正确地连接到电源和电脑,并且已经安装了 MicroPython 的固件。
在使用该模块时,需要注意芯片的电压范围和电流限制,避免造成硬件损坏或故障。
在使用该模块时,需要注意芯片的功能冲突和共享问题,避免造成功能失效或干扰。例如,如果使用深度睡眠模式,则不能同时使用 REPL 功能;如果使用闪存操作,则不能同时访问内部闪存。

以下是几个使用 MicroPython 的 esp 模块的实际运用程序案例:

案例一:使用 esp.osdebug() 方法来设置或禁用芯片的调试输出,以便在串口上查看内部信息。代码如下:

import esp # 导入 esp 模块
esp.osdebug(None) # 禁用调试输出
# esp.osdebug(0) # 启用调试输出

这个程序可以设置或禁用芯片的调试输出。你可以用其他方法来查看或处理这些信息。

案例二:使用 esp.neopixel_write() 方法来向连接到芯片的 NeoPixel LED 灯带发送数据,以便控制灯光效果。代码如下:

import esp # 导入 esp 模块
import machine # 导入 machine 模块
import time # 导入 time 模块
pin = machine.Pin(2, machine.Pin.OUT) # 创建一个输出引脚对象
n = 8 # 设置灯带上的 LED 数量
data = bytearray(n * 3) # 创建一个字节数组对象
for i in range(n): # 循环遍历每个 LED
    data[i * 3] = 0 # 设置红色值为 0
    data[i * 3 + 1] = 0 # 设置绿色值为 0
    data[i * 3 + 2] = 255 # 设置蓝色值为 255
esp.neopixel_write(pin, data, True) # 向灯带发送数据
time.sleep(1) # 等待 1 秒
esp.neopixel_write(pin, data, False) # 关闭灯带

这个程序可以让灯带上的每个 LED 都显示蓝色,然后关闭。你可以用其他方法来修改或显示不同的颜色和效果。

案例三:使用 esp.dht_readinto() 方法来从连接到芯片的 DHT 温湿度传感器读取数据,以便测量环境参数。代码如下:

import esp # 导入 esp 模块
import machine # 导入 machine 模块
pin = machine.Pin(4, machine.Pin.IN, machine.Pin.PULL_UP) # 创建一个输入引脚对象
buf = bytearray(5) # 创建一个字节数组对象
esp.dht_readinto(pin, buf) # 从传感器读取数据到字节数组中
if buf[0] + buf[1] + buf[2] + buf[3] == buf[4]: # 如果数据校验通过
    humidity = buf[0] + buf[1] * 0.1 # 计算湿度值,单位为 %
    temperature = buf[2] + buf[3] * 0.1 # 计算温度值,单位为 ℃
    print('Humidity:', humidity, '%') # 打印湿度值
    print('Temperature:', temperature, '℃') # 打印温度值
else: # 如果数据校验失败
    print('Invalid data') # 打印无效数据提示

这个程序可以从 DHT 温湿度传感器读取数据,并计算并打印湿度和温度值。你可以用其他方法来处理或显示这些数据。

案例四:Wi-Fi网络连接

import network
import time

# 连接Wi-Fi网络
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect("SSID", "password")

# 等待连接成功
while not wifi.isconnected():
    time.sleep(1)

# 打印IP地址
print("IP Address:", wifi.ifconfig()[0])

这个示例程序使用MicroPython的esp库连接到一个Wi-Fi网络。通过调用network.WLAN()创建一个Wi-Fi接口对象,然后调用active(True)激活Wi-Fi接口。接下来,调用connect()方法传入Wi-Fi网络的SSID和密码来连接网络。然后,使用循环等待Wi-Fi连接成功,使用isconnected()方法检查连接状态。一旦连接成功,可以使用ifconfig()方法获取分配给设备的IP地址,并将其打印出来。

案例五:读取GPIO输入状态

import machine

# 配置GPIO引脚
button_pin = machine.Pin(0, machine.Pin.IN)

# 读取GPIO输入状态
while True:
    if button_pin.value() == 1:
        print("Button pressed!")
    else:
        print("Button released!")

这个示例程序使用MicroPython的esp库读取GPIO引脚的输入状态。通过调用machine.Pin()创建一个GPIO引脚对象,并指定引脚编号和输入模式。在这个示例中,使用引脚号0和输入模式创建了一个GPIO引脚对象。然后,使用循环不断读取GPIO引脚的状态,通过调用value()方法获取引脚的值。如果引脚的值为1,则表示按钮被按下,打印"Button pressed!“;否则,打印"Button released!”。

案例六:控制LED灯

import machine
import time

# 配置GPIO引脚
led_pin = machine.Pin(2, machine.Pin.OUT)

# 控制LED灯
while True:
    led_pin.on()
    time.sleep(1)
    led_pin.off()
    time.sleep(1)

这个示例程序使用MicroPython的esp库控制一个LED灯的开关。通过调用machine.Pin()创建一个GPIO引脚对象,并指定引脚编号和输出模式。在这个示例中,使用引脚号2和输出模式创建了一个GPIO引脚对象。然后,使用循环不断控制LED灯的开关状态。通过调用on()方法将引脚设置为高电平,点亮LED灯;通过调用off()方法将引脚设置为低电平,熄灭LED灯。使用time.sleep()方法进行延迟,实现LED灯的闪烁效果。

这些示例程序展示了MicroPython的esp在ESP8266和ESP32上的几个实际运用案例,涵盖了Wi-Fi网络连接、GPIO输入读取和控制LED灯等常见应用场景。这些案例可作为起点,根据实际需求进行扩展和定制。

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值