7-WiFi模塊連接阿里云_第1頁
7-WiFi模塊連接阿里云_第2頁
7-WiFi模塊連接阿里云_第3頁
7-WiFi模塊連接阿里云_第4頁
7-WiFi模塊連接阿里云_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

小學生玩轉(zhuǎn)物聯(lián)網(wǎng)系列教程章節(jié)目錄第一章 百度AI智能識別技術(shù)第二章 人臉識別技術(shù)第三章Arduino基礎學習第四章Arduino進階學習第五章IOT物聯(lián)網(wǎng)第六章WIFI與Arduino的結(jié)合第七章 阿里云IOT服務第八章 百度天工物聯(lián)網(wǎng)第九章 APPInventor制作手機APP第十章 自己做的七七八八第十一章制作APPInventor自定義插件第十二章手機實現(xiàn)局域網(wǎng)連接第十三章項目應用一一小學生百度天工第十四章項目應用一一ESP32-cam攝像頭模塊第十五章項目應用一一ESP32-cam攝像頭模塊二第十六章項目應用一一WIFI模塊手動配網(wǎng)第十七章項目應用一一紅納里斯的跨陣M1第十八章項目應用一一OLED液晶屏插件小學生玩轉(zhuǎn)物聯(lián)網(wǎng)系列教程7-2-WiFi模塊連接阿里云在上節(jié)課中,我們已經(jīng)學會讓MQTT-僅客戶端連接到阿里云服務器了。在客戶端連接服務器的時候,需要提交一些認證消息,才能通過阿里云服務器的審核,才能對接成功,并訂閱話題、發(fā)布消息。今天,我們先讓WiFi開發(fā)板連接到阿里云的服務器(俗稱上云)。我這里整理了從網(wǎng)上找到的兩個上云的辦法,先連接服務器吧,至于怎么用我們后面在說?!咐肞ubSubClient連接上云1我們需要兩個庫文件ArduinoJson和PubSubClient。這兩個庫文件可以從我提供的學習資料中找到,也可以自己從網(wǎng)上下載(注意有不同的版本號):https://github.Com/bblanchon/ArduinoJson/tree/5.xhttps://github.Com/knolleary/pubsubclient/releases/tag/v2.7下載到電腦后,把文件夾解壓出來,然后復制到Arduino的安裝文件夾下的Librarics文件夾中(或者放在系統(tǒng)文件夾我的文檔下面也有一個Arduino\Librarics的文件夾里面也可以)。小學生玩轉(zhuǎn)物聯(lián)網(wǎng)系列教程開”甯3:哼一七*上工陽開”甯3:哼一七*上工陽4kz的5£MD.A^A4rxzlMis產(chǎn).1片“N出*,?Jiipfc1|AEitiaTiirT^HiitiiwIEVIUMLUF.EJlIRwtumLiWdCMLMJS:[吟L4HTWI口thME^uHakbWK17二WlF■^31!jiffi2肘的e?ra交林量端;我斗fmmjr-jw^wK..〃期vsj^3_mAJCGfV^LdAH..五世史嘉抑#港an*ttr乩訓?1Ks.]X4HjtlWLUJ>V<_JWR2的畜屋■■室g I"與■rtRa&E&jag—0加1通8-@8-TtflM*舊*烏?曰中VG曰中VG早”JntfrtjElLnxU■±ik二皿-CLl?m.-LbLK^E-3417.asnm3=MilUwn也上午¥安早”JntfrtjElLnxU■±ik二皿-CLl?m.-LbLK^E-3417.asnm3=MilUwn也上午¥安ii'EDITF筌制rUwK:比Fusigr.'taasL3a鵬士'.mHh^:*JL場XftiXTHOTTTEMjMHQTT 311srrrisl-H2TT IEEEiHri-alax^iAL3*Biafna#%gff_3*X_F*OiEJStIE2修改PubSubClient.h文件內(nèi)容。我們使用一個小程序npp++(我的資料里有,也可以從網(wǎng)上搜索下載),打開Arduino\Librarics\pubsubclient\src\文件夾中的PubSubClient.h。修改兩個參數(shù),并保存。這個叫保活心跳時間(有點相當于讓開發(fā)板程序等待服務器響應時間吧,要把這個時間設置得長一點,要不然由于網(wǎng)絡延遲,還沒等服務器反應過來,開發(fā)板這邊都以為連接失敗了,這樣就無法連接成功的)。H3TT_J£EFAI]'-Ti 3D:?rr?L3b白?xf=xd!"HgFILL1公■mtnEKHT二!TirMiTKWMd/ffMJJT9C^UfTutEOOt:K:btkImun&DK4n4LIn3araavTHP!-T_HnTT_5nCTrT_TrJKSTT3用ArduinoIDE燒寫開發(fā)板。

小學生玩轉(zhuǎn)物聯(lián)網(wǎng)系列教程直接給出程序源碼吧,注意看程序開頭的阿里云的校驗三元組,這些校驗信息我們在上一節(jié)課的時候,都已經(jīng)詳細介紹,并操作過了。#include<ESP8266WiFi.h>#include<ArduinoJson.h>#include<PubSubClient.h>#include<WiFiClientSecure.h>constchar*WIFI_SSID="ChinaNet-xxVP";//WiFi賬號密碼constchar*WIFI_PASSWORD="123456789"; //WiFi密碼/******************產(chǎn)品/設備配置(每個人需要根據(jù)自己的產(chǎn)品設備信息去動態(tài)更換)**********************/#definePRODUCT_KEY"a1LsKxjQ3HG"〃產(chǎn)品key從產(chǎn)品詳情獲取#defineDEVICE_NAME"Led_Device1"〃設備deviceName從設備詳情獲取//服務端相關#defineMQTT_SERVERPRODUCT_KEY"."http://阿里云MQTT服務地址#defineMQTT_PORT1883 //MQTT服務端口//校驗三元組#defineMQTT_CLIENT_IDDEVICE_NAME"|securemode=2,signmethod=hmacsha1|"http://mqttclientid#defineMQTT_USERNAMEDEVICE_NAME"&"PRODUCT_KEY //mqttusername#defineMQTT_PASSWORD"0570E928E23F70FACF911E0ABADB55DCBBC24026"http://mqttpassword通過生成工具獲得//相關主題自定義一個主題#defineTOPIC1"/"PRODUCT_KEY"/"DEVICE_NAME"/user/get"/*************************************************************************************************/voidmqtt_callback(char*topic,byte*payload,unsignedintlength);voiddoWiFiTick();voidconnectToMqtt();小學生玩轉(zhuǎn)物聯(lián)網(wǎng)系列教程const__FlashStringHelper*connectErrorToString(int8_tcode);BearSSL::WiFiClientSecureclient_s;PubSubClientmqttclient(MQTT_SERVER,MQTT_PORT,&mqtt_callback,client_s);voidsetup(){//putyoursetupcodehere,torunonce:delay(2000);Serial.begin(115200);pinMode(LED_BUILTIN,OUTPUT);client_s.setInsecure();Serial.println("star");)voidloop(){//putyourmaincodehere,torunrepeatedly:ESP.wdtFeed();doWiFiTick();if(WiFi.status()==WL_CONNECTED){connectToMqtt();mqttclient.loop();)delay(2000);)//功能:連接到MqttvoidconnectToMqtt(){if(mqttclient.connected()){return;小學生玩轉(zhuǎn)物聯(lián)網(wǎng)系列教程)Serial.print(F("ConnectingtoMQTT..."));int8_tret;uint8_tretries=3;while(!mqttclient.connect(MQTT_CLIENT_ID,MQTT_USERNAME,MQTT_PASSWORD)){//connectwillreturntrueforconnectedSerial.println(connectErrorToString(mqttclient.state()));Serial.println(F("RetryingMQTTconnectionin5seconds..."));mqttclient.disconnect();delay(5000);//wait5secondsretries--;if(retries==0){//basicallydieandwaitforWDTtoresetmewhile(1);)yield();)Serial.println(F("Success!"));//訂閱主題mqttclient.subscribe(TOPIC1);)〃功能:連接路由心跳函數(shù)voiddoWiFiTick(){staticbooltaskStarted=false;staticboolstartSTAFlag=false;小學生玩轉(zhuǎn)物聯(lián)網(wǎng)系列教程staticuint32_tlastWiFiCheckTick=0;if(!startSTAFlag){startSTAFlag=true;Serial.print("connecttoap:");Serial.println(WIFI_SSID);WiFi.disconnect();WiFi.mode(WIFI_STA);WiFi.begin(WIFI_SSID,WIFI_PASSWORD);Serial.printf("Heapsize:%d\r\n",ESP.getFreeHeap());)〃未連接1s重連if(WiFi.status()!=WL_CONNECTED){if(millis()-lastWiFiCheckTick>1000){lastWiFiCheckTick=millis();Serial.print(".");))〃連接成功建立else{if(taskStarted==false){taskStarted=true;Serial.print("\r\nGetIPAddress:");Serial.println(WiFi.localIP());)小學生玩轉(zhuǎn)物聯(lián)網(wǎng)系列教程〃功能:MQTT回調(diào)voidmqtt_callback(char*topic,byte*payload,unsignedintlength){byte*end=payload+length;for(byte*p=payload;p<end;++p){Serial.print(*((constchar*)p));)Serial.println("");parseMqttResponse((char*)payload);)//解析mqtt數(shù)據(jù)voidparseMqttResponse(char*payload){Serial.println("startparseOneNetMqttResponse");StaticJsonBuffer<100>jsonBuffer;//StaticJsonBuffer在棧區(qū)分配內(nèi)存它也可以被DynamicJsonBuffer(內(nèi)存在堆區(qū)分配)代替//DynamicJsonBufferjsonBuffer;JsonObject&root=jsonBuffer.parseObject(payload);//Testifparsingsucceeds.if(!root.success()){Serial.println("parseObject()failed");return;)StringdeviceName=root["dn"];intstatus=root["s"];if(strcmp(DEVICE_NAME,deviceName.c_str())==0){小學生玩轉(zhuǎn)物聯(lián)網(wǎng)系列教程if(status==1){digitalWrite(LED_BUILTIN,LOW);}else{digitalWrite(LED_BUILTIN,HIGH);}}}〃功能:打印錯誤const__FlashStringHelper*connectErrorToString(int8_tcode){switch(code){returnF("TheServerdoesnotsupporttheleveloftheMQTTprotocolrequested");returnF("TheClientidentifieriscorrectUTF-8butnotallowedbytheServer");returnF("TheMQTTserviceisunavailable");returnF("Thedataintheusernameorpasswordismalformed");returnF("Notauthorizedtoconnect");returnF("Exceededreconnectratelimit.Pleasetryagainlater.");returnF("Youhavebeenbannedfromconnecting.PleasecontacttheMQTTserveradministratorformoredetails.");case-1:returnF("Connectionfailed");case-2:returnF("Failedtosubscribe");case-3:returnF("ConnectionLost");case-4:returnF("ConnectionTimeout");default:returnF("Unknownerror");}}編譯程序,并把程序燒寫到wemos模塊中,最后我們在串口監(jiān)視器可以看到連接成功的消息,在瀏覽器中,我們登錄阿里云服務器,也可以看到設備已經(jīng)通過了服務器驗證,并顯示已經(jīng)上線了。小學生玩轉(zhuǎn)物聯(lián)網(wǎng)系列教程口K?KI-a-ft-?QD-=重可理型:濯費立yC-3K3c=但iMiew葭*l?T蛔3a? 口K?KI-a-ft-?QD-=重可理型:濯費立yC-3K3c=但iMiew葭*l?T蛔3a? 舊日日配吉HS曰::?詞[目『m2直/HE十[口片iHL,#而:Llf?: M43砧鞏1&修13?<1 Hl號『費事,□KE*■且■!a?WRA西譚±T6貴二g陰QCA1HS=;ws他如歸"1*蟲Q■BJJiWSHitPLEDJJnZlEl-TO1*JR?…<?如gLO!HL7dJ>Hw日衛(wèi)mLuLEwn^l煙―1而*34OMiMiWHMSnfll*電*NfELHESIIS?3>fiC:1K2DC4WCLI2£rist-isk^t^iL.OTvaMUi-w二.利用ESP_Aliyun連接上云我看到有另外一個連接上云的辦法,也先下載測試一下吧。至于以后會用哪一個辦法連接,到時候再說。.添加阿里云驅(qū)動庫可以從我的學習資料中找到阿里云的驅(qū)動庫文件,也可以從網(wǎng)上下載:/schuck/ESP8266AliYun

小學生玩轉(zhuǎn)物聯(lián)網(wǎng)系列教程然后解壓縮到Libraries的文件夾里面。.添加erypto加密方法庫文件。ALiDDn^lUIEJQBEJQB[皿CaLiEludc■cESUjmrL.MALaaLuo?-rfcuKM^LuftE.hi-■L“L4rJWSmHkb"HfiCL?W■IFJ_H3P[皿CaLiEludc■cESUjmrL.MALaaLuo?-rfcuKM^LuftE.hi-■L“L4rJWSmHkb"HfiCL?W■IFJ_H3P?uMin_MJ!rrzTnJMMBTZMWda£L=Hi -KEE土口爾2iL5ERE'AlZMKaj?曲”■叩皿皿T1:!■EEAil?L^W-ra?T|J|£L!?A11PC」5K口WG_MHT“iMLUiJO]%_:±t::_n^_KfcZn<5E-disifuMMtcl*Amr_FZ]i3z_iTOP_rn5T心ELfQPK」StEJHY」E打工LkKJHC_STu:-a_nwwuiujuadloqIni*"Q:haam.-Li^rahaam.-Li^ra1<EE^i.L?3iTiMipi2i3anE|T電物蜩了電物蜩了“1小 ,叫Hl*四A』和用應:3FH-士■T-HflT刊"評管>ijEkiGFjfl^W ,_t5_t5in沖3M-在ArduinoIDE中,從項目——加載庫——管理庫中,輸入驅(qū)動庫名字,就可以找到Crypto的庫,點擊就可以安裝。.燒寫開發(fā)板還是直接上程序源碼吧,把程序編譯燒寫到模塊中,也能在串口監(jiān)視器中看到連接服務器成功,也可以在瀏覽器中看到設備已經(jīng)完成認證,并顯示在線狀態(tài)。#inelude<ESP8266WiFi.h>#inelude<PubSubClient.h>#inelude<ArduinoJson.h>#inelude"aliyun_mqtt.h"http://GPIO13,D7ontheNodeMCUv3#defineSENSOR_PIN13小學生玩轉(zhuǎn)物聯(lián)網(wǎng)系列教程#defineWIFI_SSID"ChinaNet-xxVP"〃替換自己的WIFI#defineWIFI_PASSWD"123456789"〃替換自己的WIFI#definePRODUCT_KEY "a1LsKxjQ3HG"〃替換自己的PRODUCT_KEY#defineDEVICE_NAME "LED_Device2"〃替換自己的DEVICE_NAME#defineDEVICE_SECRET"cImLDs7QlxnfAQXwoQqXPfVM5sTv4j0B"〃替換自己的DEVICE_SECRET#defineDEV_VERSION"S-TH-WIFI-v1.0-20190220" 〃固件版本信息#defineALINK_BODY_FORMAT "{\"id\":\"123\",\"version\":\"1.0\",\"method\":\"%s\",\"params\":%s}"#defineALINK_TOPIC_PROP_POST "/sys/"PRODUCT_KEY"/"DEVICE_NAME"/thing/event/property/post"#defineALINK_TOPIC_PROP_POSTRSP"/sys/"PRODUCT_KEY"/"DEVICE_NAME"/thing/event/property/post_reply"#defineALINK_TOPIC_PROP_SET"/sys/"PRODUCT_KEY"/"DEVICE_NAME"/thing/service/property/set"#defineALINK_METHOD_PROP_POST"perty.post"#defineALINK_TOPIC_DEV_INFO"/ota/device/inform/"PRODUCT_KEY"/"DEVICE_NAME""#defineALINK_VERSION_FROMA"{\"id\":123,\"params\":{\"version\":\"%s\"}}"unsignedlonglastMs=0;WiFiClientespClient;PubSubClientmqttClient(espClient);voidinit_wifi(constchar*ssid,constchar*password){WiFi.mode(WIFI_STA);WiFi.begin(ssid,password);while(WiFi.status()!=WL_CONNECTED){Serial.println("WiFidoesnotconnect,tryagain...");小學生玩轉(zhuǎn)物聯(lián)網(wǎng)系列教程delay(500);)Serial.println("Wifiisconnected.");Serial.println("IPaddress:");Serial.println(WiFi.localIP());)voidmqtt_callback(char*topic,byte*payload,unsignedintlength)(Serial.print("Messagearrived[");Serial.print(topic);Serial.print("]");payload[length]='\0';Serial.println((char*)payload);if(strstr(topic,ALINK_TOPIC_PROP_SET))(StaticJsonBuffer<100>jsonBuffer;JsonObject&root=jsonBuffer.parseObject(payload);if(!root.success())(Serial.println("parseObject()failed");return;)))voidmqtt_version_post()(小學生玩轉(zhuǎn)物聯(lián)網(wǎng)系列教程charparam[512];charjsonBuf[1024];//sprintf(param,"{\"MotionAlarmState\":%d}",digitalRead(13));sprintf(param,"{\"id\":123,\"params\":{\"version\":\"%s\"}}",DEV_VERSION);//sprintf(jsonBuf,ALINK_BODY_FORMAT,ALINK_METHOD_PROP_POST,param);Serial.println(param);mqttClient.publish(ALINK_TOPIC_DEV_INFO,param);}voidmqtt_check_connect(){while(!mqttClient.connected())//mqtt{while(connect_aliyun_mqtt(mqttClient,PRODUCT_KEY,DEVICE_NAME,DEVICE_SECRET)){Serial.println("MQTTconnectsucceed!");//client.subscribe(ALINK_TOPIC_PROP_POSTRSP);mqttClient.su

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論