Imagine a pocket sized device straight out of a cyberpunk novel: a glowing OLED display, pulsating selector with menus, and tactile feedback that hums with every twist of a rotary encoder. Meet ELLA-Box, a versatile ESP32-C3-based gadget that combines a futuristic interface with practical functionality. Whether you’re controlling smart home devices, monitoring environmental sensors, or crafting a wearable notification badge, this project is your gateway to building a sleek, low-cost IoT device with a cyberpunk feel and look (I am personally tired of touch screens and lifeless apps :P ).
I started this project 2 years agoto explore the ESP32-C3’s potential. A tiny, affordable (€2–3) microcontroller with Wi-Fi and BLE and to create a device that feels like it belongs in a sci-fi universe. The result is simple handy gadget with a 128x64 OLED, haptic feedback, a customizable UI, ready to be hacked for countless applications and I used it for learning and testings other projects. Here I pass it on for anyone interested!
I KNOW , I REALLY NEED A PCB!
Project OverviewElla-Box is a handheld gadget built around the ESP32-C3, featuring:
- Display: A 1.3” SH1106 OLED (128x64)
- Input: A rotary encoder for scrolling and a pushbutton for selection.
- Feedback: Vibration motor and buzzer with adjustable intensity and volume for tactile/audio cues.
- UI: A cyberpunk-themed interface with large fonts (u8g2_font_profont17_tf, profont22_tf), glowing borders, scanline effects, and pulsing animations. I have experimented with so many themes and I will drop it down in github in the future.
- Settings: Persistent options (sound, vibration, sleep timer, intensity, volume) values are stored in EEPROM.
- Power: Deep sleep mode for battery efficiency, woken by encoder or button.
- Size: 310–510KB binary, fitting comfortably in the ESP32-C3’s 1.2MB flash.
The project’s menu system (Main, Settings, Tools, System, Scan, About) is designed for extensibility, with placeholder actions ready for customization. Its cyberpunk look and feel with “Hepltic feedback” branding and. I think it standout for hobbyists, cosplayers, or anyone wanting a futuristic gadget.
Features and Capabilities- Futuristic UI: The OLED displays a “ELLA-Box v1.0” splash screen, followed by smooth-scrolling menus with pulsing selection boxes, evoking a cyberpunk terminal.
- Interactive Control: Navigate menus with the encoder, select with the button, and feel haptic/audio feedback (customizable via Settings).
- Low Power: Deep sleep reduces consumption to 5µA, ideal for battery-powered use.
- Extensible Menus: Placeholder menus (Tools, Scan, System) support new features like BLE scanning or sensor integration.
- Modular Code: Written in Arduino C++ with U8g2 for display, EEPROM for settings, and clean classes (SettingsManager, FeedbackManager, etc.).
- Applications: Smart home remote, wearable notifier, environmental monitor, debug tool, or interactive art piece.
The idea for ELLA-Box sparked from the love I have my children and ELLA is my daughter's name. I wanted a device that felt alive just like my kids and makes your life easier, and you give them this toy they enjoy it beeping and buzzing in the process they get to learn with it about computers.With glowing visuals and tactile feedback, but was affordable and hackable. The ESP32-C3 was the perfect choice: compact, powerful, and loaded with Wi-Fi/BLE for future expansions.
Challenges- Font Size: Fitting larger fonts (profont17_tf, profont22_tf) on a 128x64 OLED required reducing menu items to three and optimizing spacing (16 pixels).
- Memory: The initial binary (300KB) grew with fonts and animations (510KB). Using PROGMEM for strings and enabling LTO kept it under 1.2MB.
- Feedback Tuning: Balancing haptic and buzzer feedback was tricky. I settled on a quad-tone buzzer (800–2000Hz) and adjustable vibration intensities (96–255 PWM).
- Deep Sleep: Ensuring reliable wake-up via GPIO interrupts took careful configuration how ever with a slider switch on and of once wakes the device for now...
- Cyberpunk UI: Adding scanlines, pulsing borders, and centered text transformed the OLED into a cool display.
- Modularity: Structuring code with classes (DisplayManager, MenuManager) made it easy to add features without breaking the core.
- Haptic Feedback: The heptic buzz (a playful typo I kept for cool) feels satisfying, especially for menu navigation.
Hardware Setup:
- Connect the OLED to GPIO20 (SDA) and GPIO21 (SCL).
- Wire the rotary encoder to GPIO8 (A), GPIO9 (B), and GPIO10 (SW).
- Attach the vibration motor to GPIO7 and buzzer to GPIO6 (use PWM for passive buzzer).
- Optionally, add a LiPo battery with a TP4056 charger for portability.
Software Setup:
- Install Arduino IDE and ESP32 core (select ESP32-C3 Dev Module).
- Add libraries: U8g2 (for OLED), EEPROM (included with ESP32 core).
- Download the ella-box_OS code from the GitHub repo (link below).
- Set compiler options: Optimize: Smallest Code, enable LTO.!
Upload and Test:
- Flash the code (310–510KB, fits 1.2MB flash). Yeah size matters in this project. You can only upload an optimized code and not so many thing can run at once, even though the kickstarter code has many menu, I put that for the demo purpose.
Customization:
- Add BLE/Wi-Fi for IoT or notifications (use ESP32 BLE Arduino or WiFi.h).
- Integrate sensors (e.g., BME280) for environmental data.
- Create games or animations in “Tools” or “About” menus.
In the future I want to take this project to the next level!! Here are some in my mind:
- Definitely need a PCB design and case redesign!
- BLE Smart Remote: Add startScanAction to list nearby BLE devices in “Scan” menu.
- Sensor Hub: Integrate eg.BME280 for temp/humidity.
- Wearable: Use the OLED display to show notifications.
- Game Mode: Code Snake in “Tools” using encoder input and OLED pixels.
- OTA Updates: Add Wi-Fi-based firmware updates for seamless upgrades.
- AI/ML integration probably with tiny models.
I remind you again here Keep binary size less than 1MB by using smaller fonts (profont15_tf) or removing debug prints if adding features like BLE.
ConclusionThis ESP32-C3 project offers endless possibilities. Its sleek UI, haptic feedback, and low-cost hardware make it accessible for beginners and seasoned makers alike.
Got questions or cool extensions? Drop me a comment below or join the discussion on GitHub.
Acknowledgments
- Inspired by cyberpunk themed Gadgets.
- Thanks to the Arduino and U8g2 communities for awesome libraries.
- Shoutout to my my wife and kids, for moral support during late-night soldering, CAD designing, Coding and 3D printing :)!
Awesome hacking the ELLA-BOX!
Comments