本帖最后由 海神 于 2022-5-17 16:10 编辑
简介
科技给我们的生活带来了极大便利,我们现在看时间天气,需要在智能手机网上一搜索,便可以筛选出想要的信息。如果我们在自己的桌子上放一个时钟,实时显示温湿度的同时,还能实时显示时间,这样的话给我们的桌面增加了科技感,同时也方便自己获取信息。本次实验我们分为几步: 第一步:blinker支持了获取网络时间接口,我们可以实时抓取网络上准确的时间,把数据显示在我们自制的时钟显示器上。
第二步:所以本次实验我们制作一个可以放在桌面的时钟,物联网时钟实时的显示时间及天气,这样更加方便查看想要的数据,并提升生活品质。
第三步:在此基础上,我们还添加一个加湿器,当检测空气比较干燥时,立即开起加湿器给室内保湿
硬件
microUSB线*1条 DHT11模块*1张 加湿器模块*1张 公对母杜邦线*3条
blinker获取时间数据函数
设置时区——通过设置时区,我们一般是使用东八区、北京时间 Blinker.setTimezone()
获取时间——获取网络时间,时分秒,年月日 Blinker.time();Blinker.second();Blinker.minute(); Blinker.hour(); Blinker.wday(); Blinker.mday(); Blinker.month(); Blinker.year(); Blinker.startTime();
首先我们通过例程来实现联网获取时间,并将其显示在OLED屏幕上。为了驱动OLED屏幕,我们用到了U8G2库文件,该库文件集成了市面上大多液晶的驱动,并且可以显示中文,及其的好用。库文件安装参考前面教程其他库文件安装方式。
示例一:获取网络时间,显示在屏幕中
硬件连接
代码
- #define BLINKER_WIFI
- #include <Blinker.h>
- #include <U8g2lib.h>
- #include <Wire.h>
- #define BLINKER_PRINT Serial
- char auth[] = "8cfxxxxxxxb0";
- char ssid[] = "mxxxxxxn";
- char pswd[] = "cd8xxxxxxxx1";
- volatile int DelayTime;
- String h;
- String m;
- String S;
- U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
- void page1() {
- u8g2.setFont(u8g2_font_timB12_tf);
- u8g2.setFontPosTop();
- u8g2.setFont(u8g2_font_wqy14_t_gb2312);
- u8g2.setFontPosTop();
- u8g2.setCursor(0,3);
- u8g2.print("时间:");
- u8g2.setCursor(0,23);
- <blockquote> u8g2.print(String(Blinker.hour()) + String(":") + String(Blinker.minute()) + String(":") + String(Blinker.second()));
复制代码
示例二:检测室内温湿度 硬件连接: 代码
- #define BLINKER_WIFI
- #include <Blinker.h>
- #include <DHT.h>
- #include <U8g2lib.h>
- #include <Wire.h>
- #define BLINKER_PRINT Serial
- char auth[] = "def1xxxxxx94"; //手机端的设备密钥
- char ssid[] = "openjumper2016"; //无线wifi名称
- char pswd[] = "i3wxxxxxx05"; //wifi密码
- volatile int DelayTime;
- String h;
- String m;
- String S;
- float tem,hum;
- DHT dhtD7(D7, 11);
- U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
- void page1() {
- u8g2.setFont(u8g2_font_timB12_tf);
- u8g2.setFontPosTop();
- u8g2.setFont(u8g2_font_wqy14_t_gb2312);
- u8g2.setFontPosTop();
- u8g2.setCursor(0,3);
- u8g2.print("时间:");
- u8g2.setCursor(0,23);
- //u8g2.print(String(h) + String(":") + String(m) + String(":") + String(S));
- u8g2.print(String(Blinker.hour()) + String(":") + String(Blinker.minute()) + String(":") + String(Blinker.second()));
- u8g2.setCursor(0,43);
- u8g2.print(String(Blinker.year()) + String("/") + String(Blinker.month()) + String("/") + String(Blinker.mday()));
- u8g2.setCursor(60,3);
- u8g2.print(String("温度") + String(":"));
- u8g2.setCursor(60,35);
- u8g2.print(String("湿度") + String(":"));
- u8g2.setCursor(60,20);
- u8g2.print(String(tem) + String("℃"));
- u8g2.setCursor(60,50);
- u8g2.print(String(hum) + String("%"));
- delay(10);
- }
- void setup(){
- u8g2.enableUTF8Print();
- DelayTime = 240;
- h = "";
- m = "";
- S = "";
- dhtD7.begin();
- u8g2.setI2CAddress(0x3C*2);
- u8g2.begin();
- Serial.begin(115200);
- BLINKER_DEBUG.stream(Serial);
- #if defined(BLINKER_PRINT)
- BLINKER_DEBUG.stream(BLINKER_PRINT);
- #endif
- Blinker.begin(auth,ssid,pswd);
- Blinker.setTimezone(8.0);
- }
- void loop(){
- hum = dhtD7.readHumidity();
- tem = dhtD7.readTemperature();
- if ((long) (( Blinker.hour())) % (long) (24) < 10) {
- h = String("0") + String((long) ((Blinker.hour())) % (long) (24));
- } else {
- h = (long) (( Blinker.hour())) % (long) (24);
- }
- if (Blinker.minute() < 10) {
- m = String("0") + String(Blinker.minute());
- } else {
- m = Blinker.minute();
- }
- if (Blinker.second() < 10) {
- S = String("0") + String(Blinker.second());
- } else {
- S = Blinker.second();
- }
- Serial.print("Now the time is :");
- Serial.println(String(Blinker.hour()) + String(":") + String(Blinker.minute()) + String(":") + String(Blinker.second()));
- u8g2.firstPage();
- do
- {
- page1();
- }while(u8g2.nextPage());
- Blinker.run();
- }
复制代码
示例三:添加加湿器,实现自动加湿
硬件连接:
完整代码
- #define BLINKER_WIFI
- #include <Blinker.h>
- #include <DHT.h>
- #include <U8g2lib.h>
- #include <Wire.h>
- #define ON HIGH
- #define OFF LOW
- #define BLINKER_PRINT Serial
- char auth[] = "def1xxxxxxx894"; //手机端的设备密钥
- char ssid[] = "openjumper2016"; //无线wifi名称
- char pswd[] = "i3wxxxxx5"; //wifi密码
- volatile int DelayTime;
- String h;
- String m;
- String S;
- float tem,hum;
- DHT dhtD7(D7, 11); //DHT11连接至wifiduinoD7引脚
- U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
- #define humidifier_Pin D12 // 加湿器引脚
- void page1() {
- u8g2.setFont(u8g2_font_timB12_tf);
- u8g2.setFontPosTop();
- u8g2.setFont(u8g2_font_wqy14_t_gb2312);
- u8g2.setFontPosTop();
- u8g2.setCursor(0,3);
- u8g2.print("时间:");
- u8g2.setCursor(0,23);
- //u8g2.print(String(h) + String(":") + String(m) + String(":") + String(S));
- u8g2.print(String(Blinker.hour()) + String(":") + String(Blinker.minute()) + String(":") + String(Blinker.second()));
- u8g2.setCursor(0,43);
- u8g2.print(String(Blinker.year()) + String("/") + String(Blinker.month()) + String("/") + String(Blinker.mday()));
- u8g2.setCursor(60,3);
- u8g2.print(String("温度") + String(":"));
- u8g2.setCursor(60,35);
- u8g2.print(String("湿度") + String(":"));
- u8g2.setCursor(60,20);
- u8g2.print(String(tem) + String("℃"));
- u8g2.setCursor(60,50);
- u8g2.print(String(hum) + String("%"));
- delay(10);
- }
- void setup(){
- u8g2.enableUTF8Print();
- pinMode(humidifier_Pin,OUTPUT);
- DelayTime = 240;
- h = "";
- m = "";
- S = "";
- dhtD7.begin();
- u8g2.setI2CAddress(0x3C*2);
- u8g2.begin();
- Serial.begin(115200);
- BLINKER_DEBUG.stream(Serial);
- #if defined(BLINKER_PRINT)
- BLINKER_DEBUG.stream(BLINKER_PRINT);
- #endif
- Blinker.begin(auth,ssid,pswd);
- Blinker.setTimezone(8.0);
- }
- void loop(){
- hum = dhtD7.readHumidity();
- tem = dhtD7.readTemperature();
- if( hum <=50){ //湿度小于40时
- digitalWrite(humidifier_Pin,ON); //打开加湿器
- }
- else{
- digitalWrite(humidifier_Pin,OFF); //关闭加湿器
- }
- if ((long) ((Blinker.hour())) % (long) (24) < 10) {
- h = String("0") + String((long) ((Blinker.hour())) % (long) (24));
- } else {
- h = (long) ((Blinker.hour())) % (long) (24);
- }
- if (Blinker.minute() < 10) {
- m = String("0") + String(Blinker.minute());
- } else {
- m = Blinker.minute();
- }
- if (Blinker.second() < 10) {
- S = String("0") + String(Blinker.second());
- } else {
- S = Blinker.second();
- }
- Serial.print("Now the time is :");
- Serial.println(String(Blinker.hour()) + String(":") + String(Blinker.minute()) + String(":") + String(Blinker.second()));
- u8g2.firstPage();
- do
- {
- page1();
- }while(u8g2.nextPage());
- Blinker.run();
- }
复制代码
实物展示
系列教程——
blinker物联网教程——1、物联网及blinker介绍
blinker物联网教程——2、搭建编程环境
blinker物联网教程——3、主控硬件wifiduino
blinker物联网教程——4、控制开关灯
blinker物联网教程——5、认识传感器
blinker物联网教程——6、wifi智能插座
blinker物联网教程——7、室内温湿度计
blinker物联网教程——8、定时任务-定时震动器
blinker物联网教程——9、blinker语音识别-芝麻开门
blinker物联网教程——10、日照时间分析
blinker物联网教程——11、自动灌溉
blinker物联网教程——12、调色盘
blinker物联网教程——13、公园噪音监测
blinker物联网教程——14、智能停车场
blinker物联网教程——15、智能家居
blinker物联网教程——16、遥控机械臂
blinker物联网教程——17、防疫隔离门磁
blinker物联网教程——18、手机控制空调
blinker物联网教程——19、接入小度智能音箱
blinker物联网教程——20、语音氛围灯
blinker物联网教程——23、wifi智能小车
blinker物联网教程——24、智能宠物喂食器
|