MoonVision
Introduction
A smart project by MatixVision: a 3D-printed flat bas-relief lunar surface, a circular enclosure with backlit clock numerals (1–12), and a desk stand. The result is a **lunar desk clock**: it sits on its own stand, while an OLED display underneath shows the real-time date and time.
And it goes much further: Alexa voice control, real lunar phases via API, audio playback, and even a Space Invaders mini-game accessible from any browser on your local network.
A smart project based on **ESP32-C3** that combines lighting, sound, and interaction. Using a WS2812 LED strip, the device displays dynamic effects such as 🌙 Lunar Phases (synchronized through an online API), 🌈 Rainbow Effect, and 🌫️ Fade Effect.
It also includes a ⏰ Clock & Web Game, audio powered by a MAX98357A amplifier with an 8Ω 2W 28 mm speaker, touch sensor control, automatic brightness adjustment via an ambient light photoresistor, and Alexa integration for voice control of the main functions.
**Key features:**
- Voice control with Alexa (SinricPro free)
- Real lunar phases via external API + local library simulation
- 🌙 Lunar phases / 🌈 Rainbow / 🌫️ Fade — dynamic LED effects
- ⏰ **LED clock on the ring:** hours, minutes and seconds on the strip — **meteor effect** for seconds
- Numbers 1–12 cut into the frame and backlit
- Audio: MAX98357A amplifier + 8Ω 2W 28mm speaker
- 128x32 OLED display (SSD1306) — real-time date and time
- TTP223 capacitive touch — mode switching
- Photoresistor — automatic brightness adjustment
- Passive buzzer for audio feedback
- First-time setup via Captive Portal (no app needed)
- Full web interface including an emulated Space Invaders game and other
Supplies
Supplies
- 1 × ESP32-C3 Super Mini
- 1 × WS2812B LED Strip (High-density LED strip (144 LEDs/meter) — only 81 LEDs used)
- 1 × MAX98357A Audio Amplifier Module
- 1 × SSD1306 128x32 OLED display (I2C) (last firmware only moonvision_ver2.6.0.beta)
- 1 × Speaker 8Ω 2W (28 mm)
- 1 × Photoresistor 5528 (Ambient Light Sensor) (Planned Firmware Implementation)
- 1 × Passive Buzzer
- 1 × TTP223 Touch Sensor
- 1 × Trimmer 10kΩ
- 1 × Resistor 220Ω
- 2 × 6x6x8 Micro Button (Planned Firmware Implementation)
Additional tools:
- 3D Printer (to print the enclosure and assembly parts)
**Software / accounts needed:**
- SinricPro account (free): https://sinric.pro
- Moon phase API (free): https://www.weatherapi.com
Wiring Diagram
The full wiring diagram was created with **Fritzing** and is shown in the attached image (**MoonVision V1.0.24b — © 2025-2026 By MatixVision**).
Connect components to the ESP32-C3 Super Mini as follows:
**WS2812B LED Strip:**
- 5V → 5V (external dedicated supply, NOT from the ESP32 pin)
- DIN → (add resistor 220ohm 1/4 watt) to GPIO5
- GND → common GND
**0.91" SSD1306 128x32 OLED (I2C):**
- VCC → 3.3V
- GND → GND
- SDA → GPIO8
- SCL → GPIO9
**MAX98357A (I2S audio amplifier):**
- VIN → 3.3V
- GND → GND
- BCLK → GPIO3
- LRC → GPIO2
- DIN → GPIO4
- SD → TO 5vcc
**TTP223 Touch sensor:**
- VCC → 3.3V
- I/O → GPIO0
- GND → GND
**Photoresistor (automatic brightness):**
- One terminal → 3.3V (with ~10kΩ resistor in series)
- Center tap → GPIO10
- Other terminal → GND
**Passive Buzzer:**
- + → GPIO1
- - → GND
⚠️ **Warning:** A full-brightness LED strip can draw up to 4-5A. Always use a dedicated power supply for the strip — never power it through the ESP32 board.
- For all electrical connections, follow the wiring diagram provided in the project to correctly match pins, power, and signals between the modules.
Case Files
Moon download 50.3MB link Moon_200x6mm.3mf
Upload Firmware
No need to install Arduino IDE or compile anything. The firmware is pre-built and can be flashed to the ESP32-C3 **directly from your browser** in just a few minutes.
🔗 **Web Flasher:** moonvision (https://www.gidalo.it/matixvision.it/esp32c3/)
Procedure:
- Connect the ESP32-C3 to your computer via USB
- Put the device into bootloader mode: hold BOOT, press RESET, then release BOOT
- Open the link above in Chrome or Edge (other browsers don't support Web Serial)
- Select the desired firmware version (v1.0 Beta or v2.3 Beta)
- Click "Flash ESP32-C3" ⚠️ *
- Choose the serial port when prompted (usually "USB JTAG/serial debug unit")
- Wait 30–60 seconds — done!
- Once the device has restarted, use your phone to search for the Wi-Fi network "moonvision" and connect using the password: matixvision
- After connecting, open a browser and navigate to http://192.168.4.1
- Follow the on-screen instructions to configure MoonVision with your home Wi-Fi network — make sure the network has internet access, as the device requires it to sync NTP time, connect to external APIs, and enable Alexa integration
⚠️ * The flasher writes the complete firmware to address 0 of the flash memory. All previous data will be erased. Make sure to select the correct version before proceeding.
Final Assembly
1. 3D print the enclosure, stand, and clock numerals (1–12) in PLA
2. Test all electronic components before soldering them permanently
3. Mount the LED strip around the inner edge of the circular frame
4. Fix the moon surface in the center of the frame
5. Mount the ESP32 and all components on the back, keeping them accessible
6. Connect the OLED display on the base, positioned below the moon
7. Secure everything to the 3D-printed stand
8. Connect power and flash the firmware via the web flasher
Credits
- **3D lunar surface and STL files** (`Moon-200-6mm.stl`, `moon-case.stl`, `moon-cover-chamfer.3mf`): from the **"IoT Moon Phase Guide"** by the **Ruiz Brothers** for Adafruit Industries — https://learn.adafruit.com/moon-phase — itself inspired by Martin Kozak's Moon Lamp.
- **Clock enclosure, numerals (1–12), and desk stand**: original design by MatixVision (2025-2026)
- **Electronics, wiring schema, and MoonVision firmware**: original work by MatixVision (2025-2026)
Final Notes
No programming knowledge required — the firmware is installed directly from the browser via the web flasher.
What you need is:
- Comfort with a **soldering iron** and basic electrical circuits
- A **3D printer** (PLA filament) to print the enclosure, stand, and clock numerals
Total component cost is approximately **€25–40**.
License
License
This project is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (CC BY-NC-SA 4.0).
You are free to share and adapt the project for non-commercial purposes, as long as you:
- Give appropriate credit
- Provide a link to the license
- Indicate if changes were made
- Distribute any derivative works under the same license
Commercial use is not permitted without separate permission.