Work in Progress
This project implements a multimedia controller. I'm using it in the Nissan Armada, so the 3d models are for that. Accomplished using an Arduino Uno R3 Mega. It features a round 1.28" LCD display with touch capabilities, SD card storage for images and audio, and a PA horn speaker for high-quality audio playback. The device displays BMP images stored in numeric directories on the SD card and plays corresponding WAV files triggered by touch events.
- Image Display: Renders 24-bit BMP images on a 240×240 round LCD.
- Touch Navigation: Supports tap gestures for audio playback and swipe gestures for browsing image directories.
- Audio Playback: Plays WAV audio files via the TMRpcm library.
- Multi-directory Support: Reads from multiple numeric directories on an SD card.
- Custom Housing: Includes a parametric 3D model for a custom housing design, specifically made for integration into the Nissan Armada.
Estimated cost: $100 - 150
- ELEGOO MEGA R3 Board ATmega 2560
- AITRIP 3A Mini DC-DC Buck Step Down Converter Board Module
- Waveshare 1.28inch Round LCD Display Module with Touch Panel
Resolution: 240×240, IPS, supports SPI and I2C Communication - HiLetgo Micro SD TF Card Adapter Reader Module
- ZK-1002T 12V 2A Audio Amplifier Board
12V 2A Audio Amplifier Board with 3.5mm Audio Jack - Pyle Indoor/Outdoor PA Horn Speaker
8” Portable PA Speaker with 8 Ohms Impedance & 65 Watts Peak Power
-
Assemble the Components:
Connect the LCD display, SD card adapter, touch panel, audio components, and power module to the ELEGOO MEGA R3 board as specified below. -
Interconnect Devices:
- SD Card Reader
- LCD Display & Touch Panel
- Audio Output
-
Power Supply:
The Arduino is powered via the barrel jack (9V input), which is stepped down by the buck adapter (12V → 9V) to meet the system requirements.
The following tables outline the signal connections between the Arduino Mega, the external modules, and any required pull-up resistors or notes.
| Signal | Arduino Mega Pin | External Module Pin | Pull-Up / Notes |
|---|---|---|---|
| LCD_CS | 10 | LCD CS | 10 kΩ resistor to 5 V |
| LCD_D/C | 7 | LCD D/C or RS | Control pin for data/command select |
| LCD_RST | 8 | LCD RST | Reset pin (active low) |
| LCD_MOSI | 51 (Hardware MOSI) | LCD MOSI | Shared SPI bus output from Arduino |
| LCD_MISO | 50 (Hardware MISO) | LCD MISO (if used) | Shared SPI bus input (optional) |
| LCD_SCK | 52 (Hardware SCK) | LCD SCK | Shared SPI clock |
| LCD_BL | 9 | LCD Backlight | Can be tied to 5 V or used with PWM |
| LCD_VCC | 5 V | VCC (LCD power) | Power for LCD module (check datasheet) |
| LCD_GND | GND | GND | Common ground |
| Signal | Arduino Mega Pin | External Module Pin | Pull-Up / Notes |
|---|---|---|---|
| SD_CS | 2 | SD Module CS | 10 kΩ resistor to 3.3 V |
| SD_MOSI | 51 (Hardware MOSI) | SD Module MOSI | Shared SPI bus output from Arduino |
| SD_MISO | 50 (Hardware MISO) | SD Module MISO | Shared SPI bus input from Arduino |
| SD_SCK | 52 (Hardware SCK) | SD Module SCK | Shared SPI clock |
| SD_VCC | 3.3 V | VCC (SD power) | Power for SD module |
| SD_GND | GND | GND | Common ground |
| Signal | Arduino Mega Pin | External Module Pin | Pull-Up / Notes |
|---|---|---|---|
| TP_SDA | 20 | TP SDA | I2C data line |
| TP_SCL | 21 | TP SCL | I2C clock line |
| TP_INT | 3 | TP INT | Touch interrupt signal |
| TP_RST | 4 | TP RST | Touch panel reset signal |
| Signal | Arduino/Source | External Module / Note |
|---|---|---|
| Arduino Barrel Jack | 12V Supply | Supplied via buck adapter |
| Buck Adapter | 12V to 9V conversion | Provides regulated voltage for the system |
| Speaker / Audio | 6 | Speaker / Amp In (via 10Ω resistor); Speaker GND connected as noted |
| Speaker/Amp VCC | 12V Main Supply | Amplifier VCC (using the ZK-1002T) |
| Speaker/Amp GND | From Supply | Amplifier GND – common ground |
-
SPI Bus Sharing:
- MOSI (51), MISO (50), and SCK (52) are shared between the LCD module and the SD card module.
- Each device’s CS line (LCD_CS and SD_CS) has its own pull-up resistor and must be driven low for active SPI communication.
-
Pull-Up Resistors:
- LCD_CS: 10 kΩ resistor to 5 V
- SD_CS: 10 kΩ resistor to 3.3 V
-
Install the Arduino IDE:
Ensure you have the latest version of the Arduino IDE installed. You can download it from the official Arduino website. Otherwise use you favorite IDE. I use CLion with PlatformIO plugin. -
Upload the Code:
Open the provided source file in the IDE, compile, and upload it to your ELEGOO MEGA R3 board.
Ensure that your Micro SD card has the following file organization:
I have included a sample directory structure in the SD_CARD_FILES folder.
- Create numerical directories (e.g.,
/1,/2, etc.). As you add more, the additional sound boards will be available without changing the code. - Within each directory, include:
u.bmp– The BMP image file to display.- The BMP files need to be 240 x 240 pixels in size. And 24-bit BMP format. You can accomplish this conversion easily in Windows using Paint.
- Audio files named
A.WAV,B.WAV,C.WAV, andD.WAVcorresponding to different touch regions.- The Wave files should be mixed down to mono and saved at 16kHz sample rate in 8-bit Unsigned format. I was able to easily make the conversion using Audacity.
-
Power On:
Once all components are connected and the code is uploaded, power on the system. -
Display Initialization:
The device initializes the LCD, SD card, and touch panel, then displays the BMP image from the active directory. -
Touch Interaction:
- Tap: Trigger audio playback by tapping outside the central "dead zone" on the screen.
- Swipe: Swipe vertically to navigate between different image directories.
A parametric 3D model for the custom housing designed for the 2023 Nissan Armada is included in this repository. I have included STEP and STL files for easy use. You can find the model in the 3D-Models folder.
Contributions, feedback, and improvements are welcome. Please feel free to open issues or submit pull requests.
This project is open source and available under the MIT License.
Note: This project is a work in progress. Future updates may include additional features, refinements to the wiring diagrams, and code improvements.