Skip to main content

Quick Start

Plug the board in over USB-C, connect the included FXUB1900 antenna to the IPEX connector, and follow the tab for your platform to see decoded aircraft reports from the onboard TT-SC1 receiver.

1. Install the platform​

Install the official Espressif Arduino core for ESP32 from the Arduino IDE Boards Manager:

  1. Open Arduino IDE.
  2. Go to Tools → Board → Boards Manager.
  3. Search for ESP32.
  4. Find ESP32 by Espressif Systems and click Install.

2. Install the CH340K driver​

The board's CH340K chip handles USB-to-serial communication. Without its driver, the board will not show up as a serial port.

Linux does not need a separate driver: the CH340 is supported out of the box.

On Windows, download the driver from the WCH driver page and run the installer. On macOS, download the driver from the WCH macOS driver page, open the .zip, and follow its installation instructions.

3. Install the library​

Download Soldered ADS-B Receiver Arduino library at the verified commit:

In Arduino IDE, go to Sketch → Include Library → Add .ZIP Library... and select the downloaded archive.

4. Select the board​

No board-specific entry for this product has been added to the Boards Manager package yet, so select the closest generic target: Tools → Board → esp32 → ESP32S3 Dev Module.

5. Upload your first program​

This is the library's own 1_ReadAircraftCSV example. The library's default wiring (UART1 on IO17/IO18, reset on IO21) already matches this board, so the constructor needs no arguments.

ESP32S3 Dev Module
1_ReadAircraftCSV.ino
#include "ADSB-Receiver-SOLDERED.h"

// Create an instance of the ADS-B object
// Using a different board? See example 7_CustomBoardWiring.
ADSBReceiver adsb;

// Called once per decoded aircraft update, with whichever fields the module had data for.
void onAircraft(const AdsbAircraft &ac)
{
Serial.print("ICAO ");
Serial.print(ac.icao);

if (ac.callsign.length())
{
Serial.print(" call=");
Serial.print(ac.callsign);
}
if (ac.hasPosition)
{
Serial.print(" lat=");
Serial.print(ac.lat, 5);
Serial.print(" lon=");
Serial.print(ac.lon, 5);
}
if (ac.hasAltBaro)
{
Serial.print(" altBaro=");
Serial.print(ac.altBaro);
Serial.print("ft");
}
if (ac.hasVelH)
{
Serial.print(" vel=");
Serial.print(ac.velH);
Serial.print("kt");
}
if (ac.squawk.length())
{
Serial.print(" squawk=");
Serial.print(ac.squawk);
}
Serial.print(" onGround=");
Serial.print(ac.onGround() ? "yes" : "no");
Serial.print(" crcValid=");
Serial.println(ac.crcValid ? "yes" : "no");
}

void setup()
{
// Start the USB serial monitor.
Serial.begin(115200);

// Open the UART link to the module at its factory-default RUN baud.
adsb.begin(115200);
// Register the function to call whenever a decoded aircraft report arrives.
adsb.onAircraft(onAircraft);

Serial.println("Waiting for ADS-B traffic...");
}

void loop()
{
// Reads incoming bytes and fires the registered callbacks. Must run every loop.
adsb.poll();
}

6. What to expect​

Open Tools → Serial Monitor, set the baud rate to 115200, and reset the board. The receiver sends a CSV report for every aircraft it hears, about once per second per aircraft:

Serial MonitorAutoscrollShow timestampNewline115200 baud
Message (Enter to send message to the board)
Waiting for ADS-B traffic...
ICAO 4BB865 call=PGT2DY onGround=no crcValid=yes
ICAO 4CBEA5 onGround=no crcValid=yes
ICAO 0FFA8D onGround=no crcValid=yes
ICAO 3E7FBE onGround=no crcValid=yes
ICAO 4BB865 call=PGT2DY altBaro=36975ft squawk=7140 onGround=no crcValid=yes
ICAO 4CBEA5 onGround=no crcValid=yes
ICAO 0FFA8D onGround=no crcValid=yes
ICAO 44020A squawk=7102 onGround=no crcValid=yes
ICAO 4BB87A altBaro=37000ft vel=453.00kt squawk=3031 onGround=no crcValid=yes

A line's fields depend on what the module actually decoded for that update; a field the module has no data for yet is simply left out, which is why some lines above are shorter than others.

No output beyond the first line? See Troubleshooting. Reception needs an aircraft broadcasting ADS-B within range and line of sight of the antenna.

7. Troubleshooting​

If the board is not detected or the upload fails, continue with Troubleshooting.