A couple of months ago I started building an electric longboard and since then I've been using as a controller one of those big gun-shaped radios used for RC cars.
Not very good.
They are unnecessary big and heavy, the battery lasts too little (and cost too much) and you can't add any custom functions.
There's also the nunchuck way, which is very common among EL builders, but I don't really like the idea to have to keep my hand in a locked position to have consistent speed. Use the lever to set an acceleration? Even worse.
Having a self made bluetooth controller comes handy and has many advantages:
1 - It's way smaller, even if handmade. An integrated SMD version would be probably half as big.
2 - You can add a bunch of custom functions. Like battery check, lights control, music, autopilot, wormhole and others.
3 - I't open source :)
Details
I want this controller to be cheap, functional, easy to use, pocket sized.
[to be completed]
Components
2×
Arduino Pro mini
I used the 3.3v version which goes perfect with the 3.3v logic of the bluetooth module. Also, is consume less power, so the battery lasts longer
1×
ITEAD HC-05 Bluetooth module
It has to be HC-05, since HC-06 only acts as slave
1×
ITEAD HC-06 Bluetooth module
For the receiver. Also HC-05 works, but 06 is cheaper...
1×
RX PCB board
You can either use my version or design your own :)
As said before, the controller will feature an internal battery charger. Today I decided to use the MCP73831, so I rapidly drew a schematic (to be honest, I just copied the typical application from the datasheet) and carved it on the CNC.
Again, a wofis (worked on first shot).
It's made with tht components, but on the final board will be smd, which means ridiculously small.
Love it when things just work
Easier to solder than I thought
The LED turns on when charging, off when battery full or disconnected.
Really happy with the result, totally recommend the device. I will not upload this schematic because it's not strictly part of the controller, but something very similar will appear on the final version :)
This morning I've been working on a receiver board. This is the first prototype so, unlike the transmitter, it's meant to work at 5V. This way you can use your onboard BEC without any other electronics.
The board features:
Programming header
AT-MODE "switch"
ESC connector
Header for when the lights will be ready
Another generic header, for whatever
Remember that this is a (working) prototype. The final board will be much smaller and thinner, as everything will be SMD.
Just finished carving the board. Went like a charm. 10% of the time carving, 25% drilling, 65% milling it out.
The board mounts an HC-06 BT module. You can also use an HC-05, but you have to configure it first, since I forgot the prepare the board for the AT-MODE pin...
Way better than a perf board...
The real surprise? It worked first shot.
For real.
I mean, I plugged it in and it worked. Is that even legal??
Added a primitive 3d printable enclosure for the controller. You can grab it on GitHub. The hole on the top part is thought to be used to place a photo resistor, as a presence sensor.
Any thoughts on that?
I don't really like the idea to keep a button constantly pressed...
[The guide is not complete, is more kind of a guideline]
Gather the PCB and solder on it the various headers and the bluetooth model. Be sure to use the 3.3V version of the Arduino pro mini. You can either solder the Arduino on the board or place a header to make it detachable.
2
Step 2
Customize the firmware
At the beginning of the sketch there are a bunch of #define lines that allow you to configure many parameters, the most important of which are the ones regarding the bluetooth communication (and they have to mach with the receiver's parameters).
[Will add a detailed description some day]
3
Step 3
Flash the firmware on the Arduino
On this board you obviously need to flash the TX.ino firmware (found in the files tab). You can use the programming header available on the PCB. For general instructions on how to flash an Arduino pro mini look here.
Note that you need to remove the RX and TX jumpers before flashing, otherwise the bt module will interfere with the communication and you'll get not in sinc error.
[I'll upload a pinout of the board as soon as I can]
I had the same issue as you for on my electric mountainboard. using a nunchuck or X-box trigger was just asking for disaster. Every bump turns into the board trying to get out from under you!
Have you considered adding a momentary switch to allow for deadman cutoff? The rotary is definitely a good way to go to prevent bumps from pulling you off, but the lack of a spring return (which would likely get you back to bumps causing throttle movement) means your board can become a missile if you get knocked off. I've been fortunate enough that my mountain board didn't get away from me (because I was inside a building testing it) but scrubbing the skidmarks off a hundred yards of hallway took a good afternoon to do.
Ahahah man I'm sorry for your hallway! First of all, thanks for your appreciation, means a lot to me :)
The momentary switch is almost a necessity on a controller like this, in fact that is already implemented. What I mean is that the PCB has a connector made to attach a momentary switch and the firmware is constantly checking if it's pressed. Right now, I'm using the controller "PCB in the hand", without any case, so the switch would be really hard to use. That's why it's connector is constantly shorted by that white jumper you can see in the image gallery, and removing it would cause the board to stop. Also, on startup, even if the switch is pressed, the firmware waits until the accelerator is all the way down before start sending any non-zero acceleration to the longboard. That prevents you from accidentally turning on the controller full speed and destroying everything.
Also, I don't really like the switch thing... I think it becomes uncomfortable after a while, so I'm considering other options, like:
- A photoresistor, that calibrates every time you turn on the controller. Not the safest thing in the world...
- A touch sensor. Maybe a little bit of an overkill, and you couldn't use it with gloves...
- Modulated infrared distance sensor. I think this is the best in the list, and I'll try implementing it someday (if no better idea jumps out)
Let me know what you think, totally open to suggestions :)
I'd be inclined to implement something on the board itself, to be sure that someone is still standing on it!
Thinking of failure modes for a switch on the controller, if you fall off, you may be inclined to hold tighter to the controller than drop it, preventing it from operating.
Obviously, you could cover a sensor on the board, but you could equally well tape over the switch on the controller if you wanted to defeat it!
Perhaps as you do for the accelerator dial, require that the user climb off the board (activate the dead man switch in some way to "prove" that it is functional) while the board is stationary, before accepting any motion controls?
I had the same issue as you for on my electric mountainboard. using a nunchuck or X-box trigger was just asking for disaster. Every bump turns into the board trying to get out from under you!
Have you considered adding a momentary switch to allow for deadman cutoff? The rotary is definitely a good way to go to prevent bumps from pulling you off, but the lack of a spring return (which would likely get you back to bumps causing throttle movement) means your board can become a missile if you get knocked off. I've been fortunate enough that my mountain board didn't get away from me (because I was inside a building testing it) but scrubbing the skidmarks off a hundred yards of hallway took a good afternoon to do.