0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于STM32+ESP8266+華為云IoT設(shè)計的智能門鎖

DS小龍哥-嵌入式技術(shù) ? 來源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2022-05-27 10:51 ? 次閱讀

1. 前言

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

2. 設(shè)備硬件與功能介紹

這篇文章就介紹如何使用華為物聯(lián)網(wǎng)云平臺實現(xiàn)智能鎖的應(yīng)用場景構(gòu)建,硬件采用STM32F103ZET6 + ESP8266+步進電機實現(xiàn)。在華為云IOT物聯(lián)網(wǎng)平臺構(gòu)建智能鎖項目,配置好云端,設(shè)備端通過ESP8266連接華為物聯(lián)網(wǎng)平臺,實現(xiàn)數(shù)據(jù)上報,交互,實現(xiàn)遠(yuǎn)程開鎖、關(guān)鎖、獲取鎖的狀態(tài)等功能,不用擔(dān)心忘記出門關(guān)鎖,也不用擔(dān)心忘記帶鑰匙無法開門的情況。

ESP8266是物聯(lián)網(wǎng)解決方案里比較熱門的WIFI設(shè)備,支持串口+AT指令控制,任意支持串口的單片機都可以使用ESP8266快速實現(xiàn)聯(lián)網(wǎng)。

image-20211215173859997

步進電機采用常規(guī)28BYJ-48來模擬當(dāng)做門鎖的電機,驅(qū)動板采用ULN2003。

image-20211215173730289

3. 創(chuàng)建云端設(shè)備

登錄官網(wǎng): https://www.huaweicloud.com/

直接搜索物聯(lián)網(wǎng),打開頁面。

image-20211215174453102

選擇設(shè)備接入:

image-20211215174521654

選擇免費試用:

image-20211215174550243

產(chǎn)品頁面,點擊右上角創(chuàng)建產(chǎn)品:

image-20211215174642960

填上產(chǎn)品信息:

image-20211215174937965

得到產(chǎn)品ID,保存好ID,點擊查看詳情:

產(chǎn)品ID為:61b9ba3a2b2aa20288c1e7f1

.

image-20211215175007908

點擊設(shè)備頁面,注冊設(shè)備:

image-20211215175814693

填充信息進行注冊:

image-20211215180006268

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

image-20211215180041077

關(guān)閉后就看到創(chuàng)建好的設(shè)備了:

image-20211215180732602

點擊產(chǎn)品頁面,選擇剛才創(chuàng)建的產(chǎn)品:

image-20211215180939201

選擇自定義模型---創(chuàng)建數(shù)據(jù)模型服務(wù):

image-20211215181036122image-20211215181144359

選擇新增屬性,創(chuàng)建設(shè)備的屬性

image-20211215181424235

4. 創(chuàng)建MQTT登錄賬號和密匙

設(shè)備創(chuàng)建完成接來下生成MQTT登錄賬號、密匙,方便設(shè)備登錄云端平臺。

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

image-20211215181625067

打開剛才創(chuàng)建設(shè)備時,下載的密匙文件,把內(nèi)容復(fù)制出來對應(yīng)的填進去,生成即可。

image-20211215181747129

5. 拼接主題訂閱與發(fā)布的格式

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

image-20211215182442581

在產(chǎn)品頁面可以,看到主題的全部格式:

image-20211215183137006

總結(jié)的格式如下:

格式: $oc/devices/{device_id}/sys/messages/down
//訂閱主題: 平臺下發(fā)消息給設(shè)備
$oc/devices/61b9ba3a2b2aa20288c1e7f1_QQ1126626497_0_0_2021121510/sys/messages/down


格式: $oc/devices/{device_id}/sys/properties/report
//設(shè)備上報數(shù)據(jù)
$oc/devices/61b9ba3a2b2aa20288c1e7f1_QQ1126626497_0_0_2021121510/sys/properties/report

上屬性的數(shù)據(jù)格式:
//上報的屬性消息 (一次可以上報多個屬性,在json里增加就行了)
{"services": [{"service_id": "lock","properties":{"門鎖":1}}]}

上屬性的數(shù)據(jù)格式:

上面屬性里的服務(wù)ID和屬性里的名稱,在設(shè)備頁面,影子設(shè)備頁面查看。

image-20211215184220051

6. MQTT客戶端模擬設(shè)備登錄云端

下面使用MQTT客戶端模擬設(shè)備登錄服務(wù)器測試,看設(shè)備創(chuàng)建的是否OK。

服務(wù)器的IP地址是: 121.36.42.100

端口號是: 1883

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

image-20211215184435114

查看云端服務(wù)器的情況: 可以看到設(shè)備已經(jīng)在線了,并且收到上傳的數(shù)據(jù)。

image-20211215184612394

修改一下鎖的狀態(tài),上報屬性再查看:

image-20211215184712687

發(fā)現(xiàn)云端的狀態(tài)也已經(jīng)改變,現(xiàn)在設(shè)備上報已經(jīng)OK。

image-20211215184735239

接下來測試命令下發(fā),實現(xiàn)遠(yuǎn)程開鎖關(guān)鎖的功能:

打開產(chǎn)品頁面,新增加命令:

image-20211215185156127image-20211215185232075image-20211215185302157

命令添加成功:

image-20211215185325872

在設(shè)備頁面,選擇同步命令下發(fā):

image-20211215185445720image-20211215185523035

點擊確定后,查看MQTT客戶端,發(fā)現(xiàn)已經(jīng)收到數(shù)據(jù)了:

image-20211215185612755

設(shè)備端解析收到的數(shù)據(jù),就可以完成多步進電機的控制,完成開鎖關(guān)鎖。

7. STM32+ESP8266連接云端

2021-12-16_095526image-20211215190612026

工程是keil5工程,代碼非常多,完整工程可以直接點擊下載鏈接下載

main函數(shù)代碼如下:

#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"

//華為物聯(lián)網(wǎng)服務(wù)器的設(shè)備信息
#define MQTT_ClientID "61b9ba3a2b2aa20288c1e7f1_QQ1126626497_0_0_2021121510"
#define MQTT_UserName "61b9ba3a2b2aa20288c1e7f1_QQ1126626497"
#define MQTT_PassWord "385ce91dfe7da5b7431868d5d87e7998163c493344040935d5a00024d6324242"

//訂閱與發(fā)布的主題
#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"  //發(fā)布

char mqtt_message[200];//上報數(shù)據(jù)緩存區(qū)

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);//串口-藍(lán)牙
   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協(xié)議初始化	
    MQTT_Init(); 
    //3. 連接華為服務(wù)器        
    while(MQTT_Connect(MQTT_ClientID,MQTT_UserName,MQTT_PassWord))
    {
        USART1_Printf("服務(wù)器連接失敗,正在重試...\n");
        delay_ms(500);
    }
    USART1_Printf("服務(wù)器連接成功.\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("發(fā)送狀態(tài)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("發(fā)送狀態(tài)0\r\n");
        }  

        if(USART3_RX_FLAG)
        {
            USART3_RX_BUFFER[USART3_RX_CNT]='\0';
            for(i=0;i;i++)>

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • STM32
    +關(guān)注

    關(guān)注

    2264

    文章

    10854

    瀏覽量

    354299
  • ESP8266
    +關(guān)注

    關(guān)注

    50

    文章

    962

    瀏覽量

    44757
  • 智能門鎖
    +關(guān)注

    關(guān)注

    17

    文章

    1845

    瀏覽量

    42966
  • 華為云
    +關(guān)注

    關(guān)注

    3

    文章

    2391

    瀏覽量

    17247
收藏 人收藏

    評論

    相關(guān)推薦

    基于STM32+ESP8266+華為IoT設(shè)計的健康管理系統(tǒng)并完成應(yīng)用側(cè)開發(fā)

    這篇文章就利用STM32加上各種外設(shè)傳感器配合華為IOT物聯(lián)網(wǎng)平臺設(shè)計一個健康管理設(shè)備,通過ESP8266+MQTT協(xié)議將數(shù)據(jù)傳輸導(dǎo)致
    的頭像 發(fā)表于 07-11 09:09 ?2496次閱讀
    基于<b class='flag-5'>STM32+ESP8266+</b><b class='flag-5'>華為</b><b class='flag-5'>云</b><b class='flag-5'>IoT</b>設(shè)計的健康管理系統(tǒng)并完成應(yīng)用側(cè)開發(fā)

    基于STM32設(shè)計的智能門鎖(華為IOT)

    這篇文章就介紹如何使用華為物聯(lián)網(wǎng)平臺實現(xiàn)智能鎖的應(yīng)用場景構(gòu)建,硬件采用STM32F103ZET6 + ESP8266+步進電機實現(xiàn)。在
    的頭像 發(fā)表于 07-11 13:53 ?3199次閱讀
    基于<b class='flag-5'>STM32</b>設(shè)計的<b class='flag-5'>智能</b><b class='flag-5'>門鎖</b>(<b class='flag-5'>華為</b><b class='flag-5'>云</b><b class='flag-5'>IOT</b>)

    基于STM32設(shè)計的智能家居控制系統(tǒng)(華為IOT

    設(shè)計了一款基于華為物聯(lián)網(wǎng)平臺的智能家居控制系統(tǒng),硬件采用了STM32ESP8266的組合,實現(xiàn)了設(shè)備的上
    的頭像 發(fā)表于 07-11 13:58 ?3299次閱讀
    基于<b class='flag-5'>STM32</b>設(shè)計的<b class='flag-5'>智能</b>家居控制系統(tǒng)(<b class='flag-5'>華為</b><b class='flag-5'>云</b><b class='flag-5'>IOT</b>)

    STM32+ESP8266+小程序的智能家居學(xué)習(xí)

    1、STM32+ESP8266+小程序的智能家居學(xué)習(xí)文章目錄1、STM32+ESP8266+小程序的智能家居學(xué)習(xí)1.1 準(zhǔn)備知識,了解整個項目的過程1.1.1
    發(fā)表于 08-12 06:50

    怎樣去設(shè)計一種基于STM32+ESP8266+機智的物聯(lián)網(wǎng)demo

    怎樣去設(shè)計一種基于STM32+ESP8266+機智的物聯(lián)網(wǎng)demo?有哪些操作流程?
    發(fā)表于 10-08 07:47

    ESP8266_SDK_User_Manual_Version 1.4

    ESP8266__IOT_SDK_User_Manual,ESP8266 SDK 使用指南
    發(fā)表于 12-30 14:23 ?21次下載

    使用esp8266實現(xiàn)STM32聯(lián)網(wǎng)(最簡單USART方法)

    到電腦上的java程序 這一篇 esp8266STM32連接,電腦通過STM32配置esp8266實現(xiàn)聯(lián)網(wǎng)發(fā)送數(shù)據(jù)具體流程如下圖 2= esp82
    發(fā)表于 11-22 11:51 ?1.2w次閱讀

    Esp8266(NodeMCU)連接阿里服務(wù)器

    Esp8266【NodeMCU】連接阿里服務(wù)器創(chuàng)建阿里產(chǎn)品添加設(shè)備Esp8266代碼MQTT_PASSWD密碼生成工具修改PubSubClient.h文件(不修改無法連接Mqtt服
    發(fā)表于 11-16 10:21 ?18次下載
    <b class='flag-5'>Esp8266</b>(NodeMCU)連接阿里<b class='flag-5'>云</b>服務(wù)器

    STM32 ES8266上阿里IOT MQTT實踐【第七章】:ESP8266+MQTT上阿里物聯(lián)網(wǎng)平臺實踐

    本篇文章講述了如何使用stm32接入阿里IOT,WiFi模塊為ESP8266,可以實現(xiàn)發(fā)布以及訂閱。
    發(fā)表于 11-21 19:06 ?54次下載
    <b class='flag-5'>STM32</b> ES<b class='flag-5'>8266</b>上阿里<b class='flag-5'>云</b><b class='flag-5'>IOT</b> MQTT實踐【第七章】:<b class='flag-5'>ESP8266</b>+MQTT上阿里<b class='flag-5'>云</b>物聯(lián)網(wǎng)平臺實踐

    STM32+ESP8266+小程序的智能家居(項目簡介)

    1、STM32+ESP8266+小程序的智能家居學(xué)習(xí)文章目錄1、STM32+ESP8266+小程序的智能家居學(xué)習(xí)1.1 準(zhǔn)備知識,了解整個項目的過程1.1.1
    發(fā)表于 11-23 18:07 ?36次下載
    <b class='flag-5'>STM32+ESP8266+</b>小程序的<b class='flag-5'>智能</b>家居(項目簡介)

    基于ESp8266智能插座

    基于ESp8266智能插座基于ESP8266+STM32F1的智慧生活套件文章目錄基于ESP8266+STM32F1的智慧生活套件一、項目背景二、項目分析三、產(chǎn)品框架四、設(shè)計思路五、
    發(fā)表于 12-01 09:21 ?29次下載
    基于<b class='flag-5'>ESp8266</b>的<b class='flag-5'>智能</b>插座

    基于STM32單片機ESP8266物聯(lián)網(wǎng)阿里的遠(yuǎn)程控制LED系統(tǒng)

    產(chǎn)品功能:STM32單片機通過ESP8266與阿里平臺進行通信,接受到阿里平臺(具有配套的APP)的數(shù)據(jù)進而執(zhí)行相應(yīng)操作:打開LED、關(guān)閉LED硬件設(shè)備:
    發(fā)表于 12-24 19:20 ?42次下載
    基于<b class='flag-5'>STM32</b>單片機<b class='flag-5'>ESP8266</b>物聯(lián)網(wǎng)阿里<b class='flag-5'>云</b>的遠(yuǎn)程控制LED系統(tǒng)

    stm32esp8266上的簡單時鐘

    電子發(fā)燒友網(wǎng)站提供《stm32esp8266上的簡單時鐘.zip》資料免費下載
    發(fā)表于 07-27 11:24 ?4次下載
    <b class='flag-5'>stm32</b>和<b class='flag-5'>esp8266</b>上的簡單時鐘

    ESP8266的RFID智能門鎖

    電子發(fā)燒友網(wǎng)站提供《帶ESP8266的RFID智能門鎖.zip》資料免費下載
    發(fā)表于 07-06 10:07 ?0次下載
    帶<b class='flag-5'>ESP8266</b>的RFID<b class='flag-5'>智能</b><b class='flag-5'>門鎖</b>

    STM32 ESP8266阿里鏈接源碼

    stm32F103C8T6 ESP8266 物聯(lián)網(wǎng)電表 登錄阿里
    發(fā)表于 08-29 14:21 ?5次下載