ERU: Turning up the volume

Part 1 of the Electronics for the Rest of Us series

Team and authors: Lauren & Andrew

The big picture

The Arduino Uno is an affordable, easy to use, microcontroller board that brings extensive creative possibilities to the general public. For this particular project, we intend on producing an infrared remote and receiver to be used in conjunction with a computer application to play music files stored in a specified folder. The remote should be produced with the following functionalities:

  • Skip a song
  • Play the previous song
  • Adjust the volume
  • Light up to the music and ambient noises

The remote

The goal of the device is to show the capabilities of the Arduino in transmitting, receiving, and processing both analog and digital signals. The remote is needed to transmit signals encoded as IR pulses which correspond to the binary representation of ASCII control characters, which in turn is used to indicate the signal being sent (whether it is for volume up/down, next song, last song, etc.). Simple push buttons will be employed for the skipping commands and a SoftPot Membrane Potentiometer will be used for the volume control to allow for intuitive usage. An RGB LED on the inside of the remote case will illuminate the device in response to the amplitude and frequency of the analog signal read from a piezoelectric transducer. The processing of the control commands and audio signal will be handled all by the board’s microcontroller, with the audio processing ceasing when commands are being sent.

The receiver

The receiver itself will use a second Arduino board to detect infrared pulses, digitize the signal and send it to the application via serial communication, such as through a USB port. Due to the noisy nature of optical signals and a high probability of the signal only being partially detected, the digital signal would be better processed using the CPU of the computer. By sending a repeated signal, the application can look for the most repeated sequence in the detected sequence over a specified period of time and apply the command. This method of processing the signal should aid in accurate detection and ease of use. A delay in a signal acquisition period where a signal is detected and the time when a new signal is acquired will be needed to ensure that the command is not implemented more than intended from pushing the button (essentially a debounce procedure).

The application

Behind the lights and hardware, a computer application will need to be written that can listen for commands and pass them to methods for controlling the volume and track being played in a playlist. To make the process of writing such an application and incorporating an easy to use interface, Visual Basic 2013 will be used as the language of choice.
Unfortunately, this will limit the devices use to Windows computers only. Some challenges that may become present in the writing of this application is a need for multithreading to allow for the music to be played while the program
simultaneously listens for commands.


  • 2 Arduino Uno Boards
  • USB or Serial Cable
  • Piezoelectric Transducer
  • Push Buttons
  • Infrared LEDs
  • Infrared Detector Diodes
  • SoftPot Membrane Potentiometer
  • Assorted Resistors
  • 2 Device Boxes
  • 9V Battery Adaptor (to power the remote using the Vin pin and the adjacent ground)

Timeline – 8 weeks

Week One

  • Construct RGB LED section of the circuit and record design in Fritzing
  • Set up buttons and IR LEDs on the remote circuit and create a table of signal codes for the various commands
  • Test using the SoftPot to change the frequency of a blinking light

Week Two

  • Make a simplified Arduino circuit to send serial signal when a button is pressed through a USB
  • Determine how to read the binary into a variable in VB
  • Create a class to read input and process it to find the most probable signal from one with noise given a table of signal codes

Week Three

  • Continue working on signal acquisition and processing script
  • Incorporate the SoftPot into the remote design and determine appropriate signal codes for it as well

Week Four

  • Finalize remote design
  • Finish signal acquisition script

Week Five

  • Modify the USB communication sketch and circuit to take IR input and send a digitization of the signal to the computer
  • Test the acquisition class’ efficacy, modify if necessary

Week Six

  • Finalize receiver design
  • Finish Fritzing circuit diagrams
  • Code the application with interface for playing music from a local folder with control through a GUI

Week Seven

  • Incorporate signal acquisition class into the media player application to pass the acquired serial commands to control actions in the application
  • Continue testing for efficacy and make hardware/software modifications where necessary

Week Eight

  • Using device boxes, project boards, and the Fritzing diagrams, solder the components into a more compact arrangement, mounted within a device box for a clean and professional look.
  • Test again to ensure the device performs appropriately
Posted in Blog Tagged with: ,

Leave a Reply

Your email address will not be published. Required fields are marked *