Proiectul consta in realizarea unui sistem embedded, care sa integreze toate sistemele functionale ale unui satelit (senzori, power, comunicare, stocare date) si care poate fi testat ca o sonda atmosferica care masoara nivelul de poluare din zonele inferioare ale atmosferei.
Acest sistem embedded masoara, in principal, calitatea aerului (temperatura, presiune, umiditate, prezenta compusilor volatili), dar inregistreaza si date de la un IMU pe care le stocheaza local, pe un card microSD si pe care le transmite prin protocolul LoRa la sol. De asemenea, mini-satelitul contine si un modul de GPS pentru a putea fi recuperat in cazul in care este lansat dintr-o racheta cu raza “scurta” (1-7 Km), din avion sau elicopter.
Sistemul contine si un led de status, dar si 3 iesiri digitale care pot comanda servo motoare (ca o imbunatatire) pentru a extinde antene sau panouri solare.
Am pornit cu proiectul de la ideea de CanSat (o sonda atmosferica de mici dimensiuni, ce incorporeaza in masa si volumul unei doze de suc toate sistemele unui satelit real), pe care am vrut sa il reduc in dimensiuni pe cat de mult posibil, astfel incat, in volumul si masa unei doze de suc sa pot incorpora multiple astfel de sisteme embedded.
Din momentul in care satelitul va fi pornit, va incepe sa inregistreze date de la cei 2 senzori de calitatea a aerului si de la IMU. Datele vor fi stocate pe un card microSD, dar si transmise la sol (Ground Station) prin intermediul unui transciever LoRa. Dupa PowerOn, modulul GPS va incerca sa isi faca lock pe cativa sateliti pentru a putea obtine locatia exacta a sondei (lock-ul poate dura intre 3 si 30 de minute in functie de regiune). Datele de la GPS vor fi transmise la sol, dar si stocate local.
Listă de piese:
PCB → top layer:
PCB → Populat:
Mini-satelit → Complet:
Am realizat schema electrica a proiectului cu ajutorul Autodesk Eagle. Cu ajutorul programului am realizat, de asemenea, si fisierele gerber necesare plasarii comenzii de PCB-uri. PCB-urile au fost produse si livrate de JLCPCB, iar componentele achizitionate de pe Mouser. Acumulator-ul Li-Po este realizat in formatul 2P din 2 acumulatori reciclati.
Schema electrica: pm_project_severinsebastian.pdf
Statia de la sol este alcatuita dintr-un Arduino Uno, un modul LoRa RFM98 si o antena Vivaldi. Arduino-ul preia pachetele primite de modulul LoRa si le trimite la laptop pe interfata seriala, ca acestea sa fie ulterior afisate intr-o interafta grafica user-friendly si stocate pentru analiza ulterioara.
Antena Vivaldi:
Am ales o antena Vivaldi, datorita dimensiunilor reduse si pentru a testa un concept nu foarte utilizat de antena, dar care este foarte capabil de a receptiona date de la distante mari pe frecventa de 433MHz. Dimenziunile reduse ale antenei, dar si statiei de la sol, permit realizarea, fara prea multe batai de cap si la costuri foarte reduse, unei matrici de astfel de statii (dispuse la 10Km una de cealalta spre exemplu) pentru a avea receptie pe o suprafata cat mai extinsa.
Software-ul proiectului este alcatuit din 3 parti:
A fost realizat in Arduino IDE in C++ folosind o serie de biblioteci care sa ajute la o implementare mai rapida si usor de urmarit:
Codul trece mai intai prin starea 1 in care initializeaza toti senzorii si partile de comunicare. Daca apar erori mini-satelitul se blocheaza in aceasta stare si printeaza mesajele de eroare corespunzatoare pe interfata seriala. Daca initializarile se fac cu succes, atunci trece in modul normal de functionare unde inregistreaza datele de la senzori si GPS, le stocheaza local pe cardul SD si le transmite si la sol prin intermediul modulului LoRa.
Cod sursa: minisatelit.zip
Din cauza arhitecturii diferite folosite de modulul, NINA-B306 bazat pe microcontroller-ul nrf52840 produs de Nordic Semiconductors, a trebuit sa editez cel putin partial majoritatea bibliotecilor de la Adafruit si biblioteca LoRa pentru a putea obtine un produs final functional. Editarile au fost majoritar necesare din cauza unor diferente intre bibliotecile Wire si SPI dedicate nrf52840 (ARM Cortex M4) si cele dedicate produselor AVR.
Este de asemenea scris in Arduino IDE si implementează o comunicare LoRa cu mini-satelitul. Datele primite sunt mai apoi trimise pe interfata seriala a laptopului pentru a putea fi procesate de interfata grafica dedicata acestui proiect.
Sursa arduino: groundstation.zip
Codul pentru interfața grafică este scris in C#, folosind ca IDE Visual Studio. In cadrul interfeței se pot selecta portul serial pe care primim datele (pot veni de la orice microcontroler sau microcomputer, de la Arduino pana la Raspberry Pi) și baud rate-ul (din cele standard). Interfața, in forma actuala, poate afișa orice tip de date numerice provenite de la pana la 8 senzori, precum umiditate, temperatura, presiune, accelerații, altitudine, concentrații de gaze sau valori ale radiațiilor. Datele sunt updatate in timp real cu frecventa de 1 Hz.
P.S. Carcasa mini-satelitului este 3D printata, iar parasuta am realizat-o din panza de parapanta.
Demo transmisie date:
https://drive.google.com/file/d/1vVw9gzxmqblScGr8cPGoZSD1W-FcQChJ/view?usp=share_link
Produs final:
Statie sol:
A fost o experienta foarte interesanta, ce a dat stratul proiectului de licenta.
https://content.u-blox.com/sites/default/files/NINA-B3_DataSheet_UBX-17052099.pdf
https://cdn.sparkfun.com/assets/6/d/0/b/9/Qwiic_SGP40-Schematic.pdf
https://cdn.sparkfun.com/assets/e/6/2/6/d/Sensirion_Gas_Sensors_SGP40_Datasheet.pdf
https://cdn.sparkfun.com/assets/learn_tutorials/1/1/6/8/Environmental_Sensor_Breakout_BME680.pdf
https://cdn.sparkfun.com/assets/8/a/1/c/f/BME680-Datasheet.pdf
https://invensense.tdk.com/wp-content/uploads/2015/02/MPU-6000-Datasheet1.pdf