物联网MicroPython课程作业
要求:
采用光敏传感器、温湿度传感器(DHT11)、0LED显示模块、继电器、抽水泵、LED灯完成智能大鹏监控系统的搭建,
基本功能更要求:
- 光线暗,LED灯亮:
- 湿度小于设定值,抽水泵启动:
- OLED显示温度、湿度,屏幕下方显示完成人名字(完整的名字)。
强烈建议使用优质杜邦线!接线一定要牢固!
对于本程序容易出现的问题一下罗列:
- OSError: [Errno 5]EIO,主要为OLED显示屏通信连线,即IIC接口接线不稳导致。
- OSError: [Errno 16],为DHT11连线不稳导致
- OLED字库报错,可能为显示的字符没有在font.py文件中定义。
- 对于DHT11模块在于本程序中总是出现传输数据出错,暂时不知道如何解决。
- (其他暂时没有出现过,等待后续问题添加)
以下为代码实现逻辑
首先导入用到的模块
本程序中的模块中,除了ssd1306_lib.py文件和font.py文件需要下载导入,其他均可以 直接调用。
文件的下载地址如下:
font.py文件https://download.csdn.net/download/StorkRed/90048921
ssd1306_lib.py文件https://download.csdn.net/download/StorkRed/90048918
MicroPython库文件导入如下:
from pyb import Pin
from dht11 import DHT11
from ssd1306_lib import SSD1306
import font
对于初始化程序如下图所示:
光敏传感器DO管脚 | Y1 |
板载LED灯 | X1 |
继电器OUT管脚 | X2 |
DHT11OUT数据管脚 | Y8 |
OLED通行引脚SDA,SCL | Y10,Y9 |
首先是对于端口引脚进行初始化,再对于OLED屏幕进行初始化的显示
light = Pin('Y1',Pin.IN)
led = pyb.Pin("X1",pyb.Pin.OUT_PP)
ka = Pin('X2',Pin.OUT_OD)
dht = DHT11('Y8')
display = SSD1306(pinout={'sda': 'Y10','scl': 'Y9'},
height=64,
external_vcc=False)
display.poweron()
display.init_display()
display.draw_chinese(str(st1),0,0) #“温度:”
display.draw_chinese(str(st2),0,2) #“湿度:”
display.draw_chinese(str(st4),4,0) #“℃”
display.draw_text(70,16,'%',size=2)
display.draw_chinese(str(st5),0,6)
display.display()
对于DHT11温湿度传感器而言需要再CPU中调用,即在While循环中运行。一下则是调用DHT11库中的dht.read_data()函数实现读取其测量的数据,
def readTaHData():
global DATA
global tem,hum
DATA = dht.read_data()
tem=str(int(DATA[0]))
hum=str(int(DATA[1]))
while循环中主要的代码业务逻辑如下:
-
首先是读取DHT11的数据。
readTaHData() #读取数据
-
当光线暗,LED灯亮。
if light.value()==1: #低于设定光亮打开
pyb.LED(1).on()
else:
pyb.LED(1).off()
-
湿度小于设定值,抽水泵启动。
if (int(hum)) > setvalue:
ka.high()
else:
ka.low()
-
OLED上显示测量出的温度、湿度,以及显示人名。
display.draw_text(40,0,tem,size=2) #温湿度显示
display.draw_text(40,16,hum,size=2)
display.display()
附录:对于文字字符的取模
使用的的是PCtoLCD2002取模软件
取模示例如下
取完汉字字模后对于MicroPython的OLED库而言需要UTF-8的引索来找到其数组文件,类似于python中的字典。
取字模网站地址http://tool.lu/hexstr/输入汉字转化为UTF-8编码即可如下图
其中每个汉字字节均以e开头即
宁 | 0xe5ae81 |
引索在font.py中输入格式如下:
0xe28483:
[
0x60,0x91,0x96,0x6C,0x08,0x18,0x18,0x18,0x18,0x18,0x18,0x08,0x0C,0x06,0x01,0x00,
0x00,0xF4,0x0C,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x08,0xF0,0x00,
],#℃
到此即完成了整个项目的编写
以下为main文件的整体
main.py文件的下载https://download.csdn.net/download/StorkRed/90048949
标签:draw,Pin,TYboard,py,0x00,大棚,监控,display,DHT11 From: https://blog.csdn.net/StorkRed/article/details/144070166