How to connect GPS to ESP32

Thanks to a very versatile Input/Output matrix, it is quite simple to connect NMEA GPS modules to ESP32 MCUs. Not only ESP32 boards have 3 serial ports you can choose from, they can be assigned to almost any pin you want.

In this example we will connect a popular Ublox NEO-M8N like Beitian BN-880 or BN-220 to a ESP32 development board and output current position on a USB serial port using Arduino IDE and TinyGPS++ library. Let's begin

Sketch header and setup routine

Let's include all of our libraries: TinyGPS++ and HardwareSerial

#include "types.h"
#include <TinyGPS++.h>
#include <HardwareSerial.h>

Then, let's assign variables and create TinyGPSPlus and HardwareSerial object called SerialGPS on serial port 1.

TinyGPSPlus gps;
HardwareSerial SerialGPS(1);

No, set's set up everything in a setup function. GPS will be connected with 9600bps and to pins:

  • Serial 1 RX – pin 16 – connect GPS TX pin to it
  • Serial 1 TX – pin 17 – connect GPS RX pin to it
void setup() {

    Serial.begin(115200); //Serial port of USB
    SerialGPS.begin(9600, SERIAL_8N1, 16, 17);
}

When everything is configured, we can listen to data on SerialGPS and send it to TinyGPS++ and decoded data to USB serial port

void loop() {
    while (SerialGPS.available() > 0) {
        gps.encode(SerialGPS.read());
    }

    Serial.print("LAT=");  Serial.println(gps.location.lat(), 6);
    Serial.print("LONG="); Serial.println(gps.location.lng(), 6);
    Serial.print("ALT=");  Serial.println(gps.altitude.meters());
}

Full example is available here. It does other functions too!

How to choose drone motors

One of the mistakes beginner (but not only) pilots and drone builders make is that they use too small motors. People think that if a motor works fine with 5-inch props, it will work with 7-inch props as well. It's not true. In this longish video, I will tell you how to choose motors for your drone: 5-inch, 6-inch, and 7-inch. We will talk about torque, power, a moment of inertia, what happens when you put a too big propeller on a motor.

How to make tape hinges for foam RC airplanes

If you are into making your own RC airplanes (foam, Depron or even balsa and structure) or even repair ready made models, you have to know how to make hinges. Like always, the simplest way is the best, and for small and even medium sized RC airplanes the metod to make hinges (for ailerons, flaps, elevator, etc.) is to use 2 pieces of self-adhesive tape! Here is tutorial on how to do it:

Matek 1G3 VTX and VRX – Long Range 1.2GHz FPV video link that fits your goggles!

There a few things that I can be sure of in life. One of them is that every time I receive a DHL package from Matek, there is something very interesting inside!

Matek 1G3 VTX and VRX 1.2GHz FPV video link

This time, for example, is a pre-production sample of a new FPV transmitter and receiver. This time it's not 5.8GHz but 1.2GHz. Long Range FPV, here I come!

Matek 1G3 VTX and VRX 1.2GHz FPV video link

Probably the best feature of Matek 1G3 receiver is that it is Fat Shark receiver module compatible! You can just plug it into your FPV goggles or a ground station receiver like Furious FPV Dock-King!

It comes with Matek made 1.2GHz PCB antennas as well!

Matek 1G3 1.2GHz FPV receiver

The future of F3 board in INAV

It's time to start saying goodbye to F3 boards in INAV. History repeats itself and after we let F1 boards go, the same fate upon F3. Why? STM32F303 does not have enough RAM to handle everything that is demanded of it: OSD, telemetry, GPS, navigation, etc. INAV already is not enabling the majority of new functions on F3 based boards!

What will happen next? Most probably, F3 boards that fail to build due to lacking memory will be removed from the official release process. The code that drives them will stay, but if anyone will want to compile INAV for them, they will have to find missing memory by himself.

So, do not expect INAV 2.4 running on Omnibus F3. On the other hand, SP Racing F3 will probably stay with us for a little longer. Lack of OSD is a huge advantage in this case.