- 什么是MicroPython?
- 为什么要使用MicroPython for NodeMCU?
- 什么是ESP8266(NodeMCU)?
- 二手硬件
- 安装用于ESP8266的MicroPython固件
- 使用PuTTY与NodeMCU通信
- 使用Ampy上传基于Python的LED闪烁代码
- ESP8266上的MicroPython:使用DHT22获得温度和湿度
对于对编程支持ESP8266等支持Wi-Fi的微控制器感兴趣的初学者,了解ESP-IDF编程环境或Arduino IDE可能是一项艰巨的任务,C和C ++语言的隐式语法需要对计算机科学有更多了解,为什么这些语言并不总是适合初学者,所以在本文中,我们将学习使用MicroPython设置和 编程ESP8266,最后,我们将从最喜欢的DHT22温湿度传感器获取温湿度数据。以前我们还制作了一个教程,介绍如何使用Micro Python编程ESP32,如果感兴趣的话,也可以查看一下。
什么是MicroPython?
我们可以说MicroPython是python的切块版本,旨在与微控制器和嵌入式系统一起使用。MicroPython的语法和编码过程类似于python。因此,如果您已经了解python,就已经知道如何使用MicroPython编写代码。如果您是Python爱好者,则可以查看本文。
MicroPython是由Damion jones领导的团队在英国开发的,他们回来时启动了Kickstarter,在那里他们启动了一组特定的开发板,这些开发板将运行固件,使您可以在其之上运行MicroPython,固件现已移植到ESP8266上运行,您将在本文中学习。
为什么要使用MicroPython for NodeMCU?
Python是迄今为止使用最广泛且易于学习的编程语言之一。因此,随着MicroPython的推出,对基于硬件的微控制器进行编程变得非常容易。如果您以前从未编程过微控制器,并且想开始学习编程,那么MicroPython是一个很好的开始。
MicroPython使用Python标准库的简化版本,因此并非所有标准库都可用。但是,MicroPython确实包含了简单易用的模块来与硬件接口,这意味着在MicroPython的帮助下,对GPIO寄存器的读写变得更加容易。
MicroPython的最终目标是使编程微控制器尽可能简单,因此任何人都可以使用它。通过MicroPython导入库和编写代码变得容易,下面显示的代码是一个简单的示例,它使NodeMCU板载板上的LED闪烁,我们将在文章后详细讨论该代码。
从机器导入从时间导入的引脚睡眠LED =引脚(2,Pin.OUT)时为True:LED.value(不是LED.value())sleep(0.5)
什么是ESP8266(NodeMCU)?
ESP8266是一款低成本Wi-Fi模块,专为物联网(IoT)相关应用而设计。
它带有通用输入和输出引脚(GPIO),并且还支持各种常用协议,如SPI,I2C,UART等。但是,此微控制器最酷的功能是它具有内置的Wi-Fi。有了它,我们可以很容易地连接到任何2.4GHz Wi-Fi。
现在,基础知识已经不复存在,我们可以转到实际的部分,向您展示所需的硬件以及在ESP8266 IC上安装MicroPython的过程。
二手硬件
使用的材料清单
- 1 x面包板
- 1个ESP8266(NodeMCU)
- 1 x DHT22(温度和湿度传感器)
- 1 x 3mm LED(发光二极管)
- 1 x 1K电阻
- 5 x跳线
安装用于ESP8266的MicroPython固件
本文有两种将MicroPython固件安装到ESP8266的方法。我们将讨论它们两者,但是首先,我们需要下载它。
下载适用于ESP8266的MicroPython固件:
在将NodeMCU(ESP8266)板连接到PC之前,我们需要下载最新版本的MicroPython,之后才能在NodeMCU上安装固件,您可以从官方的Micropython下载页面下载它。
在ESP8266上安装MicroPython固件:
在将固件安装到ESP8266上之前,我们需要确保我们有正确的驱动器用于USB到串行转换器,大多数NodeMCU板使用CP2102 USB到UART转换器IC,这就是为什么我们需要下载并安装 CP2102 USB转UART转换器的驱动程序,下载并安装驱动器后,我们需要下载esptool,这是一个基于python的工具,用于在ESP8266上读写固件。
获取Python的最简单方法是通过Microsoft Store,您需要从那里下载并安装Python副本。安装Python后,我们可以使用 pip3 install esptool 命令安装esptool。该过程看起来像下图所示。
安装完成后,检查是否从命令终端访问esptool。
为此,只需运行命令 esptool.py版本, 如果您看到如下图所示的窗口,则说明您已在Windows PC上成功安装了esptool。
并且,如果您无法从命令窗口访问esptool,请尝试将完整的安装路径添加到Windows环境变量中。
查找为NodeMCU板分配的端口:
现在,我们需要找出为NodeMCU板分配的端口,只需进入设备管理器窗口并寻找一个名为Ports的选项(如果展开),就可以找到与NodeMCU板相关的端口。对我们来说,它看起来像下面的图像。
擦除ESP8266的Flash存储器:
现在我们已经找到了关联的COM端口,我们可以通过擦除它的闪存来准备NodeMCU模块。为此,使用以下命令 esptool.py --port COM6 delete_flash 。 该过程如下图所示。
安装固件:
运行以下命令会将MicroPython二进制文件安装到NodeMCU板上,一旦安装此二进制文件将使我们能够上载python程序并与Read Evaluate and Print 循环进行通信 。
esptool.py --port COM6-波特460800 write_flash --flash_size = detect 0 esp8266-20200911-v1.13.bin
该过程类似于下图,
请注意,在安装时,二进制文件在我的桌面上,因此我将CD安装到我的桌面上并运行命令。
现在完成了,是时候与电路板通信并使一些LED闪烁。
使用PuTTY与NodeMCU通信
现在,让我们使用PuTTY,PuTTY启动我们的第一个Hello World程序,我们需要将连接类型设置为Serial,接下来设置Serial行(在本例中为COM6),最后将Speed设置为115200波特。
如果一切正确完成,将出现类似于下图的窗口,并且我们可以轻松地将代码写入其中,它通常像iPython终端一样工作。另外,我们运行了第一个hello world程序,该程序只有两行,一旦输入了print语句,我们就会得到响应。
使用Ampy上传基于Python的LED闪烁代码
借助PuTTY终端访问MicroPython是与ESP模块通信的一种好方法,但是另一种简单的方法是通过Adafruit Ampy工具上传代码,安装ampy,我们可以运行一个简单的 pip3 install adafruit- ampy 命令,它将在我们的PC上安装ampy。该过程如下图所示。
现在,有了这个之后,我们仍然需要有关连接到的串行端口的信息。在我们的例子中是COM6。现在我们只需要用MicroPython编写LED闪烁代码,为此,我们使用了官方python官方网站上提供的 指南
在该指南的帮助下,制作了以下代码。
从机器导入从时间导入的引脚睡眠LED =引脚(2,Pin.OUT)时为True:LED.value(不是LED.value())sleep(0.5)
代码很简单。首先,我们从机器导入Pin库。销类。接下来,我们需要导入时间库,用于制作延迟函数。接下来,我们将Pin2(连接到ESP12E模块的板载LED)设置为输出。接下来,我们设置一个while循环,以500ms的延迟打开和关闭LED。
这就是将代码上传到NodeMCU的方式。为此,您需要运行以下 ampy 命令,
ampy --port COM6放置main.py
如果程序已更正执行,您将看到一个LED闪烁,如下所示。
注意:在上传代码时,我将当前的提示位置设置到我的桌面上,因此,如果不需要,则不需要为 main.py文件 指定完整路径, 因为您需要为 main.py文件 指定完整路径.py文件。
接下来,我们继续从DHT22传感器获取温度和湿度数据。
ESP8266上的MicroPython:使用DHT22获得温度和湿度
DHT22与NodeMCU接口的示意图:
该项目的完整电路图可在下面找到。我已经使用毛刺来创建此电路。
如您所见,该电路非常简单,可以使用跨接线轻松地在面包板上构建。可以使用NodeMCU上的微型USB端口为整个电路供电。我的硬件设置如下所示。
码:
使用MicroPython从DHT22或DHT11传感器获取温度和湿度数据非常容易,因为我们之前安装的MicroPython固件带有内置的DHT库。
1.我们通过从机器类导入DHT库和引脚库来开始代码。
从机器进口销进口dht
2.接下来,我们创建一个DHT对象,该对象指向连接传感器的引脚。
传感器= dht.DHT22(引脚(14))
3.最后,要测量传感器值,我们必须使用以下三个命令。
sensor.measure()sensor.temperature()sensor。湿度()
对于最终代码,我们将其放入while循环中,并打印出标记代码结尾的值。另外,DHT22传感器需要2秒钟才能读取任何数据,因此我们需要增加2秒钟的延迟。
从计算机导入从时间导入销从睡眠导入dht dht22 = dht.DHT22(Pin(14))而True:尝试:sleep(2)dht22.measure()temp = dht22.temperature()hum = dht22.humidity()打印('温度:%3.2f C'%temp)print('湿度:%3.2f %%'%hum)除外OSError如e:print('无法从DHT22传感器读取数据。')
完成编码后,我们可以在ampy命令的帮助下上传代码。
ampy --port COM6放置main.py
成功执行代码后,您可以在任何串行监视器上监视温度和湿度值。我用过腻子,如下所示,我能够在COM5上接收温度和湿度值。
希望您喜欢这篇文章并学到一些有用的东西。如果您有任何疑问,可以将其留在下面的评论部分,或使用我们的 论坛 来发布其他技术问题。