6973| 2
|
[项目] 基于blinke+nodemcu 制作一个智能家居(DHT) |
基于blinke+nodemcu 制作一个智能家居(DHT)https://www.Arduino.cn/forum.php?mod=viewthread&tid=84112 用esp8266(nodemcu)制作智能家居 概述 现在的时代物联网十分流行,例如是在智能家居这块,像小米的米家,天猫精灵以及它的配套等,利用这些科技,就可以给家里的家电注入灵魂。无论是在家里或者是外面,通过网络就能了解到家里面的一些情况。 今天我就利用了一个温度湿度传感器+esp8266(nodemcu)+blinker(物联网必备)来制作一个室内温度湿度观察仪,一个礼貌又不失风度的玩意,来满足我这个初次体验到IOT的奥妙的大学生:)) :)) (惭愧)。 材料准备清单 1..................nodemcu(乐鑫esp-12) 2..................dth11温湿度传感器 3..................1602显示屏(i2C) 4..................二极管小灯一个 5.................一张废弃的纸皮(做产品的外壳,哈哈) 电脑软件 arduino ide 手机软件 blinker(应用市场有,我是安卓机)这两个的软件要求请看blinker的官方帖子。 nodemcu 对于esp8266的感觉,我在使用得到了很大的满足感,跟捡到钱的差不多的,它太强大了,可以说是uno的网络版(小白的心声)。使用起来也十分方便。 1602(i2C) 因为我用了i2C,所以只有四个接口,大家在接线的时候可以对照上图来接,十分方便。 dth11 这个传感器我感觉不太靠谱,以后要买一个高级一点的。 二极管小灯 处理想到要做一个温湿度观察仪之外,我还想到了做一个WiFi小灯(可以换成换成继电器来耍一下) 外观 以及内部的连线情况 arduino的代码 [mw_shl_code=applescript,true] # #define BLINKER_WIFI #include <Blinker.h> //在官方帖子里面可以下载 #include <modules/dht/DHT.h> //家里面的网速可以的话,可以在ide管理库里面直接下载(在上传代码出错后) #include <LiquidCrystal_I2C.h> //这是I2C的库文件 #define LED_BUILTIN1 D3 //定义灯的引脚 #define BUTTON_1 "btn-abc" //定义手机软件blinker里面所需要的按钮的名字 BlinkerButton Button1(BUTTON_1); //这里也可以写成BlinkeButton Button1("btn-abc") LiquidCrystal_I2C lcd(0x27,16,2); //lcd27or36 BlinkerNumber HUMI("humi"); / /定义blinker里面所需要的数值的名字 BlinkerNumber TEMP("temp"); #define DHTPIN D4 //定义dth的阵脚 #define DHTTYPE DHT11 // DHT 11//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321//#define DHTTYPE DHT21 // DHT 21 (AM2301) DHT dht(DHTPIN, DHTTYPE);// float humi_read = 0, temp_read = 0; //初始化 温度和湿度的值 char auth[] = "cb9273bac479";//blinker里面的设备密码 char ssid[] = "Daniel ";//这里填写的是你家的WiFi char pswd[] = "12345667bx";//这里填写的是你家 的WiFi密码 void heartbeat()//心跳包,每隔30秒,blinker打印温湿度的值 { HUMI.print(humi_read);//HUNI反馈到app TEMP.print(temp_read); } void button1_callback(const String & state)//按钮的回调函数 { digitalWrite(LED_BUILTIN1, !digitalRead(LED_BUILTIN1));//每调用一次 ,就改变一次状态 这里可以放在if 函数里面 if。。。on digitai high 这样的 BLINKER_LOG("get button state: ", state); if (state == BLINKER_CMD_ON) { BLINKER_LOG("Toggle on!"); Button1.icon("icon_1"); Button1.color("#FFFFFF"); Button1.text("Your button name or describe"); // Button1.text("Your button name", "describe"); Button1.print("on"); } else if (state == BLINKER_CMD_OFF) { BLINKER_LOG("Toggle off!"); Button1.icon("icon_1"); Button1.color("#FFFFFF"); Button1.text("Your button name or describe"); // Button1.text("Your button name", "describe"); Button1.print("off"); } else { BLINKER_LOG("Get user setting: ", state); Button1.icon("icon_1"); Button1.color("#FFFFFF"); Button1.text("Your button name or describe"); // Button1.text("Your button name", "describe"); Button1.print(); } } void setup() { Serial.begin(115200);//电脑串口 BLINKER_DEBUG.stream(Serial);//调试收发数据用 BLINKER_DEBUG.debugAll(); pinMode(LED_BUILTIN, OUTPUT); pinMode(LED_BUILTIN1, OUTPUT); digitalWrite(LED_BUILTIN, LOW); digitalWrite(LED_BUILTIN1, LOW); lcd.init(); // initialize the lcd //lcd 还有对比度,调后面的电阻 lcd.init(); //两行 lcd.backlight(); //lcd的背光 Blinker.begin(auth, ssid, pswd); Blinker.attachHeartbeat(heartbeat);//注册回调函数 dht.begin(); Button1.attach(button1_callback);//注册回调函数 } void loop() { Blinker.run(); float h = dht.readHumidity();//读取数据 float t = dht.readTemperature(); lcd.setCursor(0,0);//lcd显示 lcd.print("Hum(%): ");//湿度 lcd.setCursor(10,0); lcd.print(h); lcd.setCursor(0,1); lcd.print("Temp(oC): ");//温度 lcd.setCursor(10,1); lcd.print(t); if (isnan(h) || isnan(t)) { BLINKER_LOG("Failed to read from DHT sensor!"); } else { BLINKER_LOG("Humidity: ", h, " %"); BLINKER_LOG("Temperature: ", t, " *C"); humi_read = h; temp_read = t; } Blinker.delay(2000); }[/mw_shl_code] 软件blinker的配置 下载附件到此这个产品的步骤基本已经完成 第一次写帖子 以后会继续发贴 如果有错误的地方 请高手们能指正 qq134118020 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed