开发环境:
开发系统:Ubuntu 20.04
开发板:Pegasus物联网开发板
MCU:Hi3861
OpenHarmony版本:3.0.1-LTS

Pegasus物联网开发板有很多模块,笔者就使用环境检测板来实时检测环境变化。

6.1环境检测板简介

环境检测板有三个设备:AHT20 温湿度传感器,半导体可燃气体传感器 MQ-2,蜂鸣器MLT-8530。

《HarmonyOS开发 – OpenHarmony开发笔记(基于小型系统)》第6章 环境监测系统_harmonyos

6.1.1 温湿度传感器AHT20简介

AHT20是一款精度高,完全校准,贴片封装的温湿度传感器,采用标准IIC通信方式,超小的体积、极低的功耗。温湿度传感器均在高精度的恒温恒湿腔室中进行出厂校准,直接输出经温度补偿后的湿度、温度等信息,用户无需要对湿度进行温度补偿,便可得到准确的温湿度信息。

AHT20的参考电路如下:

《HarmonyOS开发 – OpenHarmony开发笔记(基于小型系统)》第6章 环境监测系统_开发板_02

SDA和SCL都需要接上拉电阻;VDD脚需要外接10uF的滤波电容。
AHT20的读取比较简单,分为两步:

第一步:初始化
AHT20初始化相关的命令如下:

《HarmonyOS开发 – OpenHarmony开发笔记(基于小型系统)》第6章 环境监测系统_harmonyos_03

第二步:读取温湿度
这个就更简单了,发送数据读取命令即可。

《HarmonyOS开发 – OpenHarmony开发笔记(基于小型系统)》第6章 环境监测系统_harmonyos_04

关于AHT20更详细的说明请参看《AHT20技术手册》。

6.1.2气体传感器 MQ-2简介

MQ-2 气体传感器所使用的气敏材料是在清洁空气中导电率较低的二氧化锡(SnO2)。当传感器所处环境中存在可燃气体时,传感器的电导率随空气中可燃气体浓度的增加而增大。使用简单的电路即可将电导率的变化转化为与该气体浓度相对应的输出信号。MQ-2 气体传感器对丙烷、烟雾的灵敏度高,对天然气和其他可燃蒸汽的检测也很理想。

本传感器通过 J7 接口获取ADC 值,从而得到气体的浓度。

《HarmonyOS开发 – OpenHarmony开发笔记(基于小型系统)》第6章 环境监测系统_harmonyos_05

6.1.3蜂鸣器MLT-8530简介

蜂鸣器MLT-8530是一个无源蜂鸣器,需要通过PWM来控制,本模块的蜂鸣器MLT-8530电路如下所示。

《HarmonyOS开发 – OpenHarmony开发笔记(基于小型系统)》第6章 环境监测系统_harmonyos_06

当BEEP为高电平的时候,三极管MMBT3904导通,蜂鸣器B1有电流流过;当BEEP为低电平的时候,三极管截止,蜂鸣器B1没有电流流过。

6.2环境监测系统实现

和前面的应用一样,分为三步。

6.2.1新建目录

在./applications/sample/wifi-iot/app路径下新建一个目录,用于存放环境检测的源码文件。

在app下新增业务environment_app其中environment_app.c为应用代码入口,BUILD.gn为编译脚本,其余的相应的接口文件,目录结构如下:

《HarmonyOS开发 – OpenHarmony开发笔记(基于小型系统)》第6章 环境监测系统_harmonyos_07

6.2.2编写应用代码

鸿蒙逛网已经有相关的应用了,只需简单的移植即可。

《HarmonyOS开发 – OpenHarmony开发笔记(基于小型系统)》第6章 环境监测系统_物联网_08

笔者这里只是做了简单的修改。

​下载地址​

值得注意的是,本实例用到了PWM和I2C,但是默认情况下这两个选项没有打开,需要打开这两个选项。

# CONFIG_PWM_SUPPORT is not set修改为CONFIG_PWM_SUPPORT=y
# CONFIG_I2C_SUPPORT is not set修改为CONFIG_I2C_SUPPORT=y

修改路径为:device/hisilicon/hispark_pegasus/sdk_liteos/build/config/usr_config.mk

6.2.3修改编译组织文件

修改./applications/sample/wifi-iot/app/wifi_connect/BUILD.gn文件,内容如下所示:

static_library("environmentapp") {
sources = [
"environment_app.c", "oled_ssd1306.c", "aht20.c",
]

include_dirs = [
"//utils/native/lite/include",
"//kernel/liteos_m/kal",
"//base/iot_hardware/peripheral/interfaces/kits",
]
}

  • static_library中指定业务模块的编译结果,为静态库文件libenvironmentapp.a,开发者根据实际情况完成填写。
  • sources中指定静态库.a所依赖的.c文件及其路径,若路径中包含"//“则表示绝对路径(此处为代码根路径),若不包含”//"则表示相对路径。
  • include_dirs中指定source所需要依赖的.h文件路径。

6.2.4新增组件

将environmentapp添加到组件中。即修改applications/sample/wifi-iot/app/BUILD.gn文件,修改后如下所示。

import("//build/lite/config/component/lite_component.gni")

lite_component("app") {
features = [
"environment_app:environmentapp"
]
}

  • environment_app是相对路径,指向applications/sample/wifi-iot/app/environment_app。
  • environmentapp是目标,指向applications/sample/wifi-iot/app/environment_app/BUILD.gn中的static_library(“environmentapp”)。

6.2.5编译下载测试

最后,编译下载固件,打开串口不断会有气体的数据信息。

《HarmonyOS开发 – OpenHarmony开发笔记(基于小型系统)》第6章 环境监测系统_物联网_09

如果街上OLED模块,还会实时显示温湿度,同时蜂鸣器也会响应,同时LED也会闪烁。

《HarmonyOS开发 – OpenHarmony开发笔记(基于小型系统)》第6章 环境监测系统_相对路径_10



欢迎访问我的网站

​BruceOu的哔哩哔哩​​​​BruceOu的主页​​​​BruceOu的博客​​​BruceOu的
​​​BruceOu的简书​​​​BruceOu的知乎​


欢迎订阅我的微信公众号

关注公众号[嵌入式实验楼]获取最新资讯