ATTINY85做主控,OLED显示的温湿度计。
简介:
通过Arduino开发环境,对ATTINY85进行编程,利用DH11温湿度传感器,在SSD1306(128*64)OLED显示屏上显示温度和湿度。
材料:
ATTINY85
DHT11
SSD1306 (12864 OLED)
电池盒
纸盒
导线胶布等工具
教程:
首先,下载arduino。我这里使用window系统,因为windows对usb的驱动比较友好。linux调试半天没有发现attiny85的驱动。如果谁能解决这个问题,欢迎提交。
https://downloads.arduino.cc/arduino-1.8.9-windows.exe
下载后一路安装就可以了。启动后,打开:文件->首选项,点击附加开发板管理器,输入 http://digistump.com/package_digistump_index.json
接下来打开:工具->开发板->开发板管理器,输入digistump搜索,安装即可。
然后,选择开发板:digispark(default-16.5mhz)
这个时候,把必要的库文件(Adafruit_Sensor、DHT-sensor-library)复制到C:\Program Files (x86)\Arduino\libraries文件夹。
该库的下载链接:https://github.com/weathernetwork/docs/raw/master/weatherminibox/code.zip
接线:
oled 的SDA接ATTINY85的P0,SCK接ATTINY85的P2,DHT11的输出端接ATTINY85的P1。其余的GND和VDD/VCC都连接好即可。
接下来新建一个项目,文件源码如下:
源码:
#include "SSD1306_minimal.h"
#include <avr/pgmspace.h>
#include "DHT.h"
#define DHTPIN 1 // what pin we're connected to
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
SSD1306_Mini oled;
void setup() {
oled.init(0x3c);
oled.clear();
oled.startScreen();
oled.cursorTo(8, 1);
oled.printString("attiny85 & dht11");
oled.cursorTo(0, 4);
oled.printString("Temp: ");
oled.cursorTo(0, 6);
oled.printString("Humidity: ");
dht.begin();
}
void loop() {
delay(1000);
char temp[16];
oled.cursorTo(115, 4);
itoa((int)dht.readTemperature(), temp, 10);
oled.printString(temp);
char hum[16];
oled.cursorTo(115, 6);
itoa((int)dht.readHumidity(), hum, 10);
oled.printString(hum);
}
插上ATTINY85,烧录即可。
最终效果如下图所示:
这些裸漏的线很有geek的感觉。但是为了日常使用,还是要加一个壳子。
因为我的3D打印机坏了,所以徒手使用纸壳做一个。
先看一下大小
然后画出大致位置并打洞
把东西粘上去。(请无视我的黑胶布)
最终就是这样子,外形有些丑,但并不影响使用。
附:源代码下载地址:
https://github.com/weathernetwork/docs/raw/master/weatherminibox/code.zip
获取更多创客作品和教程
请扫描二维码