【雕爷学编程】MicroPython手册之 ESP8266 DHT驱动

在这里插入图片描述
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进入了微控制器领域,是一项重要的创新,既降低了编程门槛,又提供了良好的硬件控制能力。非常适合各类物联网和智能硬件的开发。
在这里插入图片描述

ESP8266是一种低成本的Wi-Fi芯片,它可以用于开发物联网、智能家居、网络控制等应用。不同的ESP8266芯片或模块可能有不同的参数,因此在使用或购买时,需要注意选择合适的型号和版本。以下是一些常见的ESP8266参数:

1、尺寸:ESP8266芯片的尺寸为5x5 mm,ESP8266模块的尺寸根据外围电路和天线的不同而有所差异,一般在10x15 mm到25x50 mm之间。
2、工作温度:ESP8266芯片的工作温度范围为-40125℃,ESP8266模块的工作温度范围一般为-4085℃。
3、处理器:ESP8266芯片内置了一个32位的Tensilica L106 RISC处理器,最高时钟频率为160 MHz,支持实时操作系统和Wi-Fi协议栈。
4、内存:ESP8266芯片内置了64 KB的指令RAM和96 KB的数据RAM,以及64 KB的boot ROM。ESP8266模块还需要外接一个Flash存储器,一般为512 KB到16 MB之间。
5、电源:ESP8266芯片的供电电压为3.0~3.6 V,最大功耗为170 mA,最小功耗为20 uA。ESP8266模块的供电电压一般为3.3 V或5 V,最大功耗一般为200~300 mA,最小功耗一般为10~20 uA。
6、通信协议:ESP8266芯片支持IEEE 802.11 b/g/n标准的Wi-Fi协议,支持Station、SoftAP和Station+SoftAP三种模式。ESP8266芯片还支持多种数字外设接口,如GPIO、PWM、ADC、UART、I2C、SPI等。ESP8266芯片还可以使用socket模块或其他协议库来实现TCP/IP、UDP、HTTP、MQTT等协议。
在这里插入图片描述
MicroPython的ESP8266 DHT驱动是一种用于读取 DHT(数字湿度和温度)传感器的模块,可以获取周围空气的温度和相对湿度。

DHT驱动的主要特点有:

DHT驱动支持两种类型的传感器:DHT11(蓝色)和 DHT22(白色),它们提供相同的 1 线接口,但需要不同的对象来处理。
DHT驱动使用自定义的 1 线协议,与 Dallas 1 线协议不同,从传感器获取有效载荷,包括湿度值、温度值和校验和。
DHT驱动返回的温度值以摄氏度为单位,返回的湿度值是相对湿度的百分比。DHT22 的温湿度读数具有 1 位小数分辨率,DHT11 的温湿度读数都是整数。

DHT驱动的应用场景有:

DHT驱动可以用于测量环境的温湿度变化,如温室、农场、仓库等,实现数据采集和监控。
DHT驱动可以用于实现基于温湿度的控制逻辑,如风扇、加湿器、空调等,实现智能调节和节能。
DHT驱动可以用于实现与温湿度相关的显示或提示功能,如温度计、天气预报、舒适指数等,实现用户友好和信息反馈。

DHT驱动的注意事项有:

DHT驱动需要根据具体的传感器类型选择合适的对象和参数,否则可能导致数据错误或无法读取。
DHT驱动需要为数据引脚使用上拉电阻,并注意引脚分配和布线问题,避免信号干扰或损坏设备。
DHT驱动需要注意传感器的工作范围和精度问题,以及传感器精度随时间降低的问题,定期校准或更换传感器。

MicroPython的ESP8266 DHT驱动的几个实际运用程序参考代码案例如下:

案例1:使用DHT驱动读取并打印温湿度数据:

# 导入相关模块
import dht
import machine

# 创建DHT11对象,连接到GPIO4引脚
d = dht.DHT11(machine.Pin(4))

# 测量并打印温湿度数据
d.measure()
print('Temperature: {} C'.format(d.temperature()))
print('Humidity: {} %'.format(d.humidity()))

案例2:使用DHT驱动控制风扇开关:

# 导入相关模块
import dht
import machine

# 创建DHT22对象,连接到GPIO4引脚
d = dht.DHT22(machine.Pin(4))

# 创建风扇对象,连接到GPIO12引脚
fan = machine.Pin(12, machine.Pin.OUT)

# 定义一个温度阈值(单位为摄氏度)
temp_threshold = 25

# 测量温度并根据阈值控制风扇开关
d.measure()
temp = d.temperature()
if temp > temp_threshold:
    # 如果温度高于阈值,就打开风扇
    fan.on()
else:
    # 如果温度低于或等于阈值,就关闭风扇
    fan.off()

案例3:使用DHT驱动显示温湿度数据到OLED屏幕:

# 导入相关模块
import dht
import machine
import ssd1306

# 创建DHT11对象,连接到GPIO4引脚
d = dht.DHT11(machine.Pin(4))

# 创建OLED对象,连接到I2C总线
i2c = machine.I2C(scl=machine.Pin(5), sda=machine.Pin(4))
oled = ssd1306.SSD1306_I2C(128, 64, i2c)

# 测量温湿度数据并显示到OLED屏幕
d.measure()
temp = d.temperature()
humi = d.humidity()
oled.fill(0) # 清空屏幕
oled.text('Temperature: {} C'.format(temp), 0, 0) # 显示温度
oled.text('Humidity: {} %'.format(humi), 0, 10) # 显示湿度
oled.show() # 刷新屏幕

案例4:温度和湿度监测:

import dht
import machine
import time

dht_pin = machine.Pin(2)
dht_sensor = dht.DHT11(dht_pin)

while True:
    dht_sensor.measure()
    temperature = dht_sensor.temperature()
    humidity = dht_sensor.humidity()
    print("Temperature: {}°C".format(temperature))
    print("Humidity: {}%".format(humidity))
    time.sleep(2)

这个示例使用ESP8266驱动DHT11传感器实时监测温度和湿度。通过实例化dht.DHT11类,并指定DHT传感器的引脚(例如引脚2),然后在主循环中使用measure()方法测量温度和湿度,并将其打印出来。然后使用time.sleep()方法设置延迟,以便每隔2秒读取一次数据。

案例5:温度和湿度报警:

import dht
import machine
import time

dht_pin = machine.Pin(2)
dht_sensor = dht.DHT11(dht_pin)

while True:
    dht_sensor.measure()
    temperature = dht_sensor.temperature()
    humidity = dht_sensor.humidity()
    if temperature > 25:
        print("Temperature too high! Temperature: {}°C".format(temperature))
    if humidity > 70:
        print("Humidity too high! Humidity: {}%".format(humidity))
    time.sleep(2)

这个示例使用ESP8266驱动DHT11传感器监测温度和湿度,并在温度超过25°C或湿度超过70%时输出报警信息。通过实例化dht.DHT11类,并指定DHT传感器的引脚(例如引脚2),然后在主循环中使用measure()方法测量温度和湿度,然后进行报警判断,如果温度或湿度超过预设阈值,就输出相应的报警信息。

案例6:温湿度数据记录:

import dht
import machine
import time
import ujson

dht_pin = machine.Pin(2)
dht_sensor = dht.DHT11(dht_pin)

data = []

while True:
    dht_sensor.measure()
    temperature = dht_sensor.temperature()
    humidity = dht_sensor.humidity()
    data.append({"temperature": temperature, "humidity": humidity})
    with open('data.json', 'w') as file:
        ujson.dump(data, file)
    time.sleep(5)

这个示例使用ESP8266驱动DHT11传感器实时监测温度和湿度,并将数据记录到JSON文件中。通过实例化dht.DHT11类,并指定DHT传感器的引脚(例如引脚2),然后在主循环中使用measure()方法测量温度和湿度,并将数据以字典的形式添加到data列表中。然后使用ujson.dump()方法将data列表中的数据写入到名为data.json的JSON文件中,每隔5秒记录一次数据。这些示例代码提供了使用MicroPython驱动ESP8266的DHT传感器的实际运用程序参考。请根据自己的需求和硬件配置进行适当的调整和修改。

案例7:读取温湿度数据:

import dht
import machine

# 配置DHT引脚(例如引脚2)
dht_pin = machine.Pin(2)
d = dht.DHT11(dht_pin)

# 读取温湿度数据
d.measure()
temperature = d.temperature()
humidity = d.humidity()

# 打印温湿度数据
print("Temperature: ", temperature, "°C")
print("Humidity: ", humidity, "%")

在上述示例中,我们首先使用machine.Pin()创建一个引脚对象,用于配置DHT传感器的引脚(例如引脚2)。然后,使用dht.DHT11()创建一个DHT11对象,并将引脚对象作为参数传入。接下来,使用d.measure()方法读取温湿度数据。然后,使用d.temperature()和d.humidity()方法分别获取温度和湿度的值。最后,使用print()函数打印温湿度数据。

案例8:循环读取温湿度数据:

import dht
import machine
import time

# 配置DHT引脚(例如引脚2)
dht_pin = machine.Pin(2)
d = dht.DHT11(dht_pin)

# 循环读取温湿度数据
while True:
    d.measure()
    temperature = d.temperature()
    humidity = d.humidity()

    # 打印温湿度数据
    print("Temperature: ", temperature, "°C")
    print("Humidity: ", humidity, "%")

    # 延时
    time.sleep(2)

在上述示例中,我们首先使用machine.Pin()创建一个引脚对象,用于配置DHT传感器的引脚(例如引脚2)。然后,使用dht.DHT11()创建一个DHT11对象,并将引脚对象作为参数传入。接下来,使用一个无限循环来连续读取温湿度数据。在循环中,使用d.measure()方法读取温湿度数据,然后使用d.temperature()和d.humidity()方法获取温度和湿度的值。最后,使用print()函数打印温湿度数据。使用time.sleep()函数可以控制每次读取之间的时间间隔。

案例9:响应温度阈值:

import dht
import machine

# 配置DHT引脚(例如引脚2)
dht_pin = machine.Pin(2)
d = dht.DHT11(dht_pin)

# 温度阈值
temperature_threshold = 25

# 读取温度数据并判断是否超过阈值
d.measure()
temperature = d.temperature()

if temperature > temperature_threshold:
    print("Temperature is above the threshold.")
else:
    print("Temperature is below the threshold.")

在上述示例中,我们首先使用machine.Pin()创建一个引脚对象,用于配置DHT传感器的引脚(例如引脚2)。然后,使用dht.DHT11()创建一个DHT11对象,并将引脚对象作为参数传入。接下来,定义一个温度阈值(例如25摄氏度)。然后,使用d.measure()方法读取温度数据,并使用d.temperature()方法获取温度的值。接下来,使用条件语句判断温度是否超过阈值。如果温度大于阈值,打印"Temperature is above the threshold.“;否则,打印"Temperature is below the threshold.”。这些示例提供了使用MicroPython控制ESP8266的DHT驱动程序的实际运用程序参考代码案例。请注意,具体的配置和操作取决于所使用的具体DHT传感器和引脚配置。

请注意,以上示例仅供参考,具体的使用方法可能因不同的硬件平台和MicroPython版本而有所差异。在实际编程中,你需要根据你所使用的硬件和具体需求进行适当的调整。

在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
2022 / 01/ 30: 新版esptool 刷micropython固件指令不是 esptool.py cmd... 而是 esptool cmd... 即可;另外rshell 在 >= python 3.10 的时候出错解决方法可以查看:  已于2022年发布的: 第二章:修复rshell在python3.10出错 免费内容: https://edu.csdn.net/course/detail/29666 micropython语法和python3一样,编写起来非常方便。如果你快速入门单片机玩物联网而且像轻松实现各种功能,那绝力推荐使用micropython。方便易懂易学。 同时如果你懂C语音,也可以用C写好函数并编译进micropython固件里然后进入micropython调用(非必须)。 能通过WIFI联网(2.1章),也能通过sim卡使用2G/3G/4G/5G联网(4.5章)。 为实现语音控制,本教程会教大家使用tensorflow利用神经网络训练自己的语音模型并应用。为实现通过网页控制,本教程会教大家linux(debian10 nginx->uwsgi->python3->postgresql)网站前后台入门。为记录单片机传输过来的数据, 本教程会教大家入门数据库。  本教程会通过通俗易懂的比喻来讲解各种原理与思路,并手把手编写程序来实现各项功能。 本教程micropython版本是 2019年6月发布的1.11; 更多内容请看视频列表。  学习这门课程之前你需要至少掌握: 1: python3基础(变量, 循环, 函数, 常用库, 常用方法)。 本视频使用到的零件与淘宝上大致价格:     1: 超声波传感器(3)     2: MAX9814麦克风放大模块(8)     3: DHT22(15)     4: LED(0.1)     5: 8路5V低电平触发继电器(12)     6: HX1838红外接收模块(2)     7:红外发射管(0.1),HX1838红外接收板(1)     other: 电表, 排线, 面包板(2)*2,ESP32(28)  

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

驴友花雕

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

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

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

打赏作者

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

抵扣说明:

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

余额充值