查看: 5768|回复: 4

blinker物联网教程——15、智能家居

[复制链接]

该用户从未签到

发表于 2021-6-7 11:59 | 显示全部楼层 |阅读模式
本帖最后由 海神 于 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库文件,该库文件集成了市面上大多液晶的驱动,并且可以显示中文,及其的好用。
库文件安装参考前面教程其他库文件安装方式。

示例一:获取网络时间,显示在屏幕中

硬件连接

wifiduino15oled.png

代码

  1. #define BLINKER_WIFI
  2. #include <Blinker.h>
  3. #include <U8g2lib.h>
  4. #include <Wire.h>


  5. #define BLINKER_PRINT Serial

  6. char auth[] = "8cfxxxxxxxb0";
  7. char ssid[] = "mxxxxxxn";
  8. char pswd[] = "cd8xxxxxxxx1";

  9. volatile int DelayTime;
  10. String h;
  11. String m;
  12. String S;

  13. U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);

  14. void page1() {
  15. u8g2.setFont(u8g2_font_timB12_tf);
  16. u8g2.setFontPosTop();
  17. u8g2.setFont(u8g2_font_wqy14_t_gb2312);
  18. u8g2.setFontPosTop();
  19. u8g2.setCursor(0,3);
  20. u8g2.print("时间:");
  21. u8g2.setCursor(0,23);
  22. <blockquote> u8g2.print(String(Blinker.hour()) + String(":") + String(Blinker.minute()) + String(":") + String(Blinker.second()));
复制代码


示例二:检测室内温湿度
硬件连接:
wifiduino15oled2.png
代码

  1. #define BLINKER_WIFI
  2. #include <Blinker.h>
  3. #include <DHT.h>
  4. #include <U8g2lib.h>
  5. #include <Wire.h>


  6. #define BLINKER_PRINT Serial

  7. char auth[] = "def1xxxxxx94";  //手机端的设备密钥
  8. char ssid[] = "openjumper2016";       //无线wifi名称
  9. char pswd[] = "i3wxxxxxx05";    //wifi密码


  10. volatile int DelayTime;
  11. String h;
  12. String m;
  13. String S;
  14. float tem,hum;

  15. DHT dhtD7(D7, 11);
  16. U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);


  17. void page1() {
  18. u8g2.setFont(u8g2_font_timB12_tf);
  19. u8g2.setFontPosTop();
  20. u8g2.setFont(u8g2_font_wqy14_t_gb2312);
  21. u8g2.setFontPosTop();
  22. u8g2.setCursor(0,3);
  23. u8g2.print("时间:");
  24. u8g2.setCursor(0,23);
  25. //u8g2.print(String(h) + String(":") + String(m) + String(":") + String(S));
  26. u8g2.print(String(Blinker.hour()) + String(":") + String(Blinker.minute()) + String(":") + String(Blinker.second()));
  27. u8g2.setCursor(0,43);
  28. u8g2.print(String(Blinker.year()) + String("/") + String(Blinker.month()) + String("/") + String(Blinker.mday()));
  29. u8g2.setCursor(60,3);
  30. u8g2.print(String("温度") + String(":"));
  31. u8g2.setCursor(60,35);
  32. u8g2.print(String("湿度") + String(":"));
  33. u8g2.setCursor(60,20);
  34. u8g2.print(String(tem) + String("℃"));
  35. u8g2.setCursor(60,50);
  36. u8g2.print(String(hum) + String("%"));
  37. delay(10);
  38. }


  39. void setup(){
  40. u8g2.enableUTF8Print();
  41. DelayTime = 240;
  42. h = "";
  43. m = "";
  44. S = "";


  45.   dhtD7.begin();
  46. u8g2.setI2CAddress(0x3C*2);
  47. u8g2.begin();
  48. Serial.begin(115200);
  49. BLINKER_DEBUG.stream(Serial);
  50.   #if defined(BLINKER_PRINT)
  51. BLINKER_DEBUG.stream(BLINKER_PRINT);
  52.   #endif
  53. Blinker.begin(auth,ssid,pswd);
  54.    Blinker.setTimezone(8.0);

  55. }

  56. void loop(){
  57. hum = dhtD7.readHumidity();
  58. tem = dhtD7.readTemperature();

  59. if ((long) (( Blinker.hour())) % (long) (24) < 10) {
  60.    h = String("0") + String((long) ((Blinker.hour())) % (long) (24));

  61. } else {
  62.    h = (long) (( Blinker.hour())) % (long) (24);

  63. }
  64. if (Blinker.minute() < 10) {
  65.    m = String("0") + String(Blinker.minute());

  66. } else {
  67.    m = Blinker.minute();

  68. }
  69. if (Blinker.second() < 10) {
  70.    S = String("0") + String(Blinker.second());

  71. } else {
  72.    S = Blinker.second();

  73. }
  74. Serial.print("Now the time is :");
  75. Serial.println(String(Blinker.hour()) + String(":") + String(Blinker.minute()) + String(":") + String(Blinker.second()));
  76. u8g2.firstPage();
  77. do
  78. {
  79.    page1();
  80. }while(u8g2.nextPage());
  81. Blinker.run();

  82. }
复制代码



示例三:添加加湿器,实现自动加湿

硬件连接:
加湿传感器连线02.png

完整代码


  1. #define BLINKER_WIFI
  2. #include <Blinker.h>
  3. #include <DHT.h>
  4. #include <U8g2lib.h>
  5. #include <Wire.h>

  6. #define ON HIGH
  7. #define OFF LOW

  8. #define BLINKER_PRINT Serial

  9. char auth[] = "def1xxxxxxx894";  //手机端的设备密钥
  10. char ssid[] = "openjumper2016";       //无线wifi名称
  11. char pswd[] = "i3wxxxxx5";    //wifi密码

  12. volatile int DelayTime;
  13. String h;
  14. String m;
  15. String S;
  16. float tem,hum;

  17. DHT dhtD7(D7, 11);   //DHT11连接至wifiduinoD7引脚
  18. U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
  19. #define humidifier_Pin  D12   // 加湿器引脚

  20. void page1() {
  21. u8g2.setFont(u8g2_font_timB12_tf);
  22. u8g2.setFontPosTop();
  23. u8g2.setFont(u8g2_font_wqy14_t_gb2312);
  24. u8g2.setFontPosTop();
  25. u8g2.setCursor(0,3);
  26. u8g2.print("时间:");
  27. u8g2.setCursor(0,23);
  28. //u8g2.print(String(h) + String(":") + String(m) + String(":") + String(S));
  29. u8g2.print(String(Blinker.hour()) + String(":") + String(Blinker.minute()) + String(":") + String(Blinker.second()));
  30. u8g2.setCursor(0,43);
  31. u8g2.print(String(Blinker.year()) + String("/") + String(Blinker.month()) + String("/") + String(Blinker.mday()));
  32. u8g2.setCursor(60,3);
  33. u8g2.print(String("温度") + String(":"));
  34. u8g2.setCursor(60,35);
  35. u8g2.print(String("湿度") + String(":"));
  36. u8g2.setCursor(60,20);
  37. u8g2.print(String(tem) + String("℃"));
  38. u8g2.setCursor(60,50);
  39. u8g2.print(String(hum) + String("%"));
  40. delay(10);
  41. }


  42. void setup(){
  43. u8g2.enableUTF8Print();
  44. pinMode(humidifier_Pin,OUTPUT);
  45. DelayTime = 240;
  46. h = "";
  47. m = "";
  48. S = "";


  49.   dhtD7.begin();
  50. u8g2.setI2CAddress(0x3C*2);
  51. u8g2.begin();
  52. Serial.begin(115200);
  53. BLINKER_DEBUG.stream(Serial);
  54.   #if defined(BLINKER_PRINT)
  55. BLINKER_DEBUG.stream(BLINKER_PRINT);
  56.   #endif
  57. Blinker.begin(auth,ssid,pswd);
  58.    Blinker.setTimezone(8.0);

  59. }

  60. void loop(){
  61. hum = dhtD7.readHumidity();
  62. tem = dhtD7.readTemperature();
  63. if( hum <=50){  //湿度小于40时
  64.   digitalWrite(humidifier_Pin,ON);  //打开加湿器
  65.   }
  66.   else{
  67.     digitalWrite(humidifier_Pin,OFF); //关闭加湿器
  68.   }
  69. if ((long) ((Blinker.hour())) % (long) (24) < 10) {
  70.    h = String("0") + String((long) ((Blinker.hour())) % (long) (24));

  71. } else {
  72.    h = (long) ((Blinker.hour())) % (long) (24);

  73. }
  74. if (Blinker.minute() < 10) {
  75.    m = String("0") + String(Blinker.minute());

  76. } else {
  77.    m = Blinker.minute();

  78. }
  79. if (Blinker.second() < 10) {
  80.    S = String("0") + String(Blinker.second());

  81. } else {
  82.    S = Blinker.second();

  83. }
  84. Serial.print("Now the time is :");
  85. Serial.println(String(Blinker.hour()) + String(":") + String(Blinker.minute()) + String(":") + String(Blinker.second()));
  86. u8g2.firstPage();
  87. do
  88. {
  89.    page1();
  90. }while(u8g2.nextPage());
  91. Blinker.run();

  92. }
复制代码







实物展示


系列教程——
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、智能宠物喂食器






签到天数: 2 天

[LV.1]初来乍到

发表于 2021-6-24 15:11 | 显示全部楼层
版主版主  有没有接线图

该用户从未签到

发表于 2022-3-30 19:16 | 显示全部楼层
主个获取的小时是错的

该用户从未签到

发表于 2022-3-30 21:27 | 显示全部楼层
c:\Users\Frank\Documents\Arduino\libraries\blinker-library-0.3.9\src/Blinker.h:262:6: error: #error Please set a mode BLINKER_BLE/BLINKER_WIFI/BLINKER_MQTT ! Please check your mode setting.      #error Please set a mode BLINKER_BLE/BLINKER_WIFI/BLINKER_MQTT ! Please check your mode setting.

该用户从未签到

发表于 2022-4-30 09:32 | 显示全部楼层
楼主大佬 这个例程只包含室内监测到的温湿度,好像没有包含室外天气啊,能出个吗
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

好凉一个秋,一周天气先知。
好凉一个秋,一周天气先知
国庆节和重阳节转眼就过去了。进入深秋,天气也在陡然变化。我们就需要更加呵护家人,
blinker-指纹打卡
blinker-指纹打卡
简介:使用wifiduino、指纹模块、点灯App实现一个远程打卡功能。打卡人员通过上位机给
【花雕动手做】有趣好玩音乐可视化(26)--LED 超立方体
【花雕动手做】有趣好玩音
偶然心血来潮,想要做一个声音可视化的系列专题。这个专题的难度有点高,涉及面也比较
我的点灯程序
我的点灯程序
国庆天气比较冷,于是空闲时间把ESP8266拿出来,准备做个点灯小实验,主要是完成MPU方
【干货分享】mega2560原理图PCB图纸altium designer18
【干货分享】mega2560原理
分享一下mega2560的板子 AD版本 **** 本内容被作者隐藏 **** ergo
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表