基于OpenHarmony的智能门锁设计

描述

本项目的场景是智能家居。通过 OpenHarmony 源码与 Hi3861 开发板进行智能门锁的项目开发。最后可以通过舵机进行开关锁与通过手机的数字管家进行密码解锁。

 

技术要求:

掌握 C,JS,Java 语言

掌握原子化服务原理(Fa ability)

熟悉 Git 等代码版本管理工具

熟悉 OpenHarmony 的设备端开发,包括构建系统

熟悉 IoT 物联网协议(MQTT)

熟悉 VS code与Deveco studo 软件

资源获取:

在 Gitee 上获取 openharmony 源码(本次案例用 3.0 版本作为演示)

在 Gitee 上获取 MQTT 协议与 VS code 的编译工具组件

操作系统 Ubuntu 华为云中国镜像

https://www.huaweicloud.com/theme/77291-1-U

 

环境搭建

①软件准备

从华为开发者联盟下载开发软件。

VS code:

 

https://device.harmonyos.com/cn/develop/ide
  Deveco:
https://developer.harmonyos.com/cn/develop/deveco-studio
端口驱动官网:
http://www.wch.cn/downloads/CH341SER_EXE.html

 

选择合适的驱动下载后通过 USB 线即可让板子成功与电脑连接(可以去设备管理器去看看这个驱动有没有安装成功。

②环境介绍

如下:

操作系统:Ubuntu

编译构建:Python

包管理工具:HPM

NPM 环境:Node.js

OpenHarmony 版本:3.0

USB 串口驱动:CH341SER.exe

烧录软件:Hiburn

开发板:润和 HI3861

华为硬件开发工具:Visual Studio Code(DevEco Device Tool)

软件简介:华为把一个集成的硬件编制软件作为插件放在了这个代码编辑器里,里面包含代码编辑,编译,烧录等功能。是一个集成环境。

环境配置组件与软件插件:第一次下载软件后需要自行载入编译组件,在上述的 1.3 中可以获取组件。

下载完通过点击 VS code 左侧的插件标识后在 QUICK ACCESS/主界面/工程设置里点击<添加用户组件>即可添加。

在 Ubuntu 环境下的 VS code 目前只能通过快捷键复制粘贴地址或通过点击文件夹图标选择路径,不可以使用鼠标进行复制粘贴。

这里所载入的插件版本号与描述可以随意填,不影响正常使用。

必须的插件:C/C++,C/C++ GNU Global,Chinese (Simplified),CodeLLDB。

推荐的插件:GN,Better C++ Syntax,CMake Tools,Remote – SSH。

源码

上图为编译组件安装好的样子

华为系统开发工具:Deveco Studio,手动在设置中下载 SDK。

协议移植

①协议介绍

Mqtt 是用于设备与服务器通讯的一种协议,使设备可以上报订阅下发信息。

②协议移植

通过上述连接下载之后复制粘贴到 openharmony 的 third part(第三方库)中。

③验证成功

从开发板厂商官网下载实验 demo 进行实验。因为目前大多数厂商使用的都是 openharmony 1.0 代码作为演示,不同的源码版本在编译规则和文件名上都会不同,所以在下载的源码中的头文件吊起等也要修改才能接入 mqtt 协议。

Mqtt 最重要要吊起的功能文件在如下中:

 

/home/open/Downloads/code-v3.0-LTS/OpenHarmony/third_party/pahomqtt/MQTTClient-C/src
特别是 liteOS 中: 源码 上图为上报-订阅-下发 的原理图  

 

解决方案

①用户角度

在嵌入式设备开发这块先要考虑用户的操作界面(前端)才能考虑实现功能。

源码

②实现原理

交互流程:由智能门锁订阅的命令下发的主题经过代理服务器可下发到用户终端,用户终端就可收到通知。反之用户终端也可发送命令通过代理服务器到达智能门锁。

生命周期管理:对设备使用方的 RPC 对象进行管理,请求进行校验以及对更新后的进行回调处理。

③解锁方案

交互流程:由智能门锁订阅的命令下发的主题经过代理服务器可下发到用户终端,用户终端就可收到通知。反之用户终端也可发送命令通过代理服务器到达智能门锁。

生命周期管理:对设备使用方的 RPC 对象进行管理,请求进行校验以及对更新后的进行回调处理。

无网解锁(可以通过 WIFI,局域网 WIFI AP TCP,蓝牙发送固定码进行连接):仅携带门禁卡:使用开发板上自带的 NFC 可以直接与手机 NFC 卡或实体门禁卡碰一碰解锁。

仅针对于 NFC 识别:非正确门禁卡则指示灯闪烁,正确门禁卡则亮五秒钟。

可使用 WIFI AP&TCP:或通过发送蓝牙固定码到服务端(门锁)。

WIFI TCP 实现:通过手机打开 WIFI 热点交换数据,建立一个 TCP 连接(给门禁锁进入一个新的局域网中)。

AP 实现:通过 AP 搭建桥梁,使在服务端没有连接(断开)默认 WIFI 的时候起到中继作用。(相当于给信号不好的 WIFI 一个中继,不适宜在完全断网时使用)

蓝牙开锁实现:使用蓝牙芯片使智能锁和手机实现时间同步与密码文传输,将手机蓝牙固定码发送到智能锁中,从而不通过 WIFI 与 NFC 就可以将该智能锁进行打开。在初始化蓝牙模块后进行串口发送。

云端:首先去华为云平台创建产品与定义模型(获取 IP 与端口),然后获取上报和下发的通信数据,随后云平台就会给出设备 ID 与密钥。(后面会详细介绍)

编译

    ①进行编译即可(首先输入 hb set)

源码

选中此文件夹后进行编译(hb build)

①Hb(命令行编译)编译与烧录

在 Hb 环境配置好之后所用到的命令:

 

hb set //产出config.json文件
hb build //进行编译
hb clean //删除config.json文件用于下次正常编译,不然会报错
 

 

注意:在 hb set 后可通过上下键选择要编译的文件然后回车,选中后即可 build。

源码

另外还可以通过 VS_code 进行编译:

源码

作为一款华为集成的硬件编程插件,里面是有编译与烧录功能的。

如果要进行编译首先要在 PROJECT TASKS 中点击 build,同时在编译过程中在源码里会产生 config.json 文件。

在源码修改之后需要点击 clean 去清除 config.json,然后才能继续点击 Build 进行编译。编译成功后点击 Upload 烧录到开发板中。

然后就完成啦,感谢各位的支持!

  审核编辑:汤梓红
 
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分