Making a Wifi Telemetry using Arduino UNO R4 Wifi

Hi builders!

So, recently I was setting up my quad (With Holybro Kakute H743 Wing Flight controller) for a Quicktune calibration using AMC (Ardupilot Methodic Configurator) and i found that we require the use of a Telemetry module for such Calibrations to view data live.

But.. I lacked a 50$ radio Telemetry module.

So, I decided to build my custom wifi Telemetry using My already kept Arduino UNO R4 Wifi OR Raspberry Pi 4B.

I firstly tried with Raspberry Pi 4B, but it proves to be a power hungry monster, and so, it requires a smooth external BEC which can supply him 5V 3A. Or otherwise, even the smallest of fluctuations in BEC will reboot it.

Then, I started with Arduino UNO R4 Wifi.

I made simple connections as follows=>

FC’s 5V BEC supply to Arduino’s VIn pin.

FC’s GND To Arduino GND

FC’s T7 (SERIAL1, Telem1) to Arduino’s Hardware serial, RX (Digital Pin 0)

FC’s R7 and Arduino’s Hardware serial, TX (Digital Pin 1) left unconnected (just for now, but we will connect them using a self-made logic level shifter in a while).

The first problem we face is that, The FCs are generally working at 3.3V Logic level, and Arduino works at 5V Logic level. So, Any signal sent from FC to Arduino, will generally be considered as “HIGH” by Arduino, But any signal sent from Arduino to FC, will fry the MCU.

So — We require a logic level shifter.

But, instead of purchasing it, I made it myself on perforated board supercheap using just 3 jumper wires and 3X 10K Ohm resistors, and no Transistor related Circuitry involved!

This is how to make it:

Since Arduino nicely reads any signals Sent by FC as “HIGH”, so, we only require a Logic level shifter on the Arduino Tx → FC Telem Rx. And we will make a “Resistor Voltage Divider” to work as a logic level shifter here.

Firstly, here are its schematics:

Since the resistances are same, there will be an equal voltage drop across each resistor. So, 5V/3 = 1.666666…V drop across each resistor.
Hence, we get nearly around 3.34V right after the first resistor.

I built/soldered the Above circuit over perforated Board, and mounted it on drone landing gear like this =>

Now, Connect the Arduino UNO R4 Wifi to PC with type C cable, and upload this code =>

Arduino_UNO_R4_WiFi_Telemetry.zip (1.4 KB)

Further, Install a GCS Software in Mobile phone (I have used QGC Android), or simply use mission planner/QGC on PC (If you like carrying a whole PC To the field)
Power up the drone, connect to Drone’s Wifi, and then open the GCS. Most probably, The GCS would automatically detect heartbeats and connect to UDP over default port 14550.
If GCS does not detects the Quad, then connect manually by selecting UDP protocol (Not TCP), and entering port number as “14550”.

You will see the HUD Get populated, and you can also safely transmit the Data from GCS to Vehicle.

This was a simple demonstration to build a Wi-Fi Telemetry using an Arduino UNO R4 Wifi board.
Thanks. Your Opinions are respected.

1 Like

Nice, but you could have used an ESP32 which would have been less bulkier than an Arduino which itself uses an ESP on it for the WiFi, mind you. If you get one with an external antenna connector, you can attach an external antenna to get more range.
There’s also a project called hx-esp32-cam-fpv on GitHub which enables you to transmit both images and telemtry at the same time but I haven’t got the time to test this using a PC alone without the ground station equipment.

1 Like

I knew Anyone who would read the post, would say this for first, for sure :sweat_smile:
Actually, This all was done, not to make the most efficient thing, But to just implement an idea which came to me, in the case when i really didn’t had even a single ESP32 With me when i built this whole project. (Although now, I have several kind of esp32 boards, As Geofrancis sir sent me many valuable items, just as a gift).
.

@geofrancis sir also sent me an ESP32-CAM module. Will use it for sure to test that.

1 Like

I use ESP8266 ESP-01 modules. They cost $1
ESP8266 Wifi Telemetry

2 Likes

As a first simple but good approach using existing modules. I like this.
But this module is combination of a simple Arduino UNO as main controller and an ESP32S3 as Wifi controller. And so far I see it is also only using the ESP32 printed antenna, so range would be limited.
Do you have checked the range?
Is it possible program the ESP32 itself to use all its resources?
If yes, you can get a little extended range by using ESPNOW combined with ESP LongRange Mode and reduced datareate to max 256 KBaud on radio channel. But than you also need a second ESP on GCS side.

I have one and they heat up like crazy, even when wired up correctly

I have probably 10 and have never seen that problem.

1 Like

Yes, the MC does heat up for me but its like that I guess. Anyway, when flying, the propwash keeps it cool.
Could also be due to bad antenna design on these cheap boards but using a commercial 2dbi antenna as an external antenna, I still have the problem

Can you just touch your finger to the metal can and check? Just curious. Are you running DroneBridge?

No point. I have been using these for years on most models. They always work, none have failed. Flashed with MAVESP8266 as per the link above. And what metal? They are ESP-01S modules.

It’s not about failure. Mine works reliably too. It was just about the heat generation. Since you use the 8266, not sure, but I think ESP32s do heat up

Yes,

The signal starts stuttering when drone is nearly some 55-70m away from me in an open field with relatively less interference.

But in the middle of an urban colony, with many wifi Fibres and mobile Hotspots running, the range comes down to 30-40m.

.

Aa, Not so easily. It is possible, but then we require access to the ESP32’s pins, which are not exposed on this UNO R4 Wifi.

And, even if we flash custom firmware into it, then, the “WifiS3” Library of Arduino becomes unusable, and the main Renesas R7FA4M1 MCU cannot communicate further with The ESP32 S3 Mini chip.

So, It’s doable…

But On the cost of Removing the pre loaded communication firmware installed into it from factory. Rather we may use a standalone ESP32/8266 only :sweat_smile:

1 Like

I have this module now: (ESP8266 in it)

And even tried powering it up and Using it. No signs of heat at all in it. :100:

Mine is slightly different. One esp ic and one 8 pin ic, no metal can

That’s a lot of range

My analog VTX doesn’t even get this far

My average esp goes 2-3m from router

Metal can is over the IC. So its essentially the IC heating up

Yes. The metal can ig serves a purpose of preventing interference as it is grounded

I use these. Range ~50m in the open.

1 Like

I used That local 600mW TS835 VTx with Pagoda-2 antenna. Oh what a range I have got with them even in urban areas. My RC (FS i6, FS ia6b receiver) goes out of range but i still receive the video live on mobile phone. 600mW is enough to take us at least a 1.5KM far in urban areas, and in a rural area with very less interference, we can even get 5-6KM with 600mW of power and these Pagoda-2 antennas.

The rubber duck antenna which come with this TS835 make the VTx very very hot, and moreover Also not give us much range because they have linear polarization.

Aa? From router? Aren’t you using your ESP in access Point (Wifi Hotspot) mode?

The range I told is when I configured ESP32S3 of Arduino in wifi hotspot mode.

And in a clear open field, with less interference, getting till 70m is normal.

Although with interference, range decreases a lot.

Plus, A point to be noted is that, since I don’t have an ELRS system with me, And the wifi and FlySky both work at 2.4 GHz, The range of the Transmitter and receiver also decreases for me as the wifi transmission power increases.

At 70m distance only, my SNR drops to 12dB