【华为开发者联盟生态市场LYEVK-3861A智能物联网开发板套件测评】HarmonyOS鸿蒙Next中使用WLAN模组+套件中的0.96寸OLED视频播放歌曲画心视频~

【华为开发者联盟生态市场LYEVK-3861A智能物联网开发板套件测评】HarmonyOS鸿蒙Next中使用WLAN模组+套件中的0.96寸OLED视频播放歌曲画心视频~ 接上篇 [华为开发者联盟生态市场LYEVK-3861A智能物联网开发板套件测评】硬件开发新模式新感触!软硬兼施,千帆过尽,梦归月圆

大家好,我们在结尾承诺大家用OLED做一期视频播放的功能,那么本篇就为大家带来~

使用 WLAN模组 + 套件中的0.96寸 OLED视频播放歌曲画心视频~

我们将介绍Hi3861 WLAN模组的开发环境搭建、版本编译构建、烧录、源码修改、调试验证视频播放功能。通过学习,我们会对Hi3861 WLAN模组、0.96 OLED屏模组开发流程有初步认识,并可上手业务开发。

一、开发板简介

Hi3861底板可以与其他模块连接,具有扩充自身的外设能力,可以接WLAM模组主板、接OLED屏板。

i3861 WLAN模组是一片大约2cm*5cm大小的开发板,是一款高度集成的2.4GHz WLAN SoC芯片,频率高波长短的5G信号,覆盖范围相对较小,穿过障碍物的能力不如2.4GHz,基带支持正交频分复用(OFDM)技术,并向下兼容直接序列扩频(DSSS)和补码键控(CCK)技术,支持IEEE 802.11 b/g/n协议的各种数据速率。

集成IEEE 802.11b/g/n基带和RF(Radio Frequency)电路,射频集成电路是一种紧凑的电子电路,它使用有源器件来实现所谓射频(RF)范围内的信号频率,RF电路包括功率放大器PA(Power Amplifier)、低噪声放大器LNA(Low Noise Amplifier)、RF Balun、天线开关以及电源管理等模块;支持20MHz标准带宽和5MHz/10MHz窄带宽,提供最大72.2Mbit/s物理层速率。

Hi3861芯片集成高性能32bit微处理器、硬件安全引擎以及丰富的外设接口,外设接口包括SPI(Synchronous Peripheral Interface)、UART(Universal Asynchronous Receiver & Transmitter)、I2C(The Inter Integrated Circuit)、PWM(Pulse Width Modulation)、GPIO(General Purpose Input/Output)和多路ADC(Analog to Digital Converter),同时支持高速SDIO2.0(Secure Digital Input/Output)接口,最高时钟可达50MHz;芯片内置SRAM(Static Random Access Memory)和Flash,可独立运行,并支持在Flash上运行程序。

支持HarmonyOS,并配套提供开放、易用的开发和调试运行环境。

Hi3861 WLAN模组资源十分有限,整板共2MB FLASH,可以理解成只读内存(Read-Only Memory,缩写:ROM),ROM所存数据,一般是装入整机前事先写好的,整机工作过程中只能读出,而不像随机存储器那样能快速地、方便地加以改写。352KB RAM随机存取存储器(Random Access Memory,缩写:RAM),也叫主存,是与CPU直接交换数据的内部存储器。容量小的那个一定是内存RAM,容量大的一定是存储(闪存)ROM,在编写业务代码时,需注意资源使用效率。

二、搭建环境

环境搭建确实令人咋舌,很多朋友也分享了自己的解决方案,这里我依然推荐 WSL2 + VS Core + HiBurn套餐 或者喜欢容器的朋友们可以用docker~

如果大家仍对环境搭建有问题,还请移步上一篇,我们一起 一步一步~ step by step~

这里我们仍要指出这里的痛点,以及意外点,如果小伙伴们遇到了问题,请在评论区留言,谢谢~

首先 亮出 三大件~

WSL 2 我们这里用的是Ubuntu windows商店自带的~

需要检查以下环境:

  1. Python版本 3.8
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
wget https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tgz
tar -xvzf Python-3.8.5.tgz && cd Python-3.8.5 && sudo ./configure --enable-optimizations && sudo make && sudo make install
python --version
which python3.8
cd /usr/bin && sudo rm python && sudo ln -s python3.8 /path python && sudo which python3.8
  1. pip3版本及相关模块安装
sudo apt-get install python3-setuptools python3-pip -y
sudo pip install --upgrade pip
pip3 install setuptools -y
sudo pip install kconfiglib -y
sudo pip install pycryptodome -y
sudo pip install six --upgrade --ignore-installed six -y
sudo pip install ecdsa -y
sudo apt-get install scons -y
sudo apt-get install python-numpy -y
sudo apt-get install python-opencv -y
sudo pip install Pillow
sudo apt-get install --reinstall python3-pkg-resources
sudo apt install ffmpeg -y
  1. 安装编译工具
wget https://repo.huaweicloud.com/harmonyos/compiler/gn/1523/linux/gn.1523.tar
tar -xvf gn.1523.tar -C ~/
wget https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.9.0/linux/ninja.1.9.0.tar
tar -xvf ninja.1.9.0.tar -C ~/
wget https://repo.huaweicloud.com/harmonyos/compiler/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz
tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C ~/
vim ~/.bashrc
export PATH=~/gn:$PATH
export PATH=~/ninja:$PATH
export PATH=~/gcc_riscv32/bin:$PATH
source ~/.bashrc
riscv32-unknown-elf-gcc -v

【填坑一】WSL无法使用互联网

由于WSL2底层使用的是Hyper-V虚拟机,所以我们可以修改虚拟交换机的类型,来启用桥接网络

Windows Subsystem for Linux(WSL)从Version 1 (WSL1)升级到Version 2 (WSL2) 之后,底层实现方式发生了改变。

由于使用Hyper-V来实现WSL2,使得WSL更像虚拟机,一个能访问本地硬盘的虚拟机。

这带来一些便利,能够把它当做独立服务器来使用,可玩性就增强很多。当然,这也导致WSL上的端口不能从外部访问到,总之有利有弊。

虽然能够配置端口转发,曲线救国突破这个缺陷,但是有些服务的端口是约定俗成的(比如samba),更换端口号(原端口号被windows占用)之后其他设备可能识别不到服务。

经过一番思考后,觉得给WSL2开启桥接模式,直接连接物理网络才是相对最好的方案。

可以参考 WSL2开启桥接网络 | 逸思杂陈 (ponder.work)

  1. 获取Hi3861源码编译检验环境
wget https://repo.huaweicloud.com/harmonyos/os/1.0/code-1.0.tar.gz
python build.py wifiiot

编译结束后,如果出现“BUILD SUCCESS”字样,则证明构建成功。

三、编译鸿蒙OS在0.96寸OLED屏上播放视频

harmonyos-ssd1306: 鸿蒙OS的SSD1306 OLED显示屏驱动库,使用了鸿蒙的IoT硬件I2C接口 (gitee.com) harmonyos_oled_player: 使用鸿蒙OS在0.96寸OLED屏上播放视频 | Play video on 0.96’ OLED display with Harmony OS (gitee.com)


```bash
git clone --recursive https://gitee.com/hihopeorg/harmonyos_oled_player.git
vim build/lite/product/wifiiot.json

编辑 build/lite/product/wifiiot.json 文件

//applications/sample/wifi-iot/app替换为//harmonyos_oled_player:app。

好的 这里我们用的是一首歌的MV,对了!确实开篇的那首《画心》~🎵🎵🎵

进入harmonyos_oled_player目录下,找一个视频,命名为input.mp4,使用工具将帧率转为10fps,目前ssd1306库实测的最大帧率为10fps,使用video2bin将视频转为bin文件。

ffmpeg -i input.mp4 -r 10 output.mp4
./video2bin.py output.mp4 out.bin

进入harmonyos_oled_player/play目录下,根据热点信息(SSID,PSK)和PC WSL ubuntu的IP地址,修改play/net_params.h文件中的相关参数。


在openharmony源码顶层目录下执行编译,构建成功后,会在./out/wifiiot/路径中生成以下文件,编译构建流程结束。

【填坑二】鸿蒙IoT子系统默认未开启I2C接口

本项目代码使用了鸿蒙IoT硬件子系统的I2C API接口,需要连接到hi3861的I2C相关接口;默认情况下,Hi3861的I2C编译配置没有打开,编译时会有如下错误:

```bash
riscv32-unknown-elf-ld: ohos/libs/libhal_iothardware.a(hal_wifiiot_i2c.o): in function `.L0':
hal_wifiiot_i2c.c:(.text.HalI2cWrite+0x12): undefined reference to `hi_i2c_write'
riscv32-unknown-elf-ld: hal_wifiiot_i2c.c:(.text.HalI2cInit+0x12): undefined reference to `hi_i2c_init'
scons: *** [output/bin/Hi3861_wifiiot_app.out] Error 1
BUILD FAILED!!!!

解决方法

需要修改vendor\hisi\hi3861\hi3861\build\config\usr_config.mk文件:

# CONFIG_I2C_SUPPORT is not set

行,修改为:

CONFIG_I2C_SUPPORT=y

使用 HiBurn 烧写 .bin 文件到 Hi3861,记得勾选“Auto burn”,点击 Connect,连接串口设备,按下开发板的 RESET 按键,

烧录成功后,需要手动点“Disconnect”断开串口连接,否则会提示“Wait connect success flag (hisilicon) overtime.”

在PC(ubuntu)harmonyos_oled_player目录下运行bin2stream,将会启动一个TCP服务器,默认监听5678端口,

python build.py wifiiot
ls -l out/wifiiot
./bin2stream.py out.bin

并复位设备,板子启动后,首先会连上热点,

然后会连接PC上的TCP服务,

就可以看到视频的在OLED屏播放了。

![](https


更多关于【华为开发者联盟生态市场LYEVK-3861A智能物联网开发板套件测评】HarmonyOS鸿蒙Next中使用WLAN模组+套件中的0.96寸OLED视频播放歌曲画心视频~的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

这个玩法比较厉害!

更多关于【华为开发者联盟生态市场LYEVK-3861A智能物联网开发板套件测评】HarmonyOS鸿蒙Next中使用WLAN模组+套件中的0.96寸OLED视频播放歌曲画心视频~的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


请问图中的网状Mesh组网能力已经实现了吗?如何实现的?

笔者只有一个设备,所以无法体验Mesh,等待后期拿到可组网的节点设备,跟您们再分享~谢谢,

在华为LYEVK-3861A智能物联网开发板上,通过WLAN模组连接网络,使用HarmonyOS鸿蒙Next系统,可以实现0.96寸OLED屏的歌曲画心视频播放。首先,确保开发板已正确安装并配置WLAN模组。接着,编写HarmonyOS应用程序,利用系统的多媒体框架加载并解码视频文件,通过OLED屏的驱动接口进行显示。整个过程需注意性能优化,确保在高分辨率的视频播放时流畅不卡顿。最终,用户可体验在小型OLED屏上播放高清画心视频的乐趣。

回到顶部