【微雪 RP2040双核开发板】测试4——I温度传感器
《微雪 RP2040双核开发板》具有丰富的外部接口,给用户进行硬件开发提供了方便,具体如下:
- 全部GPIO(共30个,但是有引脚已经连接内部电路,复用时需要注意,详情请参考)经过1.27间距排母引出
- 支持低功耗睡眠和休眠模式
- 2 个 SPI,2 个 I2C,2 个 UART,4 个 12 位 ADC,16 个可控 PWM 通道
- 精确的片上时钟和定时器
- 8 个可编程 I/O (PIO) 状态机,用于自定义外设支持
本文主要介绍如何利用微雪RP2040双核开发板Micropython内置库模块DHT、ds18x20配以温度传感器DHT11、DS18B20,进行环境温湿度检测。
- 温度传感器DHT11
DHT11是一款湿温度一体化的数字传感器。该传感器包括一个电阻式测湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。通过单片机等微处理器简单的电路连接就能够实时的采集本地湿度和温度。DHT11与MCU之间能采用简单的单总线进行通信,仅仅需要一个I/O口。传感器内部湿度和温度数据40Bit的数据一次性传给MCU,数据采用校验和方式进行校验,有效的保证数据传输的准确性。DHT11功耗很低,5V电源电压下,工作平均最大电流 0.5mA。
DHT11 的技术参数如下:
- 工作电压范围:3.3V-5.5V
- 工作电流 :平均 0.5mA
- 输出:单总线数字信号
- 测量范围:湿度 20~90%RH,温度 0~50℃
- 精度 :湿度±5%,温度±2℃
- 分辨率 :湿度 1%,温度 1℃
DHT11 的管脚排列如下图所示:
- 温度传感器DS18B20
DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。技术性能描述:
- 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯;
- 测温范围 -55℃~+125℃;
- 支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温;
- 工作电源: 3.0~5.5V/DC
- 内部温度采集精度可以由用户自定义为9-Bits至12-Bits。
由于温度传感器DHT11、DS18B20的外部接口均为3线,分别为VCC、GND、Dout(数据输出线,DS18B20为DQ),VCC、GND、Dout 分别接RP2040的GPIO引出排母H1的第18、20、10(GPIO 4)即可。
- 连接温度传感器DHT11
程序如下:
import dht
import machine
import framebuf
import time
import lcd_GA9 as LCD_1
if __name__=='__main__':
d = dht.DHT11(machine.Pin(4))
d.measure()
LCD = LCD_1.LCD_1inch28()
LCD.set_bl_pwm(65535)
LCD.fill(LCD.white)
LCD.fill_rect(0,50,240,60,LCD.red)
LCD.text("DHT11 Test",80,70,LCD.white)
while(True):
d.measure()
temp=d.temperature()
humi=d.humidity()
LCD.fill_rect(0,100,240,80,LCD.blue)
LCD.text("Temp:{:.2f}C".format(temp),70, 120,LCD.green)
LCD.text("Humi:{:.2f}%".format(humi),70, 150,LCD.white)
LCD.show()
time.sleep(2)
运行结果:
- 连接温度传感器DS18B20
程序如下:
import time, ds18x20
from machine import Pin
import onewire
import framebuf
import lcd_GA9 as LCD_1
if __name__=='__main__':
LCD = LCD_1.LCD_1inch28()
LCD.set_bl_pwm(65535)
LCD.fill(LCD.white)
LCD.fill_rect(0,50,240,60,LCD.red)
LCD.text("DS18B20 Test",60,70,LCD.white)
ow = onewire.OneWire(Pin(4)) # create a OneWire bus on GPIO12
while(True):
ds = ds18x20.DS18X20(ow)
roms = ds.scan()
ds.convert_temp()
time.sleep_ms(750)
ow.reset() # reset the bus
LCD.fill_rect(0,100,240,80,LCD.blue)
for rom in roms:
print(ds.read_temp(rom))
LCD.text("Temp:{:.2f}C".format(ds.read_temp(rom)),70, 120,LCD.green)
LCD.show()
运行结果:
由于微雪RP2040双核开发板提供了丰富的外部接口及内置模块,使得圆弧在进行硬件开发时倍感轻松。需要提醒的是用户在使用GPIO时一定要阅读微雪RP2040双核开发板的相关文档,系统已经使用的GPIO一定要避免,否则会产生冲突。