为了让女朋友运动起来,小伙儿不仅买单车还设计了智能防盗单车锁
本文分享自华为云社区《基于STM32+华为云IOT设计的智能防盗单车锁【玩转华为云】》,作者: DS 小龙哥 。
一、前言
近年来随着国民经济的发展,交通拥堵和环境污染问题越来越突出,而自行车对改善交通与环境起到了重要作用。中国本身是一个自行车使用大国,随着自行车的发展,自行车的科技含量越来越高,然而自行车安防问题突出。目前市场上自行车锁大多是传统机械结构车锁,没有实现智能化,急需解决。本文提出一种基于 STM32 单片机的智能自行车锁(马蹄锁)的设计方法,来提高自行车锁的智能化及安防等级。
硬件选项说明:单片机采用 STM32F103RCT6,GSM 模块采用 SIM800C,完成网络连接、数据上传,GPS 经纬度解析,短信发送,物联网平台采用华为云 IOT,作为数据存储端,蓝牙模块采用正点原子低功耗 BLE 蓝牙,支持蓝牙开锁解锁,车辆的状态使用 ADXL345 三轴加速度传感器检测,密码键盘采用电容矩阵键盘。
二、设计思路总结
需要设计一款 Android 手机 APP,可以远程开锁解锁,手机 APP 对接华为云物联网平台,实现远程与自行车锁完成数据交互,命令下发。智能锁与华为云 IOT 服务器之间的通信协议采用 MQTT 协议,手机 APP 与华为云 IOT 服务器之间采用 HTTP 协议。智能锁除了支持远程开锁关锁之外,还支持蓝牙解锁和输入密码开始,设计的 APP 支持蓝牙功能,可以连接智能锁上的蓝牙完成开锁和关锁,如果没有带手机,可以输入密码完成开锁。
车辆的状态检测通过 ADXL345 三轴加速度计检测,如果车辆处于锁定状态,发现车辆被移动了会触发报警,锁里的蜂鸣器会持续响,并且 SIM800C 会向指定的手机号码发送短信,提示车辆可能被盗,同时上传 GPS 经纬度到云端服务器,手机 APP 上可以获取智能锁上传的 GPS 经纬度,调用百度地图显示车辆的位置,方便寻车。
三、硬件选型
(1) 加速度计传感器
ADXL345 是一款小尺寸、薄型、低功耗、完整的三轴加速度计,提供经过信号调理的电压输出。
说明:CS 接高电平则选择 IIC 通信,反之则 SPI 通信。SDO(地址引脚)接高电平,根据手册器件的 7 位 I2C 地址是 0x1D,后面跟上读取/写位(R/W),则写寄存器为 0x3A,读寄存器为 0x3B;接低电平,则 7 位 I2C 地址是 0x53,同理,跟上读写标志位后写寄存器为 0xA6,读寄存器为 0xA7;
(2) STM32 开发板
STM32F103RCT6 的芯体规格是 32 位,速度是 72MHz,程序存储器容量是 256KB,程序存储器类型是 FLASH,RAM 容量是 48K。
(3) BLE 低功耗蓝牙模块
(4) SIM800C
模块特点:
1、支持极限 DC5V-18V 宽电压输入
2、有电源使能开关引脚 EN
3、支持锂电池供电接口 VBAT3.5-4.5V
4、输入支持移动和联通手机卡 Micro SIM 卡
5、送 51/STM32/ARDUINO 驱动例程
1、DC 5V-18V 电源输入,推荐使用 DC 9V
2、电源开始使能引脚默认使能
3、电源地
4、GSM 模块的 TXD 引脚接其它模块的 RXD
5、GSM 模块的 RXD 引脚接其它模块的 TXD
6、数据终端准备
7、内核音频输出引脚
8、内核音频输出引脚
9、锂电池输入引脚,DC 3.5 - 4.5V
10、电源地
11、启动引脚和 GND 短路可实现开机自启动
12、电源地
13、RTC 外置电池引脚
14、内核振铃提示引脚
15、内合音频输入引脚
16、内核音频输入引脚
加粗的引脚一般都用到。
建议使用 V_IN 单独供电 DC5-18V 输入(推荐使用 9V),或者 VBAT 供电锂电池两种供电方式这两种供电方式最稳定。如果只是简单调试,也可使用 USB-TTL 或者开发板的 5V 直接给模块供电。不过一般电脑或者开发板的功率有限,可能会不稳定。请根据具体情况自己取舍选择合适电源。
3. 手机 APP 软件设计
3.1 通信说明
上位机与设备之间支持通过 BLE 低功耗串口蓝牙进行通信,支持通过网络连接华为云服务器进行通信,手机 APP 下发 open_lock 和 close_lock 实现关锁开锁。
3.2 搭建开发环境
上位机软件采用 Qt 框架设计,Qt 是一个跨平台的 C++图形用户界面应用程序框架。Qt 是一个 1991 年由 Qt Company 开发的跨平台 C++图形用户界面应用程序开发框架。它既可以开发 GUI 程序,也可用于开发非 GUI 程序,比如控制台工具和服务器。简单来说,QT 可以很轻松的帮你做带界面的软件,甚至不需要你投入很大精力。
QT 官网: https://www.qt.io/
QT 学习入门实战专栏文章: https://blog.csdn.net/xiaolong1126626497/category_11400392.html
QT5.12.6 的下载地址:https://download.qt.io/archive/qt/5.12/5.12.6/
4. 创建云端设备
4.1 创建产品
登录官网: https://www.huaweicloud.com/product/iothub.html
直接搜索物联网,打开页面。
4.2 自定义模型
4.3 注册设备
设备创建成功:
4.4 MQTT 设备密匙
创建完产品、设备之后,接下来就需要知道如何通过 MQTT 协议登陆华为云服务器。官方的详细介绍在这里:https://support.huaweicloud.com/devg-iothub/iot_01_2127.html#ZH-CN_TOPIC_0240834853__zh-cn_topic_0251997880_li365284516112
属性上报格式:https://support.huaweicloud.com/api-iothub/iot_06_v5_3010.html
MQTT 设备登陆密匙生成地址:
4.5 使用 MQTT 客户端软件登录
所有的参数已经得到,接下来采用 MQTT 客户端登录华为云进行测试。华为云物联网平台的域名是: 161a58a78.iot-mqtts.cn-north-4.myhuaweicloud.com
华为云物联网平台的 IP 地址是:121.36.42.100
在软件里参数填充正确之后,就看到设备已经连接成功了。接下来打开设备页面,可以看到设备已经在线了。
4.6 数据上报测试
4.7 应用侧开发
为了更方便的展示设备数据,与设备完成交互,还需要开发一个配套的上位机,官方提供了应用侧开发的 API 接口、SDK 接口,为了方便通用一点,我这里采用了 API 接口完成数据交互,上位机软件采用 QT 开发。
帮助文档地址: ttps://support.huaweicloud.com/api-iothub/iot_06_v5_0034.html
设备属性就是设备上传的传感器状态数据信息,应用侧提供了 API 接口,可以主动向设备端下发请求指令;设备端收到指令之后需要按照约定的数据格式上报数据;所以,要实现应用层与设备端的数据交互,需要应用层与设备端配合才能完成。
5. STM32 开发
5.1 ADXL345.c
5.2 sim800.c
5.3 MQTT 信息
版权声明: 本文为 InfoQ 作者【华为云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/1cb4d0e0b6a23681192fd07a7】。文章转载请联系作者。
评论