FireFly OS Remote Mini
Introduction
Since I couldn’t find any tutorial from beginning to end on the custom DIY remote with battery and OLED display based on SolidGeeks code, I thought I’ll open a thread for people building their own Esk8 remote. This thread is for discussions, but tutorials / explanations too, as SolidGeek seems to not work on that project any longer, and its still missing documentation about the wiring and all of the software. This thread is for people that are stuck on the software side due to missing documentation and tutorials, or even before that. Also, any resources with information are welcome.
Here’s the link to the original github
Here’s another source:
Features
-
100m/1000m range
-
OLED Display
-
Telemetry
-
250 kb/s communication (fast!)
-
Rechargeable LiPo Battery that lasts for days
Parts Overview
Tools
- Access to a 3D-printer (budget solution: Creality Ender 3)
- Soldering iron (and soldering tin)
Electronics
- Two Arduino Nano (with a dedicated 3.3V voltage regulator)
- Two nRF24 modules
- 128×32 OLED display
- 5V step-up regulator
- 3.7V Lipo battery (>400mAh recommended)
- Lipo charger TP4056
- Linear Hall sensor
- Female Micro USB (or whatever port you wish)
- Micro limit switch
- Small power switch
- A bunch of thin wires (30AWG silicone wires works great)
- A few different capacitors and resistors
Mechanical parts
- All 3D-printed parts - files available here
- Two Ø5mm neodymium magnets
- A small 20mm spring
- Three M4 12mm bolts
Enclosure / Mechanical Parts
- The enclosure of this remote has to be 3D printed. If you don’t have a 3D printer, ask a friend or use one of the online services. They will print it for you and send it to you!
- 20mm metal spring
- Two neodymium magnets with Ø5mm diameter
- Three M4 12mm bolts
Electronics
NRF24L01+ comparison
This is going to be your main chip used in this build. iIt handles all the signals and data coming from the remote to the VESC and vice versa. So let’s talk about which design of this chip suits your need
the best.
There are a lot of different versions of this 2.4GHz Transceiver (IC that can be used as Transmitter and Receiver). Here i want to quickly name a few key differences between each design available on eBay, aliexpress, Amazon, you name it!
The one that originally was suggested for this remote is the YJ-13039 NRF24L01+ PA LNA (thats a long name…).:
Theres a lot of other designs for this chip, some have a better but larger antenna, some are shorter, etc.
Note, that any other version than the standard have a different pin layout. The standard one comes with 8 small holes in a row with 1,7mm pitch, whereas the other ones you might see on eBay and Co have 2 x 4 pin layout with pitch like on a breadboard or arduino. This shouldn’t be a problem if you can manage to work with the presoldered male pins on the 2 x 4 layout, but increases size.
Also it should be obvious, that the large antenna is way better then the zig zag pattern thing (missing the word for it). You can expect up to 100m signal with non-antenna modules, and up to 1000m with these attena modules, needing a lot of space. Since you won’t be 1000m meters apart from your Esk8, the antenna arguably is overkill for this build. In the end it’s your choice!
For both NRF modules used for this project, it is recommended to put something isolating over them, heatshrink or tape will do just about fine, in order to surround the module with aluminium foil. Make sure to leave a gap where your antenna is. This eliminates interference and signal noise, and is said to be critical for a working / not working remote.
Transmitter
The Transmitter is the most tidious part, since you work in a very small space. The schematic also seems confusing at the first look, but we will go step for step about it.
We will split this into to sections, the first one being the powering electronics and the second being the Arduino, OLED display and NRF module.
Battery and Power
Now its time to take your battery, charger module and your 3V to 5V boost converter. The plan is, to connect the battery to the charger module and the charger module output to the boast converter. The output of the boost converter will be your power source for the Arduino etc. You will also need your switch and micro USB connector.
First, we need to replace the SMD Resistor on your charger module. It’s necessary because otherwise your lipo would be charged at 1A which is far too much for this tiny battery. In order to not see the magic smoke coming out from it, we need to pick a Resistor. Around 5kOhm works best here (I used a 4.7kOhm one). Desolder the SMD Resistor carefully and toss it away, as you won’t need it anymore. Now, somehow connect your Resistor to the tiny solder pads (polarity doesn’t matter so you can’t do anything the wrong way, just make sure they’re connected, but don’t let the legs touch eachother!).
Now that that’s done, solder your battery + (red) and - (black) terminals to the Bat+ and Bat- of your charger module. Then add one more wire to each of the ports like so:
Next, you can solder the black (-) wire to the input-labeled on your boost converter. You can already add two wires on the + and one wire on the - terminal of the boost converters outputs. The additional wire on the + will be used to read your battery level with the help of the Arduino.
Solder two wires to your charging connector of choice. Look up the pinout of the connector so you know what’s + and -. Then connect the wire coming from Bat+ on the charger module and the wire from input+ of the boost module to the switch like so: Again it doesn’t matter how you do it. Just solder one wire to the middle pin, and the other one to a border pin.
Done!
Well… Almost atleast. Now you’re going to make sure nothing will short, and cramp the two PCBs and the battery in the enclosure somehow. Also, put your USB port and switch in the wholes made for them.
Now you’re done!
Arduino, OLED and NRF
Put the top plate on. This is where your Arduino and NRF module will be placed on.
The transmitter has pretty clear instructions, but here is a small guide to it:
Receiver
Requirenments / Parts
Assembly
The receiver is more of a mystery, here’s what I could find out about it:
Software
For the software side of things, you’re going to need bla bla bla
Extras
There are many newer versions of this model. One for example is the Firefly Nano by StefanMe which uses a Feather M0 as a core. It requires less soldering and has better performance.
DroidSector made a remote using the Heltec Lora development board. It already has radio and an OLED on it, which is 128 x 64 compared to the 128 x 32 one on the original Firefly. You save a lot of time and effort on the soldering, but it’s pricier and you need the module matching your countries laws (the 915MHz module is illegal in German etc.).
My first build of this remote turned out to be anything but easy and funny. The solder connections are so tiny, and the space youre working with is tiny too that it is no pleasure to solder everything.
Here are some problems I ran into, you should try to avoid:
-
Don’t work inside the shell, place your components inside to see how long your wires need to be (28-30 AWG, so really thin wire). After that, take them out! Trust me, it’s so much easier working outside of the enclosure!
-
Strip your wires ends before soldering anything. If you have no stripping tool which cuts the plastic / silicon from the wire, you will need to use your teeth or a small knife in order to strip your wires.
-
Make sure you use heat shrink or other material that isolates as many “open” solder joints as possible. You don’t want to accidently short anything (This is very likely to happen sooner or later, trust me. I killed my Arduino Nano and the 3V to 5V boost converter on my first try. It’s frustrating to wait for new parts and then redo all of the work.
-
Really pay attention to your wire length. The wires may seem flexible, but trust me, if you have to cramp anything inside the enclosure, the wires are anything but easy to bend, without breaking solder connections. Because of that, I would recommend:
-
Some sort of adhesive (hot glue will do just fine) to prevent any connection breaking, when cramping into the shell, or even worse - when riding!
-
Buy the parts recommended. I accidentally bought a TP4056 with additional features, like a separated battery and output pin, with discharge protection. But this made the PCB 2mm bigger… So I couldn’t fit it inside the remote
The process of building this remote might be the most frustrating thing in your live, but trust me, it’s worth it! The result is just so enjoyable