esp8266连接阿里云 (课程设计 附源码)
目標:esp8266連接阿里云,接入DHT11溫濕度模塊,外接繼電器用于開關,開關連接風扇調節溫濕度。
目錄
基于阿里云的藥物存儲系統
一、應用場景
1.1場景
1.2 現代設計方法
二、阿里云平臺及開發流程
2.1阿里云平臺
2.2 開發流程
三、開發過程
3.1創建產品
四、結果
五 總結
代碼實現:
基于阿里云的藥物存儲系統
一、應用場景
1.1場景
????????隨著生活水平的提高,日常生活中,我們經常出現忘記吃藥的情況。上班的中、青年可能是因為工作繁忙,而老年人大多是因為年齡增長導致記憶減退。對于我們所愛的人,我們始終希望保持他們的健康和健康。但是,如果他們生病而忘記按時吃藥,將會發生什么,這會產生不可抗拒的影響。在醫院里,有很多病人,很難提醒每個病人準時吃藥。傳統方式需要人工來提醒他們按時服藥。數字時代并沒有隨之而來,我們可以使用機器來做到這一點。智能藥盒智能提醒患者按時吃藥、按量服藥、按要求順序服藥以及同步用藥數據等功能。相比傳統方式能夠按時提醒患者用藥并能夠對患者用藥量、用藥順序等進行指導,從而提高患者的依從性,有利患者的康復,減少耐藥病人的產生。應用范圍非常廣泛,可以被家庭患者,醫院的醫生以及許多其他地方使用。現在社會的年紀大的人,隨著當今時代的發展推進人們生活質量的越發提高,對于生活中身體的健康質量是當代人們追求的一個重要的指標。隨著老年人身體逐漸衰老,很容易患上各種慢性病,只能長期靠藥物夠維持身體基本機能,但卻無法改善因衰老帶來的記憶力弱等問題,從而導致不能按時按量服藥,沒有了持續用藥的效力。為此,一款具有智能語音提醒功能的智能藥盒來解決這些問題是必不可少的。它的本質就是一種為了方便提醒并引導老年人按時吃藥而設計的一種藥品的存放物體,通過對智能藥盒的功能的完善,它可以完全解決難以服藥和記不住藥的老年人的問題。智能藥箱是在日常生活中監視并提醒每天使用藥物的老年人的方法。每天提醒老年人三次以上,并可以設置種類提示可以有效解決解決老年人不記得按時吃藥這一嚴重問題。在提醒作用的同時,本藥盒的設計也對藥物存儲功能進行優化。中成藥的處方成分比較復雜,應按照其特性,劑型選擇合適的儲存條件。如果是常溫貯存的,溫度一般保持在10~30℃左右即可,如果是需要陰涼貯存的,一般溫度控制在10~20℃左右為宜,若溫度過高,中成藥的某些成分可能會氧化、分解加速、變量變質,例如含芳香揮發性成分的藥物可因加速揮發而損失,含脂肪油成分的藥物易“泛油”或酸敗,膠囊劑易黏軟變型,片劑易裂片變色等等;但是溫度也不宜過低,溫度過低容易導致糖漿劑、露劑、含乙醇制劑等產生沉淀、結晶,甚至變性失效。一般中成藥的儲存相對濕度以35%~75%為宜.如果環境濕度過高,例如梅雨季節,容易導致中成藥發生潮解、變形、生蟲甚至霉變,如果環境濕度過低,則可能會導致中成藥風化或干燥等等。對此,進行藥盒內部溫濕度的檢測上傳阿里云平臺進行實時監控,保證藥物的存儲環境達標。同時接入一個風扇,通過開關對溫濕度進行調節。
1.2 現代設計方法
????????今天,云和云計算技術已經被企業廣泛所接受,關于云、云計算、云原生都有非常多的話題,但是我比較想討論的是在所有云當中真正的主角,就是我們的應用。因為當企業應用上云后,這些應用的高可用能力有可能提升了一部分,但仍存有許多問題;而當我們探討上云后這些應用的運維效率,卻未必有很大的提升,因為所有的運維都是基于基礎設施進行的,而云計算是一個比較大的基礎設施的改變;如果我們再問,上云后整個應用的開發速度是不是得到了極大的提升,這個時候很多人都要說,并不。
????????因此,今天主要探討的就是如何利用云原生相關的技術幫助我們的應用去做優化,從傳統應用轉變成現代化應用。本課程設計是單片機連接阿里云遠程控制風扇來調節溫濕度。通過DHT11溫濕度傳感器連接ESP8266上傳數據到阿里云平臺實時監控。除此之外,ESP8266連接繼電器用作于風扇的開關,從而控制風扇開關。。
二、阿里云平臺及開發流程
2.1阿里云平臺
????????隨著阿里云對于較少接觸互聯網的用戶來說,還是有點陌生,很多新手用戶可能只聽過阿里云,但阿里云到底是做什么的?阿里云有什么用?都還不是很了解,今天來為大家介紹一下阿里云以及阿里云產品都是干嘛用的,我們什么時候需要用到阿里云。阿里云創立于2009年,是阿里巴巴集團旗下的云計算品牌,云計算,是用足夠的低成本、商業化的模式來解決大計算的問題。用戶通過阿里云,用互聯網的方式即可遠程獲取海量計算、存儲資源和大數據處理能力。截至2014年6月,阿里云服務的客戶數超過140萬,遍布互聯網、移動APP、音視頻、游戲、電商等各個領域。根據IDC調研報告,阿里云是國內最大的公共云計算服務提供商。阿里云致力于打造公共、開放的云計算平臺。借助技術的創新,不斷提升計算能力與規模效益,將云計算變成真正意義上的公共服務。與此同時,將通過阿里云用互聯網的方式使得大家可以便捷的按需獲取阿里云計算產品與服務。
阿里云的產品共分為以下幾大塊:
彈性計算
????????這包括基礎云產品,如云服務器ECS,云服務器ECS是一種可彈性擴展、安全、穩定、易用的計算服務,用戶可以像用水和電一樣按需購買云服務器,而不必承擔高昂的服務器硬件運維成本。云服務器可以根據自己的業務實際需要隨意升級或者降配,也可以根據業務高發時期臨時增加帶寬,讓服務器的使用變得非常方便。
????????彈性計算的產品還包括負載均衡SLB,負載均衡SLB對多臺云服務器進行流量分發服務。為了應對業務需求,企業往往會有多臺云服務器提供服務器,負載均衡就是將用戶的請求按照企業自定義的策略轉發到最優的服務器。
數據庫
????????云數據庫RDS:完全兼容MySQL,SQLServer,PostgreSQL等,相對于云服務器,云數據庫屬于非必需品,因為用戶完全可以在云服務器上搭建數據庫。由于自身業務發展需要,將數據庫獨立出來,這時候就需要阿里云的RDS云數據庫了。
存儲
????????阿里云存儲產品有很多種,最基本也用得最多的是對象存儲,對象存儲OSS:海量、安全和高可靠的云存儲服務。如果企業靜態文件較多(圖片、視頻等大文件),可以將大量的存儲內容轉移獨立出來,放到對象存儲OSS里面。
網絡
CDN:跨運營商、跨地域全網覆蓋的網絡加速服務
專有網絡 VPC:幫您輕松構建邏輯隔離的專有網絡
高速通道:高速穩定的VPC互聯和專線接入服務
NAT網關:支持NAT轉發、共享帶寬的VPC網關
2018年6月20日,阿里云宣布聯合三大運營商全面對外提供IPv6服務。
????????除此之外,阿里云還有大數據、云安全、人工智能、域名與云通信等產品,阿里云服務著制造、金融、政務、交通、醫療、電信、能源等眾多領域的領軍企業,包括中國聯通、12306、中石化、中石油、飛利浦、華大基因等大型企業客戶,以及微博、知乎、錘子科技等明星互聯網公司。
2.2 開發流程
步驟1 創建產品。創建一個MQTT協議的產品,在產品頁,單擊創建產品,填入產品信息,聯網方式選擇WIFI,創建產品。
步驟2 創建設備。在左側導航欄,選擇設備。在設備頁,添加設備。單擊添加設備,單個創建設備。
步驟3 編輯物模型。添加自定義功能。
選擇添加自定義功能。您可以為產品自定義屬性、服務和事件。自定義屬性:在添加自定義功能對話框,選擇功能類型為屬性。設置參數完成后,單擊確認。
步驟4 發布物模型。單擊功能定義的編輯草稿頁面左下方的發布上線。控制臺頁面會彈出發布物模型上線對話框。
步驟5 在線調試。設備頁點擊在線調試,跳轉調試界面,選擇設備,進行設備命令設置。
三、開發過程
阿里云物聯網平臺
采用現成的物聯網云平臺,可以方便設備上云,完成設備與上位機之間雙向通信,不需要自己搭建服務器,還可以通過云端的存儲桶存儲數據,分析數據等。
3.1創建產品
(1)賬號注冊
搜索阿里云官網,注冊阿里云賬號。登錄阿里云賬號后在概覽頁面中搜索物聯網平臺,如下圖所示
(2)開通公共實例
登錄物聯網平臺控制臺,點擊開通公共實例,等待幾分鐘后開通成功。在實例概覽頁面,找到對應的實例,單擊實例進入實例詳情頁面。、
(3)創建產品
在左側導航欄,選擇設備管理 > 產品,單擊創建產品。自定義產品名稱,所屬品類選擇溫濕度采集,聯網方式選擇WIFI,點擊確認,產品創建成功。
(3)創建設備
在產品頁點擊管理設備,然后單擊添加設備,輸入設備名,點擊確認,設備創建成功。
(4)編輯物模型
????????在產品詳情頁,單擊功能定義頁簽,再單擊編輯草稿,單擊默認模塊或添加模塊。添加標準功能。如果您創建產品時選擇了標準品類,則物聯網平臺已為該品類預定義了標準功能。選擇添加標準功能,然后在彈出的雙列表框中,選擇適用于該產品的標準功能。此系統我采用的是添加自定義功能。選擇添加自定義功能。您可以為產品自定義屬性、服務和事件。自定義屬性:在添加自定義功能對話框,選擇功能類型為屬性。設置參數完成后,單擊確認。單擊功能定義的編輯草稿頁面左下方的發布上線。控制臺頁面會彈出發布物模型上線對話框
(5)執行結果
????????物模型發布后,物聯網平臺為該產品生成正式版本的物模型。在產品詳情頁面的功能定義頁簽下,您可以:單擊物模型TSL,查看JSON格式的物模型TSL。單擊生成設備端代碼,下載物聯網平臺根據您定義的功能生成的設備端代碼,用于設備端物模型功能開發。
(6)上傳ESP8266代碼
網址為:https://dl.espressif.com/dl/package_esp32_index.json
添加附加開發板管理器網址如圖所示:?
????????上傳代碼連接到WIFI就可以激活設備,此時就能在阿里云平臺觀察到設備在線,就表示已經連接到阿里云平臺。此時就可以查看實時的溫濕度信息,進行藥物存儲環境的監控。外接的繼電器用于控制風扇,用于調節溫濕度情況。ESP8266端的程序上傳采用的是Arduino IDE,打開軟件新建項目文件,在工具欄中選擇我們所需要的開發板型號,開發板型號選擇ESP8266 NoedMcu 1.0,進行程序的編寫,編寫完成后選擇對應端口進行程序下載。在IDE軟件中顯示上傳成功后表示程序已上傳,打開串口監視器,顯示相應的溫濕度信息。溫濕度顯示信息如下圖所示。
在線調試
選擇設備列表,單擊進入所需要的設備,選擇在線調試,點擊前往查看,進入在線調試界面,選擇相應設備。
(1)創建項目。關聯產品,關聯設備。
(2)在項目主頁頁面的項目開發下,選擇移動應用。
(3)單擊應用列表上方的新建。
(4)在新建移動應用對話框中,填入應用名稱和描述,單擊確認。
創建應用完成后,會自動打開移動應用編輯器。
在此界面上拖動左邊相應組件,配置相應的數據源,驗證格式,格式正確點擊確認。
?
2.繼電器電路設計
在對溫濕度控制模塊上,采用繼電器作為控制模塊,繼電器就相當于一個開關。電路圖如下圖所示。
????????在本系統的溫濕度控制系統中,采用常開端NO接口,繼電器常開,連接一個5V電源用于風扇驅動,電源正極連接繼電器NO口,電源負極連接風扇正極,風扇的負極連接繼電器的公共端口。繼電器連接ESP8266的D4引腳,當給繼電器一個高電平時,繼電器打開,風扇開始工作,降低溫度和濕度。當給繼電器一個低電平時,繼電器開關關閉,風扇關閉。
四、結果
為了驗證云端設備的情況,這里登錄阿里云官網平臺,查看設備接入是否在線,測試數據交互。
(1)登錄阿里云
登錄阿里云,點擊控制臺,進入物聯網平臺。
(2)查看上傳的數據
此時,我們可以看到,溫濕度在實時顯示,說明上傳數據成功
(3)在線測試
在在線調試界面,在屬性調試界面進行下發命令的設置,進行風扇的關閉,完成溫濕度的調控。
當打開的命令下發成功后,可以看到繼電器綠燈亮起,同時風扇轉動。當關閉風扇的命令下發,繼電器綠燈熄滅,風扇停止轉動。至此,調試全部完成,調試正常。
五 總結
????????采用現成的物聯網云平臺,可以方便設備上云,完成設備與上位機之間雙向通信,不需要自己搭建服務器,還可以通過云端的存儲桶存儲數據,分析數據等。 MQTT 是一個客戶端服務端架構的發布/訂閱模式的消息傳輸協議。 它的設計思想是輕巧、 開放、簡單、 規范, 因此易于實現。 消耗資源少,在MQTT3.1標準協議中僅有14個報文。每個報文都分為固定報頭、可變報頭和有效載荷3部分。
????????通過本次課程設計,使得我更深入的認識了阿里云云通過MQTT協議實現設備的數據上傳和云平臺的命令下發的結構和設備接入IoT的各種設備原理,通過阿里云物聯網平臺可遠程控制開關,完成遠程監控的同時進行控制,進一步了解人機交互,我獲益匪淺。
代碼實現:
#include <Adafruit_Sensor.h> #include <DHT.h> #include <DHT_U.h>//設置用于連接溫濕度傳感器的引腳 #define DHTPIN 13 //根據硬件連接確定引腳編號(注意,這里我連接的是D7,也就是GPIO13) #define led D4 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); float h,t;// 引入 wifi 模塊,并實例化,不同的芯片這里的依賴可能不同 #include <ESP8266WiFi.h> static WiFiClient espClient;// 引入阿里云 IoT SDK #include "AliyunIoTSDK.h"// 設置產品和設備的信息,從阿里云設備信息里查看 #define PRODUCT_KEY "htnjzCVL2zm" #define DEVICE_NAME "yaohe" #define DEVICE_SECRET "798d20211705da722f0f68b0d2b098bd"//(這三個東西在阿里云里面) #define REGION_ID "cn-shanghai"// 設置 wifi 信息 #define WIFI_SSID "1"//(這里面連你自己家的WiFi,注意要是2.4G頻段的,5G的不行) #define WIFI_PASSWD "12345678"//(你自己家的WiFi密碼)void setup() {Serial.begin(115200);pinMode(LED_BUILTIN, OUTPUT);digitalWrite(LED_BUILTIN, HIGH);// 初始化 wifiwifiInit(WIFI_SSID, WIFI_PASSWD);//初始化 iot,需傳入 wifi 的 client,和設備產品信息AliyunIoTSDK::begin(espClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET, REGION_ID);// 綁定一個設備屬性回調,當遠程修改此屬性,會觸發 powerCallback// PowerSwitch 是在設備產品中定義的物聯網模型的 id// AliyunIoTSDK::bindData("溫濕度",CurrentTemperature);// // 發送一個數據到云平臺,LightLuminance 是在設備產品中定義的物聯網模型的 idAliyunIoTSDK::bindData("LED", LED);pinMode(DHTPIN,INPUT);dht.begin();}void loop() {AliyunIoTSDK::loop(); AliyunIoTSDK::send("temperature",t);AliyunIoTSDK::send("Humidity",h);//發送LED狀態到云平臺(高電平:1;低電平:0)AliyunIoTSDK::send("LEDPIN", digitalRead(LED_BUILTIN));h = dht.readHumidity();t = dht.readTemperature(); Serial.print("Temperature:"); Serial.println(t); delay(1000);Serial.print("Humidity:"); Serial.print(h); Serial.println("%"); delay(1000);}// 初始化 wifi 連接 void wifiInit(const char *ssid, const char *passphrase) {WiFi.mode(WIFI_STA);WiFi.begin(ssid, passphrase);while (WiFi.status() != WL_CONNECTED){delay(1000);Serial.println("WiFi not Connect");}Serial.println("Connected to AP");digitalWrite(led, LOW);}//燈的屬性修改的回調函數 void LED(JsonVariant L)//固定格式,修改參數l {int LED = L["LED"];//參數lif (LED == 1){digitalWrite(LED_BUILTIN, LOW);}else {digitalWrite(LED_BUILTIN, HIGH);}Serial.printf("收到的LED是:"); Serial.println(LED); }總結
以上是生活随笔為你收集整理的esp8266连接阿里云 (课程设计 附源码)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: java-php-python-ssm无
- 下一篇: 经典面试题-什么是java序列化,如何实
