Forairaaaaa / Regina

年轻人的第一台BB机 (。・`ω´・)

Home Page:https://phalange.vercel.app

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

171883a83c2ac5a0baaa2217a24b923a5f38bbda

视频链接 -> 点我 :)

噻博柆圾.. 僅栱娯泺~( ̄へ ̄)

文件树

.
├── app
│   ├── apps                      应用层
│   │   ├── app_desktop             桌面
│   │   ├── app_input_daemon        输入管理
│   │   ├── app_sleep_daemon        睡眠管理
│   │   ├── app_startup_anim        开机动画
│   │   ├── app_template            App模板
│   ├── assets                    静态资源
│   ├── hal                       HAL定义
│   └── shared                    共享数据定义
└── platforms
    ├── desktop                   桌面项目
    ├── python_api                Python api
    └── regina                    ESP32C6项目

编译

下载依赖

python ./fetch_repos.py

桌面端

工具链

sudo apt install build-essential cmake

编译

mkdir build && cd build
cmake .. && make

运行

cd desktop

要先 cd 过去,因为序列化时用的相对路径 :(

./app_desktop_build

ESP32 端

工具链

ESP-IDF v5.1.3

编译

cd platforms/regina
idf.py build

上传

idf.py -p <YourPort> flash -b 1500000
上传静态资源
parttool.py --port <YourPort> write_partition --partition-name=assetpool --input "path/to/AssetPool.bin"

静态资源是桌面端序列化出来的,如果运行过桌面端, AssetPool.bin 可以在 app_desktop_build 的旁边找到

或者 release 里下一个

BLE 接口

在线接口测试 -> 点我 :)

设备名:Reginaaaa:)

自定义服务:2333

JS web api 参考,Python api 参考,具体如下:

输入

特征值:2334

数据格式bool, bool, bool, bool, uint8, uint8, int16, int16

对应:按键A、B、C、D、小轮值、大轮值、小轮增量、大轮增量

JS

btnA = value[0] !== 0;
btnB = value[1] !== 0;
btnC = value[2] !== 0;
btnD = value[3] !== 0;
dialAValue = value[4];
dialBValue = value[5];
dialACount = value.getInt16(6, true);
dialBCount = value.getInt16(8, true);

Python

unpacked_data = struct.unpack('<????BBhh', value)

陀螺仪

加速度

特征值:2335

数据格式float, float, float

对应:X、Y、Z轴

JS

let imuAccel = [0, 0, 0];
for (let i = 0; i < 3; i++) {
  imuAccel[i] = value.getFloat32(i * 4, value);
}

Python

unpacked_data = struct.unpack('fff', data)

角速度

特征值:2336

其他和加速度一样

系统配置

特征值:2337

数据格式:JSON UTF-8

相关 key 参考系统配置结构体

其中 ringtoneRTTTI 格式音频

此外可用特殊 key unixTimestamp 来设置 RTC 时间,value 用数字类型 unix 时间戳(ms)

消息

特征值:2338

数据格式:JSON UTF-8

FFT 投屏

特征值:2339

数据格式:21 个 uint8

对应屏幕从左到右 21 个矩形,其中数值为 0~35 ,对应该矩形的高度

懒得TODO

  • 现在不是真正的睡眠,只是关屏幕
  • 字库非完整,用完整字库的话字体识别的高度不对,直接用lgfx的换行就寄了,懒得写了
  • 启动器、设置、打砖块

硬件

立创链接 -> 点我 :)

板厚1MM

应该比较好焊,想偷懒可以不焊 RTC、IMU 和 MIC

我是铁板烧的屏幕这一面

如果编码开关方向焊反了,可以在程序里设置反转,具体在BLE接口的系统配置部分

麦克风用的模拟麦,不知道是我焊烂了还是电路不对,波形异常的平静~

结构

STL 文件 -> 点我 :)

这次没有螺丝,后盖用滑槽和卡扣固定

间隙什么的根据拓竹 a1 mini 0.4 喷嘴调整的,树脂打印的话可能会有点松,没试过

组装时滑槽会有点顶 PCB,需要一些技巧~

About

年轻人的第一台BB机 (。・`ω´・)

https://phalange.vercel.app

License:MIT License


Languages

Language:C++ 90.9%Language:Python 4.9%Language:C 2.9%Language:CMake 1.0%Language:Shell 0.3%