基于華為云IoT設計的智能門鎖丨【我的華為云體驗之旅】

      網友投稿 787 2025-03-31

      1. 前言


      近幾年物聯網發展非常迅猛、周邊各種設備都已經接入互聯網,遠程集成控制。例如: 智慧交通、森林防火、智慧小區、智慧停車場、智慧牧業、智慧農業等等。為了降低用戶的成本、門檻,各大廠商平臺也都開發了自己的物聯網IOT云平臺,方便用戶接入快速搭建自己的應用場景。

      2. 設備硬件與功能介紹

      這篇文章就介紹如何使用華為物聯網云平臺實現智能鎖的應用場景構建,硬件采用STM32F103ZET6 + ESP8266+步進電機實現。在華為云IOT物聯網平臺構建智能鎖項目,配置好云端,設備端通過ESP8266連接華為物聯網平臺,實現數據上報,交互,實現遠程開鎖、關鎖、獲取鎖的狀態等功能,不用擔心忘記出門關鎖,也不用擔心忘記帶鑰匙無法開門的情況。

      ESP8266是物聯網解決方案里比較熱門的WIFI設備,支持串口+AT指令控制,任意支持串口的單片機都可以使用ESP8266快速實現聯網。

      步進電機采用常規28BYJ-48來模擬當做門鎖的電機,驅動板采用ULN2003。

      3. 創建云端設備

      登錄官網: https://www.huaweicloud.com/

      直接搜索物聯網,打開頁面。

      選擇設備接入:

      選擇免費試用:

      在產品頁面,點擊右上角創建產品:

      填上產品信息:

      得到產品ID,保存好ID,點擊查看詳情:

      產品ID為:61b9ba3a2b2aa20288c1e7f1.

      點擊設備頁面,注冊設備:

      填充信息進行注冊:

      保存設備密匙和設備ID,點擊保存關閉會自動下載文件保存,后面生成密碼和登錄賬號需要使用

      關閉后就看到創建好的設備了:

      點擊產品頁面,選擇剛才創建的產品:

      選擇自定義模型—創建數據模型服務:

      選擇新增屬性,創建設備的屬性

      4. 創建MQTT登錄賬號和密匙

      設備創建完成接來下生成MQTT登錄賬號、密匙,方便設備登錄云端平臺。

      官網工具地址: https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/

      打開剛才創建設備時,下載的密匙文件,把內容復制出來對應的填進去,生成即可。

      5. 拼接主題訂閱與發布的格式

      官方文檔介紹: https://support.huaweicloud.com/devg-iothub/iot_01_2127.html

      在產品頁面可以,看到主題的全部格式:

      總結的格式如下:

      格式: $oc/devices/{device_id}/sys/messages/down //訂閱主題: 平臺下發消息給設備 $oc/devices/61b9ba3a2b2aa20288c1e7f1_QQ1126626497_0_0_2021121510/sys/messages/down 格式: $oc/devices/{device_id}/sys/properties/report //設備上報數據 $oc/devices/61b9ba3a2b2aa20288c1e7f1_QQ1126626497_0_0_2021121510/sys/properties/report 上屬性的數據格式: //上報的屬性消息 (一次可以上報多個屬性,在json里增加就行了) {"services": [{"service_id": "lock","properties":{"門鎖":1}}]}

      上面屬性里的服務ID和屬性里的名稱,在設備頁面,影子設備頁面查看。

      6. MQTT客戶端模擬設備登錄云端

      下面使用MQTT客戶端模擬設備登錄服務器測試,看設備創建的是否OK。

      服務器的IP地址是: 121.36.42.100

      端口號是: 1883

      打開MQTT客戶端軟件,按照提示,輸入相關參數后,點擊連接,然后再點擊訂閱主題,發布主題即可:

      查看云端服務器的情況: 可以看到設備已經在線了,并且收到上傳的數據。

      修改一下鎖的狀態,上報屬性再查看:

      發現云端的狀態也已經改變,現在設備上報已經OK。

      接下來測試命令下發,實現遠程開鎖關鎖的功能:

      打開產品頁面,新增加命令:

      命令添加成功:

      在設備頁面,選擇同步命令下發:

      點擊確定后,查看MQTT客戶端,發現已經收到數據了:

      $oc/devices/61b9ba3a2b2aa20288c1e7f1_QQ1126626497/sys/commands/request_id=88e2626f-290d-405e-962d-51554445a8fd{"paras":{"lock":1},"service_id":"lock","command_name":"lock"}

      設備端解析收到的數據,就可以完成多步進電機的控制,完成開鎖關鎖。

      7. STM32+ESP8266連接云端

      基于華為云IoT設計的智能門鎖丨【我的華為云體驗之旅】

      工程是keil5工程,代碼非常多,下面只貼出了main函數里的模型代碼。如需要完整的代碼,在下面評論區留言。

      main函數代碼如下:

      #include "stm32f10x.h" #include "led.h" #include "delay.h" #include "key.h" #include "usart.h" #include #include "timer.h" #include "bluetooth.h" #include "esp8266.h" #include "mqtt.h" //華為物聯網服務器的設備信息 #define MQTT_ClientID "61b9ba3a2b2aa20288c1e7f1_QQ1126626497_0_0_2021121510" #define MQTT_UserName "61b9ba3a2b2aa20288c1e7f1_QQ1126626497" #define MQTT_PassWord "385ce91dfe7da5b7431868d5d87e7998163c493344040935d5a00024d6324242" //訂閱與發布的主題 #define SET_TOPIC "$oc/devices/61b9ba3a2b2aa20288c1e7f1_QQ1126626497_0_0_2021121510/sys/messages/down" //訂閱 #define POST_TOPIC "$oc/devices/61b9ba3a2b2aa20288c1e7f1_QQ1126626497_0_0_2021121510/sys/properties/report" //發布 char mqtt_message[200];//上報數據緩存區 int main() { u32 time_cnt=0; u32 i; u8 key; LED_Init(); BEEP_Init(); KEY_Init(); USART1_Init(115200); TIMER1_Init(72,20000); //超時時間20ms USART2_Init(9600);//串口-藍牙 TIMER2_Init(72,20000); //超時時間20ms USART3_Init(115200);//串口-WIFI TIMER3_Init(72,20000); //超時時間20ms USART1_Printf("正在初始化WIFI請稍等.\n"); if(ESP8266_Init()) { USART1_Printf("ESP8266硬件檢測錯誤.\n"); } else { //非加密端口 USART1_Printf("WIFI:%d\n",ESP8266_STA_TCP_Client_Mode("CMCC-Cqvn","99pu58cb","121.36.42.100",1883,1)); } //2. MQTT協議初始化 MQTT_Init(); //3. 連接華為服務器 while(MQTT_Connect(MQTT_ClientID,MQTT_UserName,MQTT_PassWord)) { USART1_Printf("服務器連接失敗,正在重試...\n"); delay_ms(500); } USART1_Printf("服務器連接成功.\n"); //3. 訂閱主題 if(MQTT_SubscribeTopic(SET_TOPIC,0,1)) { USART1_Printf("主題訂閱失敗.\n"); } else { USART1_Printf("主題訂閱成功.\n"); } while(1) { key=KEY_Scan(0); //這里通過按下按鍵實現開始和關鎖,并且向云端服務器更新狀態,同步 if(key==2) { time_cnt=0; sprintf(mqtt_message,"{\"services\": [{\"service_id\": \"lock\",\"properties\":{\"門鎖\":1}}]}"); MQTT_PublishData(POST_TOPIC,mqtt_message,0); USART1_Printf("發送狀態1\r\n"); } else if(key==3) { time_cnt=0; sprintf(mqtt_message,"{\"services\": [{\"service_id\": \"lock\",\"properties\":{\"門鎖\":0}}]}"); MQTT_PublishData(POST_TOPIC,mqtt_message,0); USART1_Printf("發送狀態0\r\n"); } if(USART3_RX_FLAG) { USART3_RX_BUFFER[USART3_RX_CNT]='\0'; for(i=0;i

      步進電機代碼: 模擬門鎖

      #include "motor.h" #define uint unsigned int //步進電機正反轉數組1 uint16_t phasecw[4] ={0x0200,0x0100,0x0080,0x0040};// D-C-B-A uint16_t phaseccw[4]={0x0040,0x0080,0x0100,0x0200};// A-B-C-D. void Delay_xms(u32 x) { uint i,j; for(i=0;iAPB2ENR|=1<<4; GPIOC->CRL&=0x00FFFFFF; GPIOC->CRL|=0x33000000; GPIOC->CRH&=0xFFFFFF00; GPIOC->CRH|=0x00000033; // IN4: PC9 d // IN3: PC8 c // IN2: PC7 b // IN1: PC6 a } void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal) { GPIOx->ODR = PortVal; } void Motorcw(int speed) //一個脈沖 { uint8_t i; for(i=0;i<4;i++) { GPIO_Write(GPIOC,phasecw[i]); ; } } void Motorccw(int speed) { uint8_t i; for(i=0;i<4;i++) { GPIO_Write(GPIOC,phaseccw[i]); Delay_xms(speed); } } //由于 *一個脈沖* *輸出軸* 轉0.08789度(電機實轉0.08789*64=5.625度),即步進角為5.625度。則轉完A-B-C-D為 *8個脈沖* //,即0.08789*8=0.70312度。若稱A-B-C-D為一個周期,則j為需要的轉完angle角度所需的周期數。 //步進電機正轉角度函數 void Motorcw_angle(int angle,int speed) { int i,j; j=(int)(angle/0.70312); for(i=0;i

      【我的華為云體驗之旅】有獎征文火熱進行中:https://bbs.huaweicloud.com/blogs/306271

      IoT 通用安全

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:2010excel表格透視功能如何使用(excel2010怎么數據透視表)
      下一篇:基于WeLink開發的智慧云OA系統獲獎啦!
      相關文章
      亚洲Aⅴ在线无码播放毛片一线天| 亚洲白色白色永久观看| 亚洲成人福利在线观看| 亚洲国产高清在线| 亚洲av最新在线网址| 亚洲高清国产拍精品26U| 国产亚洲精午夜久久久久久| 亚洲性日韩精品国产一区二区| 亚洲国产成人精品久久久国产成人一区二区三区综 | 亚洲午夜久久久影院伊人| 一区国严二区亚洲三区| 男人的天堂av亚洲一区2区| 亚洲av午夜国产精品无码中文字| 亚洲Av永久无码精品一区二区| 亚洲AV第一成肉网| 国产亚洲综合视频| 亚洲精品网站在线观看不卡无广告 | 亚洲黄色在线观看网站| 亚洲精品成人图区| 亚洲一卡2卡3卡4卡国产网站| 亚洲精品中文字幕无乱码麻豆| 国产亚洲玖玖玖在线观看| 亚洲丰满熟女一区二区哦| www.亚洲精品.com| 国产精品亚洲视频| 亚洲va无码专区国产乱码| 777亚洲精品乱码久久久久久| 亚洲国产精品综合久久2007| 国产v亚洲v天堂a无| 亚洲精品理论电影在线观看| 亚洲av日韩av欧v在线天堂| 久久亚洲高清综合| 久久久久亚洲AV成人无码网站| 亚洲黄色中文字幕| 91在线亚洲综合在线| 欧洲亚洲综合一区二区三区| 精品国产香蕉伊思人在线在线亚洲一区二区 | 国产国拍亚洲精品mv在线观看| 久久亚洲AV午夜福利精品一区| 亚洲第一香蕉视频| 亚洲中文字幕久久精品无码VA |