草庐IT

基于OpenHarmomny的智能门锁简介

netXeyes 2023-04-13 原文

想了解更多关于开源的内容,请访问:

​51CTO 开源基础软件社区​

​https://ost.51cto.com​

一、项目简介

1、项目描述

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

2、技术要求

  1. 掌握C, JS, Java语言
  2. 掌握原子化服务原理(Fa ability)
  3. 熟悉 Git 等代码版本管理工具
  4. 熟悉OpenHarmony的设备端开发,包括构建系统。
  5. 熟悉IoT物联网协议(MQTT)
  6. 熟悉VS code与Deveco studo软件

3、资源获取

  1. 在Gitee上获取openharmony源码(本次案例用3.0版本作为演示)
  2. 在Gitee上获取MQTT协议与VS code的编译工具组件
  3. 操作系统Ubuntu华为云中国镜像
    https://www.huaweicloud.com/theme/77291-1-U

二、环境搭建

1、软件准备

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

VS code:https://device.harmonyos.com/cn/develop/ideDeveco:https://developer.harmonyos.com/cn/develop/deveco-studio
*端口驱动官网:http://www.wch.cn/downloads/CH341SER_EXE.html。
选择合适的驱动下载后通过USB线即可让板子成功与电脑连接(可以去设备管理器去看看这个驱动有没有安装成功。

2、环境介绍

操作系统:Ubuntu
编译构建:Python
包管理工具:HPM
NPM 环境:Node.js
Openharmony版本:3.0
USB串口驱动:CH341SER.exe
烧录软件:Hiburn
开发板:润和HI3861
华为硬件开发工具:
Visual Studio Code(DevEco Device Tool)

  1. 软件简介:华为把一个集成的硬件编制软件作为插件放在了这个代码编辑器里,里面包含代码编辑,编译,烧录等功能。是一个集成环境。
  2. 环境配置组件与软件插件:第一次下载软件后需要自行载入编译组件,在上述的1.3中可以获取组件。下载完通过点击VS code左侧的插件标识后在QUICK ACCESS/主界面/工程设置里点击<添加用户组件>即可添加。
    *在Ubuntu环境下的VS code目前只能通过快捷键复制粘贴地址或通过点击文件夹图标选择路径,不可以使用鼠标进行复制粘贴。
    *这里所载入的插件版本号与描述可以随意填,不影响正常使用。
  3. 必须的插件:C/C++,C/C++ GNU Global,Chinese (Simplified),CodeLLDB。
    推荐的插件:GN , Better C++ Syntax, CMake Tools, Remote – SSH。

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

华为系统开发工具:

Deveco Studio *手动在设置中下载SDK

三、协议移植

1、协议介绍

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

2、协议移植

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

3、验证成功

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

Mqtt最重要要吊起的功能文件在

/home/open/Downloads/code-v3.0-LTS/OpenHarmony/third_party/pahomqtt/MQTTClient-C/src里,特别是liteOS中


上图为上报-订阅-下发 的原理图

四、解决方案

1、用户角度

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

2、实现原理

  1. 交互流程:由智能门锁订阅的命令下发的主题经过代理服务器可下发到用户终端,用户终端就可收到通知。反之用户终端也可发送命令通过代理服务器到达智能门锁。
  2. 生命周期管理:对设备使用方的 RPC 对象进行管理,请求进行校验以及对更新后的进行回调处理。

3、解锁方案

1.交互流程:由智能门锁订阅的命令下发的主题经过代理服务器可下发到用户终端,用户终端就可收到通知。反之用户终端也可发送命令通过代理服务器到达智能门锁。
2.生命周期管理:对设备使用方的 RPC 对象进行管理,请求进行校验以及对更新后的进行回调处理。
1.无网解锁(可以通过WIFI,局域网WIFI AP TCP,蓝牙发送固定码进行连接):仅携带门禁卡:使用开发板上自带的NFC可以直接与手机NFC卡或实体门禁卡碰一碰解锁。
2.仅针对于NFC识别:非正确门禁卡则指示灯闪烁,正确门禁卡则亮五秒钟。
3.可使用 WIFI AP&TCP:或通过发送蓝牙固定码到服务端(门锁)。
4.WIFI TCP 实现:通过手机打开WIFI热点交换数据,建立一个TCP连接(给门禁锁进入一个新的局域网中)。
5.AP 实现:通过AP搭建桥梁,使在服务端没有连接(断开)默认WIFI的时候起到中继作用。(相当于给信号不好的WIFI一个中继,不适宜在完全断网时使用)
6.蓝牙开锁实现:使用蓝牙芯片使智能锁和手机实现时间同步与密码文传输,将手机蓝牙固定码发送到智能锁中,从而不通过WIFI与NFC就可以将该智能锁进行打开。在初始化蓝牙模块后进行串口发送。
7.云端:首先去华为云平台创建产品与定义模型(获取IP与端口),然后获取上报和下发的通信数据,随后云平台就会给出设备ID与密钥。(后面会详细介绍)

五、编译

1、进行编译即可(首先输入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烧录到开发板中。

想了解更多关于开源的内容,请访问:

​51CTO 开源基础软件社区​

​https://ost.51cto.com​

有关基于OpenHarmomny的智能门锁简介的更多相关文章

  1. 叮咚买菜基于 Apache Doris 统一 OLAP 引擎的应用实践 - 2

    导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵

  2. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  3. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  4. HBase Region 简介和建议数量&大小 - 2

    Region是HBase数据管理的基本单位,region有一点像关系型数据的分区。region中存储这用户的真实数据,而为了管理这些数据,HBase使用了RegionSever来管理region。Region的结构hbaseregion的大小设置默认情况下,每个Table起初只有一个Region,随着数据的不断写入,Region会自动进行拆分。刚拆分时,两个子Region都位于当前的RegionServer,但处于负载均衡的考虑,HMaster有可能会将某个Region转移给其他的RegionServer。RegionSplit时机:当1个region中的某个Store下所有StoreFile

  5. ruby-on-rails - (Ruby,Rails) 基于角色的身份验证和用户管理...? - 2

    我正在寻找用于Rails的优质管理插件。似乎大多数现有的插件/gem(例如“restful_authentication”、“acts_as_authenticated”)都围绕着self注册等展开。但是,我正在寻找一种功能齐全的基于管理/管理角色的解决方案——但不是简单地附加到另一个非基于角色的解决方案。如果我找不到,我想我会自己动手......只是不想重新发明轮子。 最佳答案 RyanBates最近做了两个关于授权的railscast(注意身份验证和授权之间的区别;身份验证检查用户是否如她所说的那样,授权检查用户是否有权访问资源

  6. ruby - 在 Rakefile 中动态生成 Rake 测试任务(基于现有的测试文件) - 2

    我正在根据Rakefile中的现有测试文件动态生成测试任务。假设您有各种以模式命名的单元测试文件test_.rb.所以我正在做的是创建一个以“测试”命名空间内的文件名命名的任务。使用下面的代码,我可以用raketest:调用所有测试require'rake/testtask'task:default=>'test:all'namespace:testdodesc"Runalltests"Rake::TestTask.new(:all)do|t|t.test_files=FileList['test_*.rb']endFileList['test_*.rb'].eachdo|task|n

  7. ruby - 如何使用 Ruby 基于字母数字字符串生成颜色? - 2

    我想要像“嘿那里”这样的东西变成,例如,#316583。我希望将任意长度的字符串“归结”为十六进制颜色。我不知道从哪里开始。我在想,每个字符串的MD5散列都是不同的-但如何将该散列转换为十六进制颜色数字? 最佳答案 你可以只取几位前几位:require'digest/md5'color=Digest::MD5.hexdigest('Mytext')[0..5] 关于ruby-如何使用Ruby基于字母数字字符串生成颜色?,我们在StackOverflow上找到一个类似的问题:

  8. 玩以太坊链上项目的必备技能(初识智能合约语言-Solidity之旅一) - 2

    前面一篇关于智能合约翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用程序语言去编写智能合约了。而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂智能合约代码,或找出其中的漏洞,那么,学习Solidity这门高级的智能合约语言是有必要的,当然,这都得在公链``````以太坊上,毕竟国内的联盟链有些是不兼容Solidity。Solidity是一种面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态下的账户行为的程序。Solidity是运行在以太坊(Ethereum)虚拟机(EVM)上,其语法受到了c++、python、javascript影响。Solidity是静态类型

  9. 【自动驾驶环境感知项目】——基于Paddle3D的点云障碍物检测 - 2

    文章目录1.自动驾驶实战:基于Paddle3D的点云障碍物检测1.1环境信息1.2准备点云数据1.3安装Paddle3D1.4模型训练1.5模型评估1.6模型导出1.7模型部署效果附录show_lidar_pred_on_image.py1.自动驾驶实战:基于Paddle3D的点云障碍物检测项目地址——自动驾驶实战:基于Paddle3D的点云障碍物检测课程地址——自动驾驶感知系统揭秘1.1环境信息硬件信息CPU:2核AI加速卡:v100总显存:16GB总内存:16GB总硬盘:100GB环境配置Python:3.7.4框架信息框架版本:PaddlePaddle2.4.0(项目默认框架版本为2.3

  10. 智能客服 | 浅谈人工智能聊天机器人ChatGPT - 2

    2022年底,OpenAI的预训练模型ChatGPT给人工智能领域的爱好者和研究人员留下了深刻的印象和启发,他展现的惊人能力将人工智能的研究和应用热度推向高潮,网上也充斥着和ChatGPT的各种聊天,他可以作诗、写小说、写代码、讨论疫情问题等。下面就是一些他的神回复:人命关天的坑: 写歌,留给词作者的机会不多了。。。 回答人类怎么样面对人工智能: 什么是ChatGPT?借用网上的一段介绍,ChatGPT是由人工智能研究实验室OpenAI在2022年11月30日发布的全新聊天机器人模型,一款人工智能技术驱动的自然语言处理工具。它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动

随机推荐