扫码阅读
手机扫码阅读

使用 WLAN模组 + 0.96寸 OLED视频播放歌曲画心视频~ 【华为LYEVK-3861A智能物联网开发板测评】

234 2023-07-17

 接上篇 【华为开发者联盟生态市场LYEVK-3861A智能物联网开发板套件测评】硬件开发新模式新感触!软硬兼施,千帆过尽,梦归月圆(出处: 论坛首页)

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

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

 我们将介绍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协议的各种数据速率。

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

二、搭建环境

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

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

 【华为开发者联盟生态市场LYEVK-3861A智能物联网开发板套件测评】硬件开发新模式新感触!软硬兼施,千帆过尽,梦归月圆(出处: 论坛首页)

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

首先 亮出 三大件~

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 && python --version

2、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

3、安装编译工具

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)



4、获取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)

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编译配置没有打开,编译时会有如下错误:

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屏播放了。



爱着你像心跳难触摸,画着你画不出你的骨骼,记着你的脸色,是我等你的执着,你是我一首唱不完滴歌儿~

   

     相信大家十一假期过得还愉快博主所在的城市天津,经历了一场阴雨的洗礼,伴着寒露,明天我们也要开始新的征程了~

守得云开日出,津城秋色正浓。祝大家开工顺利~ 

♥♥♥心动♥♥♥不如♥♥♥行动♥♥♥

了解更多LYEVK-3861A 智能物联网开发板套件信息

♥♥♥请点击下方链接♥♥♥

⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️

➡️ ➡️ ➡️ LYEVK-3861A 智能物联网开发板套件 ⬅️ ⬅️ ⬅️

⬆️ ⬆️ ⬆️ ⬆️ ⬆️ ⬆️ ⬆️ ⬆️ ⬆️ ⬆️ ⬆️ ⬆️ ⬆️ ⬆️ ⬆️ ⬆️ ⬆️ ⬆️ ⬆️ ⬆️ ⬆️

原文链接: https://mp.weixin.qq.com/s?__biz=MzI0OTE5NzQxNw==&mid=2247485115&idx=1&sn=a14a0823e21eafe4bfbc16a011dc5aea