Sounds of Bali — Interactive Sound Lamp
by kannasadha in Circuits > Arduino
50 Views, 1 Favorites, 0 Comments
Sounds of Bali — Interactive Sound Lamp
Click a location on a illustrated Bali map to trigger traditional music and LED mood lighting — all controlled from your browser via Arduino
Supplies
Supplies
- Arduino UNO
- DFPlayer Mini MP3 module
- NeoPixel Ring (12 LED WS2812B)
- MicroSD card (any size, FAT32)
- Speaker (4Ω or 8Ω, 1–3W)
- Breadboard
- Jumper wires (at least 8)
- USB-A to USB-B cable (Arduino cable)
Software
- Arduino IDE
- Google Chrome or Microsoft Edge (any browser)
- Python 3
Install the Arduino Libraries
Open Arduino IDE → Tools → Manage Libraries. Search and install:
- DFRobotDFPlayerMini by DFRobot
- Adafruit NeoPixel by Adafruit
Wire the DFPlayer Mini to Arduino
Connect DFPlayer Mini directly to Arduino
2.1 — Power first
Take your red wire:
- One end → Arduino 5V pin
- Other end → DFPlayer Mini Pin 1 (VCC) — this is the very TOP pin on the LEFT side
2.2 — Ground
Take your black wire:
- One end → Arduino GND pin
- Other end → DFPlayer Mini Pin 7 (GND) — count 7 pins down from the top on the LEFT side
2.3 — TX (receive)
Take your yellow wire:
- One end → Arduino Pin 10
- Other end → DFPlayer Mini Pin 3 (TX) — 3rd pin from top on LEFT side
2.4 — RX (send)
Take your green wire:
- One end → Arduino Pin 11
- Other end → DFPlayer Mini Pin 2 (RX) — 2nd pin from top on LEFT side
2.5 — Speaker
Take 2 white wires:
- Wire 1 → DFPlayer RIGHT side, 6th pin from top (SPK2) → Speaker wire 1
- Wire 2 → DFPlayer RIGHT side, 8th pin from top (SPK1) → Speaker wire 2
Wire the NeoPixel Ring
The NeoPixel gets its power from the breadboard rails, which connect to Arduino 5V and GND.
3.1 — Breadboard power rails
Take 2 wires:
- Red wire → Arduino 5V → breadboard red rail (+)
- Black wire → Arduino GND → breadboard blue rail (−)
3.2 — NeoPixel power
Take 2 wires:
- Red wire → breadboard red rail (+) → NeoPixel 5V
- Black wire → breadboard blue rail (−) → NeoPixel GND
3.3 — NeoPixel data
Take your orange wire:
- One end → Arduino Pin 6
- Other end → NeoPixel DIN
Prepare the SD Card
Format the SD card as FAT32, create the mp3 folder, and add the attached 5 audio files.
Upload the Arduino Code
Open the attached Arduino IDE file. select Arduino UNO as board, select the correct port, then click Upload.
Downloads
Run the Web Interface
Open Terminal, navigate to your project folder, and start a local server.
What you need in your project folder:
your-folder/
├── bali_map_final.html
└── bali_logic.js
(Both files must be in the same folder!)
Open Terminal and run:
cd "/Users/YOUR_NAME/Downloads/design thinking final"
python3 -m http.server 8000
(Replace YOUR_NAME with your Mac username. Leave Terminal running — don't close it!)
Then open Chrome and go to:
http://localhost:8000/bali_map_final.html
To connect Arduino to the website:
- Click the "Connect Device" button in the top right of the page
- A popup appears listing available ports
- Select your Arduino (shows as "USB Serial" or "usbserial")
- Button changes to "Connected"
(Rememeber to close Arduino IDE file before connecting the website)
Project File:
https://drive.google.com/drive/folders/1wR1Oucf1sTg1MkUdbs5VI_xL_oJUegCg?usp=sharing
Connect and Play
Click "Connect Device", select your Arduino, and start clicking locations on the map!
(Optional) Create a Mood Lamp Casing
In my case I used rattan strips and hanji paper (a thin Korean handmade paper) to build the lamp casing. The NeoPixel ring sits inside and shines through the hanji paper, which diffuses the light into a soft glow. The rattan gives it structure and lets sound pass through naturally.
Any casing works: 3D printing, wood, bamboo, cardboard, fabric over a wire frame & others choices