青创小电视——显示温湿度的oled屏桌面摆件/家庭亲子教育DIY
简介:
使用主控板arduino nano采集温湿度传感器dht11的温湿度数据,同时显示在1.3寸分辨率为128*64的oled屏幕上;通过usb串口与电脑连接,可通过arduino ide等编译器进行程序烧录,还可以更换屏幕显示的风格和内容;配合3d打印的卡通或定制外壳,让显示器电路不再尴尬。
材料清单:
Oled I2C屏幕
1
DHY11温湿度模块
1
Arduino nano主控板
1
杜邦线(母对母)
7
M3*6螺丝+螺母
4
3d打印外壳
3
工作环境:
Arduino ide 烧录软件
加载U8g2lib.h 显示屏u8g2库
加载SimpleDHT.h 传感器DHT库
3d打印机(外壳非3d打印可不选)
接线图:
烧录代码:
#include //调用显示库
#include //调用传感库
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0 ,2);//显示屏设定
int pinDHT11 = A2;//定义DTH11的数据口为A2
SimpleDHT11 dht11(pinDHT11);
void setup(void)
{
u8g2.begin();
Serial.begin(19200);//设定波特率19200
}
void loop(void)
{
byte temperature = 0; //温度参数
byte humidity = 0; //湿度参数
int err = SimpleDHTErrSuccess; //判断参数
if ((err = dht11.read(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess)
{ Serial.print("Read DHT11 failed, err=");
Serial.println(err);
delay(1000);
return;}
u8g2.clearDisplay(); // 清屏
u8g2.clearBuffer(); // 清空显示设备内部缓冲区
u8g2.drawCircle(32, 32,28, U8G2_DRAW_ALL);//圆圈1位置大小
u8g2.drawCircle(98, 32,28, U8G2_DRAW_ALL);//圆圈2位置大小
u8g2.setFont(u8g2_font_fub20_tn); //设置字体
u8g2.setCursor(16, 37); //设置光标处
u8g2.print((int)temperature); //输出温度内容
u8g2.setCursor(84, 37); //设置光标处
u8g2.print((int)humidity); //输出湿度内容
u8g2.setFont(u8g_font_unifont);u8g2.drawStr(28, 55, "c");
u8g2.drawStr(94, 55, "%"); //单位
u8g2.sendBuffer(); // 显示缓冲区内容
delay(10000); // 显示刷新内容
}
资料下载:
本文使用3d外壳模型下载地址:http://www.dayin.la/product/111361.html
文本使用代码等下载地址: https://www.arduino.cn/thread-84087-1-1.html
如果想一站式购齐,欢迎选购我们工坊官方的diy套装:
https://item.taobao.com/item.htm?spm=a2126o.11854294.0.0.412d4831kn3wsw&id=587020695240
工作原理:
dht11数字温湿度传感器包括一个电阻式感湿元件、一个NTC 测温元件及一个八位单片机,dht11使用单总线协议(1-wire,源于达拉斯半导体公司Dallas Semiconductor现已被美信半导体MaximIntegrated),一次传送五组8位的数据,分别为:湿度高八位、湿度低八位、温度高八位、温度低八位以及八位的校验,如:00110010 00000000 0010100 00000000 01000110,
验证通过: 00110010+00000000+0010100+00000000=01000110
湿度:00110010(B)=32(H)=50(D)%RH
温度:0010100(B)=14(H)=20(D)℃
屏幕采用通信方式为I2C的oled屏幕,驱动屏幕需要设置3个参数:设备地址、寄存器地址和命令,可参考Oscar对于屏幕的分析https://oscarliang.com/arduino-oled-display-library/
此外显示的像素地址的三种模式分别为:页地址模式,水平地址模式和垂直地址模式,具体方式可下载数据手册了解详情。