资讯专栏INFORMATION COLUMN

ESP8266+Blinker 的万物互联(智能家居篇)

CntChen / 810人阅读

摘要:下面是演示视频物联网文章目录前言一准备二操作步骤配置配置三效果展示总结前言实现万物互联第一步,千里点灯,然后添加你想要的模块就可以了,接下来我们进入正文。

前面学习了使用ESP8266将温湿度等上传到阿里云平台,于是我想起来了万物互联,就想先做个有关智能家居的,通过查阅资料发现了Blinker(轻松物联网)。下面是演示视频

Esp8266物联网


前言

实现万物互联第一步,千里点灯,然后添加你想要的模块就可以了,接下来我们进入正文。

一、准备

ESP8266开发板
温湿度传感器
MQ-3传感器
土壤湿度传感器
OLED显示屏
灯、继电器、风扇
舵机
稳压模块
电池

这些便是所需要的硬件,软件的话,需要Arduino ide和手机APP点灯Blinker
App直接走应用商城里下载即可

二、操作步骤

1.Blinker配置


第一步添加独立设备

这里选择网络接入,然后会生成KEY,保存好这个密钥,接下来会用到

接下来我们进行相应的配置

选择你需要的组件即可,你也可以添加自己想要的组件

这是Blinker端的配置就基本完成了,接下来我们进入ESP8266端。

2.ESP8266配置

具体的配置我不多说了,很简单,这里我直接附上源码。

#define BLINKER_WIFI#define BLINKER_MIOT_LIGHT//#define BLINKER_WITHOUT_SSL      //非SSL加密通信接入,省堆栈  */#include #include                   //加载舵机库   #include     #include #include Servo myservo;                      //定义舵机对象#define sensor_Pin   0int servo1 = 16;                    //IO14(D5),用来做控制舵机int servo_open = 70;                //舵机打开开关的角度,自己可以实际测试,更改适合的角度int servo_close = 0;                //舵机关闭开关的角度#define LED   2  // 板子上的灯#define LE   14  // 板子上的灯 float humi_read = 0, temp_read = 0,val,soil_data = 0; //下面3项需要根据实际填写char auth[] = "********"; // blinker app提供的秘钥char ssid[] = "*******";// wifi 名字char pswd[] = "******";// wifi 密码 // 新建组件对象BlinkerButton Button1("btn-abc");//注意:要和APP组件’数据键名’一致BlinkerButton Button2("btn-ab");//注意:要和APP组件’数据键名’一致BlinkerButton Button3("btn-abcd");//注意:要和APP组件’数据键名’一致BlinkerButton Button4("btn-a");//注意:要和APP组件’数据键名’一致BlinkerNumber HUMI("num-e");BlinkerNumber TEMP("num-d");BlinkerNumber MQ("num-n");BlinkerNumber T("num-z");#define DHTPIN 5  // #define DHTTYPE DHT11   // DHT 11 DHT dht(DHTPIN, DHTTYPE); void heartbeat(){    //反馈温度数据    soil_data = analogRead(sensor_Pin);   //模拟数据读取(A0脚输入的数据)385-1024    soil_data -= 385;         //0-639    soil_data /= 6.39;        //0.00-100.00,变为百分比    soil_data = 100 - soil_data;         //修改为百分比越大湿度越大     int analogValue = analogRead(A0);     val = 0;    HUMI.print(humi_read);    //反馈湿度数据    TEMP.print(temp_read);      MQ.print(val);    T.print(soil_data);}void button1_callback(const String & state) {    BLINKER_LOG("get button state: ", state);    digitalWrite(LED, !digitalRead(LED)); } void button2_callback(const String & state) {    BLINKER_LOG("get button state: ", state);    digitalWrite(LE, !digitalRead(LE));   }void button3_callback(const String & state) {    BLINKER_LOG("get button state: ", state);    if (state=="on") {         myservo.write(servo_open);          // 反馈开关状态        Button1.print("on");    } else if(state=="off"){        myservo.write(servo_open);        // 反馈开关状态        Button1.print("off");    }    }void button4_callback(const String & state) {    BLINKER_LOG("get button state: ", state);    if (state=="on") {         myservo.write(servo_close);          // 反馈开关状态        Button1.print("on");    } else if(state=="off"){        myservo.write(servo_close);        // 反馈开关状态        Button1.print("off");    }    }void setup() {    // 初始化串口,并开启调试信息,调试用可以删除    Serial.begin(115200);      Wire.begin(12,13);  oled.init();                      // Initialze SSD1306 OLED display  oled.clearDisplay();              // Clear screen   oled.setTextXY(0,0);              // Set cursor position, start of line 0  oled.putString("Temp:  *C");  oled.setTextXY(1,0);              // Set cursor position, start of line 1  oled.putString("Humi:  %");  oled.setTextXY(2,0);              // Set cursor position, start of line 2  oled.putString("soil:  dS/m");  oled.setTextXY(3,0);             // Set cursor position, line 2 10th character  oled.putString("C7H8:  mg/m3");    BLINKER_DEBUG.stream(Serial);    // 初始化IO    pinMode(LED, OUTPUT);     digitalWrite(LED, LOW); // 初始化 led 高电平 ,则灯熄灭状态     pinMode(LE, OUTPUT);     digitalWrite(LE, HIGH); // 初始化 led 高电平 ,则灯熄灭状态    myservo.attach(servo1);           //设置指定io为舵机    myservo.write(servo_close);       //控制舵机旋转到指定角度    // 初始化blinker    Blinker.begin(auth, ssid, pswd);    Button1.attach(button1_callback);    Button2.attach(button2_callback);    Button3.attach(button3_callback);    Button4.attach(button4_callback);    Blinker.attachHeartbeat(heartbeat);    dht.begin();} void loop() {    Blinker.run();     float h = dht.readHumidity();    float t = dht.readTemperature();      oled.setTextXY(0,5);              // Set cursor position  oled.putString("  ");  oled.setTextXY(0,5);   oled.putNumber(float(t));         oled.setTextXY(1,5);              // Set cursor position  oled.putString("  ");  oled.setTextXY(1,5);   oled.putNumber(float(h));    oled.setTextXY(2,5);              // Set cursor position  oled.putString("  ");  oled.setTextXY(2,5);   oled.putNumber(float(soil_data));      oled.setTextXY(3,5);              // Set cursor position  oled.putString("  ");  oled.setTextXY(3,5);   oled.putNumber(float(val));    /*    if (isnan(h) || isnan(t))    {        BLINKER_LOG("Failed to read from DHT sensor!");    }    else    {        BLINKER_LOG("Humidity: ", h, " %");        BLINKER_LOG("Temperature: ", t, " *C");         BLINKER_LOG("MQ: ", val, " %");           BLINKER_LOG("T: ", soil_data, " %");*/        humi_read = h;        temp_read = t;    //}}

代码很简单也很好理解,按照代码里的注释操作即可。

三、效果展示



可以将温湿度,土壤湿度,甲烷浓度上传到你的手机APP上,即使远在千里也能实时查看。

总结

万物互联这个名词听起来就有趣,写这篇博客一方面是记录自己的学习生活,另一方面帮助那些需要的同学也给自己做个备份,加油。
这里也送给大家一句话:
人生就像一只储蓄罐,你投入的每一分努力都会在未来的某一天回馈于你。流年笑掷,未来可期。只有努力奋斗,才会有美好的前程。加油!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/124733.html

相关文章

  • ESP8266-NodeMCU项目(三):ESP8266-NodeMCU+Blinker+红外模块(

    摘要:红外模块接入板子后,可进行以上操作,并接入,通过控制空调。材料清单板子红外接收模块红外发射模块线杜邦线左边是红外发射模块,右边是红外接收模块。 错开の折腾经历:ES...

    luoyibu 评论0 收藏0
  • 01.ESP8266开发方式知多少

    摘要:开发方式是乐鑫为开发者提供的物联应开发平台,包括基础平台以及上层应开发示例,如智能灯智能开关等。指令开发方式作为芯片,指令开发也是必不可少的。开发方式即,意为运行在单片机上的。 ...

    sushi 评论0 收藏0
  • ESP8266-NodeMCU项目(四):将上一项目空调控制接入小爱同学(Blinker_APP同

    摘要:错开折腾经历文章目录前言思路设备配置程序代码小爱训练测试总结前言之前已经进行了项目二接入小爱同学以及项目三空调控制,接下来便是将二者合一,实现控制,温湿度查看,以及小爱同学进行简单空调控制。 ...

    Loong_T 评论0 收藏0
  • 三年探索:一条自控、电信/科类学生技术成长路线

    摘要:所以我必须基于自己现在的情况走出一条适合自己情况的成长路线。下位机上位机的思想下位机上位机这就是我自己探索出来的技术成长路线。对和嵌入式的朋友感兴趣的朋友可以试一下我这条学习路线 ...

    Miracle 评论0 收藏0
  • 【基于Arduino IDE平台开发ESP8266连接巴法云】

    摘要:教程传送门基于平台开发连接巴法云简介实验准备硬件软件实验步骤点灯实验发送温湿度指令升级总结关于巴法云专注于开源,智造,创新,分享。 Arduino教程传送门????...

    不知名网友 评论0 收藏0

发表评论

0条评论

CntChen

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<