TL;DR: I build a low-cost tracked vehicle with a ESP32-CAM module, which can be controlled via WIFI with an Open Source Android app ESPHomeRC.
snowmobile_lq.mp4
You need:
-
an ESP32-CAM module like this
-
a platform with tracks and motors like this
-
an H-bridge module like the MDD3A
-
2-4 Li-Ion 18650 batteries like these and a holder
Connect the H bridge to the ESP32 like this:
ESP Pin | H Bridge |
---|---|
GPIO14 | M1A |
GPIO15 | M1B |
GPIO12 | M2A |
GPIO13 | M2B |
5V | 5V |
GND | GND |
The firmware is completely open and easily hackable. It is based on . You just describe your setup in a yaml file and a firmware will be generated.
Get a 3.3V USB to serial adapter (like this) and connect it:
ESP Pin | ... to |
---|---|
GPIO0 | GND |
3.3V | 3.3V |
VCR | RX |
VCT | TX |
GND | GND |
esphome run snowmobile.yaml
Then you can control your vehicle with this Open Source Android app ESPHomeRC.
An example for the javascript controller running on your android device is given here:
outp = {};
outp.display = "Hi from everest controller, I am running because " +
inp["reason"] + " at " + inp["timestamp_ms"] + " ms";
if (typeof i == "undefined") {
i = 0;
}
i++;
outp.display += " i=" + i +"\n";
//outp.log="log " + i + " " + inp.user.x + " " + inp.user.y;
var fwd = inp.user.y * 2.0 ;
fwd = Math.max(Math.min(1.0, fwd), -1.0); //limit to +-1.0
var lr = inp.user.x;
if (Math.abs(lr) > 0.3)
lr = lr * 1.5;
else
lr = 0.0;
var left = fwd + lr;
var right = fwd - lr;
outp.hbridge = [
{"index":0, "strength": -left * inp.user.aux0 , "brake":false},
{"index":1, "strength": -right * inp.user.aux0, "brake":false},
{"index":2, "strength": inp.user.aux1, "brake":false},
];
outp.user = {};
outp.user.aux_labels=["vmax", "light"]; // aux0 = vmax, aux1=light
outp.user.interval_ms = 10000 ;// regular interval to call this script, 0 means as fast as possible...