智能电子牌开发
一. 项目简介
智能电子牌demo是使用开源鸿蒙OpenHarmony开发的应用,其中主要由日程信息获取模块,实时天气模块,时间获取模块,定时提醒模块与UI显示模块组成。
二. 智能电子牌功能
在进行网络连接配置后智能电子牌可以随时查看当天日程规划,日程信息包括日程的起始与终止时间,日程名与日程的执行细节;通过设定定时提醒实现定点准时提示;还可以在屏幕上查看实时时间,日期以及室内外温湿度,空气PM值等实时天气状况。人性化的显示服务可以让您轻松记住自己的日程规划,了解当前天气状况是否适合户外运动,同时智能电子牌还能作为一款自动校准的实时时钟,贴心地服务于您,为您的生活带来舒适与便捷。
三. 设备运行效果
将润和Hi3516DV300 AI Camera开发板进行固件烧录,应用安装以及连接网络后,打开智能电子牌应用我们可以看到应用运行效果图如下:
我们可以看到实时获取的时间天气(屏幕左半部分)与日程(屏幕右半部分)等信息,还可以滑动屏幕右上角的时间选择器选择提醒时间,日程信息包括日程的起始与终止时间,日程名与日程的执行细节。
设备与云端的交互:
我们在手机端的数字管家APP中更新日程信息后对应信息上传至云端,我们开发的智能电子牌应用会通过HTTP协议主动获取云端日程信息并进行显示更新。
四. 搭建开发与编译环境
我们的代码需要在Linux系统下进行编译,如果开发条件有限仅有搭载Windows系统的计算机,个人推荐在利用VMware虚拟机搭配Ubuntu20.0.14进行开发与编译环境的搭建。
虚拟机软件安装
常用的虚拟机软件有 VMware、Virtual Box 和 Virtual PC 等,不同虚拟机软件的使用方法稍有不同。VMware 。下面以VMware为例进行介绍。
下载VMware软件
打开VMware官方网站(www.vmware.com), 进入下载专区,下载非商用的VMware 软件,我使用的VMware虚拟机下载链接如下:
之后进行应用程序的安装,因为后续需要创建虚拟机,所以推荐将该软件安装到有较大储存容量的内存盘内。整体安装按照提示进行即可,其中完成按照打开软件时会弹出如下界面:
若没有购买密匙可以选择第二个选项30天试用,可以满足大家的开发需求。
下载光盘映像文件
如下为ubuntu-20.04.3的光盘映像文件:
创建虚拟机
-
双击桌面的VMware Workstation Pro启动快捷方式图标打开软件,点击创建新的虚拟机,运行界面如下图所示:
-
在弹出的导航框中选择典型,选择下一步,如下图所示:
-
在之后出现的弹框中,将上文提到的所下载的ubuntu-20.04.3光盘映像文件放入第二个选项选中后点击下一步,如下图所示:
-
之后进行用户名与密码的设定,注意此处密码一定要设定,不然容易出现系统登录困难的情况,如下图:
-
下一步选择储存位置,大家按自己喜好添加即可,但要注意空间一定要足够。
-
下一步确定磁盘容量,个人推荐大于80GB,避免后续编译空间不够用,我设定的是120GB,这样电脑会分配120GB虚拟磁盘,会产生虚拟磁盘文件,但并不会立即占用120GB 实际硬盘空间。虚拟磁盘文件会在使用过程中逐步增大,直到最大容量120GB。 尽管不会立即占用120GB硬盘空间,但是为了将来方便使用,必须保证放置虚拟机的磁盘有超过120GB的空闲空间,设置如下图所示:
-
到这儿虚拟机的创建就讲解完毕了,如下图点击开机就可以开始我们编译环境的搭建了:
安装编译工具
该部分参考了钟老师的开发文档,参考链接如下:
安装与配置Python
打开Linux终端,输入如下命令:
python3 --version //查看python版本号
sudo apt-get install python3-setuptools python3-pip -y
sudo pip3 install --upgrade pip //安装并升级Python包管理工具(pip3)
python需要使用python3.7以上版本,否则参考 系统基础环境搭建。
安装LLVM
之后解压LLVM安装包至~/llvm路径下,然后进行环境变量的设置
tar -zxvf llvm.tar -C ~/ //解压安装LLVM
vim ~/.bashrc //设置环境变量。
将以下命令拷贝到.bashrc文件的最后一行,保存并退出。
export PATH=~/llvm/bin:$PATH
之后使环境变量生效即可:
source ~/.bashrc
我在进行Ubuntu下的环境变量配置过程中碰见了很多问题,我将一些经验整理在了如下文章中:
安装hb
打开命令行,输入如下指令:
python3 -m pip install --user ohos-build //安装hb
vim ~/.bashrc //设置环境变量
将以下命令拷贝到.bashrc文件的最后一行,保存并退出。
export PATH=~/.local/bin:$PATH
执行如下命令更新环境变量。
source ~/.bashrc
执行"hb -h",有打印以下信息即表示安装成功。
usage: hb
OHOS build system
positional arguments:
{build,set,env,clean}
build Build source code
set OHOS build settings
env Show OHOS build env
clean Clean output
optional arguments:
-h, --help show this help message and exit
准备Hi3516开发环境
该部分参考了钟老师的开发文档,参考链接如下:
将Linux shell改为bash
查看shell是否为bash,在终端运行如下命令
ls -l /bin/sh
如果显示为“/bin/sh -> bash”则为正常,否则请按以下方式修改:
sudo rm -rf /bin/sh
sudo ln -s /bin/bash /bin/sh
安装编译依赖基础软件
sudo apt-get install build-essential && sudo apt-get install gcc && sudo apt-get install g++ && sudo apt-get install make && sudo apt-get install zlib* && sudo apt-get install libffi-dev
安装文件打包工具
- 打开Linux编译服务器终端,输入如下指令
sudo apt-get install dosfstools //安装dosfstools
sudo apt-get install mtools //安装mtools
sudo apt-get install mtd-utils //安装mtd-utils
安装hc-gen
-
打开Linux编译服务器终端。
-
下载hc-gen工具。点击下载地址下载。
-
解压hc-gen安装包到Linux服务器~/hc-gen路径下。
tar -xvf hc-gen-0.65-linux.tar -C ~/
-
设置环境变量。
vim ~/.bashrc
将以下命令拷贝到.bashrc文件的最后一行,保存并退出。
export PATH=~/hc-gen:$PATH
-
使环境变量生效。
source ~/.bashrc
安装Java 虚拟机环境
-
打开Linux编译服务器终端。
-
安装Java运行时环境(JRE)。
sudo apt-get install default-jre
-
安装Java sdk开发工具包。
sudo apt-get install default-jdk
PS: java虚拟机是应用签名打包时才会用到的,SDK中默认的3个系统应用是需要签名打包,所以需要安装java虚拟机,没有安装的话,应用签名打包时会报错误,如果不涉及到应用的签名打包,可以不用安装此环境。
准备源码
在准备编译用的源码时,我们采用repo的方式进行下载固件库源码等,如下是源码准备的命令:
下载repo
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/bin/repo
chmod a+x /usr/local/bin/repo
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
注意:命令curl中的“/usr/bin/repo“是自己Ubuntu中的路径,不同的用户设置的不一样
下载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'
注意:此时下载的为OpenHarmony 1.0.1 版本,同时我们在下载OpenHarmony之前应对自己的Ubuntu做好了Gitee账号的注册等准备工作,否则这个环节会出现错误,我将Gitee的配置工作总结到了如下文档中:
如上准备工作加上我本次提交的源代码,可以支撑起我们的固件编译与设备端应用程序编译工作。
代码编译
-
在OpenHarmony的vendor目录下新建team_x的目录:
mkdir vendor/team_x
- 将我所提交的智能电子牌的代码拷贝到新建的team_x下面:
- 之后可以进行应用程序的编译,编译指令共两条hb set与hb build -f:
首先在Terminal内输入:
hb set
之后通过键盘上的上下键选择electronic_board,之后回车进行选中;
之后进行全量编译,输入
hb build -f
当编译完成后会显示success。如此我们完成了固件与源码的编译工作。
以下表格为所有生成的固件及对应的位置:
生产固件及应用文件的名称 | 对应文件路径 | 文件说明 |
---|---|---|
u-boot-hi3516dv300.bin | device/hisilicon/hispark_taurus/sdk_liteos/uboot/out/boot/ | 系统启动引导程序 |
OHOS_Image.bin | out/hispark_taurus/electronic_board/ | 系统内核固件 |
rootfs_vfat.img | out/hispark_taurus/electronic_board/ | 文件系统 |
userfs_vfat.img | out/hispark_taurus/electronic_board/ | 用户数据分区 |
libelectrBoard.so | out/hispark_taurus/electronic_board/libs/usr/ | 智能电子牌应用的库文件 |
其中除了libelectrBoard.so文件外的其他四个固件仅需对开发板烧录一次即可,而libelectrBoard.so文件则是我们每次修改源码后生成的新的应用文件,需要每次更新源代码后都对此文档在设备上通过挂在NFS进行更新。
固件库烧录到开发板的方式请参考钟老师的开发文档:
我在进行固件库烧录的过程中碰到过一些问题,整理成了参考文档:
上面我们完成了编译环境,开发环境的准备,实现了代码的编译以及设备端固件库的烧录,下面第二大部分”设备端应用开发“介绍了项目智能电子牌源码的开发内容。
五. 设备端应用开发
为了避免本文过于冗长,我将设备端的开发内容的讲解放在了单独文档中:
六. 设备端应用安装
第二部分讲解了源码的结构与内容,本部分则讲解如何将成型的源码打包并通过NFS挂载的方式安装到设备端。
打包
将编译好的libelectrBoard.so文件与工程目录下的res以及config.json文件通过压缩打包成zip格式(三个文件直接压缩,不能压缩文件夹),并将后缀名改为hap。
挂载NFS
NFS挂载方法参照社区文章:
在Windows端启动NFS我们需要在开发板的串口调试界面输入如下指令:
mkdir /nfs //新建文件夹
mount 192.168.43.228:/c/public /nfs nfs //挂载NFS,其中192.168.43.228为自己的IP地址
cd /nfs/bin //打开/nfs/bin文件夹
ls //展示文件夹下有哪些文件
./bm set -s disable //去签名
./bm install -p ../hap/electronicboard.hap //安装应用,"../hap/electronicboard.hap"为hap文件的路径
串口调试界面可以使用烧录固件用的HiTool工具(HiTool工具下载地址:HiHope官网)
在进行NFS挂载的过程中,我将自己碰到的问题总结为下面的参考文档:
之后我们发现在开发板上出现了智能电子牌的应用图标,在配置网络后点开智能电子牌应用图标便可以进入我们的智能电子牌啦。
七. 数字管家的应用
为了避免本文过于冗长,我将数字管家部分的内容讲解放在了单独文档中:
在完成上述工作后,我们可以实现项目的完整复现。
如果我们想对项目进行再次开发完善,我们可以修改vendor/team_x目录下的electronic_board,之后按照编译顺序重新编译,得到重新生成的libelectrBoard.so文件,之后重新打包与NFS挂载安装就可以了。
3))
在进行NFS挂载的过程中,我将自己碰到的问题总结为下面的参考文档:
之后我们发现在开发板上出现了智能电子牌的应用图标,在配置网络后点开智能电子牌应用图标便可以进入我们的智能电子牌啦。