Hi guys.
This is my first post here, but I am not totally new to Arduino. I had a class in high school in which we dove into Arduinos and I used one in a freshman projects class in college (I am now a senior pursuing a mechanical engineering degree. Surprisingly little use of microcontrollers and the sort in the mech curriculum.) Anyways, it has been a while since I've used one.
I am thinking about making myself a car stereo with an Arduino at its heart. I'm still just considering the idea. I have never liked aftermarket car stereos at all. They just don't look right. They are all flashy and cool and look like they belong in the starship Enterprise. They don't look like they belong in a normal car. And such a stereo especially does not look like it belongs in my 1970 Chevrolet El Camino. There is a company that makes "retro" modern car stereo units for these older cars, but I'm not really in love with their offerings; they still look like chromed plastic to me and are not exactly cheap, especially the models with iPod connection and Bluetooth. If I am going to go aftermarket I could just go big and get one of those snazzy flip-out touchscreen ones, but they are quite expensive, and if I am going to spend that much on something I want to really like how it looks and operates in the car. One the other end of the spectrum, I could get an actual old radio from the era. It would certainly look like it fits in. And there are some cheap ones on craigslist. Downsides to that would be I only get AM and maybe FM and sound quality would be of no comparison to today's stuff. The last option was inspired by an identical project I noticed on YouTube (Arduino Car Stereo - Retro JDM). I could make my own. I don't really expect it to be a cheaper option, but I could make it exactly how I want it. And learn some stuff.
I have a block diagram / flow chart thing drawn up, but my handwriting is poor thanks to a recently broken hand, so I'll try to type it out instead of uploading the image.
Audio and RDS data comes from an FM chip(hooked up to car antenna. It's really cool because it is embedded in the windshield kinda like those defroster things on back windows) to Arduino. Data would also be exchanged to tune frequency.
Audio and data (song name and whatever) comes from bluetooth chip to Arduino.
Same for USB iPod hookup.
AUX 3.5 input
Knobs, buttons
Audio goes out to a 4-channel amp
Alphanumeric display
I don't have any parts picked out, so if you know of any that will do the trick please share.
Would thermal management be an issue?
Just wondering if anyone had any advice or inputs. I may opt for just buying a stereo instead, but I just wanted to at least consider this option.
Arduino is not generally capable of dealing with audio data. Maybe low quality mono, at a push. Raspberry Pi is much more capable in these respects. Some models (e.g. Pi 3, Pi Zero W) have bluetooth built-in, can play mp3 etc from sd card or attached USB storage. They have reasonable quality stereo audio outputs, and you can buy higher quality audio output boards to attach to them. They are often used as the basis of media centres, internet radios, that kind of thing.
You are looking at a steep learning curve with Raspberry Pi. With Arduino, you are looking at a steep learning curve followed by a deep plunge into disappointment, I suspect.
Okay. I would have guessed a raspberry pi would be a bit overpowered for what I need, but I never have done anything audio-related with an Arduino so I am unsure of its capabilities.
If you use a proper Bluetooth audio module (WT32i, BC127 etc), you don't need to run the audio anywhere near the Arduino. You can stream the audio directly from the iPod (assuming iPod touch with Bluetooth) to the BT audio module, and this will output audio that can be sent to an amplifier.
You can use the Arduino to send commands to the BT module, receive track data and control the display.
If you don't want to actually stream the audio and prefer a wired audio connection (better quality), you can still control the iPod over the AVRCP channel. Digital audio can be accessed on the lightning connector using an (overpriced) Apple camera connection cable. This essentially gives you a USB connection and allows you to use any number of USB DAC's for the audio.
I've not tried the BC127, but the WT32i even has the capability to browse the media library over AVRCP.
You also have the option of using a Teensy with the Teensy audio board. This can play CD quality audio from an SD card.
Plenty of options without resorting to the Raspberry PI.
Plenty of options without resorting to the Raspberry PI.
It depends what you mean by "resorting". On hardware price grounds, a Pi solution might still win because you get so many features built-in that would require extra hardware with Arduino. A Teensy LC costs around the same as a Pi Zero W in the UK. In terms of software effort, you may find more ready-made software for audio functions on Pi. So I think the a OP should a least do more research before making the Pi Vs Arduino decision. If budget allows, persue both options in parallel until the winner becomes clear.
Delta_G:
Here's a cool idea based on the suggestion I gave about putting a Delco in the dash and a good head unit under the seat. You could get really cool with it if you add Arduino. There are lots of head units today with remote controls. So you could potentially have the good head unit under the seat hiding and the stock looking Delco in the dash, but secretly inside the stock Delco is an Arduino taking your input and sending it via IR or whatever to the head unit under the seat. Turn the volume knob on the one in the dash and the Arduino inside sends volume up. Hit one of the old school preset buttons and the Arduino sends a signal to tune to a given station. You could even map the preset buttons to your different inputs on the real head unit.
This way the Arduino doesn't do any audio processing or anything, it just reads input from one set of buttons and simulates a remote for output.
This guy seems to be going for something similar to what I have in mind. Even a similar car. I don't expect anything I make to look as good as his with machined aluminum and everything, but it is nice to see that it is possible.
My advice woudl be to look for an old car radio that has RCA phono pre-outs, then you can use a modern amp to get all the power you need.
You could more than likely add a bluetooth module or Line-in to these old systems.
if you look for blaupunkt radios, they dont look fancy and startrek, quite the opposite, but they are well built and perform well. an Early 90's radio may be easier to mod as as soon as they started to use the single ic's for the amp inside, its just a case of looking up spec sheets and working our what pins to connect the bluetoothe module to.
I have succesfully added line in and bluetooth to a couple of radios in the past.
one other, and more complicated option would be to use the dials and display of an old radio, and use an arduino to interface them to a modern radio that is set behind the old face.
You can get librarys to read and output multijogs, you could easily read the potentiometer from the volume on an old radio, and then output a digital signal to a modern radio accrodingly.
that would be the most fun project
statue4:
Why's that? What kind of learning curve should I expect?
Eh, I don't think it will be overpowered, but a Pi is a full-on, ready to use computer with GPIO ports, HMDI, ethernet, WiFi, etc. I can't talk about Windows abilities, but from my experience it is a full fledged, ready to go Linux computer. You can use it as a desktop, Plex/Kodi server... or literally ANYTHING Linux can do. I just got RP3 for my girlfriend who drunkenly requested a Nintendo for Christmas. Guess what? I now can't peel her off the TV, because she is consumed with the original Mario Cart. Worst $60 i've ever spent! lol
Anyway, Raspberry Pi is probably a better platform for your needs, because the learning curve is less steep and you can do most of the things you want with off-the-shelf software/scripts.
I love retropie, I have a 3d printed case that I made, and a pi3. However I can say that a nintendo Wii, with homebrew and USB launcher has been a lot cheaper than a Pi3 and a lot more powerful. Anyway, I digress!
My first car, a '73 MB, is sitting on family property in inoperable condition. Yesterday I went and grabbed the radio out of it and found that it will fit in the Chevy. It is a Craig unit from '89, so, while it does fit, it looks pretty bad. And I remember from when I was driving the car that had it that it's a pretty bad radio/cassette player. Not worth installing as is, and looks-wise it's not worth retrofitting some new tech into. I'd like to get an era-appropriate unit (a stock Delco would do well) and add apply some of the ideas mentioned in this thread to it. Either use it to control a newer unit hidden somewhere else, or have it be the face of an updated, Arduino-brained stereo.
Does anyone recommend a particular Bluetooth board for audio? I'd like to be able to display the currently playing song on a display and control (play/pause, skip). RN-52? Any experience doing this with Arduino.
What about a particular radio tuner board?
What about controlling an iPod via USB? Using an Arduino would I be able to show the song name on a display and play/pause etc?
I've used the BC127 and WT32i, but the RN-52 should also work. I think the BC127 was probably easier to use, but the WT32i has more features, which is why I ended up using it. I tend to use Teensy boards these days, but either would work fine with Arduino boards.
If you just want FM radio, the TEA5767 or Si4703 are probably the most popular. I wanted DAB radio as well, so used the T2_L4A_8650C from Keystone Semiconductors. This is easiest to find on the Monkeyboard, but individual modules can be found.
Controlling the iPod depends on the iPod model. Older 30 pin devices can be controlled directly over serial, but anything with a lightning connector has to be MFI certified to be able to do anything through the connector. You can however do it via the Bluetooth AVRCP profile. This allows play/pause/skip etc, as well as getting song & artist names.
OP, you mentioned “...Audio and RDS data comes from an FM chip(hooked up to car antenna...”. What part is that?
If it’s all in one, you may only need to control that chip and generate a user interface. Plug the audio outputs across to your amplifiers and bingo.
(You’re also likely to need a crossover per channel, to split the 4amps you’re hoping for.)
Thanks for the responses. I won't be taking any stereo-related steps in the near future because I need to wait until I can afford to spend more money on car stuff. I'm still not sure which route I'll go, but if it is the Arduino route I will keep the thread updated (likely looking for help).
Ian, thanks for mentioning those boards. What is DAB radio?
Hi all,
I am currently leaning more towards the "build my own unit" option more than any of the stereo receivers on the market. Today I got out the ol' box of electronics project stuff and played with various inputs and outputs. It seems like I have a decent grasp of basic Arduino-ing.
My question today is: how can I switch between multiple audio inputs to send to an amplifier? I don't intend to have any audio actually processed by the Arduino. So this would be a relays thing, but any tips for audio instead of just an on/off signal? Also volume control.
how can I switch between multiple audio inputs to send to an amplifier
Basically two choices -
an audio crosspoint matrix (chip)
Remember to match your line impedance with the nominated chip...
There are several available, and probably the 'best' way to go.
a simple relay matrix (with low-moving-mass relays... e.g. reed relays)
But a bit clunky, and needs transistors etc to drive the relays.