В
- Serverul va fi bazat pe Raspberry Pi 3
Ar fi interesant să ridici în aer un server cu o singură unitate, dar greutatea lui + greutatea UPS-ului... Toate acestea ar necesita o forță de ridicare considerabilă. Și de ce, dacă pe baza unui Raspberry Pi 3 compact poți implementa un server destul de decent, cu o putere de calcul de câteva sute de ori mai mare decât mașina pe care Tim Berners-Lee s-a distrat în 1991.
- Să lansăm serverul într-un balon cu aer cald
Aveam idei pentru a ridica serverul pe o sondă de heliu, dar apoi serverul nu va suna mult timp înainte ca balonul să explodeze la mare altitudine într-o atmosferă rarefiată și întreaga structură să cadă la pământ. Am vrut să extind „fereastra” timpului de antenă la o oră și jumătate. Și apoi au decis să folosească un balon. Durata zborului este de două ore. În plus, deși zborul nu este în întregime controlabil, este posibil să existe în coș inginerul nostru, care, în cazul unei defecțiuni, poate rapid, chiar la fața locului, „porni și opri”.
- Vom folosi comunicațiile celulare ca rețea de transport
Antenele WiFi moderne pot „perfora” distanțe destul de lungi, dar pentru aceasta ar fi necesar să se construiască un complex de comunicații care nu este cu mult inferior în parametrii săi unei stații radar militare. Și de dragul a 1,5-2 ore de comunicare, nu are sens să construim un astfel de sistem, deoarece la altitudinea balonului, comunicațiile celulare trebuie să funcționeze stabil.
După formularea acestor „postulate”, proiectul nu mai părea impracticabil, iar curând am început să lucrăm în toate cele trei direcții deodată.
În primul rând, am apelat la băieții de la
Apoi am scos Raspberry Pi 3, care stătea pe noptiera administratorului nostru și am început să-l instalăm.
Camera conectată:
Și l-am testat pe „Semyon” nostru:
Semyon este foarte convenabil ca model și asistent - nu cere mâncare, nu este distras de telefon, este întotdeauna într-o dispoziție grozavă și cu un zâmbet larg de peste tot pe cască. Desigur, nu avem nevoie de un astfel de costum spațial pentru zbor, dar creează atmosfera potrivită în birou.
Schema proiectului este după cum urmează:
Powerbank este folosit pentru testarea la sol; este nevoie de ceva mai fiabil pentru lansare.
Poate cea mai interesantă piesă hardware este o placă pentru primirea datelor de la toți senzorii:
Băieți de la
L-am lansat, l-am configurat și, după câteva săptămâni de programare și ghemuiri cu tamburine, am reușit să obținem date de telemetrie și o fotografie a lui Semyon de la o cameră cu unghi larg:
Datele de telemetrie sunt transmise pe o singură linie sub următoarea formă:
Acest cod convertește apoi șirul într-o matrice și trimite datele pe site:
$str = 'N:647;T:10m55s;MP.Stage:0;MP.Alt:49;MP.VSpeed:0.0;MP.AvgVSpeed:0.0;Baro.Press:1007.06;Baro.Alt:50;Baro.Temp:35.93;GPS.Coord:N56d43m23s,E37d55m68s;GPS.Home:N56d43m23s,E37d55m68s;Dst:5;GPS.HSpeed:0;GPS.Course:357;GPS.Time:11h17m40s;GPS.Date:30.07.2018;DS.Temp:[fc]=33.56;Volt:5.19,0.00,0.00,0.00,0.00,0.00,0.00,0.00';
parse_str(strtr($str, [
':' => '=',
';' => '&'
]), $result);
print_r($result);
Descrierea unor date:
- N:2432; — numărul pachetului de date, în continuă creștere
- T:40m39s; — timpul din momentul în care controlerul de zbor este pornit
- MP.Stage:0; — etapa de zbor (0 — la sol sau sub 1 km, 1 — urcare, 2 — planare la altitudine, 3 — coborâre)
- MP.Alt:54; — altitudinea barometrică în metri față de nivelul mării — ar trebui să fie afișată
- MP.VSviteza:0.0; — viteza verticală în metri pe secundă cu filtru median
- MP.AvgVSspeed:0.0; — viteza verticală în metri pe secundă cu filtru de mediere
- Baro.Press:1006.49; — presiunea barometrului în milibari
- Baro.Alt:54; - altitudinea conform barometrului
- Baro.Temp:36.99; - temperatura barometrului propriu-zis
- GPS.Coord:N56d43m23s,E37d55m68s; - coordonatele curente
- GPS.Acasă:N56d43m23s,E37d55m68s; — coordonatele punctului de plecare
- GPS.Alt:165; — Altitudine GPS în metri
- GPS.Dst:10; — distanța de la punctul de plecare în metri
- DS.Temp:[fc]=34.56; - senzor de temperatura de pe placa
Cum arată rezultatul:
Array
(
[N] => 647
[Т] => 10m55з
[MP_Stage] => 0
[MP_Alt] => 49
[MP_VSpeed) => 0.0
[MP_AvgVSpeed] => 0.0
[Baro Рrеss] => 1007.06
[Baro_Alt] => 50
[Baro_Temp] => 35.93
[GPS_Coord] => N56d43m23s,E37d55m68s
[GPS_Home) => N56d43m23s,E37d55m68s
[Dst] => 5
[GPS_HSpeed] => 0
[GPS_Course] => 357
[GPS_Time] => 11h17m40s
[GPS_Date] => 30.07.2018
[DS_Temp] => [fс] ЗЗ.56
[Volt] => 5.19, 0.00,0.00,0.00,0.00,0.00,0.00,0.00
)
Ce să faci dacă comunicarea celulară „cade”? Pentru acest caz, avem o a doua cartelă; două cartele SIM sunt introduse în modem (câte un slot):
Poate comuta automat la un canal de rezervă dacă cel principal nu mai răspunde brusc.
Ce se întâmplă dacă ambele rețele celulare devin indisponibile?
(Băiat din
În acest caz, vom avea un tracker GPS independent care trimite un semnal despre locația sa. Vă rugăm să rețineți că nu face acest lucru printr-o rețea celulară, a cărei disponibilitate pe distanțe lungi nu este garantată de nimeni, ci printr-un satelit.
Da, tracker-ul GPS este ceva mai mare decât cel care a fost implantat sub pielea lui James Bond. Deoarece competiția noastră depinde de coordonatele serverului de zbor, această parte a datelor primite de la bord va fi cea mai importantă. Dar despre asta vom vorbi în următoarea postare. În curând, urmăriți blogul nostru!
Credem atât de mult în succesul întregii întreprinderi încât am anunțat chiar și un concurs pentru cei care vor dintr-o dată să ghicească unde va ateriza mingea. Detalii în nostru
Sursa: www.habr.com