Step 8: Putting it Together with BASH and Python

Now that the hardware is connected, some custom scripts will give us control over Pianobar, the LCD, and the buttons. Programmers will probably cringe, but for simplicity's sake I gave each of these files full permissions for each user (in the terminal, enter "chmod 777 x.xx" where x.xx is the filename). This lets a BASH program execute a Python script, for example.


The first step to creating these scripts is to edit the autostart file in the LXDE directory. Edit this file with:

sudo nano /etc/xdg/lxsession/LXDE/autostart

Now add two lines to the end:

bash /home/pi/.config/pianobar/scripts/PandorasBox.sh

Save and exit, and your OS is configured to start pianobar at startup. It will also begin continuously polling for pushbuttons. 

The scripts used to control the LCD and buttons are hosted in a Github repository. They can be retrieved through the following:

cd /home/pi/.config/pianobar
git clone git://github.com/AyMac/Pandoras-Box.git
cd Pandoras-Box
git pull origin
cd ..
cp -r /home/pi/.config/pianobar/Pandoras-Box/scripts/ .

Now that the scripts have been retrieved, only one step remains to create a working system. 

Final Step: Since one of the options is to randomly select a new station, the main script needs to know how many stations are on a user's Pandora account. (To figure this out, start Pianobar and press "s". This will list all the available stations). Now open the file /home/pi/.config/pianobar/scripts/ButtonPiper.sh and change the "n=" value to the number found above.

Your system should be complete! Please comment on this Instructable with any issues you have, and I will try to address them. The next step talks about making a case, but the system should be fully functional before this step.


<p>This doesn't seem to have been updated in a long time... As it will hopefully help anyone else attempting this build, here is a link to the Adafruit Tutorial for their Raspberry Pi Pandora Radio build. The old Pianobar install instructions here, and elsewhere, don't work! Follow the Adafruit Tutorial's section on installing Pianobar and you'll be all set! Here is the link: https://learn.adafruit.com/pi-wifi-radio/raspberry-pi-setup-1-of-3</p>
<p>Thanks for the updated link - I have not touched this instructable in nearly 2 years, so it's bound to be pretty outdated. Unfortunately I have not spent much time with the RPI lately.</p><p>I've stickied your comment for visibility. Hope the project went well for you!</p>
<p>Thanks! It did go very well. I made a PCB version of your breadboard setup and had all the parts on order but they took so long to get here that I went with the Adafruit kit as a part of my project.(Hint: It's not JUST a radio.) I'll still have to make another using your setup since I basically have all the wiring done... My project will be up on Instructables in a week or two. It's a bit of a different approach but I think you'll enjoy it! I've linked back here in it and gave you a bunch of credit for the inspiration!</p>
Can someone explain to me the point of using 5v and a regulator to get to 3.3v when there is a 3.3v supply from the pi. I am fairly new to this stuff and am just trying to learn. Thanks.
That's a really good question. The answer has to do with the current limit on the Raspberry Pi's 3.3V line. According to the link below, the 3.3V line can output up to 50 milliamps current. Meanwhile, the 3.3V LCD module I used can draw up to 60 mA.<br> <br> While LCD may never draw that full 60 mA, it has the potential to cause issues. Since the 5V supply can supply over 300 mA (when using a 1A power supply), I chose to add the 3.3V regulator. &nbsp;<br> <br> RPi electrical specs:&nbsp;<a href="http://elinux.org/RPi_Low-level_peripherals" rel="nofollow">http://elinux.org/RPi_Low-level_peripherals</a><br>
Could i get an estimate of the cost? i really would like to do this project, and i am a beginner..
This depends on what equipment you already have. For example, I already had soldering equipment, drill and tap set, standoffs, SD card, and resistors. I'll give some prices for the bigger items: <br> <br>Raspberry Pi: $35 + shipping <br>Power Supply: $8 + shipping <br>T-Cobbler: $8 + shipping <br>Serial LCD Monitor: $25 + shipping <br>Buttons: $7 <br>Acrylic Sheets: $8 <br>Epoxy: $5 <br>Capacitors: $2 <br>Velcro: $5 <br> <br>The small things tended to add up quickly - like the bits I had to get from Radioshack and Lowes (buttons, capacitors, velcro, etc). I probably could have gotten some things much cheaper online, but I didn't have the patience to wait for the velcro to ship. All the parts were around $110 with shipping - but since I plan on reusing most of the stuff for future projects, the cost felt reasonable. <br> <br>Hope that helps.
thats very helpful thanks <br>
Note: On the box plans, the center piece has an issue with the spacing of the raspberry pi's holes. If you are making the same box, double check the holes (I don't have the original files to correct the images...)
<p>Thanks for the tutorial - this is absolutely amazing. I just had to use the following command for the fifo to work:</p><p>cd</p><p>exec 3&lt;&gt; ./config/pianobar/ctl</p><p>otherwise my terminal was hanging after the echo command</p>
<p>This is very close to what I have been looking to build however I want to integrate it into say a 2.1 amplified speaker system. My biggest curiosity is if it is possible to set it up to be able to stream say SiriusXM from my account via the web?</p>
<p>Its striking</p>
<p>I would buy this if for sale...</p>
So, I didn't get the controller but, how do I do the rxd? I have the power and ground but, not that. What pin is it on the lcd?
<p>Very nice and interesting work</p>
<p>Would anybody be interested in my version? I made it using Python only (no Bash) it works using only 3 buttons and 2 LEDs and a motion sensor (no screen). Total cost is around $45 US including the Raspberry, a pack of LEDs, a pack of resistors, female to female jumper wires and an empty Tea Box. </p>
<p>Hey Jay - I'd be really interested to see your software! Do you have it on a repo?</p>
<p>If anyone is interested I did a PCB layout for the buttons and attachment to the LCD screen. A lot more work than using a breadboard but it saves space and doesn't tie up your breadboard in the process. Send me a message if you want the file! </p><p>R1-R7 are 10K</p><p>R8-R13 are 1K</p><p>I'm going to try etching it with the toner transfer method. We'll see if it takes...</p>
<p>This looks really cool, but I don't have access to a place to get the housing. Could it be, say, 3D printed? Then a company like Shapeways (or a friend with a 3D printer) could make the model. What would be involved in making that into a model?</p>

About This Instructable




More by Ayy:Pandora's Box - An Internet Radio player made with a Raspberry Pi! 
Add instructable to: