blinker ws2812彩灯控制加DHT11温湿度采集-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2516|回复: 5

blinker ws2812彩灯控制加DHT11温湿度采集

[复制链接]
发表于 2020-12-15 14:32 | 显示全部楼层 |阅读模式
本帖最后由 zlqe 于 2020-12-15 15:34 编辑

blinker ws2812彩灯控制加温湿度采集
  第一次发表帖子,希望各位路过的大佬轻轻的喷  哈哈哈哈    有什么建议都可以提出来


先看看整体




然后是DHT11

然后是灯

  接下来步入正题
  首先,在接触esp822这么久,尝试过很多联网控制的东西,最后还是觉得点灯科技的最简单最好用,我的物联网入门就是由点灯开始的。



  然后我来讲讲我的这个小东西,   首先esp8266作为国产芯片,  价格上很便宜,   性价比很高。   然后是 ws2812灯珠,淘宝价格差不多一两毛一颗,稍微有点贵了,  但是它相对于其他的普通RGB灯珠而言最大的优势就是它只需要一根线就能控制更高精度的RGB颜色。 再然后是DHT11温湿度传感器 虽然温湿度测量范围不宽,但是普通家用绰绰有余。主要是便宜,性价比高。
连线
DHT11   vcc-5v   gnd- gnd  DATA- D4
ws2812    vcc-5v   gnd- gnd  in -    D1
其他的没啥了

接下来开始准备写代码


首先需要搭建开发环境   我就不细致讲了   粗略说一下这个是点灯科技官方说明
https://blinker.app/doc/getting-start-8266

点灯的技术部门更新很快啊  现在支持的  arduino ide版本必须是1.8.7以上了    我直接用1.8.13
然后是esp8266支持包  也要用2.5.0以上版本了  我用的是2.7.4
然后再加上点灯科技的库文件  

开发环境大功告成



然后开始写代码   

写代码之前一定先看看手册 看文档  摸透了再开始是最好的   也可以看一点 实验一点
开发文档链接
https://blinker.app/doc/home
然后再看看官方的接入例程
https://blinker.app/doc/getting-start-arduino


代码和注释放上来

  1. #define BLINKER_WIFI     
  2. #include <Blinker.h>
  3. #include <DHT.h>                           //加载三个库
  4. int times = 0 ;         
  5. char auth[] = "XXXXXXXX";             //设备密匙
  6. char ssid[] = "XXXXXXXX";                    //WiFi·名称
  7. char pswd[] = "XXXXXXXX";               //WiFi密码
  8. /*****************ws2812的相关配置******************/   
  9. #include <Adafruit_NeoPixel.h>                     
  10. #ifdef __AVR__
  11.   #include <avr/power.h>
  12. #endif
  13. #define PIN            D1          //控制引脚
  14. #define NUMPIXELS      8           //级联灯珠数目
  15. Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

  16. /*************三个按键对应的输出******************/
  17. int led = D0 ;                  
  18. int switch2 = D2 ;
  19. int switch3 = D3 ;
  20. /********************DHT11配置**************/

  21. BlinkerNumber HUMI("humi");
  22. BlinkerNumber TEMP("temp");
  23. #define DHTPIN D4 //温湿度接的是D4端口
  24. #define DHTTYPE DHT11   
  25. DHT dht(DHTPIN, DHTTYPE);
  26. float humi_read = 0, temp_read = 0;

  27. /***************心跳包返回温湿度信息************/
  28. void heartbeat()
  29. {
  30.     HUMI.print(humi_read);
  31.     TEMP.print(temp_read);
  32. }
  33. /**** ****************数据储存回调函数*****************/
  34. void dataStorage()
  35. {
  36.   Blinker.dataStorage("temp",temp_read);
  37.   Blinker.dataStorage("humi",humi_read);
  38. }
  39. /************颜色组件相关**************/
  40. #define RGB_1 "RGB"           //组件名称
  41. BlinkerRGB RGB1(RGB_1);
  42. /*******三个按键*****************/
  43. BlinkerButton Button1("btn1");
  44. BlinkerButton Button2("btn2");
  45. BlinkerButton Button3("btn3");


  46. /*************按键回调函数***********************/
  47. void button1_callback(const String & state) {
  48.   BLINKER_LOG("get button state: ", state);
  49.   if (state == "on" )                      //开灯
  50.   {  BLINKER_LOG("btn abc on : ", state );
  51.      digitalWrite(led, 1);
  52.     }
  53.      if (state ==  "off" )                  //关灯
  54.   {  BLINKER_LOG("btn abc off : ", state );
  55.      digitalWrite(led, 0);
  56.     }
  57.    if ( state ==  "tap" )                  //点击取反
  58.   {  BLINKER_LOG("btn abc tap : ", state );
  59.      digitalWrite(led, !digitalRead(led));
  60.     }
  61.     Blinker.delay(200);
  62.     if( digitalRead(led) == 1){              //状态返回
  63.     Button1.color("#B22222");                //颜色变成红色
  64.     Button1.text("小灯,打开");                 //显示文本
  65.     Blinker.delay(200);
  66.     Button1.print("on");
  67.     BLINKER_LOG("read : high ");
  68.     }
  69.     if( digitalRead(led) ==  0){            //同上
  70.      Button1.color("#228B22");              //显示蓝色
  71.      Button1.text("小灯,关闭");               //同上
  72.      Blinker.delay(200);  
  73.      Button1.print("off");
  74.      BLINKER_LOG("read : ,low" );
  75.      }
  76.       Blinker.delay(10);
  77.     Blinker.vibrate(255);                 //调用手机震动255ms
  78. }

  79. void button2_callback(const String & state) {
  80.   BLINKER_LOG("get button state: ", state);
  81.   if (state == "on" )
  82.   {  BLINKER_LOG("btn abc on : ", state );
  83.      digitalWrite(switch2, 1);
  84.     }
  85.      if (state ==  "off" )
  86.   {  BLINKER_LOG("btn abc off : ", state );
  87.      digitalWrite(switch2, 0);
  88.     }
  89.    if ( state ==  "tap" )
  90.   {  BLINKER_LOG("btn abc tap : ", state );
  91.      digitalWrite(switch2, !digitalRead(switch2));
  92.     }
  93.     Blinker.delay(200);
  94.     if( digitalRead(switch2) ==  1){
  95.     Button2.color("#B22222");
  96.     Button2.text("开关2,打开");
  97.     Blinker.delay(200);
  98.     Button2.print("on");
  99.     BLINKER_LOG("read : high ");
  100.     }
  101.     if( digitalRead(switch2) ==  0){
  102.      Button2.color("#228B22");
  103.      Button2.text("开关2,关闭");
  104.      Blinker.delay(200);
  105.      Button2.print("off");
  106.      BLINKER_LOG("read : ,low" );
  107.      }
  108.       Blinker.delay(10);
  109.     Blinker.vibrate(255);  
  110. }


  111. void button3_callback(const String & state) {
  112.   BLINKER_LOG("get button state: ", state);
  113.   if (state == "on" )
  114.   {  BLINKER_LOG("btn abc on : ", state );
  115.      digitalWrite(switch3, 1);
  116.     }
  117.      if (state ==  "off" )
  118.   {  BLINKER_LOG("btn abc off : ", state );
  119.      digitalWrite(switch3, 0);
  120.     }
  121.    if ( state ==  "tap" )
  122.   {  BLINKER_LOG("btn abc tap : ", state );
  123.      digitalWrite(switch3, !digitalRead(switch3));
  124.     }
  125.     Blinker.delay(200);
  126.     if( digitalRead(switch3) ==  1){
  127.     Button3.color("#B22222");
  128.     Button3.text("开关3,打开");
  129.     Blinker.delay(200);
  130.     Button3.print("on");
  131.     BLINKER_LOG("read : high ");
  132.     }
  133.     if( digitalRead(switch3) ==  0){
  134.      Button3.color("#228B22");
  135.      Button3.text("开关3,关闭");
  136.      Blinker.delay(200);
  137.      Button3.print("off");
  138.      BLINKER_LOG("read : ,low" );
  139.      }
  140.      Blinker.delay(10);
  141.     Blinker.vibrate(255);  
  142. }
  143. /*********颜色组件回调函数************/
  144. void rgb1_callback(uint8_t r_value, uint8_t g_value,
  145.                    uint8_t b_value, uint8_t bright_value)
  146. {

  147.   BLINKER_LOG("R value: ", r_value);
  148.   BLINKER_LOG("G value: ", g_value);
  149.   BLINKER_LOG("B value: ", b_value);
  150.   BLINKER_LOG("Rrightness value: ", bright_value);

  151.   pixels.setBrightness(bright_value);
  152.     for(int i = 0; i < NUMPIXELS; i++){
  153.         pixels.setPixelColor(i, r_value, g_value, b_value);
  154.      Blinker.delay(10);
  155.    pixels.show();
  156.    }
  157.    Blinker.vibrate(255);   
  158.    Blinker.notify("!颜色改变");
  159. }

  160. // 如果未绑定的组件被触发,则会执行其中内容
  161. void dataRead(const String & data)
  162. {
  163.   BLINKER_LOG("Blinker readString: ", data);
  164. }

  165. void setup() {
  166.   //pinMode(PIR_sensor,INPUT);
  167.   Serial.begin(115200);
  168.   BLINKER_DEBUG.stream(Serial);
  169.   BLINKER_DEBUG.debugAll();
  170.   pinMode(PIN, OUTPUT);
  171.   pinMode(led, OUTPUT);
  172.   pinMode(switch2, OUTPUT);
  173.   pinMode(switch3, OUTPUT);
  174.   pinMode(LED_BUILTIN, OUTPUT);
  175.   digitalWrite(PIN, LOW);
  176.   digitalWrite(led, LOW);
  177.   digitalWrite(switch2, LOW);
  178.   digitalWrite(switch3, LOW);
  179.   // 初始化blinker
  180.   Blinker.begin(auth, ssid, pswd);
  181.   Blinker.attachData(dataRead);
  182.   Button1.attach(button1_callback);
  183.   Button2.attach(button2_callback);
  184.   Button3.attach(button3_callback);
  185.   RGB1.attach(rgb1_callback);
  186.   Blinker.attachHeartbeat(heartbeat);
  187.   Blinker.attachDataStorage(dataStorage);
  188.   dht.begin();
  189. }

  190. void loop() {
  191.   
  192.     Blinker.run();         //运行点灯
  193. /******************温湿度·采集********************/
  194.     float h = dht.readHumidity();
  195.     float t = dht.readTemperature();
  196.     if (isnan(h) || isnan(t))
  197.     {
  198.         BLINKER_LOG("Failed to read from DHT sensor!");
  199.     }
  200.     else
  201.     {
  202.         BLINKER_LOG("Humidity: ", h, " %");
  203.         BLINKER_LOG("Temperature: ", t, " *C");
  204.         humi_read = h;
  205.         temp_read = t;
  206.     }

  207.    
  208.     if (t > 20)
  209.     { if (times <=1 ){
  210.         times = 2 ;
  211.         Blinker.sms("D3A320房间 温度达到20摄氏度!");                  //发送短信到注册的手机
  212.         Blinker.wechat("Title:温度较高","state:temperature high" ,"Message:温度较高") ;
  213.     }
  214.     }
  215.      if (t < 15 ){
  216.       times = 0 ;
  217.      }
  218.     Blinker.delay(2000);
  219. }
复制代码





有任何问题请问我     我会及时回复的

谢谢  哈哈哈哈








开发环境.JPG
整体.jpg
DHT11.jpg
8位2812灯板.jpg
002.jpg
001.jpg
发表于 2020-12-15 19:54 | 显示全部楼层
文档请以https://diandeng.tech/doc 为准
 楼主| 发表于 2020-12-15 20:39 | 显示全部楼层
后期会加上显示屏和红外控制
 楼主| 发表于 2020-12-15 20:42 | 显示全部楼层

谢谢  哈哈哈哈哈
 楼主| 发表于 2020-12-15 20:43 | 显示全部楼层
奈何col 发表于 2020-12-15 19:54
文档请以https://diandeng.tech/doc 为准

嗯嗯  这个的全面得多  
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 13:37 , Processed in 0.090367 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表