RetroPlayer is a modern car radio built with a raspberry pi, Arduino, LCD display and retro radio face plate. Built using Python on a Raspberry Pi and Arduino C++ on an Arduino. The two communicate over an asynchronous serial connection.
It features:
- Bluetooth
- LCD Display showing track information
- Automated on/off using car ignition
- Control and recognition of car lights, horn, boot release
- Volume, balance, fader, tone
- Volume adjustment based on engine speed
- UI - Control of SSD1305 LCD display.
- Media player - Control and play media through the Raspberry Pi.
- Bluetooth - Communicate with phone or other media player.
- Communicate with with the Arduino to access physical inputs and outputs
- Power control - Power on and shutdown the Raspberry PI based on a car's ignition. Also control power to audio equipment
- I/O - Interface with:
- Analogue radio inputs (volume, balance, fader, tone)
- Digital inputs (ignition, lights, boot release, horn, car speed)
- Digital outputs (lights, horn, amplifier power)
- Communicate the analogue and dipital I/O with the Pi
- Custom UI for LCD display
- Custom multiplexer for switch inputs using a reduced number of GPIO pins. (9 switch inputs from 5 GPIO pins - 2 out, 3 in)
- Bluetooth integration using DBUS
- State machine for controlling media player
- Handshake communication between Raspberry Pi and Arduino
- State machine for Raspberry Pi power control
- Handshake communication between Arduino and Raspberry PI