In we hebben al aangegeven dat er in augustus een wedstrijd met prijzen aan alle Habr-leden wacht. Het is tijd om het geheim te onthullen. We kregen het idee dat de term 'server in de wolken' letterlijk kan worden opgevat. Laten we echt een werkende server de lucht in sturen die je kunt pingen! In het begin leek het idee krankzinnig, maar na erover te hebben nagedacht en te hebben besproken, hebben we toch een manier bedacht om de server naar de vogels te sturen. Eind augustus vindt de historische lancering plaats, maar voor nu werken we aan de hardware van het project. Details verderop.
- De server zal gebaseerd zijn op Raspberry Pi 3
Het zou interessant zijn om een eenheidsserver de lucht in te krijgen, maar het gewicht + het gewicht van de UPS... Hiervoor zou een aanzienlijke opwaartse kracht nodig zijn. En waarom, als je op basis van de compacte Raspberry Pi 3 een behoorlijk server kunt opzetten met een rekencapaciteit die enkele honderden keren groter is dan de machine waar Tim Berners-Lee zich in 1991 mee vermaakte.
- De server zullen we lanceren met een luchtballon
We hadden ideeën om de server met een heliumsonde de lucht in te sturen, maar dan zou de server niet lang bereikbaar zijn voordat de ballon op grote hoogte barst in de ijle atmosfeer en de hele constructie op de grond valt. We wilden het ‘venster’ van luchtfrequentietijd uitbreiden tot anderhalf uur. Daarom besloten we een luchtballon te gebruiken. De vliegtijd is twee uur. Bovendien is de vlucht, hoewel niet volledig bestuurbaar, zo dat onze ingenieur in de mand kan zitten en in geval van een storing snel 'aan' en 'uit' kan schakelen.
- We maken gebruik van mobiele netwerken als transportnetwerk
Moderne WiFi-antennes kunnen redelijk grote afstanden overbruggen, maar daarvoor zou een communicatiesysteem moeten worden gebouwd dat qua specificaties nauwelijks onderdoet voor een militaire radarstation. En voor 1,5-2 uur verbinding is het niet nuttig om zo'n systeem te bouwen, aangezien de mobiele verbinding op de hoogte van de luchtballon betrouwbaar moet zijn.
Na het formuleren van deze 'postulaten' begon het project niet langer onuitvoerbaar te lijken, en we begonnen al snel aan alle drie de richtingen tegelijk te werken.
In de eerste plaats hebben we om hulp gevraagd aan de jongens van , die veel ervaring hebben met het lanceren van allerlei hardware de lucht in (met daaropvolgende zoektocht en redding).
Daarna pakten we de Raspberry Pi 3 die in de kast van onze administrator lag en begonnen we deze in te stellen.

We hebben de camera aangesloten:

En we hebben deze getest op onze 'Semyon':

Semyon is heel handig als model en assistent — vraagt niet om eten, wordt niet afgeleid door de telefoon, is altijd in een goede bui en heeft een brede glimlach. Natuurlijk hebben we zo'n ruimtepak niet nodig voor de vlucht, maar het creëert wel de juiste sfeer in het kantoor.
Het projectschema ontwikkelt zich als volgt:

De powerbank wordt gebruikt voor de grondtests, voor de lancering hebben we iets betrouwbaarders nodig.
Het meest interessante apparaat is de kaart voor het verzamelen van gegevens van alle sensoren:

De jongens van hebben een tijdlang geëxperimenteerd met verschillende alternatieven en maakten daarna zelf een boordcomputer, omdat betrouwbaarheid van cruciaal belang is; de telemetriegegevens bepalen het lot van heel het project. De boordcomputer is verantwoordelijk voor het ontvangen van gegevens van alle aangesloten sensoren en geeft deze door aan de Raspberry Pi.
We hebben het opgestart, ingesteld, en na een paar weken programmeren en oefenen met rituelen kregen we de telemetriegegevens en een foto van Semyon met de groothoekcamera:

De telemetriegegevens worden als één regel verzonden in de volgende vorm:

Vervolgens transformeert deze code de regel in een array en toont de gegevens op de website:
$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);Beschrijving van enkele gegevens:
- N:2432; — het pakketnummer, dat altijd toeneemt
- T:40m39s; — de tijd sinds de inschakeling van de vluchtcontroller
- MP.Stage:0; — de vluchtfase (0 — op de grond of onder 1 km, 1 — stijgen, 2 — zweven op hoogte, 3 — dalen)
- MP.Alt:54; — barometrische hoogte in meters boven zeeniveau — deze moet worden weergegeven
- MP.VSpeed:0.0; — verticale snelheid in meters per seconde met een mediaanfilter
- MP.AvgVSpeed:0.0; — verticale snelheid in meters per seconde met een gemiddelde filter
- Baro.Press:1006.49; — druk volgens de barometer in millibars
- Baro.Alt:54; — hoogte volgens de barometer
- Baro.Temp:36.99; — temperatuur van de barometer zelf
- GPS.Coord:N56d43m23s,E37d55m68s; — huidige coördinaten
- GPS.Home:N56d43m23s,E37d55m68s; — coördinaten van het startpunt
- GPS.Alt:165; — hoogte volgens GPS in meters
- GPS.Dst:10; — afstand vanaf het startpunt in meters
- DS.Temp:[fc]=34.56; — temperatuursensor op de printplaat
Hoe de weergegeven gegevens eruitzien:
Array
(
[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
)
Wat te doen als het mobiele netwerk uitvalt? Voor dit geval hebben we een tweede kaart, waar twee simkaarten in de modem worden geplaatst (afwisselend in één slot):

Hij kan automatisch overschakelen naar het reservekanaal als het primaire plotseling niet meer reageert.
En wat gebeurt er als beide mobiele netwerken niet meer beschikbaar zijn?
(Jongen uit leest niet voor niets "De theorie van de waarschijnlijkheid")
Voor dit geval hebben we een onafhankelijke GPS-tracker die een signaal over zijn locatie verzendt. Houd er rekening mee dat hij dit niet via het mobiele netwerk doet, wiens beschikbaarheid op grote afstand niet gegarandeerd is, maar via satellieten.

Ja, de GPS-tracker is iets groter dan degene die onder de huid van James Bond werd ingebracht. Aangezien onze competitie afhankelijk is van de coördinaten van de vliegende server, zal dit deel van de verkregen gegevens het belangrijkste zijn. Maar daarover vertellen we in de volgende post. Blijf onze blog volgen!
We geloven zoveel in het succes van het geheel dat we zelfs een wedstrijd hebben aangekondigd voor degenen die willen raden waar de bal zal landen. Meer details in onze .
Bron: habr.com
