青创小电视——显示温湿度的oled屏桌面摆件/家庭亲子教育DIY
简介:
使用主控板arduino nano采集温湿度传感器dht11的温湿度数据,同时显示在1.3寸分辨率为128*64的oled屏幕上;通过usb串口与电脑连接,可通过arduino ide等编译器进行程序烧录,还可以更换屏幕显示的风格和内容;配合3d打印的卡通或定制外壳,让显示器电路不再尴尬。
![af8fda4abc53baad84d2ed7deb0bb49b.png](https://i-blog.csdnimg.cn/blog_migrate/db660015a60d2319fbbd470950f17a1b.jpeg)
你和孩子的桌面小精灵
材料清单:
Oled I2C屏幕
1
DHY11温湿度模块
1
Arduino nano主控板
1
杜邦线(母对母)
7
M3*6螺丝+螺母
4
3d打印外壳
3
![21751656940f017d453eeded5da293af.png](https://i-blog.csdnimg.cn/blog_migrate/5921ab62935c53d360800dd962017143.jpeg)
各模块参数
工作环境:
Arduino ide 烧录软件
加载U8g2lib.h 显示屏u8g2库
加载SimpleDHT.h 传感器DHT库
3d打印机(外壳非3d打印可不选)
接线图:
![48c94888aced2c9e5d48221e0218f102.png](https://i-blog.csdnimg.cn/blog_migrate/559ecae044720a063242e41c8c4cc5b7.jpeg)
接线示意图
烧录代码:
![758fda819781ca5b1b713a0237bbfb34.png](https://i-blog.csdnimg.cn/blog_migrate/59d9b6e29783c7d30bb765557ed8c857.jpeg)
开源代码和硬件
#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); // 显示刷新内容
}
资料下载:
![a0d3e5920720be119d7656eee29f7fca.png](https://i-blog.csdnimg.cn/blog_migrate/11b8fc8b59d6eb6c946a90929b5eb7f0.jpeg)
3d打印外壳
本文使用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
![8ff35ed393dc4ca42dcd55b0d96b72ff.png](https://i-blog.csdnimg.cn/blog_migrate/b49b70b4a4c1ab577648f55a1bec7b96.jpeg)
适合家庭亲子diy制作
工作原理:
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)℃
![b2299ebe2f54e14c71c3f00c96a7d84c.png](https://i-blog.csdnimg.cn/blog_migrate/8d88911b69f82eee7a59b86f47b39136.jpeg)
屏幕尺寸图
屏幕采用通信方式为I2C的oled屏幕,驱动屏幕需要设置3个参数:设备地址、寄存器地址和命令,可参考Oscar对于屏幕的分析https://oscarliang.com/arduino-oled-display-library/
此外显示的像素地址的三种模式分别为:页地址模式,水平地址模式和垂直地址模式,具体方式可下载数据手册了解详情。
![5ec1e989f30f065d795300eb0f1a954d.png](https://i-blog.csdnimg.cn/blog_migrate/8a0b550742f8aa9eccb16e22607ef630.jpeg)
混色搭配的3d打印外壳