摘要:下面是演示視頻物聯(lián)網文章目錄前言一準備二操作步驟配置配置三效果展示總結前言實現(xiàn)萬物互聯(lián)第一步,千里點燈,然后添加你想要的模塊就可以了,接下來我們進入正文。
前面學習了使用ESP8266將溫濕度等上傳到阿里云平臺,于是我想起來了萬物互聯(lián),就想先做個有關智能家居的,通過查閱資料發(fā)現(xiàn)了Blinker(輕松物聯(lián)網)。下面是演示視頻
Esp8266物聯(lián)網
實現(xiàn)萬物互聯(lián)第一步,千里點燈,然后添加你想要的模塊就可以了,接下來我們進入正文。
ESP8266開發(fā)板
溫濕度傳感器
MQ-3傳感器
土壤濕度傳感器
OLED顯示屏
燈、繼電器、風扇
舵機
穩(wěn)壓模塊
電池
這些便是所需要的硬件,軟件的話,需要Arduino ide和手機APP點燈Blinker
App直接走應用商城里下載即可
第一步添加獨立設備
這里選擇網絡接入,然后會生成KEY,保存好這個密鑰,接下來會用到
接下來我們進行相應的配置
選擇你需要的組件即可,你也可以添加自己想要的組件
這是Blinker端的配置就基本完成了,接下來我們進入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,變?yōu)榘俜直?/span> 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); // 反饋開關狀態(tài) Button1.print("on"); } else if(state=="off"){ myservo.write(servo_open); // 反饋開關狀態(tài) Button1.print("off"); } }void button4_callback(const String & state) { BLINKER_LOG("get button state: ", state); if (state=="on") { myservo.write(servo_close); // 反饋開關狀態(tài) Button1.print("on"); } else if(state=="off"){ myservo.write(servo_close); // 反饋開關狀態(tài) 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 高電平 ,則燈熄滅狀態(tài) pinMode(LE, OUTPUT); digitalWrite(LE, HIGH); // 初始化 led 高電平 ,則燈熄滅狀態(tài) 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上,即使遠在千里也能實時查看。
萬物互聯(lián)這個名詞聽起來就有趣,寫這篇博客一方面是記錄自己的學習生活,另一方面幫助那些需要的同學也給自己做個備份,加油。
這里也送給大家一句話:
人生就像一只儲蓄罐,你投入的每一分努力都會在未來的某一天回饋于你。流年笑擲,未來可期。只有努力奮斗,才會有美好的前程。加油!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/124733.html
摘要:紅外模塊接入板子后,可進行以上操作,并接入,通過控制空調。材料清單板子紅外接收模塊紅外發(fā)射模塊線杜邦線左邊是紅外發(fā)射模塊,右邊是紅外接收模塊。 錯開の折騰經歷:ES...
摘要:開發(fā)方式是樂鑫為開發(fā)者提供的物聯(lián)應開發(fā)平臺,包括基礎平臺以及上層應開發(fā)示例,如智能燈智能開關等。指令開發(fā)方式作為芯片,指令開發(fā)也是必不可少的。開發(fā)方式即,意為運行在單片機上的。 ...
摘要:錯開折騰經歷文章目錄前言思路設備配置程序代碼小愛訓練測試總結前言之前已經進行了項目二接入小愛同學以及項目三空調控制,接下來便是將二者合一,實現(xiàn)控制,溫濕度查看,以及小愛同學進行簡單空調控制。 ...
摘要:所以我必須基于自己現(xiàn)在的情況走出一條適合自己情況的成長路線。下位機上位機的思想下位機上位機這就是我自己探索出來的技術成長路線。對和嵌入式的朋友感興趣的朋友可以試一下我這條學習路線 ...
摘要:教程傳送門基于平臺開發(fā)連接巴法云簡介實驗準備硬件軟件實驗步驟點燈實驗發(fā)送溫濕度指令升級總結關于巴法云專注于開源,智造,創(chuàng)新,分享。 Arduino教程傳送門????...
閱讀 853·2021-11-24 09:38
閱讀 1084·2021-10-08 10:05
閱讀 2577·2021-09-10 11:21
閱讀 2799·2019-08-30 15:53
閱讀 1826·2019-08-30 15:52
閱讀 1963·2019-08-29 12:17
閱讀 3417·2019-08-29 11:21
閱讀 1608·2019-08-26 12:17