【HarmonyOS HiSpark Wi-Fi IoT 套件试用连载】第6章 环境监测系统 - HarmonyOS技术社区 - 电子技术论坛 - 广受欢迎的专业电子论坛
分享 收藏 返回

[文章]

【HarmonyOS HiSpark Wi-Fi IoT 套件试用连载】第6章 环境监测系统

开发环境:
开发系统:Ubuntu 20.04
开发板:Pegasus物联网开发板
MCU:Hi3861
OpenHarmony版本:3.0.1-LTS
Pegasus物联网开发板有很多模块,笔者就使用环境检测板来实时检测环境变化。
6.1环境检测板简介
环境检测板有三个设备:AHT20 温湿度传感器,半导体可燃气体传感器 MQ-2,蜂鸣器MLT-8530。

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

AHT20的参考电路如下:
20220619-6-t2.png
SDA和SCL都需要接上拉电阻;VDD脚需要外接10uF的滤波电容。
AHT20的读取比较简单,分为两步:
第一步:初始化
AHT20初始化相关的命令如下:
20220619-6-t3.png
第二步:读取温湿度
这个就更简单了,发送数据读取命令即可。
20220619-6-t4.png
关于AHT20更详细的说明请参看《AHT20技术手册》。
6.1.2气体传感器 MQ-2简介
MQ-2 气体传感器所使用的气敏材料是在清洁空气中导电率较低的二氧化锡(SnO2)。当传感器所处环境中存在可燃气体时,传感器的电导率随空气中可燃气体浓度的增加而增大。使用简单的电路即可将电导率的变化转化为与该气体浓度相对应的输出信号。MQ-2 气体传感器对丙烷、烟雾的灵敏度高,对天然气和其他可燃蒸汽的检测也很理想。

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

20220619-6-t5.png
6.1.3蜂鸣器MLT-8530简介
蜂鸣器MLT-8530是一个无源蜂鸣器,需要通过PWM来控制,本模块的蜂鸣器MLT-8530电路如下所示。
20220619-6-t6.png
当BEEP为高电平的时候,三极管MMBT3904导通,蜂鸣器B1有电流流过;当BEEP为低电平的时候,三极管截止,蜂鸣器B1没有电流流过。
6.2环境监测系统实现
和前面的应用一样,分为三步。
6.2.1新建目录
在./applications/sample/wifi-iot/app路径下新建一个目录,用于存放环境检测的源码文件。
在app下新增业务environment_app其中environment_app.c为应用代码入口,BUILD.gn为编译脚本,其余的相应的接口文件,目录结构如下:
20220619-6-t7.png
6.2.2编写应用代码
鸿蒙逛网已经有相关的应用了,只需简单的移植即可。
笔者这里只是做了简单的修改。
20220619-6-t8.png
下载地址:
https://gitee.com/hihope_iot/HiHope_Pegasus_Doc/tree/master/
值得注意的是,本实例用到了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编译下载测试
最后,编译下载固件,打开串口不断会有气体的数据信息。
20220619-6-t9.png
如果街上OLED模块,还会实时显示温湿度,同时蜂鸣器也会响应,同时LED也会闪烁。

20220619-6-t10.jpg

这是一个综合实例,代码有些复杂,后面再单独讲解。




回帖(2)

华仔stm32

2022-6-20 22:43:12
综合例程不知道哪里有,看那个例子可能进步快一些!
1

早知

2022-6-22 17:26:36
大佬厉害,分享得很细

更多回帖

×
发帖