10a7ce71fSopenharmony_ci# HiSpark WiFi-IoT 套件样例开发--oled_player
20a7ce71fSopenharmony_ci
30a7ce71fSopenharmony_ci![hihope_illustration](https://gitee.com/hihopeorg/hispark-hm-pegasus/raw/master/docs/figures/hihope_illustration.png)
40a7ce71fSopenharmony_ci
50a7ce71fSopenharmony_ci[HiSpark WiFi-IoT开发套件](https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w5003-23341819265.1.bf644a82Da9PZK&id=622343426064&scene=taobao_shop) 首发于HDC 2020,是首批支持OpenHarmony 2.0的开发套件,亦是官方推荐套件,由润和软件HiHope量身打造,已在OpenHarmony社区和广大OpenHarmony开发者中得到广泛应用。
60a7ce71fSopenharmony_ci
70a7ce71fSopenharmony_ci![wifi_iot](https://gitee.com/hihopeorg/hispark-hm-pegasus/raw/master/docs/figures/2.png)
80a7ce71fSopenharmony_ci
90a7ce71fSopenharmony_ci## 一、简介
100a7ce71fSopenharmony_ci
110a7ce71fSopenharmony_ci* 基于HiSpark WiFi IoT套件(Hi3861芯片),板载0.96寸 128x64 分辨率的 OLED屏
120a7ce71fSopenharmony_ci* 板端程序使用了[OpenHarmony SSD1306 OLED屏驱动库](https://gitee.com/hihopeorg/hispark-hm-pegasus/tree/master/sample/12_ssd1306),用于实现每帧画面的绘制;
130a7ce71fSopenharmony_ci* PC端使用了`opencv-python`,用于实现视频解码、画面缩放、二值化和帧数据打包;
140a7ce71fSopenharmony_ci
150a7ce71fSopenharmony_ci## 二、如何编译
160a7ce71fSopenharmony_ci
170a7ce71fSopenharmony_ci1. 将此目录复制到openharmony源码的根目录下
180a7ce71fSopenharmony_ci2. 修改openharmony源码的`build\lite\product\wifiiot.json`文件:
190a7ce71fSopenharmony_ci   * 将其中的`//applications/sample/wifi-iot/app`替换为`//13_oledplayer:app`
200a7ce71fSopenharmony_ci
210a7ce71fSopenharmony_ci3. 在openharmony源码顶层目录下执行:`python build.py wifiiot`
220a7ce71fSopenharmony_ci
230a7ce71fSopenharmony_ci## 三、如何运行
240a7ce71fSopenharmony_ci
250a7ce71fSopenharmony_ci网络环境:一个无线热点,一台PC,PC连接在该热点上;
260a7ce71fSopenharmony_ci
270a7ce71fSopenharmony_ci### 准备视频资源
280a7ce71fSopenharmony_ci
290a7ce71fSopenharmony_ci1. 选择准备播放的视频,使用工具将帧率转为10fps;
300a7ce71fSopenharmony_ci   * 目前ssd1306库实测的最大帧率为10fps;
310a7ce71fSopenharmony_ci   * ffmpeg转换命令:`ffmpeg -i input.mp4 -r 10 output.mp4`
320a7ce71fSopenharmony_ci   * ffmpeg在Ubuntu上可以直接试用`sudo apt install ffmpeg`安装,Windows上可以在官网下载二进制包:https://ffmpeg.org/download.html#build-windows
330a7ce71fSopenharmony_ci2. 运行命令:`./video2bin.py output.mp4 out.bin`,将视频转为bin文件;
340a7ce71fSopenharmony_ci3. video2bin.py 依赖 `opencv-python` 包,使用 `pip install opencv-python` 命令安装;
350a7ce71fSopenharmony_ci
360a7ce71fSopenharmony_ci
370a7ce71fSopenharmony_ci### 运行程序
380a7ce71fSopenharmony_ci
390a7ce71fSopenharmony_ci1. PC上运行命令:`./bin2stream.py out.bin`,将会启动一个TCP服务器,默认监听`5678`端口
400a7ce71fSopenharmony_ci2. 根据热点信息(SSID,PSK)和PC的IP地址,修改`play/net_params.h`文件中的相关参数:
410a7ce71fSopenharmony_ci3. 重新编译:`python build.py wifiiot`
420a7ce71fSopenharmony_ci4. 将重新编译好的固件烧录到WiFi IoT开发板上,并复位设备;
430a7ce71fSopenharmony_ci   * 板子启动后,首先会连上你的热点,然后会连接PC上的TCP服务;
440a7ce71fSopenharmony_ci   * 然后就可以看到视频的在OLED屏播放了;
450a7ce71fSopenharmony_ci
460a7ce71fSopenharmony_ci
470a7ce71fSopenharmony_ci
480a7ce71fSopenharmony_ci## 四、原理介绍
490a7ce71fSopenharmony_ci
500a7ce71fSopenharmony_ci整体为C/S架构:
510a7ce71fSopenharmony_ci
520a7ce71fSopenharmony_ci* 使用TCP传输帧数据,实现了简单的二进制协议:
530a7ce71fSopenharmony_ci  * 请求格式:帧ID(4B);
540a7ce71fSopenharmony_ci  * 响应格式:状态码(4B) + 帧数据长度(4B)+ 帧数据(可选);
550a7ce71fSopenharmony_ci* PC上运行服务端,默认监听`5678`端口,使用Python开发;
560a7ce71fSopenharmony_ci  * 启动时加载整个bin文件,并将其按照帧数据大小分割,放入一个list中;
570a7ce71fSopenharmony_ci  * 客户端请求特定帧时,直接根据下标索引取出对应帧,并发送给客户端;
580a7ce71fSopenharmony_ci  * 这样的设计(视频预先转换好),可以保证服务端的响应尽可能快;
590a7ce71fSopenharmony_ci* 板上运行客户端;
600a7ce71fSopenharmony_ci  * 主动发送帧请求,并接收服务端的回应;
610a7ce71fSopenharmony_ci  * 收到帧数据后通过I2C向OLED屏发送帧数据;
620a7ce71fSopenharmony_ci
630a7ce71fSopenharmony_ci### 【套件支持】
640a7ce71fSopenharmony_ci
650a7ce71fSopenharmony_ci##### 1. 套件介绍  http://www.hihope.org/pro/pro1.aspx?mtt=8
660a7ce71fSopenharmony_ci
670a7ce71fSopenharmony_ci##### 2. 套件购买  https://item.taobao.com/item.htm?id=622343426064&scene=taobao_shop
680a7ce71fSopenharmony_ci
690a7ce71fSopenharmony_ci##### 3. 技术资料
700a7ce71fSopenharmony_ci
710a7ce71fSopenharmony_ci- Gitee码云网站(OpenHarmony Sample Code等) **https://gitee.com/hihopeorg**
720a7ce71fSopenharmony_ci
730a7ce71fSopenharmony_ci- HiHope官网-资源中心(SDK包、技术文档下载)[**www.hihope.org**](http://www.hihope.org/)
740a7ce71fSopenharmony_ci
750a7ce71fSopenharmony_ci##### 4. 互动交流
760a7ce71fSopenharmony_ci
770a7ce71fSopenharmony_ci- 润和HiHope技术交流-微信群(加群管理员微信13605188699,发送文字#申请加入润和官方群#,予以邀请入群)
780a7ce71fSopenharmony_ci- HiHope开发者社区-论坛 **https://bbs.elecfans.com/group_1429**
790a7ce71fSopenharmony_ci- 润和HiHope售后服务群(QQ:980599547)
800a7ce71fSopenharmony_ci- 售后服务电话(025-52668590)
810a7ce71fSopenharmony_ci
82