Skip to content
Groundstation for the the Fossasat-1 Satellite
C++ C
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
doc/images Edit README to show changes in project tree Dec 5, 2019
src Merge branch 'dev' into miniTTN Dec 8, 2019
.gitignore Add ignore Dec 5, 2019 Fix some typo errors in README Dec 9, 2019

ESP32-OLED-Fossa-GroundStation for Platformio

Groundstation for the Fossasat-1 Satellite

Supported boards

Quick Install

This project is ready to use with Platformio. It will take care of all dependencies automatically when building the project. It can also be used with Arduino IDE.

Platformio (recommended)

Arduino ide instructions bellow.

Installing platformio

Platformio can be installed as a plugin for many IDEs. You can find a complete list here:

My recommendation is to use VSCode or Atom, you can find installation guides here:

Open the project in VSCode

Once you have cloned this project to a local directory, you can open it on Visual Studio code in File > Add folder to workspace.

Add folder to workspace VSCode

Then select the src folder inside the repository and click open.

Select folder

After that, the project should be loaded in visual studio and ready to configure and build.

Configure the project

First we need to select the board. To do so, open the src/Fossa_GroundStation/platformio.ini file and uncomment one of the lines at the beggining of the file depending on the board you are going to use TTGO or Heltec.

default_envs = 
; Uncomment by deleting ";" in the line below to select the board
;   heltec_wifi_lora_32
;   ttgo-lora32-v1

Build and upload the project

Once the configuration is done, connect the board to the computer and click on the upload button from the platformio toolbar, or go to Terminal -> Run Task -> Upload.


All the dependencies will be downloaded and installed automatically.

Note that if you are a Linux used like me and it is your first time using platformio, you will have to install the udev rules to grant permissions to platformio to upload the program to the board. You can follow the instructions here:

Arduino IDE

You can install the Arduino IDE by downloading it from, we recommend the last version, but you should use v1.6 or above.

Install the Arduino Core for ESP32

First step is to install support for ESP32 based boards on the Arduino IDE through the Board Manager.

  • Start Arduino and open Preferences window.
  • Enter into Additional Board Manager URLs field. You can add multiple URLs, separating them with commas.
  • Open Boards Manager from Tools > Board menu and find esp32 platform.
  • Select the version you need from a drop-down box.
  • Click install button.

Installing dependencies

This project relies on several third party dependencies that must be installed in order to be able to build the binaries you can find the dependencies list below:

Open the project in Arduino IDE

Once you have cloned this project to a local directory, you can open it from the Arduino IDE in File > Add folder to workspace. And select the .ino file which is located in src > Fossa_GroundStation > Fossa_GroundStation.ino

Open on Arduino IDE

Build and upload the project

The next step is to open the project file src/Fossa_GroundStation/BoardConfig.h and uncomment the line matching your board by removing the leading //

// uncomment the line matching your board by removing the //

//#define TTGO_V1
//#define TTGO_V2
//#define HELTEC

Connect the board to the computer, select your board in the Arduino IDE Tools > Boards

Select board on Arduino IDE

Then select the port where the board is connected to the computer in Tools > Ports

And finally click on the rounded arrow button on the top to upload the project to the board or go to Program > Upload (Ctl+U)

Configure Station parameters

The first time the board boot it will generate an AP with the name: FossaGroundStation. Once connected to that network you should be prompted with a web panel to configure the basic parameters of your station. If that were not the case, you can access the web panel using a web browser and going to the url

The parameters that must be filled are the following:

  • SSID and PASSWORD: The configuration parameters of you home WiFi AP so that the ground station can connect to internet.
  • STATION NAME: The name of your ground station. If you have registered yours in the Fossa Ground Station Database, the name should match.
  • LATITUDE and LONGITUDE: The geographical coordinates of the ground station. This serves the purpose of locating your ground station when you receive a package from the satellite.
  • MQTT_SERVER and MQTT_PORT: These are the address and port of the MQTT server of the project you should not change them if you want the Ground Station to be able to connect the main server.
  • MQTT_USER and MQTT_PASS: These are the credentials of the project MQTT server, the purpose is to be able to collect the most packets from the satellite and manage all groundStations from this central server. You can ask for user and password in this telegram group:

OTA Update

This project implements OTA updates with both Arduino IDE and Platformio. To use this method the board and the computer have to be connected to the same network and be visible to each other.


In order to upload a new version through OTA in platformio, the platformio.ide file has to be edited uncommenting two lines to enable OTA and set the current IP Address of the station (it can be seen on the OLED display).

# Uncomment these 2 lines by deleting ";" and edit as needed to upload through OTA
;upload_protocol = espota
;upload_port = IP_OF_THE_BOARD

Once this is done, the new firmware can be uploaded using the upload button normally as if the board were connected through USB.

Arduino IDE

To upload a new version through OTA un Arduino, you have to navigate to Tools > port and, if the computer is in the same network it should detect a network port for the ESP32. If that is the case, select the network port.

Once this is done, the new firmware can be uploaded normally using the upload button or navigating to Program > upload Arduino

You can’t perform that action at this time.