成果展示

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

链接:

https://gitee.com/bearpi/bearpi-hm_nano/blob/master/applications/BearPi/BearPi-HM_Nano/docs/quick-start/BearPi-HM_Nano%E5%8D%81%E5%88%86%E9%92%9F%E4%B8%8A%E6%89%8B.md

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否则参考

https://gitee.com/openharmony/docs/blob/OpenHarmony_1.0.1_release/zh-cn/device-dev/quick-start/%E6%90%AD%E5%BB%BA%E7%B3%BB%E7%BB%9F%E5%9F%BA%E7%A1%80%E7%8E%AF%E5%A2%83.md

python3 –version                         

  

3. 安装并升级Python包管理工具(pip3)。

sudo apt-get install python3-setuptools python3-pip -y
sudo pip3 install --upgrade pip

  

安装hb

1. 运行如下命令安装hb

python3 -m pip install --user ohos-build

2. 设置环境变量

   vim ~/.bashrc
将以下命令拷贝到.bashrc文件的最后一行,保存并退出。
export PATH=~/.local/bin:$PATH
执行如下命令更新环境变量。
source ~/.bashrc

  

3. 执行"hb -h",有打印以下信息即表示安装成功.

   usage: hb
OHOS build system
positional arguments:
{buildundefinedsetundefinedenvundefinedclean}
build Build source code
set OHOS build settings
env Show OHOS build env
clean Clean output optional arguments:
-hundefined --help show this help message and exit

  

配置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镜像

https://repo.huaweicloud.com/harmonyos/compiler/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz

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后相关账号名字。

编译前准备

代码拷贝

cp -rfa  ~/knowledge_demo_smart_home/dev/device/bearpi
~/OpenHarmony1.01/device/
cp -rfa ~/knowledge_demo_smart_home/dev/team_x
~/OpenHarmony1.01/vendor/
cp -rfa ~/knowledge_demo_smart_home/dev/third_party/iot_link
~/OpenHarmony1.01/third_party/

  

整合并修改完成后的目录结构如下图:

设备端代码编译烧录

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. 创建产品

创建好产品后点击查看再点击自定义模型

具体配置内容查看

https://gitee.com/openharmony-sig/knowledge_demo_smart_home/blob/master/profile/%E6%99%BA%E8%83%BD%E7%85%A4%E6%B0%94%E6%A3%80%E6%B5%8B%E7%B3%BB%E7%BB%9Fprofile%E5%AE%9A%E4%B9%89.md

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

数字管家应用程序真机运行,碰一碰无感配网

https://gitee.com/openharmony-sig/knowledge_demo_smart_home/tree/master/FA/DistSchedule/docs/%E5%AD%A6%E7%94%9F%E5%85%9A%E4%B8%8A%E6%89%8B%E6%95%B0%E5%AD%97%E7%AE%A1%E5%AE%B6

总结

该项目主题来自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

成长计划校园极客秀 | 玩转OpenHarmony开发智能煤气检测系统的更多相关文章

  1. [web建站] 极客WEB大前端专家级开发工程师培训视频教程

    极客WEB大前端专家级开发工程师培训视频教程  教程下载地址: http://www.fu83.cn/thread-355-1-1.html 课程目录:1.走进前端工程师的世界HTML51.HTML5 ...

  2. 极客 Play 玩 Terminal——GitHub 热点速览 Vol.40

    作者:HelloGitHub-小鱼干 多少人以为暗黑的终端便是一名程序员的工作台,其实上,终端可以不只是一个输入 command 的界面,也可以是本周特推 kb 一样,面向极客的极简命令行知识库管理器 ...

  3. 极客”一词,来自于美国俚语“geek”的音译,一般理解为性格古怪的人

    起源 “ 极客”一词,来自于美国俚语“ geek”的音译,一般理解为性格古怪的人.数学“极客”大多是指,并不 一定是数学专业但又对数学等技术有狂热的兴趣并投入大量时间钻研的人.又 译作“ 奇客”.以前 ...

  4. 36小时极客嘉年华!FISCO BCOS黑客马拉松报名启动

    FISCO BCOS是完全开源的联盟区块链底层技术平台,由金融区块链合作联盟(深圳)(简称金链盟)成立开源工作组通力打造.开源工作组成员包括博彦科技.华为.深证通.神州数码.四方精创.腾讯.微众银行. ...

  5. 左耳朵耗子:我为什么要在极客时间 App 开设独家专栏?

    参考链接:https://www.infoq.cn/article/2018/01/why-geektime 不少朋友都知道我在极客时间App 上开了一个收费专栏<左耳听风>,这个专栏会开 ...

  6. 2020极客大挑战Web题

    前言 wp是以前写的,整理一下发上来. 不是很全. 2020 极客大挑战 WEB 1.sha1碰撞 题目 图片: 思路 题目说,换一种请求方式.于是换成post.得到一给含有代码的图片 图片: 分析该 ...

  7. 2016第七季极客大挑战Writeup

    第一次接触CTF,只会做杂项和一点点Web题--因为时间比较仓促,写的比较简略.以后再写下工具使用什么的. 纯新手,啥都不会.处于瑟瑟发抖的状态. 一.MISC 1.签到题 直接填入题目所给的SYC{ ...

  8. eoe移动开发社区创始人兼CEO靳岩:开发者缺极客精神

    (国内知名Android开发论坛eoe开发者社区推荐:http://www.eoeandroid.com/)       [媒体专稿]移动互联网在中国的深入发展已经有5.6个年头,从当初苹果推出iPh ...

  9. [2013 eoe移动开发者大会]靳岩:从码农到极客的升级之路

    (国内知名Android开发论坛 eoe开发者社区推荐:http://www.eoeandroid.com/) 前天,2013 eoe 移动开发者大会在国家会议中心召开,eoe 开发者社区创始人靳岩在 ...

  10. 每个极客都应该知道的Linux技巧

    每个极客都应该知道的Linux技巧 2014/03/07 | 分类: IT技术 | 0 条评论 | 标签: LINUX 分享到:18 本文由 伯乐在线 - 欣仔 翻译自 TuxRadar Linux. ...

随机推荐

  1. centos7.x及centos8.x安装新版docker

    前置步骤 # 如之前安装过docker,请先删除 yum remove docker docker-common docker-selinux docker-engine centos7 # cent ...

  2. day02---虚拟机上网模式

    修改虚拟网络编辑器 虚拟软件网络模式介绍 NAT网络模式 特点:虚拟主机和宿主机网络信息 可以不一致 优点:不容易出现局域网中IP地址冲突 缺点:其它宿主机不能直接访问虚拟机 桥接网络模式 特点:虚拟 ...

  3. 如何在矩池云使用 Poetry 管理项目环境

    官网介绍:Poetry is a tool for dependency management and packaging in Python. It allows you to declare th ...

  4. MIG是如何向DDR中写入数据的

    1.1    先来看看信号线的描述 我们以X16的器件为例,下面的截图来自 镁光的官方手册 https://media-www.micron.com/-/media/client/global/doc ...

  5. 【Azure Notification Hub】创建Notification Hub失败,提示 unrecognized arguments: --sku Free

    问题描述 用Azure CLI命令创建 Notification Hub,报错不识别的参数 --Free SKU 问题解答 经测试发现,在创建Notification Hub前,需要创建 Notifi ...

  6. 如何查看apk安装包源代码??Android反编译apk,解包,打包,签名一体化实测 ,修改图片音频软件名称版本号等入门

    首先下载反编译工具包 下载地址 链接:  https://zly520.lanzoui.com/ibtuxhf7rab 一.反编译工具介绍 首先 如果你想改动图片音频之类的,见末尾! 1.apktoo ...

  7. 10、zookeeper客户端curator

    curator介绍 https://blog.csdn.net/wo541075754/article/details/68067872 关于第三方客户端的小介绍 zkClient有对dubbo的一些 ...

  8. 从0开始搭建开发环境 -实现servlet原生开发

    开发环境:  JDK1.8 + Servlet + Mysql 搭建项目 项目搭建参考博客 https://www.cnblogs.com/oyww-2027/p/15347137.html File ...

  9. mongo Payload document size is larger than maximum of 16777216. 如何处理

    MongoDB中的文档大小限制为16MB(即16777216字节).如果你遇到Payload document size is larger than maximum of 16777216的错误,意 ...

  10. vscode 注释后 光标下移(注释后光标快速定位下一行) 仿照idea

    VSCode 注释后光标快速定位下一行 1. 安装插件 Multi-command Multi-command 2.打开 Keybinding.json Keybinding.json 左下角齿轮图标 ...