[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-6416":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":16,"starSnapshotCount":16,"syncStatus":19,"lastSyncTime":29,"discoverSource":30},6416,"HoloCubic","peng-zhihui\u002FHoloCubic","peng-zhihui","带网络功能的伪全息透明显示桌面站","",null,"C",6644,1265,122,48,0,5,20,2,40.31,"GNU General Public License v3.0",false,"main",true,[],"2026-06-12 02:01:19","![](\u002F5.Docs\u002FImages\u002FHolo1.jpg)\n\n# HoloCubic--多功能透明显示屏桌面站\n\n**视频介绍：** https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1VA411p7MD\u002F\n\n## 0. 关于本项目\n\n> 稚晖君注：这是为了更新视频，缓解本人拖更两个月的尴尬，用一个周末时间赶出来的一个有意思的小玩意 :D\n\n如视频所述，本项目有意思的地方在于使用了一个分光棱镜来设计出`伪全息显示`的效果。这个小设备总的来说功能比较多，因为搭载了WiFi和蓝牙能力可以实现很多网络应用，在本仓库中给大家提供了一个开发框架以及一些基础功能（天气、粉丝数监视器等），大家可以基于我的方案继续扩展实现更多应用。\n\n本项目的硬件方案是基于`ESP32PICO-D4`的，乐鑫的一个很实用的MCU芯片，由于采用了SiP封装是的PCBA整板面积能做到一个硬币大小；软件方面主要是基于`lvgl-GUI`库，我移植了ST7789 1.3寸`240x240`分辨率屏幕的显示屏驱动，同时将`MPU6050`作为输入设备通过感应的方式模拟编码器键值来交互。\n\n## 1. 硬件打样说明\n\n**PCB打样的话暂时没发现有啥需要特别注意的。** PCB文件可以直接拿去工厂打样，两层板很便宜，器件BOM的话也都是比较常用的，整板成本在50元以内。\n\n`Hardware`文件内目前包含两个版本的PCB电路：\n\n* **Naive Version** ：即视频中出现的版本，板载ESP32、IMU、环境光传感器、SD卡槽、下载电路、以及两个RGB灯\n* **Ironman Version** ：基于上面的版本轻微修改，删去了环境光传感器，修改了PCB形状以适配新的外壳\n\n> 因为新款的外壳计划是使用CNC进行金属加工，因此环境光容易被遮挡，而且该功能使用场景不多所以在新版删去了。\n\n**外壳加工** 根据自己喜欢的版本选择，`3D Model`文件夹目前包含四个版本的外壳文件：\n\n* **Naive Version** ：即视频中出现的版本，比较简约（因为临时赶工设计的），最好使用光固化3D打印加工\n\n  ![](\u002F5.Docs\u002FImages\u002FHolo3.png)\n\n* **Bilibili Version** ：视频中后面出现的B站百大奖杯形式的外壳结构，适配`Naive Version`的PCB， **属于娱乐性质，非百大UP不建议采用**。\n\n* **Metal Version** ：视频发布后全新改版的外壳结构设计，优化了布局控件整体更紧凑精致，适配`Naive Version`的PCB，该建议使用CNC加工制作\n\n  ![](\u002F5.Docs\u002FImages\u002FHolo2.jpg)\n\n* **Ironman Version** ：新设计的野生钢铁侠风格结构件，该版本为和朋友合作设计的，后面可能会授权他联名量产，该结构适配`Ironman Version`的PCB\n\n  ![](\u002F5.Docs\u002FImages\u002FHolo.jpg)\n\n> 野生钢铁侠联名的版本的结构件加工比较复杂，而且需要后期喷砂、阳极氧化等工艺所以单件制造成本很高（打听了下整套3个部件至少要1000元+），因此大家自己有加工渠道的可以用提供的文件自己去做。\n>\n> 没有渠道但是又想要这个版本硬件的，**我授权了那位朋友量产一小批**，他的店铺名为[Xikii](https:\u002F\u002Fshop68240117.taobao.com)，是做客制化键盘很有经验的一个极客，大家感兴趣的可以去关注一下~\n\n## 2. 固件编译说明\n\n固件框架主要基于Arduino开发完成，玩过Arduino的基本没有上手难度了，把Firmware\u002FLibraries里面的库安装到Arduino库目录（如果你用的是Arduino IDE的话）即可。\n\n> 我使用的是Visual Studio上面的Visual Micro插件进行Arduino开发，因为对VS比较熟悉，大家选择自己喜欢的IDE就好了。\n\n**然后这里需要修改一个官方库文件才能正常使用：**\n\n首先肯定得安装ESP32的Arduino支持包（百度有海量教程），然后在安装的支持包的`esp32\\hardware\\esp32\\1.0.4\\libraries\\SPI\\src\\SPI.cpp`文件中，**修改以下代码中的MISO为26**：\n\n    if(sck == -1 && miso == -1 && mosi == -1 && ss == -1) {\n        _sck = (_spi_num == VSPI) ? SCK : 14;\n        _miso = (_spi_num == VSPI) ? MISO : 12; \u002F\u002F 需要改为26\n        _mosi = (_spi_num == VSPI) ? MOSI : 13;\n        _ss = (_spi_num == VSPI) ? SS : 15;\n这是因为，硬件上连接屏幕和SD卡分别是用两个硬件SPI，其中HSPI的默认MISO引脚是12，而12在ESP32中是用于上电时设置flash电平的，上电之前上拉会导致芯片无法启动，因此我们将默认的引脚替换为26。\n\n> 也可以通过设置芯片熔丝的方式解决这个问题，不过那样的操作是一次性不可逆的，不建议这么玩。\n\n**另外：**\n\n由于我赶视频制作，代码都是临时写的非常杂乱有很多dirty code，因此仓库中的是所有驱动调通之后的模板代码，可以自己基于这个框架自由开发。\n\n**APP应用代码我在整理中慢慢也会更新出来。**\n\n## 3. Visual Studio模拟器 & 图片转换脚本\n\n在`Software`文件夹中包含了一个Visual Studio的工程，用VS打开（需要安装C++开发组件）后可以在电脑上模拟LVGL的界面效果，改好之后代码粘贴到Arduino固件那边就可以完成界面移植。\n\n> 这样省的每次修改都要重新交叉编译Arduino的固件，提升开发效率。\n\n![](\u002F5.Docs\u002FImages\u002FHolo4.jpg)\n\n`ImageToHolo`文件夹下包含一个Python脚本，用于将图片转换成HoloCubic固件中用到的图像资源。\n\n> 因为图像资源一般都比较占空间，如果全部存在ESP32的Flash中的话存不了几张，因此我在框架中移植了LVGL的FAT文件系统支持，可以将图片资源存储在SD卡内进行读取。\n>\n> 官方的图转换工具是在线的：[https:\u002F\u002Flvgl.io\u002Ftools\u002Fimageconverter](https:\u002F\u002Flvgl.io\u002Ftools\u002Fimageconverter) ，需要选择 `Indexed 4 colors` 格式。\n>\n> **但是官方工具每次只能转换一张还要上传下载很麻烦**，因此我自己写了个脚本用于批量转换。\n\nHoloCubic用到的图片资源名为`xxx.bin`文件，大家用我提供的脚本转好后放入SD卡，然后可以像这样读取：\n\n```\nlv_obj_t* imgbtn = lv_imgbtn_create(lv_scr_act(), NULL);\nlv_imgbtn_set_src(imgbtn, LV_BTN_STATE_PRESSED, \"S:\u002Fdir\u002Ficon_pressed.bin\");\nlv_imgbtn_set_src(imgbtn, LV_BTN_STATE_RELEASED, \"S:\u002Fdir\u002Ficon_released.bin\");\n```\n\n其中`S:`指代SD卡根目录（注意**S是大写的**），后面就是跟Linux中的路径完全表示一致了。\n\n> 该脚本参考了[W-Mai\u002Flvgl_image_converter](https:\u002F\u002Fgithub.com\u002FW-Mai\u002Flvgl_image_converter) 的实现。\n\n\n\n**另外由于转换脚本的使用需要再Python环境下，如果大家不想安装环境的话，也可以用我预编译好的exe文件来转，使用方法很简单，把`jpg\u002Fpng\u002Fbmp`图片拖到`holo转换器.exe`的图标上就行了（可以同时拖动多个上去），会在当前目录生成对应的`.bin`文件。**\n\n> 转换器软件的下载地址：\n>\n> 链接：https:\u002F\u002Fpan.baidu.com\u002Fs\u002F11cPOVYnKkxmd88o-Ouwb5g  提取码：xlju \n\n## 4. 关于分光棱镜\n\n我用的时25.4mm x 25.4mm x 25.4mm的棱镜，淘宝应该可以搜到，单个价格80元左右。\n\n分光棱镜的固定比较麻烦，用胶水的话容易渗入屏幕导致水印，因此建议去TB搜一下`OCA胶`，这是一种`全贴合屏幕工艺`中用来粘合屏幕的固态胶，效果很不错也很便宜。\n\n> 但是OCA粘性非常强，大家操作一定要仔细不要留气泡，不然粘上后就很难取下了。\n\n## 其他的后续再补充，有用的话记得点星星~\n\n","HoloCubic 是一个具有网络功能的伪全息透明显示桌面站。它基于 ESP32PICO-D4 芯片，结合了 WiFi 和蓝牙技术，能够实现多种网络应用。该项目利用分光棱镜设计出独特的伪全息显示效果，并通过 lvgl-GUI 库支持 1.3 寸 240x240 分辨率屏幕的图形界面。此外，还集成了 MPU6050 作为输入设备，通过感应方式模拟编码器键值进行交互。用户可以基于项目提供的开发框架和基础功能（如天气、粉丝数监视器等）进一步扩展更多应用场景。由于其小巧的设计和多功能特性，HoloCubic 特别适合于个人创意展示、小型智能家居控制中心或作为开发者学习嵌入式系统与 GUI 开发的实践平台。","2026-06-11 03:06:52","top_language"]