Intro: Arduino Based Remote Control for Eskate or Hydrofoil
This instructable will show you how to build a physical remote to use with an eskate or an electric hydrofoil including all the code and hardware you need. There is a lot of soldering involved, but its also fun to make.
What can the remote do?
- Communicate with an ESC over PPM/PWM signal and make it spin a motor.
- It has 2 extra buttons to use for whatever feature you like. (cruise control)It is waterproof.
- It doesn´t have a reverse. Which is a good thing for this application.
- Optional Anti Spark Routine and battery cuttoff if you use a large forklift relay.
Why go this route?
I like the simplicity of Arduino and PWM signal. The code is easy even for beginners like me and I have full control over a lot of parameters. The Arduino can controll the battery main switch even remotely. It also reads temperatures and has a display. All things that the standard VESC either does not have or is complicated to setup. Arduino is cheap, simple and powerful.
What componentd do you need?
- 2 Arduino Nanos
- 2 Push Buttons
- 1 Larger 12mm on/off button
- 18650 Battery
- 18650 Battery Holder
- NRF24 Chip
- Relay Module
- Heat Shrink Tubing
- Header pins.
- Thermistors (Temperature Sensors
- 35mm long 10Kohm linear resistor
Tools you need:
- 3D printer
- Soldering Iron (Great Product!)
- M3 Tap
Step 1: Build the Remote Housing
You probably know how to use your 3D printer. Here are some tips though:
I don´t think you can get waterproof prints. A lot of people tried, most failed. You could only coat them with epoxy which is doable, but messy. I went with a different strategy and I use condom or a glove for waterproofing. Even if your housing is waterproof, it is difficult to find a waterproof button or potentiometer. You will need a cutoff nail for the trigger axle and a piece of stiff wire for the linkage to the linear poti.
The CAD model has a wall thickness of 2mm. This is good enough I think. You can change the model of course.
CAD files (Including Components)
Step 2: Complete Your Remote Circuit.
To connect the RF24 module, the buttons, and the potentiometer, just follow the tutorials below. Use plenty of head shrink and hot glue to isolate everything. After you tested it! This has to work reliably, so you need to do it right. I had no problems connecting the NRF24 module directly to the 3V pins of my Arduinos. No need for the power supply sold separetly. The potentiometer is 10Kohm and 35mm long. I had to look hard on ebay to find it. If yours is different, you need to improvise the housing a bit.
An 18650 cell is used to provide power. This should last a very long time. It gets connected to Vin and Gnd on the Arduino. It only works though if the battery is fresh. If the voltage drops to low, the NRF24 wont work anymore.
Tutorials I used:
Step 3: Add the Remote Circuit to the Remote Housing.
The buttons need to be resoldered to get it into the housing. Make sure everything fits of course, and don´t damage any cables. I guess this step is self explanatory.
I used four M3 screws. 10mm length is enough.
Step 4: Create the Receiving Circuit.
Again, you can follow the tutorials provided in the code and also two steps further up. I used the same pin connections and stated if I deviated from it in the code.
The basics of this are that the remote sends a text variable to the receiving Arduino over 2 NRF 24 chips. That text variable is then converted into a PWM signal that makes the VESC turn on the throttle. This also works with any other ESC, or even just a Servo.
This circuit has the added benefit of the anti spark routing. I have a very large relay that can shut off the connection from the main batteries, so the Arduino receiver also controlls that. This large relay is activated by a smaller relay and a separate relay does the anti spark thing. This process is initiated by pushing a button outside my battery housing.
Step 5: Test Your Circuit.
If everything went right, you should now see the value in the top left hand corner of the display change from 1500-2000 when you push the trigger of the remote.