Documentation up to the user manual
This commit is contained in:
+130
-117
@@ -23,6 +23,10 @@ body {
|
||||
font-size: 160%;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-top: 1.5em;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
||||
font-weight: 800;
|
||||
@@ -34,6 +38,7 @@ h2, h3 {
|
||||
font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
||||
font-weight: 800;
|
||||
color: #303030;
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
#subtitle {
|
||||
@@ -48,6 +53,8 @@ h2, h3 {
|
||||
|
||||
.gallery {
|
||||
text-align: center;
|
||||
margin-top: 2em;
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
|
||||
.timestamp {
|
||||
@@ -86,7 +93,7 @@ h2, h3 {
|
||||
<body>
|
||||
|
||||
<div id="content" class="container">
|
||||
<p class="timestamp">2017-01-14</p>
|
||||
<p class="timestamp">2017-01-28</p>
|
||||
<h1>AudioSphere</h1>
|
||||
<p id="subtitle">An easy-to-use music player for children based on the Raspberry Pi Zero and the JBL On Stage IIIp</p>
|
||||
|
||||
@@ -101,9 +108,11 @@ h2, h3 {
|
||||
<ol>
|
||||
<li><a href="#idea">The Idea</a></li>
|
||||
<li><a href="#piplayer2">PiPlayer, version 2.0: AudioSphere</a></li>
|
||||
<li><a href="#parts">Parts List</a></li>
|
||||
<li><a href="#case">3D Printed Case</a></li>
|
||||
<li><a href="#hardware">Hardware and Assembly</a></li>
|
||||
<li><a href="#software">Software</a></li>
|
||||
<li><a href="#system">System Installation</a></li>
|
||||
<li><a href="#jblpreparation">Preparing the JBL IIIp Speaker</a></li>
|
||||
<li><a href="#electronics">Electronics</a></li>
|
||||
<li><a href="#manual">User Manual</a></li>
|
||||
</ol>
|
||||
|
||||
@@ -135,39 +144,26 @@ h2, h3 {
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Also, an ethernet port is now available (since we had problems with the Wi-Fi connection in the boy's room) and thanks to switching to the Raspberry Pi Zero, the Apple dock port is now able to power all the components. No additonal power source needed. By incorporating a <a href="https://shop.pimoroni.com/products/phat-dac">Pimoroni PHAT DAC</a> I removed all the audio-related headaches.
|
||||
Also, an ethernet port is now available (since we had problems with the Wi-Fi connection in the boy's room) and thanks to switching to the Raspberry Pi Zero, the Apple dock port is now able to power all the components. No additonal power source needed. By incorporating a <a href="https://shop.pimoroni.com/products/phat-dac">Pimoroni PHAT DAC</a> I removed all the audio-related headaches. (You can order one <a href="https://shop.pimoroni.com/products/pi-zero-project-kits">together with the RasPi Zero as a kit</a>.)
|
||||
</p>
|
||||
|
||||
<p>
|
||||
On the software side there's two major improvements: The SD card is now mounted read-only by default. This makes unplugging the AudioSphere (by accident or for reboot) unproblematic. And the Python script that operates the player now uses interrupts instead of polling for checking the input sources - no more busy waiting!
|
||||
On the software side there's two major improvements: The SD card is now mounted read-only by default. This makes unplugging the AudioSphere by accident or for reboot unproblematic. And the Python script that operates the player now uses interrupts instead of polling for checking the input sources - no more busy waiting! You can find the entire documentation including the central <a href="https://github.com/tliero/audiosphere/blob/master/piplayer2/piplayer2.py">Python script</a> in the <a href="https://github.com/tliero/audiosphere/">GitHub repository</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
OK, so much for the overview - let's build this, step by step.
|
||||
</p>
|
||||
|
||||
<h2 id="case">3D Printed Case</h2>
|
||||
|
||||
<h2 id="parts">Parts list</h2>
|
||||
|
||||
<p>
|
||||
First step was the design of the new case. Like the first <a href="https://cad.onshape.com/documents/56f3cf83e4b02f6312a93771/w/785ccf8684baed006305bb0d/e/c68592f13fbf9a2c69b8dd05">rocket case</a> it's public, you can find it <a href="https://cad.onshape.com/documents/584e7d080f617710a60fc5d3/w/28f44a0afe402320fa3f3faa/e/765c3d5ab7a1032836866ac8">here on Onshape</a>. (You will need to create an account to open the document.) Or you can download the <a href="https://github.com/tliero/audiosphere/tree/master/case">STL files</a> for printing if you are using the very same components. Please note that you will need to rotate the top of the sphere 180° for printing. Also be careful about the Raspberry holder: The Raspberry Pi together with the PHAT DAC should have a <a href="images/phat_dac_measure.jpg" class="fancybox">height of 7.2 mm</a> (or less) which depends on the GPIO header that is used to solder the PHAT DAC to the RasPi. If the height exeeds that, the distance needs to be adjusted before printing.
|
||||
This is everything we'll need:
|
||||
</p>
|
||||
|
||||
<p class="gallery">
|
||||
<a href="images/piplayer-04-04.png" class="fancybox" rel="collection01"><img src="images/piplayer-04-04.png"
|
||||
width="320" alt="The base with the three main electronic components: The Raspberry Pi Zero with the PHAT DAC (blue), the USB hub with the ethernet port (green) and the camera with a representation of its viewport (black)." /></a>
|
||||
<a href="images/piplayer-02-500.gif" class="fancybox" rel="collection01"><img src="images/piplayer-02-500.gif" width="320"
|
||||
alt="Animation of the assembly" /></a>
|
||||
<a href="images/piplayer-02-07.png" class="fancybox"
|
||||
rel="collection01"><img src="images/piplayer-02-07.png" width="320"
|
||||
alt="The assembled case" /></a>
|
||||
</p>
|
||||
|
||||
<h2 id="hardware">Hardware and Assembly</h2>
|
||||
|
||||
<h3 id="parts">Parts list</h3>
|
||||
|
||||
<ul>
|
||||
<li>The sphere case, printed via <a href="https://www.3dhubs.com/">3dhubs.com</a></li>
|
||||
<li>the sphere case (I got mine printed via <a href="https://www.3dhubs.com/">3dhubs.com</a>)</li>
|
||||
<li>JBL On Stage IIIP (used via ebay for less than 20 €)</li>
|
||||
<li>Raspberry Pi Zero with a micro SD card</li>
|
||||
<li><a href="https://shop.pimoroni.com/products/phat-dac">Pimoroni PHAT DAC</a></li>
|
||||
@@ -204,78 +200,30 @@ h2, h3 {
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h3 id="jblpreparation">Preparing the JBL IIIp Speaker</h3>
|
||||
<p>
|
||||
In order to drill the holes for the screws, the speaker has to be disassembled. The procedure is described <a href="https://de.ifixit.com/Guide/JBL+On+Stage+II+Speakers+Replacement/22462">here at ifixit.com for the predecessor</a> which works basically the same way: Remove the rubber pads, then remove all screws from the case. (Don't forget the center screw in the battery case.) Once the speaker case is opened, the circuit board is unscrewed and removed.
|
||||
</p>
|
||||
|
||||
<h2 id="case">3D Printed Case</h2>
|
||||
|
||||
<p>
|
||||
I drilled the holes for the M3 screws and the IR LED cable using a <a href="misc/audiosphere_drilling_template.pdf">template</a>. The drill itself is set to rotate left. That way, the holes are more or less melted into the plastic to lower the risk of breaking the case.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
After drilling, washers and screws are added and the infrared LED is glued directly in front of the speaker's IR sensor in order to send it commands. Before that the PINs of the IR LED are soldered to cables that are long enough to connect it to the circuit board through one of the additional holes. Also, all the electronics should be tested together before anything is hot-glued into the case.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
(Disclaimer: Until now, I only did a proof of concept test script for remote contolling the speaker via the IR LED. I am planning on using that component later on via a web app but for the time being you could as well leave it out.)
|
||||
First step was the design of the new case. Like the first <a href="https://cad.onshape.com/documents/56f3cf83e4b02f6312a93771/w/785ccf8684baed006305bb0d/e/c68592f13fbf9a2c69b8dd05">rocket case</a> it's public, you can find it <a href="https://cad.onshape.com/documents/584e7d080f617710a60fc5d3/w/28f44a0afe402320fa3f3faa/e/765c3d5ab7a1032836866ac8">here on Onshape</a>. (You will need to create an account to open the document.) Or you can download the <a href="https://github.com/tliero/audiosphere/tree/master/case">STL files</a> for printing if you are using the very same components. Please note that you will need to rotate the top of the sphere 180° for printing. Also be careful about the Raspberry holder: The Raspberry Pi together with the PHAT DAC should have a <a href="images/phat_dac_measure.jpg" class="fancybox">height of 7.2 mm</a> (or less) which depends on the GPIO header that is used to solder the PHAT DAC to the RasPi. If the height exeeds that, the distance needs to be adjusted before printing.
|
||||
</p>
|
||||
|
||||
<p class="gallery">
|
||||
<a href="images/jbl_01.jpg" class="fancybox" rel="collection02"><img src="images/jbl_01.jpg" width="320" alt="The opened speaker case with the drilling template" /></a>
|
||||
<a href="images/jbl_02.jpg" class="fancybox" rel="collection02"><img src="images/jbl_02.jpg" width="320" alt="The re-assembled speaker with the IR LED in front of the IR sensor" /></a>
|
||||
<a href="images/jbl_03.jpg" class="fancybox" rel="collection02"><img src="images/jbl_03.jpg" width="320" alt="The closed speaker case with the screws that hold the 3D printed case. (This photo was taken before adding the IR LED.)" /></a>
|
||||
<a href="images/piplayer-04-04.png" class="fancybox" rel="collection01"><img src="images/piplayer-04-04.png"
|
||||
width="320" alt="The base with the three main electronic components: The Raspberry Pi Zero with the PHAT DAC (blue), the USB hub with the ethernet port (green) and the camera with a representation of its viewport (black)." /></a>
|
||||
<a href="images/piplayer-02-500.gif" class="fancybox" rel="collection01"><img src="images/piplayer-02-500.gif" width="320"
|
||||
alt="Animation of the assembly" /></a>
|
||||
<a href="images/piplayer-02-07.png" class="fancybox"
|
||||
rel="collection01"><img src="images/piplayer-02-07.png" width="320"
|
||||
alt="The assembled case" /></a>
|
||||
</p>
|
||||
|
||||
<h3 id="electronics">Electronics</h3>
|
||||
<h2 id="system">System Installation on the Raspberry Pi Zero</h2>
|
||||
<p>
|
||||
There are four electronic parts: The reflective optical sensor that triggers the QR recognition process, the LED that illuminates the QR card from within the case, the infrared LED that passes commands to the speaker and the 3 momentary push buttions that are used to pause/unpause playback and move within the current playlist. While the buttons and the LEDs are put directly in the case, all other elements are brought together on a circuit board from where they are connected to the RasPi via jumper cables. So this is what we're aiming for:
|
||||
</p>
|
||||
|
||||
<p class="gallery">
|
||||
<a href="images/audiosphere-electronics.png" class="fancybox"><img src="images/audiosphere-electronics.png" width="480" alt="The electronics in a single diagram with the optical sensor on the left, the LED, the infrared LED and the three buttons on the right. (<a href='https://github.com/tliero/audiosphere/blob/master/misc/electronics-final.fzz'>Source file</a> for <a href='http://fritzing.org'>fritzing</a>)" /></a>
|
||||
Before installing anything additionally, <a href="https://www.raspberrypi.org/downloads/raspbian/">Raspbian Lite</a> has to be <a href="https://www.raspberrypi.org/documentation/installation/installing-images/README.md">set up on the SD card</a>. When the card is ready, it is necessary to at least once connect a monitor and a keyboard to the RasPi for the initial setup since SSH is disabled by default. As soon as SSH is enabled and Wi-Fi is configured, we can remove all the cables and continue to work remotely over SSH.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Assembling the circuit is pretty straight forward. Be careful about the optical sensor, though: There are two versions out there, <a href="http://www.vishay.com/docs/83751/cny70.pdf">one from Vishay</a> and <a hreaf="http://smallsystems.isn-oldenburg.de/smallrobots/ws2001/Tischkante/cny70.pdf">one from TEMIC</a> that has the detector transistor upside down compared to the other one. Also note that I used a LED that can operate directly on the RasPi's 3.3 V without a series resistor. If you use a smaller one (which should also be sufficient for illumination), you will need one.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
After <!-- http://www.instructables.com/id/Multiroom-Client-With-Raspberry-Pi-ZERO-and-PHAT-D/?ALLSTEPS --><a href="https://learn.pimoroni.com/tutorial/sandyj/soldering-phats">soldering the PHAT DAC onto the Raspberri Pi</a> (preferably using a <a href="images/gpio-header.jpg">GPIO header</a> that directly routes through all the GPIOs) the used PINs are connected with the jumper cables. <!-- Where these were not soldered to the contact, I used hot glue to fix the connection which worked pretty well. -->
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Once everything is connected together, it can be put in the case for the software installation and final adjustments. Wait with the hot glue until everything has been tested, especially on the camera!
|
||||
</p>
|
||||
|
||||
<p class="gallery">
|
||||
<a href="images/buttons_and_circuit_board.jpg" class="fancybox" rel="collection03"><img src="images/buttons_and_circuit_board.jpg" width="320" alt="The circuit board after soldering with all resistors, the transistor and open contacts to be connected via jumper cables. In order to protect the wire cables and soldering points from breaking, I applied hot glue after testing." /></a>
|
||||
<a href="images/phat_dac_soldering.jpg" class="fancybox" rel="collection03"><img src="images/phat_dac_soldering.jpg" width="320" alt="The PHAT DAC after soldering." /></a>
|
||||
<a href="images/phat_dac_soldering_back.jpg" class="fancybox" rel="collection03"><img src="images/phat_dac_soldering_back.jpg" width="320" alt="By my low standards, that is a pretty decent soldering. You can also see the nylon nuts I used as spacers." /></a>
|
||||
</p>
|
||||
|
||||
<p class="gallery">
|
||||
<a href="images/circuit_board.jpg" class="fancybox" rel="collection04"><img src="images/circuit_board.jpg" width="320" alt="I did not solder the jumper wires to the RasPi but also fixed them with hot glue. This keeps them together as a unit, isolates them from one another, and the hot glue can be peeled off if something goes wrong." /></a>
|
||||
<a href="images/piplayer-opened.jpg" class="fancybox" rel="collection04"><img src="images/piplayer-opened.jpg" width="320" alt="Interior view of the AudioSphere player with all components assebled. The circuit board is glued to the front side (not visible from this angle)." /></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
What's missing in the pictures is how to get a screw thread behind the holes in the case: Use super glue to put three M3 nuts on washers (in order to enlarge the surface). When dried, use the super glue again to attach these nuts-on-washers behind the screw holes of the case. (Use the screws to adjust them so you can turn them in and out. I used <a href="http://www.uhu.com/produkte/alleskleber/detail/uhu-alleskleber-superstrong-safe.html?cHash=6d17927cfdf1797595540fe083329e0a">UHU Super Strong and Safe</a> which gives you some time for corrections after applying.) Et voilà, you now got yourself screw holes with threads on the player's case.
|
||||
</p>
|
||||
|
||||
<h2 id="software">Software</h2>
|
||||
|
||||
<h3 id="system">System Installation</h3>
|
||||
<p>
|
||||
Before installing anything additionally, <a href="https://www.raspberrypi.org/downloads/raspbian/">Raspbian Lite</a> has to be <a href="https://www.raspberrypi.org/documentation/installation/installing-images/README.md">installed on the SD card</a>. When the card is ready, it is necessary to at least once connect a monitor and a keyboard to the RasPi for the initial setup since SSH is disabled by default. As soon as SSH is enabled and Wi-Fi is configured, we can remove all the cables and continue to work remotely over ssh.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<em>From here on it's basically copy-and-paste to your SSH terminal. You might need to confirm or close something every now and then. Where a configuration file has to be edited, the contents that go to the file are also put in comments with a leading tab.</em>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Basic setup (with links to the references):
|
||||
<em>From here on it's basically entering line by line to your terminal (and later on it's copy-and-paste via SSH). You might need to confirm or close something every now and then. Where a configuration file has to be edited, the contents that go to the file are also put in comments with a leading tab. The links are the references for the individual steps.</em>
|
||||
</p>
|
||||
|
||||
<pre class="pre-scrollable">
|
||||
@@ -292,13 +240,11 @@ dmesg
|
||||
# Check for connected USB devices
|
||||
lsusb
|
||||
|
||||
# Install Wi-Fi client (<a href="https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md">https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md</a>)
|
||||
sudo apt install iw
|
||||
|
||||
# If not done yet, plug in the Wi-Fi adapter and reboot
|
||||
sudo reboot
|
||||
|
||||
# Scan networks and add wi-fi network to configuration
|
||||
# Scan networks and add Wi-Fi network to configuration (<a href="https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md">https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md</a>)
|
||||
# (Close nano after editing with Ctrl-X)
|
||||
sudo iwlist wlan0 scan
|
||||
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
|
||||
# network={
|
||||
@@ -310,7 +256,7 @@ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
|
||||
sudo ifdown wlan0
|
||||
sudo ifup wlan0
|
||||
|
||||
# Check if wi-fi is connected
|
||||
# Check if Wi-Fi is connected
|
||||
ifconfig wlan0
|
||||
|
||||
# Turn off
|
||||
@@ -318,7 +264,7 @@ sudo shutdown -h now
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
From here on you can connect via SSH over wi-fi. Unplug monitor, keyboard and the ethernet cable. It might also be helpful to configure a static IP for the Wi-Fi adapter in your router before continuing. Then restart the RasPi, <a href="https://www.raspberrypi.org/documentation/remote-access/ssh/">connect via SSH</a> from a different computer and go on with the setup procedure.
|
||||
From here on you can connect via SSH over Wi-Fi. Unplug monitor, keyboard and the ethernet cable. It might also be helpful to configure a static IP for the Wi-Fi adapter in your router before continuing. Then restart the RasPi, <a href="https://www.raspberrypi.org/documentation/remote-access/ssh/">connect via SSH</a> from a different computer and go on with the setup procedure.
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
@@ -346,11 +292,72 @@ sudo shutdown -h now
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
After the basic installation is done, it's time to bring everything together in the case. All components are connected but we'll wait using the glue gun until everything is tested thoroughly. Especially the webcam might need some in-place live adjustment. The easiest way to do this is by connecting the webcam to another computer while it is already in the case (see bash history below).
|
||||
Now that the RasPi is ready, the next step is setting up all the other hardware components: The speaker, the case and the electronics.
|
||||
</p>
|
||||
|
||||
|
||||
<h2 id="jblpreparation">Preparing the JBL IIIp Speaker</h2>
|
||||
<p>
|
||||
In order to drill the holes for the screws, the speaker has to be disassembled. The procedure is described <a href="https://de.ifixit.com/Guide/JBL+On+Stage+II+Speakers+Replacement/22462">here at ifixit.com for the predecessor</a> which works basically the same way: Remove the rubber pads, then remove all screws from the case. (Don't forget the center screw in the battery case.) Once the speaker case is opened, the circuit board is unscrewed and removed.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Now configure the additional hardware and software that is needed for the player. Before doing that, copy the contents of the <a href="https://github.com/tliero/audiosphere/tree/master/piplayer2">piplayer2 directory</a> (including subdirectories <code>sounds</code> and <code>test</code>) to <code>/home/pi</code> (either directly or via SCP). Have also one of the <a href="https://github.com/tliero/audiosphere/raw/master/documentation/QR%20Card%20Template.odt">test cards from the template</a> ready for testing the QR recognition.
|
||||
I drilled the holes for the M3 screws and the IR LED cable using a <a href="misc/audiosphere_drilling_template.pdf">template</a>. The drill itself is set to rotate left. That way, the holes are more or less melted into the plastic to lower the risk of breaking the case.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
After drilling, washers and screws are added and the infrared LED is glued directly in front of the speaker's IR sensor in order to send it commands. Before that the PINs of the IR LED are soldered to cables that are long enough to connect it to the circuit board through one of the additional holes. Also, all the electronics should be tested together before anything is hot-glued into the case.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
(Disclaimer: Until now, I only did a proof of concept test script for remote contolling the speaker via the IR LED. I am planning on using that component later on via a web app but for the time being you could as well leave it out.)
|
||||
</p>
|
||||
|
||||
<p class="gallery">
|
||||
<a href="images/jbl_01.jpg" class="fancybox" rel="collection02"><img src="images/jbl_01.jpg" width="320" alt="The opened speaker case with the drilling template" /></a>
|
||||
<a href="images/jbl_02.jpg" class="fancybox" rel="collection02"><img src="images/jbl_02.jpg" width="320" alt="The re-assembled speaker with the IR LED in front of the IR sensor" /></a>
|
||||
<a href="images/jbl_03.jpg" class="fancybox" rel="collection02"><img src="images/jbl_03.jpg" width="320" alt="The closed speaker case with the screws that hold the 3D printed case. (This photo was taken before adding the IR LED.)" /></a>
|
||||
</p>
|
||||
|
||||
<h2 id="electronics">Electronics</h2>
|
||||
<p>
|
||||
When the speaker has been put back together, we can go for the circuit board. There are four electronic parts: The optical sensor that triggers the QR recognition, the LED that illuminates the QR card, the infrared LED which we already glued in front of the sensor and the 3 buttons that are used to pause/unpause playback and move within the current playlist. While the buttons and the LEDs are put directly in the case, all other elements are brought together on a circuit board from where they are connected to the RasPi via jumper cables. So this is what we're aiming for:
|
||||
</p>
|
||||
|
||||
<p class="gallery">
|
||||
<a href="images/audiosphere-electronics.png" class="fancybox"><img src="images/audiosphere-electronics.png" width="480" alt="The electronics in a single diagram with the optical sensor on the left, the LED, the infrared LED and the three buttons on the right. (<a href='https://github.com/tliero/audiosphere/blob/master/misc/electronics-final.fzz'>Source file</a> for <a href='http://fritzing.org'>fritzing</a>)" /></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Assembling the circuit is pretty straight forward. Be careful about the optical sensor, though: There are two versions out there, <a href="http://www.vishay.com/docs/83751/cny70.pdf">one from Vishay</a> and <a hreaf="http://smallsystems.isn-oldenburg.de/smallrobots/ws2001/Tischkante/cny70.pdf">one from TEMIC</a> that has the detector transistor upside down compared to the other one. Also note that I used a LED that can operate directly on the RasPi's 3.3 V without a series resistor. If you use a smaller one (which should also be sufficient for illumination), you will need one.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
After <!-- http://www.instructables.com/id/Multiroom-Client-With-Raspberry-Pi-ZERO-and-PHAT-D/?ALLSTEPS --><a href="https://learn.pimoroni.com/tutorial/sandyj/soldering-phats">soldering the PHAT DAC onto the Raspberri Pi</a> (preferably using a <a href="images/gpio-header.jpg">GPIO header</a> that directly routes through all the GPIOs) the used PINs are connected with the jumper cables. <!-- Where these were not soldered to the contact, I used hot glue to fix the connection which worked pretty well. -->
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Once everything is connected together, it can be put in the case for the software installation and final adjustments. All components are connected but wait using the glue gun until everything is tested thoroughly. Especially the webcam might need some in-place live adjustment. The easiest way to do this is by connecting the webcam to another computer while it is already in the case (see bash history below).
|
||||
</p>
|
||||
|
||||
<p class="gallery">
|
||||
<a href="images/buttons_and_circuit_board.jpg" class="fancybox" rel="collection03"><img src="images/buttons_and_circuit_board.jpg" width="320" alt="The circuit board after soldering with all resistors, the transistor and open contacts to be connected via jumper cables. In order to protect the wire cables and soldering points from breaking, I applied hot glue after testing." /></a>
|
||||
<a href="images/phat_dac_soldering.jpg" class="fancybox" rel="collection03"><img src="images/phat_dac_soldering.jpg" width="320" alt="The PHAT DAC after soldering." /></a>
|
||||
<a href="images/phat_dac_soldering_back.jpg" class="fancybox" rel="collection03"><img src="images/phat_dac_soldering_back.jpg" width="320" alt="By my low standards, that is a pretty decent soldering. You can also see the nylon nuts I used as spacers." /></a>
|
||||
</p>
|
||||
|
||||
<p class="gallery">
|
||||
<a href="images/circuit_board.jpg" class="fancybox" rel="collection04"><img src="images/circuit_board.jpg" width="320" alt="I did not solder the jumper wires to the RasPi but also fixed them with hot glue. This keeps them together as a unit, isolates them from one another, and the hot glue can be peeled off if something goes wrong." /></a>
|
||||
<a href="images/piplayer-opened.jpg" class="fancybox" rel="collection04"><img src="images/piplayer-opened.jpg" width="320" alt="Interior view of the AudioSphere player with all components assebled. The circuit board is glued to the front side (not visible from this angle)." /></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
What's missing in the pictures is how to get a screw thread behind the holes in the case: Use super glue to put three M3 nuts on washers (in order to enlarge the surface). When dried, use the super glue again to attach these nuts-on-washers behind the screw holes of the case. (Use the screws to adjust them so you can turn them in and out. I used <a href="http://www.uhu.com/produkte/alleskleber/detail/uhu-alleskleber-superstrong-safe.html?cHash=6d17927cfdf1797595540fe083329e0a">UHU Super Strong and Safe</a> which gives you some time for corrections after applying.) Et voilà, you now got yourself screw holes with threads on the player's case.
|
||||
</p>
|
||||
|
||||
<h2 id="software">Software</h2>
|
||||
<p>
|
||||
Now configure the additional software that is needed for the player. Before doing that, copy the contents of the <a href="https://github.com/tliero/audiosphere/tree/master/piplayer2">piplayer2 directory</a> (including subdirectories <code>sounds</code> and <code>test</code>) to <code>/home/pi</code> (either directly on the SD card or via SCP). Have also one of the <a href="https://github.com/tliero/audiosphere/raw/master/documentation/QR%20Card%20Template.odt">test cards from the template</a> ready for testing the QR recognition.
|
||||
</p>
|
||||
|
||||
<pre class="pre-scrollable">
|
||||
@@ -361,28 +368,29 @@ sudo apt install lirc zbar-tools mc moc fswebcam python3 python-rpi.gpio python3
|
||||
python3 ~/test/lighton.py
|
||||
python3 ~/test/lightoff.py
|
||||
|
||||
# We can also test the buttons and the sensor (press buttons, hold a card on the sensor to see if it switches from 'LOW' to 'HIGH') - stop with Ctrl-C
|
||||
# We can also test the buttons and the sensor (Press buttons to retrieve their ID, hold a card on the sensor to see if it switches from 'LOW' to 'HIGH')
|
||||
# (Stop the scripts with Ctrl-C)
|
||||
python3 ~/test/buttons.py
|
||||
python3 ~/test/sensor.py
|
||||
|
||||
|
||||
# Configure PHAT DAC (<a href="https://learn.pimoroni.com/tutorial/phat/raspberry-pi-phat-dac-install">https://learn.pimoroni.com/tutorial/phat/raspberry-pi-phat-dac-install</a>)
|
||||
curl -sS get.pimoroni.com/phatdac | bash
|
||||
|
||||
# Check for errors
|
||||
dmesg
|
||||
|
||||
# Plug in headphones or JBL connector cable, start mocp and test audio output via the PHAT DAC (Don't forget to turn on the speaker!)
|
||||
# Plug in headphones or JBL connector cable, start mocp and test audio output via the PHAT DAC. (Don't forget to turn on the speaker!)
|
||||
mocp -S
|
||||
mocp -l ~/sounds/scanning.mp3
|
||||
mocp -x
|
||||
|
||||
# Determine the webcams USB ID and the available resolutions (<a href="http://askubuntu.com/questions/214977/how-can-i-find-out-the-supported-webcam-resolutions">http://askubuntu.com/questions/214977/how-can-i-find-out-the-supported-webcam-resolutions</a>)
|
||||
# Determine the webcam's USB ID and the available resolutions (<a href="http://askubuntu.com/questions/214977/how-can-i-find-out-the-supported-webcam-resolutions">http://askubuntu.com/questions/214977/how-can-i-find-out-the-supported-webcam-resolutions</a>)
|
||||
# (The USB ID "001:006" in the second line has to be replaced with the actual ID of the camera)
|
||||
lsusb
|
||||
lsusb -s 001:006 -v | egrep "Width|Height"
|
||||
|
||||
# Webcam test: turn on the LED, take a photo and turn the LED off
|
||||
# (The focus of the webcam should be adjusted before on another computer with a live picture)
|
||||
# (The focus of the webcam should be adjusted to the window distance beforehand on another computer with a live picture)
|
||||
python3 ~/test/lighton.py
|
||||
sudo fswebcam -r 320x240 -d /dev/video0 -v ~/webcam-test.jpg
|
||||
python3 ~/test/lightoff.py
|
||||
@@ -401,7 +409,7 @@ sudo nano /boot/config.txt
|
||||
# # Uncomment this to enable the lirc-rpi module
|
||||
# dtoverlay=lirc-rpi,gpio_in_pin=23,gpio_out_pin=22
|
||||
|
||||
# add lirc configuration to /etc/lirc/hardware.conf
|
||||
# adapt lirc configuration in /etc/lirc/hardware.conf
|
||||
sudo nano /etc/lirc/hardware.conf
|
||||
# LIRCD_ARGS="--uinput"
|
||||
# LOAD_MODULES=true
|
||||
@@ -412,22 +420,24 @@ sudo nano /etc/lirc/hardware.conf
|
||||
# LIRCMD_CONF=""
|
||||
|
||||
sudo reboot
|
||||
<!--
|
||||
|
||||
# Copy the contents of the <a href="https://github.com/tliero/audiosphere/blob/master/documentation/lirc_jbl_iiip.conf">JBL remote configuration</a> to /etc/lirc/lircd.conf then restart lircd
|
||||
sudo /etc/init.d/lirc restart
|
||||
|
||||
# Turn on music, list available commands and test remote control
|
||||
mocp -S && mocp -l ~/adele.mp3
|
||||
mocp -S && mocp -l ~/sounds/scanning.mp3
|
||||
sudo lircd -d /dev/lirc0
|
||||
irsend LIST JBLIIIP ""
|
||||
## Der Befehl muss 2x schnell hintereinander gesendet werden. Offensichtlich muss die Konfiguration noch verbessert werden.
|
||||
irsend SEND_ONCE JBLIIIP KEY_MUTE
|
||||
-->
|
||||
## Apparently the commands have to be sent two times in order to be recognized. I might need to
|
||||
## improve the lirc configuration. As stated above, this is still work in progress.
|
||||
# mute
|
||||
irsend SEND_ONCE JBLIIIP KEY_MUTE && irsend SEND_ONCE JBLIIIP KEY_MUTE
|
||||
# unmute
|
||||
irsend SEND_ONCE JBLIIIP KEY_MUTE && irsend SEND_ONCE JBLIIIP KEY_MUTE
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
When everything works as expected, everything is fixed together using hot glue. I glued the webcam, the circuit board and the USB hub in place so that nothing will fall out of place anymore, even if the player is moved around roughly.
|
||||
When everything works as expected, all the electronic parts are fixed together using hot glue. I glued the webcam, the circuit board and the USB hub in the case so that nothing will fall out of place anymore, even if the player is moved around roughly.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -456,7 +466,6 @@ ps -ef | grep python
|
||||
tail -f /home/pi/piplayer2.log
|
||||
|
||||
# Switch to RAM disk and set the filesystem read-only (<a href="https://www.heise.de/ct/ausgabe/2016-21-Den-Raspi-als-Bluetooth-Empfaenger-einsetzen-3330683.html">https://www.heise.de/ct/ausgabe/2016-21-Den-Raspi-als-Bluetooth-Empfaenger-einsetzen-3330683.html</a>)
|
||||
|
||||
sudo nano /etc/fstab
|
||||
# proc /proc proc defaults 0 0
|
||||
# /dev/mmcblk0p1 /boot vfat defaults,ro 0 2
|
||||
@@ -492,6 +501,15 @@ sudo nano /etc/rc.local
|
||||
# exit 0
|
||||
|
||||
sudo reboot
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
Test if it is read-only now:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
# This should produce an ERROR
|
||||
touch ~/wontwork
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
@@ -509,31 +527,26 @@ sudo mount -o rw,remount /boot
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
# make SD writable
|
||||
# Make SD writable
|
||||
sudo mount -o rw,remount /
|
||||
sudo mount -o rw,remount /boot
|
||||
|
||||
# create mount point
|
||||
# Create mount point
|
||||
mkdir /home/pi/share
|
||||
|
||||
# Share einbinden
|
||||
# Connect smb share on /home/pi/share
|
||||
sudo nano /etc/rc.local
|
||||
# sudo mount -t cifs -o user=guest,password= //192.168.1.125/media /home/pi/share
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
HIER WEITER:
|
||||
- Test-MP3 zu Template und Repository hinzufügen
|
||||
</p>
|
||||
|
||||
|
||||
<h3 id="python">Python Script</h3>
|
||||
|
||||
<h2 id="manual">User Manual</h2>
|
||||
<h3 id="wi-fi"></h3>
|
||||
<h3 id="wi-fi">Configuring Wi-Fi</h3>
|
||||
<h3 id="wi-fi">Connect a network drive</h3>
|
||||
TODO Dropbox?
|
||||
<a href="http://www.techrepublic.com/article/how-to-mount-your-google-drive-on-linux-with-google-drive-ocamlfuse/">Google Drive</a>?
|
||||
<h3 id="qr-cards">QR Cards</h3>
|
||||
|
||||
|
||||
<!-- TODO: http://superuser.com/questions/378786/is-it-possible-to-view-images-in-a-terminal -->
|
||||
|
||||
</div>
|
||||
</body>
|
||||
|
||||
Reference in New Issue
Block a user