Tracking and receiving messages from satellites with LoRa
TLDR: TinyGS is a project for receiving (and sending) data from satellites 🛰. It’s mainly focused on using LoRa. Because of the low cost hardware, it’s accessible to a lot of people and fun to do! In this blog I describe how it works and what my setup is.
I’ve got all kinds of hobbies. From electronics, stationary batteries, HAM radios, electric vehicles, programming (Python, PHP, C++), cyber security and regular IT nerd stuff.
However, sending messages (speech or data) over the air has always been facinating me. Sending something over kilometers away, and somebody else receiving it, that’s like magic, and to me it still truly is magic. The more I “understand” (I still know less than 1%) of radio transmission and antennas, the more it amazes me. It’s magic.
You want to get started with TinyGS too? Here’s a shopping list of, I think, essential things. Make sure to buy the 433 MHz versions
AliExpress: LoRa board — TTGO ESP3 433MHZ
Or the T-Beam 443 MHz…
AliExpress: LILYGO® TTGO T-Beam V1.1 Lora ESP32 433MHz
Amazon: 433 MHz Antenna DeLock
AliExpress: Low Noise Amplifier (LNA)
AliExpress: DC adapter (transformer) 5V 3A Type-C Usb Ac/Dc
AliExpress: SMA connectors/adapters
Amazon: NanoVNA V2
Background on LoRa
A bit of background around LoRa, let me tell you what Wikipedia knows:
LoRa (Long Range) is a proprietary low-power wide-area network modulation technique. It is based on spread spectrum modulation techniques derived from chirp spread spectrum (CSS) technology. It was developed by Cycleo of Grenoble, France and acquired by Semtech, the founding member of the LoRa Alliance and it is patented.
LoRa uses license-free sub-gigahertz radio frequency bands like 433 MHz, 868 MHz (Europe), 915 MHz (Australia and North America), 865 MHz to 867 MHz (India) and 923 MHz (Asia). LoRa enables long-range transmissions with low power consumption.
What’s so special about sending and receiving data from satellites? Well, nothing really. With TinyGS it’s more about the required hard- and sofware. It’s off the shelf available, and for a small budget (< 30 euro) you already have a very decent system up and running.
Of course transmissions to satellites is already available for decades. For example with the Iridium network, you can send and receive messages from all around the world. What makes LoRa different is that Iridium requires high cost modems (few hundred euros) and requires a lot of power to send to the satellites, whereas LoRa is just cheap and requires a fraction of that power to reach satellites.
The most important part here is: LoRa enables long-range transmissions with low power consumption. This means it is ideal for satellites that usually are on a budget when it comes to power and energy.
If a transmission requires more power, it means it has to store more energy and have solar panels that gather more energy. But, if your transmission requires less energy you can either transmit more frequent, or have a lower energy budget, thus require less storage and/or solar panels… which will result it a less large device. That’s where cubesats come in to play.
Cubesats are essentially satellites with a 10x10x10cm dimension. They are small and fairly cheap to launch. Cubesats come in many dimensions actually, like 0.3U which is 10x10x3cm, or even 6U which is 10x10x60cm.
Those satellites are usually deployed in Low Earth Orbit (LEO), which means they’re deployed at an altitude of 2000km or less. Which results in a round trip around the earth in 125 minutes or less. Most of them are around 500km, which results in a round trip of 90 minutes. This means the satellite will cover the entire earth like twice a day, because the earth moves a bit in between the round trips.
Since at these altitudes the radiation is much lower than in geosynchronous equatorial orbit (GEO, the ones GPS satellites are in), the cubesats can be equiped with off the shelf hardware which reduces the costs of those satellites even more.
Geosynchronous Equatorial Orbit means that the satellite is at 35.786 km distance from the equator of the earth, this results in the satellite to, from our perspective, stand still above us (it moves at the same speed of the rotation of the earth).
Hunderds of cubesats have already been launched, and hundreds or thousands will be launched in the coming years.
Using the TinyGS platform for (sending and) receiving data from satellites
Initially TinyGS was born under the name ESP32 Fossa Groundstation in november 2019, it was developed as a “weekend” project for the FossaSAT-1 LoRa satellite.
In February 2021 the project changed its name to TinyGS and released new beta firmware together with the name change. Currently the network is open to any LoRa satellite and and also supports other flying objects that have a compatible radio modulation with the supported hardware such as FSK, GFSK, MSK, GMSK, LoRa and OOK.
Basically the network operates with ground stations that receive the messages from the satellites. Those messages are pushed to a MQTT broker and there the messages are stored and decoded. As an additional feature the received messages are also sent to a Telegram group.
The ground stations are very low cost regular LoRa devices, that are available from AliExpress, Banggood or other (re)sellers. For now almost all ESP32 processors with a LoRa module are supported. The device can be flashed with special firmware created by TinyGS (one-click installation), it needs some configuration and then you’re ready to go. No programming skills required, just click and go. Easy as that.
In the Telegram group the messages received at the same time, from the same satellite, by all ground stations are combined into one message that is sent to a specific channel. There you can follow all messages received by the network.
Let me start with that the community really feels like a community. When I just joined it, I obviously had a lot of questions, and all those questions were answered by different community members. The community is there to help, they don’t have all the answers and they don’t know everything but together we get the best results.
If you want to start with supporting TinyGS with your own ground station, I suggest you to join the Telegram group.
Satellites being tracked
Currently only a few satellites are being tracked, Norbi and FEES are at the moment of writing the only ones that are sending messages. (SDSat went into sleep mode as an experiment, but for now it’s in a coma, we’re trying to revive it by sending signals to it… but until now we haven’t had any luck reviving it). They send LoRa messages at around 436MHz. VR3X-* satellites will transmit at around 868MHz, but are currently not active yet.
My TinyGS setup
I’m using the TTGO T-Beam 433MHz LoRa module for receiving messages from satellites. I flashed it with the one-click flash tool from TinyGS, configured the settings (WiFi, username/password from the MQTT broker and some other settings).
I first used the tiny monopole antenna that came with the module. I never received any message with it, so I quickly moved to a better antenna. I put a monopole on my roof, with a coaxial cable attached to it. That gave better results, but of course I was looking for even better results.
So I bought a quarter wave 433MHz antenna. I attached it, again, to my roof and used the cable that comes with it to connect it to my LoRa module inside. For now that gave me the best results, but such an antenna is still not the best fit for reaching/receiving satellites. Since most terrestrial antennas are made for the horizontal plane, while the satellites are obviously in the sky.
When I’ll receive my new LoRa ESP32 module, I’ll try my DIY dipole antenna. Looking at the statistics from my NanoVNA it looks very promising. A SWR at <1.1 and perfectly matched for 437MHz (satellites usually don’t transmit at 433 or 433.92, but slightly higher).
LNA — Low Noise Amplifier
I attached a Low Noise Amplifier (LNA) to amplify the, as the module says, low noise. Normally the noise floor is the physical limit of sensitivity, however LoRa works below the noise level. LoRa can demodulate signals which are -7.5 dB to -20 dB below the noise floor. So the question is, if you need a LNA at all because the LoRa module is very sensitive by itself. I’m using one, but I haven’t extensivly tested without using one (and good filter + antenna).
A good practise it to add a filter, for filtering out other frequencies like FM. You can use a band stop filter, which for example blocks the broadcast FM band between 88–108 MHz with over 50dB of attenuation.
Or you can use a band pass filter (BPF) that allows only one band to pass through, in this case the 433 MHz.
I used both filters and I found the best results with the band pass filter in my case, but since every case is different you should check for yourself what works best.
Receiving the actual data
So what do all these things mean? Legenda:
📻 = Transmit power
🛰 = Voltage mV
🔋️ = Battery voltage/capacity
⛽️ = Total power load/current
☀️ = Current solar panel V/power
🔌 = Charge power
🌡 Board PMM = median temp ºC
🌡 Solar Array = median minimum and maximum panel temp ºC
Sending data to the satellites is also possible. With as low as 5 watts, you can reach a satellite. SDSat is one of the satellites that is able to receive LoRa messages and rebroadcasts it. However, when testing a sleep function of the satellite it never woke up. Future satellites will have the ability again to receive and rebroadcast LoRa messages from earth. One of those is the next FEES version.
What’s the goal?
I often get this question: what’s the use? Well, basically nothing except that it’s fun and learn a lot about satellites, data transmission, LoRa, community members, difficulties in space and a lot more! So, actually its goal is endless!
Some of the cubesats are developed by universities and students, so it’s fun to help them receive data from their satellites. In the future it might help tracking lost satellites or even it can be used a relay to reach every part of the world.