Mini-Satelit (Sonda Atmosferica)

Introducere

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.

Sistemul este util pentru a determina nivelul de poluare in zone afectate extrem de acest fenomen (ex: China), deoarece este ieftin, usor de utilizat si lansat, respectiv poate acoperi arii mari din care sa culeaga date. Fiecare astfel de sistem va fi incorporat intr-o carcasa si va avea o parasuta. Astfel, se pot lansa zeci sau sute de mini-sateliti cu un singur zbor al unui avion de acrobatii / parasutism.

Descriere generală

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.

Satelitul va avea mai multe stari:

  1. Components check (la PowerOn verifica starea fiecarei componente si transmite pe interfata seriala statusul lor)
  2. Running normally (dupa “Components check” inregistreaza date de la senzori si GPS, le stocheaza local si transmite la sol datele o data pe secunda)
  3. Running low-power (datele de la senzori sunt stocate doar local, iar datele de la GPS sunt transmise la sol doar o data la fiecare 5 secunde; va fi implementat ulterior)

Hardware Design

Listă de piese:

  • NINA-B306-00B (“Creierul” mini-satelitului, mult mai puterinc decat ATMega328. Permite utilizarea BLE pentru cominicarea intre 2 mini-sateliti, dar ofera si o flexibilitate mare prin gama larga de pini GPIO si cele 2 porturi I2C.)

  • BME 680 (Senzor de la Bosch de calitatea a aerului. Masoara temperatura, presiunea, umiditatea si prezenta compusilor volatili din aer)

  • MPU 6050 (Senzor inertial cu 6 axe, 3 pentru acceleratie, 3 pentru giroscop. Am ales un simplu MPU6050 in pofida altor IMU-uri mai puternice, deoarece aveam cateva chipuri la indemana si am decis sa fie prezentat ca proof-of-concept pentru o varianta mai low budget.)

  • SGP40 (Senzor de calitatea aerului ce masoara prezenta compusilor volatili in aer. Dubleaza masuratorile facute de BME pentru o acuratete mai mare a rezultatelor obtinute.)

  • Modul LoRa RFM98 (Modul LoRa extrem de puternic, folosit pentru transmiterea datelor la sol pe frecventa de 433MHz)

  • Modul TinyGPS (Modul GPS folosit pentru determinarea coordonatelor mini-satelitului. Am ales sa folosesc un modul, in defavoarea integrarii cipului pe placa din pricina lipsei de cipuri de pe stocul unor magazine precum Mouser, SOSElectrinic sau TME.eu)

  • slot microSD
  • LDO 3.3V
  • charger LiPo
  • LED Neopixel
  • Butoane si alte componente pasive (rezistente, condensatoare, diode, etc)

PCB → top layer:

PCB → Populat:

Mini-satelit → Complet:

Proiectare & procurare hardware:

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:

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 Design

Software-ul proiectului este alcatuit din 3 parti:

  • Pogramul principal care ruleaza pe mini-satelit
  • Pogramul statiei de la sol
  • Programul interfetei grafice care afiseaza datele in timp real

Pogramul principal:

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:

  • Adafruit_NeoPixel
  • Adafruit_BME680
  • Adafruit_Sensor
  • Adafruit_SGP40
  • Adafruit_MPU6050
  • TinyGPS
  • LoRa
  • Wire
  • SPI
  • SD

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

Biblioteci adaptate

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.

Programul de pe statia de la sol:

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

Interfata grafica:

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.

Rezultate Obţinute

In ciuda multor probleme aparute pe parcurs (lipsa bootloaderului pe NINA-uri, programatoare incompatibile, program la facultate mult prea incarcat) proiectul reprezinta o reusita (functioneaza nominal toate elementele integrate). Am pornit de la ideea de CanSat cu scopul de a comprima cat mai mult tot sistemul embedded pentru a facilita integrarea mai multor astfel de sisteme intr-o doza de suc. Mai sunt elemente aditionale pe care voiam sa le adaug proiectului, dar pe care din lipsa de timp nu am reusit momentan (mai e timp pana la PM fair :-D), dar pe care sigur le voi adauga pana cand voi transforma acest proiect in proiectul meu de licenta.

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:

Concluzii

A fost o experienta foarte interesanta, ce a dat stratul proiectului de licenta. 8-)

Download

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

pm/prj2023/gpatru/mini-satelit.txt · Last modified: 2023/06/01 13:37 by sebastian.severin
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0