玩嗨 OpenHarmony:基于 OpenHarmony 的智能门铃(上篇)

玩嗨 OpenHarmony:基于 OpenHarmony 的智能门铃(上篇)

原文引自OpenAtom OpenHarmony公众号的文章《我是如何在智能门铃样例中使用HDF框架的》

一 前言

2022 年 3 月 31 日, OpenAtom OpenHarmony(以下简称“OpenHarmony”) 发布了 OpenHarmony 3.1 Release 版本。现在,OpenHarmony 3.1 Release 在内核层、系统服务层、框架层以及开发资源 & 工具链方面全面增强,带来分布式硬件互助能力、对象级数据管理能力、分布式安全框架等独具特色的功能。本人之前一直从事 OpenHarmony 轻量系统的应用与推广,看着 OpenHarmony 一版又一版的迭代,就像一个刚出生的婴儿在广大开发者的支持下一步一个脚印成长起来,心中也是十分的高兴。今天给大家带来的是用 3.1 Beta 版本开发智能门铃的样例。

二 门铃样例简介

    用户能够通过智能门铃的室内屏幕,实时了解门外是否有人按铃、有陌生人靠近或者无人状态。同时用户也可以在数字管家中远程接收智能门铃的消息,并根据需要进行远程取消报警或一键开锁。

● 当检测到有人靠近时,蜂鸣器发出警报,屏幕显示有人靠近。同时数字管家应用接收到有人靠近的警报提示。

● 当按下门铃按键时,蜂鸣器发出警报,屏幕显示有访客。同时数字管家应用接收到有访客的消息推送。

● 用户可在数字管家应用上使用一键开门功能。远程打开门锁。

智能门铃整体方案原理图可以大致分成:智能门铃设备、数字管家应用、云平台三部分。智能门铃通过MQTT(编者注:消息队列遥测传输Message Queuing Telemetry Transport的缩写)协议连接华为IOT物联网平台,从而实现命令的接收和属性上报。

关于智能设备接入华为云IoT平台的细节可以参考连接IOT云平台指南https://gitee.com/openharmony-sig/knowledge_demo_smart_home/blob/master/docs/iot_huawei/README.md)。

智能设备同数字管家应用之间的设备模型定义可以参考profile (https://gitee.com/openharmony-sig/knowledge_demo_smart_home/blob/master/docs/DistShedule_Profile/%E6%99%BA%E8%83%BD%E9%97%A8%E9%93%83profile%E5%AE%9A%E4%B9%89.md)。

智能门铃设备硬件上采用了带有 HDF (编者注:驱动框架OpenHarmony Driver Foundation的缩写)框架的驱动模型,通过 GPIO (编者注:通用目的输入/输出General Purpose Input/ Output的缩写)来获取传感器采集信息、获取按键状态、设置门锁状态 LED 灯,并通过 PWM (编者注:脉宽调制Pulse Width Modulation的缩写)驱动报警器进行动作,本文将着重对这部分内容进行介绍。

三 HDF框架简介

首先摘一段官方定义:OpenHarmony 系统 HDF 驱动框架采用 C 语言面向对象编程模型构建,通过平台解耦、内核解耦,来达到兼容不同内核,统一平台底座的目的,从而帮助开发者实现驱动一次开发,多系统部署的效果。

下图所示为 HDF 驱动框架结构,由 HDF 驱动基础框架、HDI 驱动接口、驱动配置文件.hcs、驱动程序四部分组成:

● HDF 驱动基础框架提供统一的硬件资源管理,驱动加载管理以及设备节点管理等功能;

● HDI 驱动接口 (Hardware Driver Interface )提供标准化的接口定义和实现;

● 驱动配置文件 .hcs 主要由设备信息(Device Information)和设备资源(Device Resource)组成,Device Information 完成设备信息的配置,如配置接口发布策略,驱动加载的方式等,Device Resource 完成设备资源的配置,如 GPIO 管脚、寄存器等资源信息的配置;

● 驱动程序实现驱动具体的功能,每个驱动由一个或者多个驱动程序组成,每个驱动程序都对应着一个 Driver Entry。Driver Entry 主要完成驱动的初始化和驱动接口绑定功能。

解释一下:支持 OpenHarmony 的硬件厂商,都按照这个框架提供驱动程序和驱动配置文件.hcs。那么对于开发者来说,只要设备运行 OpenHarmony,并且支持这个驱动。就不用去关心不同芯片厂商的硬件分别怎么驱动。我只需要关注 OpenHarmony 的驱动接口是什么,硬件厂商给出的驱动配置文件 .hcs 在哪里,怎么配置,就 OK 了!这样就大大缩短了开发周期,同时为硬件切换提供很大便利。

四 硬件准备

设备清单

● 欧智通 BES2600WM 开发板

● 润和智能家居套件-红绿灯板

● 润和智能家居套件-炫彩灯板

● 预装 HarmonyOS 手机一台

欧智通 BES2600WM 开发板

硬件接线图

智能门铃设备中,使用基于 HDF 框架的 GPIO 和 PWM 开发了各模块的处理程序。

● 检测门前状态的人体红外传感器与开发板的 IO11 引脚相连; 

● 访客呼叫按键与开发板的 IO13 引脚相连;

● 蓝色 LED 灯与开发板的 IO14 引脚相连,蓝色 LED 灯用来模拟门锁开合状态;

● 无源蜂鸣器与开发板的 IO20 引脚相连。

关于基于OpenHarmony的智能门铃的样例简介、HDF框架以及硬件准备就介绍到这儿,下篇我们将继续介绍基于HDF的GPIO和PWM使用流程代码配置。

门铃样例

https://gitee.com/openharmony-sig/knowledge_demo_smart_home/blob/master/docs/smart_door_bell/README.md

共建开发样例:

https://gitee.com/openharmony-sig/knowledge/blob/master/docs/co-construct_demos/README_zh.md

写在最后

我们最近正带着大家玩嗨OpenHarmony。如果你有好玩的东东,欢迎投稿,让我们一起嗨起来!有点子,有想法,有Demo,立刻联系我们:

合作邮箱:zzliang@atomsource.org