OpenLaserTag, MILES TAG 2, Micropython, Raspberry Pi Pico W
Go to file
njord 8cb641da5a Build with Zephyr v3.7.0/SDK 0.16.8; fix devicetree, verify targets
Set up a local Zephyr toolchain and actually built the firmware, fixing the
issues that surfaced and recording real results.

Devicetree fixes (compile errors / silent no-ops):
- Wrap bare gpios-only nodes (heartbeat, piezo, IR RX, and the GPIO IR TX on
  the stub boards) in gpio-leds / gpio-keys so DT emits the GPIO cell macros.
- Rename the battery ADC node to "zephyr,user" so its io-channels is exposed.

Verified building (Zephyr v3.7.0, SDK 0.16.8, ARM toolchain):
- rpi_pico (39.9K/14.0K), rpi_pico/rp2040/w (68.1K/20.2K),
  nucleo_f401re (37.4K/15.1K), nrf52840dk BLE (137.7K/28.3K). All clean.

Pico W BLE finding: the image links with the BLE stack, but Zephyr v3.7 has no
HCI transport for the Pico W (CYW43 BT shares the Wi-Fi gSPI bus; the in-tree
AIROC driver is UART-only), so bt_enable() returns -ENODEV at runtime and BLE
stays inactive while the rest of the firmware runs. The same ble_nus.c is
verified linking against a real controller on nrf52840dk. Clarified the runtime
log, the W board conf, README and migration-notes accordingly.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 11:47:58 +02:00
.claude Add Zephyr RTOS port of OpenLaserTag remote control 2026-06-19 15:38:26 +02:00
.vscode fix debug 2024-05-28 17:19:12 +02:00
docs Build with Zephyr v3.7.0/SDK 0.16.8; fix devicetree, verify targets 2026-06-22 11:47:58 +02:00
lib version 1.0 relase 2024-06-22 01:13:41 +02:00
zephyr_app Build with Zephyr v3.7.0/SDK 0.16.8; fix devicetree, verify targets 2026-06-22 11:47:58 +02:00
.gitignore Add Zephyr RTOS port of OpenLaserTag remote control 2026-06-19 15:38:26 +02:00
.micropico add micropico 2024-05-13 22:02:47 +02:00
CLAUDE.md Add Zephyr RTOS port of OpenLaserTag remote control 2026-06-19 15:38:26 +02:00
main.py versio 1.0 release update 2024-06-22 01:19:05 +02:00
migration-prompt.md Add Zephyr RTOS port of OpenLaserTag remote control 2026-06-19 15:38:26 +02:00
README.md Update 'README.md' 2024-06-22 00:22:02 +01:00

lasertag_remote_control

OpenLaserTag device, MicroPython

Raspberry Pi Pico W

MicroPython FW: https://micropython.org/download/RPI_PICO_W/

Pi Pico W datasheet https://datasheets.raspberrypi.com/picow/pico-w-datasheet.pdf

PCB 51x21mm, 1mm hole 20x8(10) 2.54 pitch grid

Pi Pico BLE: https://electrocredible.com/raspberry-pi-pico-w-bluetooth-ble-micropython/

Micropython IR: https://github.com/peterhinch/micropython_ir/blob/master/RECEIVER.md

Pi Pico VSCode: https://randomnerdtutorials.com/raspberry-pi-pico-vs-code-micropython/

STM32WB

MicroPython FW: https://micropython.org/download/?mcu=stm32wb

BLE Bluetooth UART - terminal

https://play.google.com/store/apps/details?id=de.kai_morich.serial_bluetooth_terminal

install OpenLaserTag on Pi Pico W

install primitives lib

$ mpremote mip install "github:peterhinch/micropython-async/v3/primitives"

install lib folder on device

$ mpremote connect /dev/ttyACM0 cp -r ./lib :

install main.py

$ mpremote connect /dev/ttyACM0 cp ./main.py :

OpenLaserTag remote box

Box Z62, 2xAA:

https://www.kradex.com.pl/product/enclosures_with_battery_basket/z62

https://www.krabicky-pro-elektroniku.cz/plastova-krabicka-z62--cerna/

BLE Bluetooth UART - terminal

https://play.google.com/store/apps/details?id=de.kai_morich.serial_bluetooth_terminal

Pi Pico

IR RX

IR RX TSOP4856
datasheet: https://www.vishay.com/docs/82459/tsop48.pdf

  • pin1 OUT - Pi Pico pin 16 (pull up)
  • pin2 VCC
  • pin3 GND

IR TX

  • IR TX TSAL6200 / TSAL6100
  • PN2222A NPN transistor
  • resistor 47R

Pi Pico pin:

  • pin 16 - IR RX
  • pin 17 - IR TX - 22R - IR LED OSRAM SFH4544
  • pin 18 - button
  • pin 19 - button
  • pin 20 - button
  • pin 22 - Red LED, resistor 75R
  • pin 28 - 2xAA 1,5V BAT - Schottky diode - VSYS Pi Pico
  • pin 15 - PN2222A NPN transistor - Piezo

BLE UART Serial Terminal

Show IR RX recived commands

Send IR Commands from terminal

  • led_off LED OFF
  • led_on LED ON
  • bomb Send Explode command over IR TX
  • Any Lasertag command in hex FFFFFF or 0xFFFFFF send this command over IR TX