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

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

3天内不再提示

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

DS小龙哥-嵌入式技术 来源:DS小龙哥-嵌入式技术 作者:DS小龙哥-嵌入式技 2022-05-27 10:51 次阅读

1. 前言

近几年物联网发展非常迅猛、周边各种设备都已经接入互联网,远程集成控制。例如: 智慧交通、森林防火、智慧小区、智慧停车场、智慧牧业、智慧农业等等。为了降低用户的成本、门槛,各大厂商平台也都开发了自己的物联网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-20211215181036122image-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-20211215185156127image-20211215185232075image-20211215185302157

命令添加成功:

image-20211215185325872

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

image-20211215185445720image-20211215185523035

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

image-20211215185612755

设备端解析收到的数据,就可以完成多步进电机的控制,完成开锁关锁。

7. STM32+ESP8266连接云端

2021-12-16_095526image-20211215190612026

工程是keil5工程,代码非常多,完整工程可以直接点击下载链接下载

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;i++)>

审核编辑:汤梓红

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

    关注

    2239

    文章

    10669

    浏览量

    348690
  • ESP8266
    +关注

    关注

    50

    文章

    946

    浏览量

    43917
  • 智能门锁
    +关注

    关注

    17

    文章

    1804

    浏览量

    42038
  • 华为云
    +关注

    关注

    3

    文章

    2155

    浏览量

    16801
收藏 人收藏

    评论

    相关推荐

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

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

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

    这篇文章就介绍如何使用华为物联网云平台实现智能锁的应用场景构建,硬件采用STM32F103ZET6 + ESP8266+步进电机实现。在华为
    的头像 发表于 07-11 13:53 2543次阅读
    基于<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>)

    STM32+ESP8266+小程序的智能家居学习

    1、STM32+ESP8266+小程序的智能家居学习文章目录1、STM32+ESP8266+小程序的智能家居学习1.1 准备知识,了解整个项目的过程1.1.1
    发表于 08-12 06:50

    怎样去设计一种基于STM32+ESP8266+机智的物联网demo

    怎样去设计一种基于STM32+ESP8266+机智的物联网demo?有哪些操作流程?
    发表于 10-08 07:47

    stm32通过esp8266 AT命令连接阿里物联网

    stm32通过esp8266 AT命令连接阿里物联网。不引用库,自己写协议数据以便了解MQTT为方便调试,上位机的AT命令可以通过stm32发送给
    发表于 01-21 08:29

    stm32通过esp8266 AT命令连接阿里物联网

    stm32通过esp8266 AT命令连接阿里物联网。不引用库,自己写协议数据以便了解MQTT为方便调试,上位机的AT命令可以通过stm32发送给
    发表于 03-30 14:01

    ESP8266开发板+机智IoT+远程控制的智能风扇

    智能小风扇本案例为机智开发平台初级基础应用开发实例,开发者通过使用机智Aiot开发平台和ESP8266,实现对USB风扇的远程APP控制,本案例原理简单、制作成本低,适合所有具备嵌
    发表于 06-14 13:24

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

    基于STM32F103做的WIFI指纹智能门锁,WIFI使用的是ESP8266+机智连接,指纹模块是FPM10A光学指纹模块,加12864
    发表于 09-27 07:47

    使用esp8266实现STM32联网(最简单USART方法)

    到电脑上的java程序 这一篇 esp8266STM32连接,电脑通过STM32配置esp8266实现联网发送数据具体流程如下图 2= esp82
    发表于 11-22 11:51 1.1w次阅读

    STM32 ES8266上阿里云IOT MQTT实践【第七章】:ESP8266+MQTT上阿里云物联网平台实践

    本篇文章讲述了如何使用stm32接入阿里云IOT,WiFi模块为ESP8266,可以实现发布以及订阅。
    发表于 11-21 19:06 54次下载
    <b class='flag-5'>STM32</b> ES<b class='flag-5'>8266</b>上阿里云<b class='flag-5'>IOT</b> MQTT实践【第七章】:<b class='flag-5'>ESP8266</b>+MQTT上阿里云物联网平台实践

    STM32+ESP8266+小程序的智能家居(项目简介)

    1、STM32+ESP8266+小程序的智能家居学习文章目录1、STM32+ESP8266+小程序的智能家居学习1.1 准备知识,了解整个项目的过程1.1.1
    发表于 11-23 18:07 35次下载
    <b class='flag-5'>STM32+ESP8266+</b>小程序的<b class='flag-5'>智能</b>家居(项目简介)

    基于ESp8266智能插座

    基于ESp8266智能插座基于ESP8266+STM32F1的智慧生活套件文章目录基于ESP8266+STM32F1的智慧生活套件一、项目背景二、项目分析三、产品框架四、设计思路五、
    发表于 12-01 09:21 29次下载
    基于<b class='flag-5'>ESp8266</b>的<b class='flag-5'>智能</b>插座

    智慧农业:STM32+ESP8266+腾讯物联网+小程序

    本项目采用STM32F103ZET6 + ESP8266 设计一个智慧农业管理系统, 能够获取空气中的温湿度数据,光照度数据等,根据种植区的空气温湿度数据,判断是否进行灌溉;可以通过ESP8266
    的头像 发表于 02-28 13:56 7364次阅读
    智慧农业:<b class='flag-5'>STM32+ESP8266+</b>腾讯物联网+小程序

    stm32esp8266上的简单时钟

    电子发烧友网站提供《stm32esp8266上的简单时钟.zip》资料免费下载
    发表于 07-27 11:24 4次下载
    <b class='flag-5'>stm32</b>和<b class='flag-5'>esp8266</b>上的简单时钟

    ESP8266的RFID智能门锁

    电子发烧友网站提供《带ESP8266的RFID智能门锁.zip》资料免费下载
    发表于 07-06 10:07 0次下载
    带<b class='flag-5'>ESP8266</b>的RFID<b class='flag-5'>智能</b><b class='flag-5'>门锁</b>