luyang00 / HoloCubic_AIO

HoloCubic超多功能AIO固件 基于esp32-arduino的天气时钟、相册、视频播放、桌面投屏、web服务、bilibili粉丝等

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

HoloCubic_AIO (All in one for HoloCubic)

开发人员

  • AIO框架开发和部分APP编写:ClimbSnail
  • 2048游戏应用开发:AndyXFuture
  • 新版天气时钟应用开发:PuYuuu
  • BiliBili粉丝应用开发:cnzxo
  • 开发人员持续加入中。。。。

欢迎加入AIO内测QQ讨论群 755143193

QQ_Group

主要特点

  1. 聚合多种APP,内置天气、时钟、相册、特效动画、视频播放、电脑投屏、web设置等等。(各APP具体使用参考说明书)
  2. 开机无论是否插接tf卡、mpu6050是否焊接正常、是否连接wifi(一定要2.4G的wifi),都不影响系统启动。
  3. 程序相对模块化,低耦合。
  4. 提供web界面进行配网以及其他设置选项。注:具体操作参考APP介绍
  5. 提供web端连入除了支持ip访问,也支持域名直接访问 http://holocubic (部分浏览器可能支持不好)
  6. 提供web端的文件上传到SD卡(包括删除),无需拔插SD来更新图片。
  7. 提供全套上位机软件,并开源上位机源码。 https://github.com/ClimbSnail/HoloCubic_AIO_Tool

本固件设计了一套低耦合框架,更有利于多功能的实现

B站功能操作演示视频链接 https://www.bilibili.com/video/BV1wS4y1R7YF/

HomePage

HomePage

UploadPage

SettingPage

固件刷写工具(无需搭建任何IDE环境)

下载群中的上位机进行刷机。

  1. bootloader_dio_40m.bin启动的bootloader
  2. partitions.bin分区文件
  3. boot_app0.bin
  4. 最新的固件HoloCubic_AIO_XXX.bin

其中HoloCubic_AIO_XXX.bin文件随着每次版本更新而更新,其他三个文件基本不会变动。

将以上前三个文件与CubicAIO_Tool.exe放在同一个目录下,双击运行CubicAIO_Tool.exe,软件中选择最新的固件HoloCubic_AIO_XXX.bin,即可刷写固件。

上位机操作演示视频链接 https://b23.tv/5e6uDh

本上位机与AIO固件一样,坚持开源,开源地址:https://github.com/ClimbSnail/HoloCubic_AIO_Tool

AIO_TOOL

开机注意事项

由于小电视使用的是MPU6050陀螺仪加速度计,通电前3秒需要保持小电视自然放置(不要手拿),等待传感器初始化,初始化完毕后RGB灯会完全亮起,之后就可以正常操作了。插不插内存卡都不影响正常开机,如果6050焊接有问题,初始化后姿态读取会错乱(现象:应用会不断切换)。

功能切换说明:

  1. TF卡的文件系统为fat32。TF为非必须硬件,但相册、视频播放等功能需依赖与此。如果准备使用内存卡,在使用内存卡前最好将本工程中放置到内存卡目录里的所有文件和文件夹都放在TF卡的根目录。
  2. 插不插tf内存卡都不影响开机,但影响某些APP的功能(各自APP介绍里会说明)。
  3. 左右摇晃即可切换选择各类APP。
  4. 向前倾斜1s钟即可进入当前页的APP应用,今后还会整合更多功能,同样后仰1s即退出该APP。

APP介绍

网页配置服务(Web Server)
  1. 运行条件:无。注:wifi等信息是保存在flash中,内存卡完全不影响wifi功能的连接。
  2. 启用后,会显示Web Sever Start。小电视开启AP模式,建立在AP_IP上(屏幕的服务界面有标注),AP模式的热点名为HoloCubic_AIO无密码。
  3. 开始使用时,应让电脑与HoloCubic处于同一网络环境(同网段)。如果之前没连接过wifi则需要使用电脑连接HoloCubic放出的热点名为HoloCubic_AIO无密码的wifi。
  4. 在浏览器地址栏输入Local_IP或者AP_IPhttp://192.168.4.2 也支持域名直接访问 http://holocubic ),即可进入管理设置后台。推荐使用ip地址访问。
  5. 网页里可设置系统参数、天气APP参数、相册参数、播放器参数等等。
文件管理器(File Manager)

作用:通过无线网络管理内存卡上的文件。

  1. 运行APP条件:必须是已经正常配置wifi。必须插内存卡。为避免wifi连接时,功率不够导致重启,请确保USB口供电充足。目前部分功能还在开发中。
  2. 进入Holocubic文件管理器后会自动连接已配置的wifi,并显示出IP地址。
  3. 未完成:在上位机的文件管理器软件中填入自己Holocubic的IP地址(端口可以不用改),点击连接。

注:目前文件管理器临时使用windows资源管理器,在地址栏输入 ftp://holocubic:aio@192.168.123.241 (192.168.123.241为我的小电视上显示的IP地址,如果提示开启访问,就开启)

相册(Picture)
  1. 运行APP条件:必须插内存卡,内存卡的根目录下必须存在image/目录(也可以使用Web Server服务APP 通过浏览器上传照片),image/目录下必须要有图片文件(jpg或者bin)。
  2. 将需要播放的图片转化成一定格式(.jpg或.bin),再保存在image/目录中,图片文件名必须为英文字符或数字。
  3. 使用固件进入相册APP后,将会读取image/目录下的图片文件。
  4. WebServer的网页端可以进行附加功能的设置。

关于图片转换:使用附带的上位机转化(分辨率随意,软件会自动压缩到指定分辨率)。

  • 常用的天气图片,转换为c数组,格式为Indexed 16 colors 选择 C array。
  • 不常用的图片则可以转换成(True color with alpha 选择Binary RGB565)bin文件存储到SD卡中,这样可以省下一些程序存储空间用来增加功能。支持转化为jpg图片。
视频播放(Media)
  1. 运行APP条件:必须插内存卡,内存卡的根目录下必须存在movie/目录。
  2. 将所需要播放的视频(最好长宽比是1:1),使用本固件配套的使用转化工具转化为目标文件(mjpeg或者rgb格式都可),存放在movie/目录下,视频文件名必须为英文字符或数字。
  3. 运行播放器APP后,将会读取movie/目录下的视频文件。
  4. 默认功率下,无任何动作90s后进入低功耗模式,120s后进入二级低功耗模式,具体表现为播放画面帧数下降。
  5. WebServer的网页端可以进行附加功能的设置。
屏幕分享、电脑投屏(Screen share)
  1. 运行APP条件:无需内存卡,但需要利用Web Server服务app设置wifi密码(确保能连上路由器)。为避免wifi连接时,功率不够导致重启,请确保USB口供电充足。
  2. 上位机目前使用第三方软件,后期会独立编写投屏上位机,提高性能。
  3. 本投屏上位机使用的是大大怪的上位机。
  4. WebServer的网页端可以进行附加功能的设置。
天气、时钟(Weather)

一共有两款天气时钟APP

新版 weather
  1. 新版由PuYuuu模仿了misaka的时钟界面。使用https://www.tianqiapi.com 天气API。
  2. 运行APP条件:必须是已经联网状态,且设置好tianqi_appidtianqi_appsecrettianqi 城市名(中文)
  3. 使用新版天气时钟,需要再"Web Server"网页服务中修改tianqi_appidtianqi_appsecret。(申请地址 https://www.yiketianqi.com/user/login
旧版 weather old
  1. 旧版UI设计模仿了CWEIB
  2. 运行APP条件:必须是已经联网状态,且设置好地点、weather_key。不插内存卡大多数情况能正常工作。
  3. 一般情况下不插内存卡也可以工作,但部分天气图标是存在内存卡中(由于内部flash不够用)的,需要将固件附带的weather/文件夹复制到tf卡根目录。
  4. 使用旧版天气时钟,需要再"Web Server"网页服务中修改知心天气的知心天气 城市名key(私钥)。(申请地址 https://seniverse.com 。程序默认使用的是v3版本的api)

注:即使断网后,时钟也依旧运行。(开机最好连接wifi,这样会自动同步时钟。使用中会间歇尝试同步时钟)

特效动画(Idea)
  1. 运行APP条件:无。内置的几种特效动画。

注:移植群友"小飞侠"的功能,在此感谢!

2048 APP
  1. 2048游戏由群友AndyXFuture编写并同意,由ClimbSnail合入AIO固件。原项目链接为https://github.com/AndyXFuture/HoloCubic-2048-anim
  2. 运行APP条件:无。基本屏幕能亮就行。
  3. 操作注意:游戏中向上向下操作由于与原进入退出为同一个动作,系统已操作时长为区分动作,游戏中向上向下正常操作即可,进入退出需要倾斜1秒中方可触发。
BiliBili APP
  1. 运行APP条件:内存卡中必须要有名为bilibili的文件夹。必须是已经正常配置wifi。为避免wifi连接时,功率不够导致重启,请确保USB口供电充足。
  2. UID查看方法:电脑浏览器上打开B站并登入账号,之后浏览器打开一个空白页粘贴回车这个网址 https://space.bilibili.com/ ,网址尾巴会自动多出一串纯数字码,此即为UID。
  3. 第一次使用之前,要先在WebServer App的网页上填写UID码。
  4. 需要在内存卡中名为bilibili的文件夹里添加一张名为avatar.bin自己B站头像的图片,分辨率为100*100bin文件(可以使用AIO上位机转换)。

注:程序由cnzxo编写。

关于编译工程代码

  1. 本工程代码是基于vscode上的PlatformIO插件中的ESP32-Pico的Arduino平台开发。具体教程可以上B站找。推荐教程https://b23.tv/kibhGD
  2. 记得修改工程下platformio.ini文件中upload_port字段成对应自己COMM口。
  3. 目前最新版本已经不需要大家特意修改SPI库中的SPI引脚了,本工程的lib下单独放置了一个已经修改好了SPI引脚的SPI库。以下是此前版本的操作(可忽略)

然后这里需要修改一个官方库文件才能正常使用(不然会导致内存卡读取失败): PlatformIO和ArduinoIDE用户都需安装ESP32的Arduino固件支持包(百度有海量教程)。不管哪种开发方式都需要修改SPI库中的MISO默认引脚为26,例如arduinoIDE的包路径为esp32\hardware\esp32\1.0.4\libraries\SPI\src\SPI.cpp文件中,修改以下代码中的MISO为26

    if(sck == -1 && miso == -1 && mosi == -1 && ss == -1) {
        _sck = (_spi_num == VSPI) ? SCK : 14;
        _miso = (_spi_num == VSPI) ? MISO : 12; // 需要改为26
        _mosi = (_spi_num == VSPI) ? MOSI : 13;
        _ss = (_spi_num == VSPI) ? SS : 15;

这是因为,硬件上连接屏幕和SD卡分别是用两个硬件SPI,其中HSPI的默认MISO引脚是12,而12在ESP32中是用于上电时设置flash电平的,上电之前上拉会导致芯片无法启动,因此我们将默认的引脚替换为26。

程序框架图

HoloCubic_AIO_Frame

AIO框架讲解链接 https://www.bilibili.com/video/BV1jh411a7pV?p=4

关于UI的设计可以自行关注下Edgeline gui-guider等工具。

platformIO模拟器 https://github.com/lvgl/lv_platformio

应用图标(128*128):可以下载阿里矢量图 https://www.iconfont.cn/

调试过程中报错定位代码:xtensa-esp32-elf-addr2line -pfiaC -e 固件名.elf Backtrace地址信息

关于lvgl的学习参考:http://lvgl.100ask.orghttp://lvgl.100ask.net

lvgl的字体生成可以使用:LvglFontTool V0.4 已放置在Doc目录下

致谢

About

HoloCubic超多功能AIO固件 基于esp32-arduino的天气时钟、相册、视频播放、桌面投屏、web服务、bilibili粉丝等

License:GNU General Public License v3.0


Languages

Language:C 94.3%Language:C++ 5.4%Language:Python 0.1%Language:Processing 0.1%Language:CMake 0.0%Language:Shell 0.0%Language:Makefile 0.0%Language:Dockerfile 0.0%