In Log #12, I shows the latest updates to my BluJoy Hoverboard controller. After the initial tests using the HM-11 Bluetooth interface, I decided to try using the newer HM-19 module that supports Bluetooth 5.0 BLE.
Suffice it to say this was not a very satisfying experience. Yes, it did cut the power demand on the controller battery, but it was fraught with other issues. Despite being touted as fully compatible with the HM-11, it had several very key differences in the AT command structure which caused no end of problems with my code, and the reliability of my hoverboard control strategy.
Simple areas where they could have maintained backward compatibility, they did not. Such things as changing the codes for Baud rate selection, and minor changes in the wording of responses.
So... I am currently sticking with the HM-11 which seems to do a fine job of wirelessly transmitting joystick commands to the Hoverboard.
I also enhanced the PCB board design to reduce it's size, and provide some additional LED system status.
In the picture above, you can see the original PCB below, and the new one above. By reducing the width, it's possible to fit this new board inside the shell of a gamepad controller. The pads across the bottom can be used for a switch based joystick, or a potentiometer based joystick.
The current PCB, Schematic and PIC firmware for this board are all available in the Github Repo linked in this project's main page.
Below you can see this new PB integrated with a potentiometer joystick. Two AAA cells are located below the board for power. Wires run to the two Pots, and an E-Stop button.
There are two buttons on the PCB labeled TYPE and SPEED. The TYPE button is used to set the type of joystick interface required. Currently this can be either Button or Potentiometer. As more adaptive interfaces are created, these choices can be expanded. The SPEED button lets you choose between nine (9) different max speed ranges. These span from snail-pace to super-fast. The last chosen settings are saved in FLASH memory and automatically recalled next time the unit is powered up.
The firmware uses several power saving features to extend battery life. The CPU is normally in Deep Sleep mode with the Bluetooth module and joystick powered down. When the E-STOP button is clicked, the unit wakes up and looks for it's matching Bluetooth device on the hoverboard. If it's not seen in a short while, the unit powers back down again. If it sees the Hoverboard, it connects and starts sending joystick data.
If the Hoverboard is no longer communicating (because it's been powered down, or gone out of range) the joystick powers back down into deep sleep mode.
The matching HUGs firmware on the hoverboard also monitors the Joystick communications and immediately stops driving if the joystick data is missing for more than 0.5 seconds. It can also be commanded to shutdown completely if the user presses the E-STOP button for a second or more.
As an aside, I'm eager to try adapting some other joysticks. In particular I'd like to interface the Byte mouse described on another Hackaday project.