成长计划校园极客秀 | 玩转 OpenHarmony 开发智能煤气检测系统
成果展示
1.整体展示
2.碰一碰无感配网
3.报警
简介
目前,煤气泄漏给居民生活带来伤害的事情仍时有发生,但我相信万物互联能够有效避免这种伤害,于是我基于 OpenHarmony 设计了一款煤气检测装置。该检测系统能够实时监测环境中烟雾浓度,当一氧化碳浓度超标时,能够及时向用户发出警报。通过数字管家碰一碰配网络后,配合数字管家应用,用户可以远程配置智能煤气检测系统的报警阈值,远程接收智能煤气检测系统报警信息。从而实现对危险及时报警,及时处理,守护居家安全。
1. 交互方式
如下所示,智能煤气检测系统整体方案框架可以分为:智能煤气检测系统设备、数字管家应用、云平台三部分。智能煤气检测系统设备端按照 MQTT 协议与华为 IOT 物联网平台进行通信。当智能煤气系统监测现场一氧化碳浓度发生变化时,设备端上报数据至云平台最终同步到数字管家,当一氧化碳浓度超过阈值时,则会进行报警,并将报警信息也上报至云平台最终同步到数字管家;当用户通过数字管家调整报警系统阈值时,命令数据先发送至云平台,再由云平台下发至设备侧。
2.下图是更详细的框架图
所需材料
1. 基础环境
由 Windows 工作台和 Linux 编译服务器组成。Windows 工作台可以通过 samba 服务或 ssh 方式访问 Linux 编译服务器。其中 Windows 工作台用来烧录和代码编辑,Linux 编译服务器用来编译 OpenHarmony 代码,为了简化步骤,Linux 编译服务器推荐安装 Ubuntu20.04。
还需下载
VMware Workstation 16 Player
MobaXterm
RaiDrive
HiBurn
链接:
2. 硬件准备
一氧化碳气体传感器(MQ7)
小熊派 bearpi_hm_nano 开发底板
预装 HarmonyOS 手机一台
我们使用小熊派 bearpi_hm_nano 开发底板+ MQ7 传感器拓展板来模拟智能煤气检测设备。通过 ADC 接口获取传感器一氧化碳浓度值,通过 GPIO 控制蜂鸣器进行报警;reset 按键控制设备重启;reset 按键组合控制按键可以清除已保存的配网信息,具体操作:先按下控制按键 F2,然后按下 reset 按键;通过 NFC 模块实现设备碰一碰快速配网;
3.连接方式
小熊派 nano 通用底板与一氧化碳气体传感器连接如实物图所示,具体细节如下:
小熊派 nano 通用底板 V3.3 Pin 接一氧化碳气体传感器 VCC Pin;
小熊派 nano 通用底板 GND Pin 接一氧化碳气体传感器 GND Pin;
小熊派 nano 通用底板 GPIO_13 Pin 接一氧化碳气体传感器 AO Pin;
4.实物图片
配置环境下载源码
环境配置
安装和配置 Python
1. 打开 Linux 终端。
2. 输入如下命令,查看 python 版本号,需要使用 python3.7 以上版本 undefined 否则参考
3. 安装并升级 Python 包管理工具(pip3)。
安装 hb
1. 运行如下命令安装 hb
python3 -m pip install --user ohos-build
2. 设置环境变量
3. 执行"hb -h",有打印以下信息即表示安装成功.
配置 3861 开发环境准备
在 Linux 编译服务器上搭建好基础开发环境后,需要安装 OpenHarmony 编译 Hi3861 平台特有的开发环境。
安装编译依赖基础软件
sudo apt-get install -y build-essential gcc g++ make zlib* libffi-dev
安装 Scons
1. 打开 Linux 终端。
2. 运行如下命令,安装 Scons 安装包。
python3 -m pip install scons
3. 运行如下命令,查看是否安装成功。如果安装成功,查询结果下图所示。
scons -v
下图 Scons 安装成功界面,版本要求 3.0.4 以上
安装 python 模块
sudo pip3 install setuptools kconfiglib pycryptodome ecdsa six --upgrade --ignore-installed six
安装 gcc_riscv32(WLAN 模组类编译工具链)
1. 打开 Linux 终端。
2. 下载 gcc_riscv32 镜像
3. 设置环境变量
将压缩包解压到根目录
tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C ~
设置环境变量。
vim ~/.bashrc
将以下命令拷贝到.bashrc 文件的最后一行,保存并退出。
export PATH=~/gcc_riscv32/bin:$PATH
生效环境变量。
source ~/.bashrc
4. 在命令行中输入如下命令,如果能正确显示编译器版本号,表明编译器安装成功。
riscv32-unknown-elf-gcc -v
代码下载 &编译准备
1.码云工具下载
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo
chmod a+x /usr/local/bin/repo
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
2.代码下载
OpenHarmony 代码下载
特别注意:请下载 OpenHarmony 1.0.1 版本,后续会更新支持 OpenHarmony 其他版本
repo init -u git@gitee.com:openharmony/manifest.git -b
OpenHarmony_1.0.1_release --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
设备侧代码下载
具体仓库地址:
https://gitee.com/openharmony-sig/knowledge_demo_smart_home/
下载方式 1:直接下载仓库对应 zip 包文件
下载方式 2:fork knowledge_demo_smart_home 仓库后,使用 git 命令下载
git clone git@gitee.com:xxxxxxx/knowledge_demo_smart_home.git // 其中 xxxxxxx 为 fork 后相关账号名字。
编译前准备
代码拷贝
整合并修改完成后的目录结构如下图:
设备端代码编译烧录
1.编译
编译命令:
在 OpenHarmony 目录下 hb set 如果是第一次编译,Input code path 命令行中键入"./" 指定 OpenHarmony 工程编译根目录后 回车。
如下图所示,使用键盘上下键选中智能煤气检测系统
hb build // 如果需要全量编译,可以添加-f 选项
2. 烧录
编译好的代码在
打开 smart_co_detection 文件可以看到编译好的代码
通过 RaiDrive 工具将 Linux 上的文件映射到 windows 上再通过 HiBurn 将 Hi3861_wifiiot_app_allinone.bin 烧录到开发板,将开发板通过 Type-c 链接到电脑上
鼠标右击此电脑点击设备管理器点击端口查看开发板连接到电脑上的端口。
打开 HiBurn 设置端口将 COM 设置为上一步查看的端口
点击 Setting 设置参数将 Baud 设置为 115200
点击 Select file 选择编译产出的代码
将 Hi3861_wifiiot_app_allinone.bin 烧录到开发板点击 Auto burn 点击 Connect 后点击开发板的 reset 按键等待烧录完成即可
搭建数字管家服务
1.准备部署环境
Ubuntu18.04.4
Mysql5.7
https://blog.csdn.net/goog_man/article/details/108696063
RabbitMQ:
https://blog.csdn.net/weixin_33824363/article/details/92254998
Maven3.6.3:ubuntu18.04 安装 Maven 教程_也耶的博客-CSDN 博客_ubuntu18 安装 maven
Jdk8 :sudo apt-get install openjdk-8-jdk
2.申请华为云 AK/Sk
https://activity.huaweicloud.com/newyear_promotion/index.html?utm_source=baidu&utm_medium=brand&utm_campaign=10056&utm_content=&utm_term=&utm_adplace=AdPlace024711
登录华为云→点击控制台→我的凭证→访问密钥→新增访问密钥
3. 获取 APPID
设备接入→资源空间→APPID
4. 创建产品
创建好产品后点击查看再点击自定义模型
具体配置内容查看
5. 添加规则
6. 预置 AMQP
7. 打开数字管家修改配置文件
server\distschedule-core\src\main\resources\application-local.properties
8. 添加 sql 文件 server\distschedule-dao\src\main\resources\db\migration
在末尾添加(数据库 V1__CreateTables)添加内容
INSERT INTO device_type (`name`undefined `name_en`undefined `service_id`undefined `product_id`undefined `category`)
values ('一氧化碳气体报警器'undefined 'coSensation'undefined 'SmartCoSensation'undefined '61de758bc7fb24029b0be6f0'undefined 3);
9. 编译
进入目录
cd knowledge_demo_smart_home/Server
mvn clean package -Dmaven.test.skip=true
可执行的 jar 包在
knowledge_demo_smart_home/Server/distschedule-core/target/distschedule-core-1.0.0-SNAPSHOT.jar
10. 启动服务
通过环境变量激活 local profile
export SPRING_PROFILES_ACTIVE=local # 激活 local
启动命令(根据自己虚拟机上的目录修改,使用绝对路径)
java -jar /opt/distschedule-core-1.0.0-SNAPSHOT.jar --spring.profiles.active=local
11. 查看是否成功
成功访问下面网址即可
http://127.0.0.1:8080/distschedule-api/swagger-ui/index.html
数字管家应用程序真机运行,碰一碰无感配网
总结
该项目主题来自 OpenHarmony 开源开发者成长计划。整个过程还是比较复杂,需要设备端代码的编写,FA 侧代码的实现,华为云配置,以及数字管家服务端搭建。在这个过程中我接触到很多新的知识点,例如碰一碰快速配置网络,真机上的运行,以及体验到华为云相关操作等等。OpenHarmony 未来仍需要许多开发者来共建,让我们为推进 OpenHarmony 的发展一起努力加油!
OpenHarmony 开源地址:
https://gitee.com/openharmony?_from=gitee_search
该项目开源地址:
https://gitee.com/openharmony-sig/knowledge_demo_smart_home/tree/master/dev/docs/smart_co_detection
评论