From 24f14fe8a5cde6086128dd09aedf0a11ba46b88a Mon Sep 17 00:00:00 2001 From: whowechina Date: Mon, 23 Sep 2024 11:11:21 +0800 Subject: [PATCH] IR air tower support --- Production/Firmware/chu_pico.uf2 | Bin 154112 -> 158208 bytes README.md | 15 +++++++++++++++ README_CN.md | 15 +++++++++++++++ doc/air_tower_wiring.png | Bin 0 -> 58194 bytes firmware/src/commands.c | 14 ++++++++++---- 5 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 doc/air_tower_wiring.png diff --git a/Production/Firmware/chu_pico.uf2 b/Production/Firmware/chu_pico.uf2 index 2e6fb1688e99495914e34329ab42fdc3d1023c42..b0df5834b2c3f1a402d9815ccea73ed2cb03c437 100644 GIT binary patch delta 29744 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

V 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 diff --git a/README.md b/README.md index a968698..aed2271 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ Features: * It's small, made for 15-17 inch screen. * Air towers are replaced with built-in ToF sensors. +* Traditional IR Air mechanism is also provided for DIYers. * HID lights, of course! * 32 keys (upper and lower rows). * Follows CrazyRedMachine's RedBoard I/O protocol. @@ -169,6 +170,20 @@ You need **4x M3*12mm screws and 4x M3 hex nuts** to fix all things. 7x silicone anti-slip pads can be applied to the bottom side of the base to provide stability when playing. +### IR Air Tower +This is not necessary for Chu Pico. But some people may prefer the traditional IR air tower, especially when they're using Chu Pico design for a full-sized controller. +So hereby I provide the IR air tower design, with a pair of air tower PCBs and the firmware support. +1. First, you need to order the PCBs, the gerber file is `Production\PCB\chu_air_v*.zip`. It's for both sides of the air tower. +2. Order the components, they're marked in the schematic. Then solder them to the PCB following the silkscreen. +3. For left side tower, use J1 to connect to the Raspberry Pi Pico, and for the right side tower, use J2. GPIO 3 -> A, GPIO 4 -> B, GPIO 5 -> C, ADC 0 (GPIO 26) -> Right S, ADC 1 (GPIO 27) -> Left S. + +4. Steps for deployment. + I. Enable IR air tower in the firmware (command `ir enable`), this will disable ToF. + II. Enable diagnostics for IR (command `ir diagnostic`). + III. Place the air towers and watch the output of the diagnostics, higher value means beam is received. + IV. Set the baseline after the towers are properly placed (command `ir baseline`). + V. Optionally, set the sensitivity, it's a percentage of expected change (command `ir trigger <1..100>`). + ### Firmware * UF2 file is in `Production\Firmware` folder. * For the new build, hold the BOOTSEL button while connect the USB to a PC, there will be a disk named "RPI-RP2" showed up. Drag the UF2 firmware binary file into it. That's it. There's a small hole at the bottom side of the Chu Pico, it is facing right to the BOOTSEL button. diff --git a/README_CN.md b/README_CN.md index 2d0ce3a..1ffafc1 100644 --- a/README_CN.md +++ b/README_CN.md @@ -6,6 +6,7 @@ **特性:** * 它很小巧,适合15-17寸屏幕。 * 空键被 ToF 距离传感器替代。 +* 也提供了传统 IR Air 的机制供 DIY 玩家使用。 * HID 灯光,必须的! * 32个按键(上下两排)。 * 遵循 CrazyRedMachine 的 RedBoard I/O 协议。 @@ -177,6 +178,20 @@ https://github.com/whowechina/ 7x 个硅胶防滑垫可以贴在基座的底部,以提供游玩时候的稳定性。 +### 红外空键 +Chu Pico 本身不需要红外空键。但是有些人可能用 Chu Pico 来做一个全尺寸的控制器,它们更喜欢传统的 IR 空键。 +所以我提供了 IR 空键的设计,包括一对空键 PCB 和对应的固件支持。 +1. 首先,你需要下单 PCB,Gerber 文件在 `Production\PCB\chu_air_v*.zip`。空键的两侧都需要这个 PCB。 +2. 根据原理图里的有标记,购买对应的元器件,然后按照丝印焊接到 PCB 上。 +3. 左侧空键 PCB 使用 J1 连接到 Pi Pico 主控,右侧空键 PCB 使用 J2 连接。GPIO 3 -> A, GPIO 4 -> B, GPIO 5 -> C, ADC 0 (GPIO 26) -> Right S, ADC 1 (GPIO 27) -> Left S。 + +4. 调试上线的过程如下: + I. 在固件中启用 IR 空键(命令 `ir enable`),它会自动禁用 ToF。 + II. 启用 IR 的诊断功能(命令 `ir diagnostic`)。 + III. 摆放两侧的空键塔,观察诊断输出,数值高代表着对应的红外光线已经对准接收器。 + IV. 在正确摆放好空键塔后,设置基线(命令 `ir baseline`)。 + V. 可选,设置触发灵敏度,是一个变化率的百分比值(命令 `ir trigger <1..100>`)。 + ### 固件 * UF2 文件在 `Production\Firmware` 文件夹下。 * 全新烧录的话,按住 Pico Pi 的 BOOTSEL 按钮,然后连接 USB 到 PC,会出现一个名为 "RPI-RP2" 的磁盘。将 UF2 固件二进制文件拖入即可。Chu Pico 的底部有一个小孔,它正对着 BOOTSEL 按钮。 diff --git a/doc/air_tower_wiring.png b/doc/air_tower_wiring.png new file mode 100644 index 0000000000000000000000000000000000000000..4ab7a898b4232a4250c4ac81e57b5a855dab5532 GIT binary patch literal 58194 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%0D-XJ5{xdO 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 Pqoh-cXB1N9FZum1sUP-l literal 0 HcmV?d00001 diff --git a/firmware/src/commands.c b/firmware/src/commands.c index 1bda8e6..87dc93b 100644 --- a/firmware/src/commands.c +++ b/firmware/src/commands.c @@ -260,7 +260,6 @@ static void air_baseline() chu_cfg->ir.base[i] = air_ir_raw(i); printf(" %4d", chu_cfg->ir.base[i]); } - config_changed(); printf("\n"); } @@ -289,19 +288,26 @@ static void air_trigger(char *argv[]) static void handle_ir(int argc, char *argv[]) { - const char *usage = "Usage: ir \n" + const char *usage = "Usage: ir \n" " ir trigger \n" " percent: [1..100]\n"; if (argc == 1) { - const char *commands[] = { "diagnostic", "baseline" }; + const char *commands[] = { "enable", "disable", "diagnostic", "baseline" }; int cmd = cli_match_prefix(commands, count_of(commands), argv[0]); if (cmd == 0) { - air_diagnostic(); + chu_cfg->ir.enabled = true; + air_init(); } else if (cmd == 1) { + chu_cfg->ir.enabled = false; + } else if (cmd == 2) { + air_diagnostic(); + } else if (cmd == 3) { air_baseline(); } else { printf(usage); + return; } + config_changed(); } else if (argc == 2) { air_trigger(argv); } else {