0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于STM32设计的智能门锁(华为云IOT)

DS小龙哥-嵌入式技术 来源:DS小龙哥-嵌入式技术 作者:DS小龙哥-嵌入式技 2023-07-11 13:53 次阅读

1. 前言

随着智能家居的快速发展,智能门锁作为家庭安全的重要组成部分,受到了越来越多用户的关注和需求。为了满足用户对安全和便捷的需求,决定设计一款基于STM32的智能门锁,并将其与华为云IOT平台相结合。

传统的门锁存在一些弊端,比如使用钥匙容易丢失、开锁过程繁琐等。而智能门锁的出现,有效地解决了这些问题。我选择使用STM32作为智能门锁的核心控制器,因为STM32系列具有低功耗、高性能和丰富的外设接口等优点,非常适合嵌入式应用。

华为云IOT平台作为一个强大的云服务平台,提供了丰富的物联网解决方案和强大的数据处理能力。将智能门锁与华为云IOT平台相结合,可以实现远程控制、数据监测和智能化的功能,为用户带来更加便捷和安全的居家体验。

智能门锁设计具有以下主要特点和功能:

  1. 安全可靠:采用先进的加密算法和身份验证机制,确保门锁的安全性。用户可以通过手机APP、指纹识别或密码等方式进行开锁,有效防止非法入侵。
  2. 远程控制:通过与华为云IOT平台的连接,用户可以通过手机APP在任何地方实现对门锁的远程控制。比如,可以远程开关门锁、查看开锁记录等。
  3. 多种开锁方式:除了传统的钥匙开锁方式外,我们的智能门锁还支持多种开锁方式,如指纹识别、密码输入、手机APP控制等。用户可以根据自己的需求选择最方便的开锁方式。
  4. 实时监测:智能门锁可以实时监测门锁状态、开锁记录等信息,并将这些数据上传到华为云IOT平台进行存储和分析。用户可以通过手机APP查看相关数据,了解家庭安全状况。
  5. 智能化功能:基于华为云IOT平台的数据处理能力,我们的智能门锁还可以实现一些智能化的功能。比如,可以设置自动开锁时间、远程授权开锁等。

2. 设备硬件与功能介绍

这篇文章就介绍如何使用华为物联网云平台实现智能锁的应用场景构建,硬件采用STM32F103ZET6 + ESP8266+步进电机实现。在华为云IOT物联网平台构建智能锁项目,配置好云端,设备端通过ESP8266连接华为物联网平台,实现数据上报,交互,实现远程开锁、关锁、获取锁的状态等功能,不用担心忘记出门关锁,也不用担心忘记带钥匙无法开门的情况。

ESP8266是物联网解决方案里比较热门的WIFI设备,支持串口+AT指令控制,任意支持串口的单片机都可以使用ESP8266快速实现联网。

image-20211215173859997

步进电机采用常规28BYJ-48来模拟当做门锁的电机,驱动板采用ULN2003。

image-20211215173730289

3. 创建云端设备

登录官网: https://www.huaweicloud.com/

直接搜索物联网,打开页面。

image-20211215174453102

选择设备接入:

image-20211215174521654

选择免费试用:

image-20211215174550243

产品页面,点击右上角创建产品:

image-20211215174642960

填上产品信息:

image-20211215174937965

得到产品ID,保存好ID,点击查看详情:

产品ID为:61b9ba3a2b2aa20288c1e7f1.

image-20211215175007908

点击设备页面,注册设备:

image-20211215175814693

填充信息进行注册:

image-20211215180006268

保存设备密匙和设备ID,点击保存关闭会自动下载文件保存,后面生成密码和登录账号需要使用

image-20211215180041077

关闭后就看到创建好的设备了:

image-20211215180732602

点击产品页面,选择刚才创建的产品:

image-20211215180939201

选择自定义模型---创建数据模型服务:

image-20211215181036122

image-20211215181144359

选择新增属性,创建设备的属性

image-20211215181424235

4. 创建MQTT登录账号和密匙

设备创建完成接来下生成MQTT登录账号、密匙,方便设备登录云端平台。

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

image-20211215181625067

打开刚才创建设备时,下载的密匙文件,把内容复制出来对应的填进去,生成即可。

image-20211215181747129

5. 拼接主题订阅与发布的格式

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

image-20211215182442581

在产品页面可以,看到主题的全部格式:

image-20211215183137006

总结的格式如下:

格式: $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和属性里的名称,在设备页面,影子设备页面查看。

image-20211215184220051

6. MQTT客户端模拟设备登录云端

下面使用MQTT客户端模拟设备登录服务器测试,看设备创建的是否OK。

服务器的IP地址是: 121.36.42.100

端口号是: 1883

打开MQTT客户端软件,按照提示,输入相关参数后,点击连接,然后再点击订阅主题,发布主题即可:

image-20211215184435114

查看云端服务器的情况: 可以看到设备已经在线了,并且收到上传的数据。

image-20211215184612394

修改一下锁的状态,上报属性再查看:

image-20211215184712687

发现云端的状态也已经改变,现在设备上报已经OK。

image-20211215184735239

接下来测试命令下发,实现远程开锁关锁的功能:

打开产品页面,新增加命令:

image-20211215185156127

image-20211215185232075

image-20211215185302157

命令添加成功:

image-20211215185325872

在设备页面,选择同步命令下发:

image-20211215185445720

image-20211215185523035

点击确定后,查看MQTT客户端,发现已经收到数据了:

image-20211215185612755

$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连接云端

2021-12-16_095526

image-20211215190612026

工程是keil5工程

项目源码:https://download.csdn.net/download/xiaolong1126626497/81993720

main函数代码如下:

#include "stm32f10x.h"
 #include "led.h"
 #include "delay.h"
 #include "key.h"
 #include "usart.h"
 #include < string.h >
 #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< USART3_RX_CNT;i++)
             {
                 USART1_Printf("%c",USART3_RX_BUFFER[i]);
             }
             USART3_RX_CNT=0;
             USART3_RX_FLAG=0;
         }
 ​
         //定时发送心跳包,保持连接
         delay_ms(10);
         time_cnt++;
         if(time_cnt==500)
         {
             MQTT_SentHeart();//发送心跳包
             time_cnt=0;
         }
     }
 }

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2252

    文章

    10739

    浏览量

    351106
  • 智能家居
    +关注

    关注

    1922

    文章

    9311

    浏览量

    180809
  • IOT
    IOT
    +关注

    关注

    186

    文章

    4062

    浏览量

    194301
  • 智能门锁
    +关注

    关注

    17

    文章

    1830

    浏览量

    42463
  • 华为云
    +关注

    关注

    3

    文章

    2267

    浏览量

    17026
收藏 人收藏

    评论

    相关推荐

    基于STM32+ESP8266+华为IoT设计的健康管理系统并完成应用侧开发

    这篇文章就利用STM32加上各种外设传感器配合华为IOT物联网平台设计一个健康管理设备,通过ESP8266+MQTT协议将数据传输导致华为
    的头像 发表于 07-11 09:09 2114次阅读
    基于<b class='flag-5'>STM32</b>+ESP8266+<b class='flag-5'>华为</b><b class='flag-5'>云</b><b class='flag-5'>IoT</b>设计的健康管理系统并完成应用侧开发

    基于STM32+ESP8266+华为IoT设计的智能门锁

    近几年物联网发展非常迅猛、周边各种设备都已经接入互联网,远程集成控制。例如: 智慧交通、森林防火、智慧小区、智慧停车场、智慧牧业、智慧农业等等。为了降低用户的成本、门槛,各大厂商平台也都开发了自己的物联网IOT平台,方便用户接入快速搭建自己的应用场景。
    的头像 发表于 05-27 10:51 4504次阅读
    基于<b class='flag-5'>STM32</b>+ESP8266+<b class='flag-5'>华为</b><b class='flag-5'>云</b><b class='flag-5'>IoT</b>设计的<b class='flag-5'>智能</b><b class='flag-5'>门锁</b>

    基于STM32+NBIOT+华为IOT设计的智能井盖

    智能井盖是一种通过物联网技术实现对井盖状态监测和管理的设备。当前介绍基于STM32微控制器,BC26 NBIOT模组以及华为IOT平台设计
    的头像 发表于 04-26 11:06 3577次阅读
    基于<b class='flag-5'>STM32</b>+NBIOT+<b class='flag-5'>华为</b><b class='flag-5'>云</b><b class='flag-5'>IOT</b>设计的<b class='flag-5'>智能</b>井盖

    基于STM32设计的智能家居控制系统(华为IOT

    设计了一款基于华为物联网平台的智能家居控制系统,硬件采用了STM32和ESP8266的组合,实现了设备的上连接。
    的头像 发表于 07-11 13:58 2421次阅读
    基于<b class='flag-5'>STM32</b>设计的<b class='flag-5'>智能</b>家居控制系统(<b class='flag-5'>华为</b><b class='flag-5'>云</b><b class='flag-5'>IOT</b>)

    智能家居教程:基于机智物联网开发平台的智能门锁v1.0(APP)

    25RMB左右的成本+接入机智AIoT平台后,简单的门锁也能变为智能门锁。可实现以下功能:1、安装配置简单2、APP远程控制3、可分享:
    发表于 09-25 16:32

    NB-IoT技术在智能门锁上的应用是什么?

    什么是NB-IoT传输技术?NB-IoT技术在智能门锁上的应用是什么?
    发表于 06-30 06:27

    如何实现基于stm32智能门锁系统的设计?

    如何实现基于stm32智能门锁系统的设计?
    发表于 12-13 06:05

    使用MQTT方式对接华为IoT平台的具体过程

    摘要:本文主要讲述使用MQTT方式对接华为IoT平台的具体过程。使用的方案:目标板为STM32L431BearPI(带E53扩展板); TCPIP功能由开发板的ESP8266提供;M
    发表于 01-27 07:13

    全球首款鸿蒙 HarmonyOS 智能门锁哪些新特性呢?

    华为举行 2022 华为全屋智能及全场景新品春季发布会,余承东带来了华为智能门锁 Pro 新品。
    发表于 03-18 11:42

    基于OpenHarmony的华为IoT智慧路灯实现

    。前面的文章介绍了基于OpenHarmony的智慧路灯实现,本文将在前面文章的基础上,添加华为IoT功能,实现基于OpenHarmony系统的IoT智慧路灯。小凌派RK2206开发板
    发表于 05-10 09:36

    基于OpenHarmony的华为IoT智慧路灯

    。前面的文章介绍了基于OpenHarmony的智慧路灯实现,本文将在前面文章的基础上,添加华为IoT功能,实现基于OpenHarmony系统的IoT智慧路灯。小凌派RK2206开发板
    发表于 05-11 10:06

    【合作伙伴】华为--智能见未来

    华为华为IoT,致力于提供极简接入、智能化、安全可信等全栈全场景服务和开发、集成、托管、运营
    发表于 12-12 10:35

    基于STM32F103做的WIFI指纹智能门锁

    基于STM32F103做的WIFI指纹智能门锁,WIFI使用的是ESP8266+机智连接,指纹模块是FPM10A光学指纹模块,加12864屏幕显示,还有矩阵键盘输入密码,用舵机控制
    发表于 09-27 07:47

    华为智能门锁正式发布

    4月28日,华为召开折叠旗舰及全场景新品发布会,推出了华为智能门锁华为智能
    的头像 发表于 04-29 09:53 2402次阅读

    基于 STM32 和机智智能门锁的实现

    关键词:智能门锁STM32、机智、APP目录1、功能实现2、软、硬件系统设计3、系统调试4、结论1功能实现本系统基于STM32和机智
    的头像 发表于 03-23 08:09 914次阅读
    基于 <b class='flag-5'>STM32</b> 和机智<b class='flag-5'>云</b><b class='flag-5'>智能</b><b class='flag-5'>门锁</b>的实现