
Panasonic aircon
jnicolson/panasonic_ac_wifi
Module to interface with the CN-CNT port on Panasonic airconditioner units

SPARC (Spotify Proximity and Remote Control) is a gesture controller for music. You wave a hand over it to skip tracks, pause, or change the volume, without touching a screen or a button.
Sparc pcb v1 is an open-source printed circuit board by jchen208208, from the jchen208208/SPARC repository on GitHub. It is a 2-layer board of 36.5 × 36.5 mm with 19 parts on 43 nets, routed with 75 tracks and 5 vias.
It is built around the ESP32-WROOM-32 and AP2112K-3.3. Its parts include 5 capacitors, 4 resistors, 2 switches, 1 IC and 1 diode. It belongs with the ESP32 boards of this library.
SPARC (Spotify Proximity and Remote Control) is a gesture controller for music. You wave a hand over it to skip tracks, pause, or change the volume, without touching a screen or a button. We built it for times when looking at your phone is inconvenient or unsafe, mainly adjusting music while driving.
The current version is an MVP: an ESP32 on a custom PCB, a time-of-flight distance sensor, an 8-LED strip and a LiPo battery, all inside a 3D-printed case we designed in CAD.
SPARC pairs over Bluetooth Low Energy as a HID media remote, the same kind of device as the play/pause button on a pair of headphones. It never talks to Spotify. Each gesture sends a standard media key (next, previous, play/pause, volume up, volume down) to the operating system, and the OS passes it to whatever app is playing.
So there is no app to install and no Spotify login, and you don't need Premium. It works on iOS, Android, macOS, Windows and Linux, and with any media app: Spotify, Apple Music, YouTube or a podcast player. Like headphone buttons, it keeps working with the screen off and the phone in your pocket.
The HID report descriptor only declares media keys. Off-the-shelf ESP32 HID libraries present themselves as keyboards, and iOS hides the on-screen keyboard while any keyboard is connected, so you couldn't type in any app with SPARC paired.
The VL53L0X sensor points up and watches a zone from about 4 cm out to 30 cm. Each gesture is a pass, where your hand moves through the zone and out again, or a hold, where it stops inside it.
Next and previous fire about 0.7 seconds after your last pass, because SPARC waits to see whether another pass is coming. In volume mode, the spot where your hand settles becomes the midpoint. Raise your hand above it to turn the volume up and lower it to turn the volume down; the volume keeps stepping while you stay off-center. To leave volume mode, pull your hand out of the zone or flick it up quickly.
If something stays still within a metre of the sensor for five seconds, like a car roof or a shelf, SPARC treats it as a back wall and ends the zone just short of it. With nothing in range, it falls back to the fixed 30 cm.
The LED strip animates each gesture. A swipe runs one way for next and the other way for previous, the whole strip pulses for play/pause, and a looping sweep shows volume changes. A separate status LED flashes on play/pause.
On an iPhone, SPARC also reads what's playing through Apple Media Service and, between gestures, uses the strip as a progress bar for the current track. Other devices don't offer that service, so they only get the gesture animations.
The KiCad project for PCB v2 is in pcb/, along with a STEP model and sparc_pcb_v2_gerbers.zip, the Gerbers we sent to the fab. The case is two printable parts, enclosure/SPARC_Base.stl and enclosure/SPARC_Lid.stl.
PCB v1 is kept in pcb/v1/. Its Reset and BOOT buttons are wired across the power rail, so pressing one shorts 3.3 V to ground and the board can only be flashed with a jumper wire. pcb/v1/PCB_V1_NOTES.md covers that workaround and the other v1 bugs, all of which v2 fixes.
The battery level SPARC reports to your phone is hardcoded at 100%. The board doesn't measure it yet.
The firmware is sketch_esp_hid_v2/sketch_esp_hid_v2.ino. It needs the ESP32 Arduino core and three libraries: NimBLE-Arduino, Adafruit_VL53L0X and FastLED.
The sensor, LED strip and status LED sit on different pins on each board, so set BOARD at the top of the sketch before you build: 2 for PCB v2, 1 for PCB v1, 0 for the old perfboard. The wrong value builds fine, but the sensor and LEDs stay dead.
With the power switch on, connect a CP2102 adapter to the header (the adapter doesn't power the board), hold BOOT, tap Reset, then upload:
arduino-cli compile --fqbn esp32:esp32:esp32 --port /dev/cu.usbserial-0001 --upload sketch_esp_hid_v2Then pair "SPARC" from your device's Bluetooth settings.
A BLE device stops advertising while it's connected. To pair SPARC with something else, disconnect or forget it on the current device first, or it won't show up.
sketch_esp_hid_v2/ is the current firmware.sketch_esp_hid_v1/ is the earlier HID firmware. It split the zone in two, with tracks close to the sensor and volume farther out.pcb/ holds the PCB v2 design files, and pcb/v1/ the first revision.enclosure/ holds the case STLs.Main.py, ui.py, core.py and sketch_esp/ are the old desktop app and its firmware. They're no longer used (see below).Wired_version/, Uno_version/ and sketch_nano/ are earlier hardware builds, kept for reference.SPARC started as an Arduino Uno with an ultrasonic sensor, wired over USB to a Python script that called the Spotify Web API. Our first design mapped hand distance straight to volume. It kept misreading where the hand was, and after about a day of fighting it we switched to discrete passes and holds. Next we went wireless with an HC-05 Bluetooth module, which took a lot of troubleshooting to keep connected on macOS, and then moved to an ESP32 so we no longer needed a separate radio. We also turned the script into a macOS app with a status screen and gesture animations, so nobody had to run it from a terminal.
The Spotify API ended up as a hard limit on the whole project. In February 2026 Spotify cut Development Mode apps to five users and started requiring the developer to have Premium, and extended quota has only been open to organizations since May 2025. We had no way to apply. So we dropped the API and the desktop app, and rebuilt SPARC as a BLE HID device. That got rid of the user cap, the Premium requirement and the app install, and it made iPhone support possible, because iOS never supported the Bluetooth Serial connection the old app depended on.
After that we moved from a breadboard to perfboard, and then to our own PCB and printed case.
A few other problems came up along the way. Early commits leaked Spotify tokens, so we moved credentials into a gitignored .env and purged them from history. On a cold power-up the VL53L0X is still booting when the ESP32 first talks to it, and that failure used to hang setup() before Bluetooth started, so the board looked dead. The firmware now retries the sensor five times and starts Bluetooth whether or not it answers.
MIT
| Qty | Value | Footprint | References |
|---|---|---|---|
| 2 | 0.1µF | Capacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder | C5, C6 |
| 2 | 10k | Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder | R4, R5 |
| 2 | 1µF | Capacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder | C3, C4 |
| 2 | 330 | Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder | R6, R7 |
| 2 | ~ | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | CP2102, VL53L0X1 |
| 1 | 10µF | Capacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder | C7 |
| 1 | AP2112K-3.3 | Package_TO_SOT_SMD:SOT-23-5 | LDO1 |
| 1 | BOOT | Button_Switch_SMD:SW_Tactile_SPST_NO_Straight_CK_PTS636Sx25SMTRLFS | SW5 |
| 1 | ESP32-WROOM-32 | RF_Module:ESP32-WROOM-32 | U2 |
| 1 | LED | LED_SMD:LED_1206_3216Metric_Pad1.42x1.75mm_HandSolder | D1 |
| 1 | Reset | Button_Switch_SMD:SW_Tactile_SPST_NO_Straight_CK_PTS636Sx25SMTRLFS | SW4 |
| 1 | ~ | 1AAAAAA:TP4056 OUT+_- | TP4056 |
| 1 | ~ | Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical | NeoPixel1 |
| 1 | ~ | Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_Vertical | Switch1 |

jnicolson/panasonic_ac_wifi
Module to interface with the CN-CNT port on Panasonic airconditioner units




wyyyrdx/Youverse
Youverse is a behavioral simulation platform that explores how your current habits and environment can influence different possible versions of your future self.

ansue1234/SML_SMA_Haptics
This repository contains all the code necessary for the two demostration for the SMA Haptics project--Painting Alignment and Object Detection.


Eswar-426/ESP32-Industrial-Sensor-Controller
A custom, compact PCB designed in KiCad 10 for an ESP32-based industrial temperature and humidity monitoring system.
It measures 36.5 × 36.5 mm and has 2 copper layers, 1.6 mm thick.
19 parts, built around the ESP32-WROOM-32 and AP2112K-3.3. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the jchen208208/SPARC repository on GitHub, at the commit this page was made from: the board is pcb/v1/sparc_pcb_v1.kicad_pcb and its schematic pcb/v1/sparc_pcb_v1.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask jchen208208 before reusing the design.