ESPnow Telemetry RC
I’ve never been really satisfied with the available remote control solutions. You always have one link/frequency for remote control and then depending on your usecase one or two more for telemetry and/or video. This was something I always really appreciated about my DJI drones, I only need one device and one data connection. Whilst there are some options out there, commercially and diy, they are all pretty expensive for my taste.
A step in the right direction for me was the upgrade to a Jumper T16 in combination with Yaapu telemetry. Finally I could see all the messages from the drone on my remote control. But one thing that still annoyed me was the fact that I couldn’t connect a phone or laptop and have MissionPlanner or QGroundControl running via the same datalink.
I don’t know how and why but someday I stumbled across @Eric_Stockenstrom’s MavToPass software and thought to myself it would be cool if I could intergrate the transmission directly into the MavToPass software. A few weeks later I came across @Yuri_Rage’s ESPnow Serial Bridge. And then it hit me, I have both parts and I “just” need to combine them. And that’s exactly what I did. So a great thank you to the two guys mentioned above, most of the work was done by them and I couldn’t have done it without them.
The result
The result is what I call the ESPnow Telemetry RC, since it is a standalone JR module you can plug into the back of your transmitter and just fly as normal while monitoring all your data with the Yaapu telemetry plugin. But if you want more information about the vehicle, use guided mode or something else, you can just connect your mobile phone to the transmitter and have a full GCS up and running, without another telemetry module on your drone. And since the ESP is quite cheap, you can get all this for less than 20 bucks.
So what did I change/add?
The biggest change was to add another telemetry source to the MavToPass software, the input via ESPnow. The receiver on the drone is just the ESPnow Serial Bridge. So with this change it became a telemetry radio but the remote control part was still missing. I solved this by implementing a PPM input in the MavToPass software and just sending this data to the drone on the existing telemetry link with the RC_Override message. So as you can see, my changes are minimal in comparison to what has been done by other people.
Sounds cool, I want to try it myself!
First of all I’m flattered that you are interested in what I did. The code is available on github for you to check out, use and modify. I wrote some information on github on how you can set it up and what to look out for. GitHub - Vabe7/ESPnow-Telemetry-RC: A RC and telemetry solution based on ESPnow But also here I wan’t to point out that this isn’t a well tested software, so you use it at your own risk!
For the receiver I suggest that you head over to the repository of the serial bridge to find possible hardware options: GitHub - yuri-rage/ESP-Now-Serial-Bridge
I personally ported the code to an ESP8266 since I only had one ESP32 available when I started testing, I’m working to get this changes into the repository.
For the JR module I used an ESP32-WROOM-32U module to have an external antenna and as casing I modified the cover of this QLRS JR box V4 LRS by qlrs - Thingiverse to fit my standard SMA connector.
Further steps
To be honest I’m not sure if I will pursue this project any further, since I’m mostly interested in a proof of concept and since I controlled my drone today with it, I’ve reached this point. I have some ideas on how to improve it, but I’m not sure if I’ll find the motivation and time for it. The idea is here and I’ve proven that it works, maybe I’ll pursue it further, maybe not.
But here are my ideas what could be done in the future:
- Binding procedure and multiple receivers: Right now it is only possible to connect to one receiver through putting in the MAC-address while compiling the program. Ideally there would be a binding procedure and a model storage with some way to choose a specific receiver.
- PPM input implementation: Whilst it works my solution for the PPM input leaves much to be desired. It creates latency since it only sends away a package if the next has already started to arrive and PPM isn’t the best protocol anyways.
- Adding RC output on receiver: Right now the control signal gets transmitted to the flight controller through the RC_Override message, in the future this could be done with an extra SBUS or PPM output on the receiver.
- Prioritize control over telemetry: Right now the RC_Overrride message just gets added to the send buffer and gets send when everything before it has been sent. Ideally a control signal would always be sent directly.
Also I’m not sure on how I want this project to live further. As a part of MavToPass since it’s the same thing just with the added ESPnow input and PPM input, or as a new project since it drastically changes the usage of the software and is also not compatible with most of the hardware supported by MavToPass and also some software options (you can read a bit more about this on github).
So thank you for your interest in my project and fly safe;)