Software apps and online services
Hand tools and fabrication machines
Comrade Candles is a project based on the idea of having two rooms anywhere in the world synced together with lights and music so long as they are connected to the internet. The devices have buttons that allow changing light color, flash rate, or song choice.
First, we utilized the BeagleBone's PRU capability to operate a three-pin RGB LED strip. The pins of the strip had to be soldered at the ends to jumper wires to improve the connection. You may be able to find an LED strip that does not require soldering, but it is recommended if the ends of your wires are thin and do not provide a reliable connection.
We managed to get the LEDs working by using sample codes from Dr. Mark Yoder's PRU Cookbook, which has some useful examples on how to use the Bone's PRU to change the colors and flash rate of a string of LEDs.
The music playing feature is done through mplayer, which is can be installed on the BeagleBone for free. The audio output is through the USB port on the board and this allows you to choose your favorite USB-connected speaker or headphone device to play music straight from the Bone. You can also use a USB-to-audio out adapter to interface with the Bone's audio.
Audio tracks are preloaded onto the Bone and then can be played while in operation. You can add more files to the Bone's library by using the scp command to move MP3 files from your host computer to the board.
There are four pushbuttons on the Bone which are used to change the LEDs color and flash rate while the other two will change audio tracks and pause/play the current selected track. The software then connects to the URL of the partner device to tell the partner device to mirror your device.
We originally had plans to implement an infrared (IR) receiver to send changes to the Bone via an IR remote, but we had difficulties with processing the signals once they were received.
The IR receiver uses UART communication to send received signals to the Bone. The UART1 configuration can be done by adding a BBB_UART cape to /boot/uEnv.txt on the Bone or via Adafruit's UART module in Python, but remember that you cannot do both. After configuring the UART, you can print the UART messages by using pySerial.
Our issues came after this, however, where we had inconsistent signal readings for the same button presses on the remote, and the signals between different button inputs were too similar to distinguish them from each other by calculating the Hamming Distance.
Examples and documentation from working on this feature have been left in the GitHub repository along with the working project code for you to investigate at your leisure.