Pages are not fully translated for the English language.

Latest posts

Universal remote controller, version 2 (2014)


Since the previous version of the remote controller had been becoming obsolete, I decided to design and build new and of course better one. I definitely wanted more control parts and LCD display compared to the previous version.

I found a little thumb joystick during my check-catalogue-routine, which gave me the idea to build a brand new remote controller. It’s a common part of game consoles and it consists of two trimmer and push button.

The next step was to choose an LCD display. I chose a version without backlight in order to cut-off power dissipation. I wanted be able to turn the display off as well. The final decision was to buy a 16x2 letters size. I put 6 switches above this display and 4 potentiometers bellow. The remaining space below thumb joysticks was used to place 4 buttons on the left and 4 buttons to the right side.

Since I bought another XBee module it would become a loss not to use it. This gave me an idea to control multiple XBees at the same time. I decided to control up to 4 different end devices. Each device is selected using dedicated button and has LED diode indicating its state.

I faced a problem how to put all the stuff into reasonable area. The processor, battery box and the components (switches, LCD, …) take a lot of space. Moreover, I chose to use greater count components than is the count of available pins on the processor STM32F100. I had to multiplex the all switches and buttons using a matrix.

After I designed the main module for connecting all the peripherals I realized that I can’t place anywhere a PCB of such size. I gathered all my courage and design my very first two layered PCB. This way I reduced the size almost to the half. Manufacturing PCB with both bottom and top layer is quite difficult at home without any proper equipment. But I managed.

After I assembled the remote controller I discovered that I am not able to close the remote controller thanks to a wild maze of wires. So, I had to change placement of all components. I decided to put the main module right above the display using a common rubber. All the wires from the peripherals thus could remain in the top part. Now I could finally close the remote controller.

The next step was to program entire communication between more XBee modules at the same time. I tried really hard to find some libraries, but I found nothing reasonable enough. I had no other option but to study XBee communication myself. I chose transmission using API mode. So, I studied all commonly used packets and created a library to manage entire communication between more XBee modules. This was really very difficult. Not only the programming part was not so easy but also entire configuration of the modules was quite chalanging.

Nevertheless, I managed to build this remote controller up to my expectations. The controller consist of totally 24 channels:

  • 6 switches
  • 10 push buttons
  • 8 potentiometers

The remote controller automatically keeps connection with all enabled end devices at the background. The state of all devices is marked using LED diodes above buttons selecting the devices. The LCD display can be used not only for settings the controller but also for debugging or receiving messages from end devices.

It took me roughly three months of night shifts to build this controller. Thus, it took me a great amount of effort to develop it into current state and functionality. Nevertheless, I believe it will enable me to create more sophisticated creations thanks to its great potential.

Pictures, schemes, videos

Click the image to show it in higher resolution
Thumb joystick with button
Tinned PCB of the main module
Assembled main module
The pilot version using pasteboard
Drilling the holes in the box
Manually cut boxes for the controller
Assembly of thumb joystick and battery box
The first version with the main module and processor next to each other
Partially connected perihperals
Wires from peripherals in the top part
Assembled top part of the controller
New placement of the main module
New placement of microprocessor and voltage supply
Final connection of perihperals, main module and microprocesor
Final realization of the remote controller
Template for component assembly / Topology
PCB - bottom
PCB - top

Source codes

Click the label to show the source code
RemoteController.c: main file
RemoteController.h: header file
RemoteController.pdf: documentation

Back to Robotics STM32.