成果展示

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. 在矩池云安装使用PaddleHub 和 PaddlePaddle

    之前在安装 PaddleHub 导入的时候遇到各种错误,不是这个包没这个模块,就是哪个包没这个属性 ...很头痛,网上也没有 PaddleHub 和 PaddlePaddle 对应的版本,只能自己慢慢 ...

  2. 浅析图数据库 Nebula Graph 数据导入工具——Spark Writer

    从 Hadoop 说起 近年来随着大数据的兴起,分布式计算引擎层出不穷.Hadoop 是 Apache 开源组织的一个分布式计算开源框架,在很多大型网站上都已经得到了应用.Hadoop 的设计核心思想 ...

  3. FolkMQ 作个简单的消息中间件(最简单的那种), v1.3.1 发布

    功能简介 角色 功能 生产端(或发起端) 发布消息.定时消息(或叫延时).顺序消息.可过期消息.事务消息.发送消息(rpc)支持 Qos0.Qos1 消费端(或接收端) 订阅.取消订阅.消费-ACK( ...

  4. 十四: Mysql数据结构选择的合理性

    Mysql数据结构选择的合理性 从MySQL的角度讲,不得不考虑一个现实问题就是磁盘I/O. 如果我们能让索引的数据结构尽量减少硬盘的I/O操作,所消耗的时间也就越小.可以说,磁盘的I/O操作次数对索 ...

  5. 基于centos7 创建一个jdk8的镜像

    前言: 直接使用docker拉取jdk8镜像因有时区问题,设置后也不生效,所以干脆自己做一个 以下是Dockerfile文件 FROM centos:7 RUN ln -snf /usr/share/ ...

  6. 英语单词组件- 单词在句子中,上面显示中文下面显示音标 css样式

    原先效果: 改进demo效果 优化点 音标长度超出,或者中文超出,总宽度会按照最长的走 居中显示 再次优化 line-height: 22px; 加入这个 对齐中间行(字号大小会让绝对上下高度,对不齐 ...

  7. C++学习笔记之高级语法

    目录 高级语法 面向对象--类 对象的属性 运算符重载 拷贝构造函数 IO缓存 头文件的重复包含问题 深拷贝与浅拷贝 面向对象三大特性 高级语法 面向对象--类 C++使用struct.class来定 ...

  8. HUAWEI WATCH GT3手表芯片传感器简析

    一 这里梳理一下华为手表GT3所使用的芯片 芯片A: BES2500L 恒玄BES2500L智能手表SoC,集存储.音频.连接为一体,集成BT5.2双模蓝牙,可支持BLE数据传输.蓝牙通话和音乐播放功 ...

  9. CMake的作用和价值--概念简介

    一 简介: CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似 ...

  10. vscode自动生成头文件

    Ctrl Shift P 输入:snipp,选配置用户代码片段,新建全局代码片段文件,修改下列模板: { // Place your 全局 snippets here. Each snippet is ...