Server in de cloud: klaar voor lancering

В bericht over de regatta We vermeldden dat er in augustus een wedstrijd zal zijn met prijzen voor alle Habrazhitels. De tijd is gekomen om de sluier van geheimhouding weg te trekken. Op de een of andere manier kregen we het idee dat de uitdrukking “server in de wolken” letterlijk genomen kan worden. Laten we daadwerkelijk een werkende server de lucht in lanceren die kan worden gepingd! In eerste instantie leek het idee gek, maar nadat we het op alle mogelijke manieren hadden verdraaid en besproken, kwamen we uiteindelijk op een manier om de server naar de vogels te sturen. Eind augustus zal een baanbrekende lancering plaatsvinden, maar voorlopig werken we aan het hardwaregedeelte van het project. Details onder de snit.

Server in de cloud: klaar voor lancering

  1. De server zal gebaseerd zijn op Raspberry Pi 3

    Het zou interessant zijn om een ​​server uit één stuk de lucht in te tillen, maar het gewicht + het gewicht van de UPS... Dit alles zou aanzienlijke hefkracht vergen. En waarom, als je op basis van een compacte Raspberry Pi 3 een behoorlijk behoorlijke server kunt inzetten, met een rekenkracht die honderden keren groter is dan de machine waarop Tim Berners-Lee zich in 1991 vermaakte.

  2. Laten we de server lanceren in een heteluchtballon

    We hadden ideeën om de server op een heliumsonde te tillen, maar dan pingde de server niet lang voordat de ballon op grote hoogte in een ijle atmosfeer barstte en het hele bouwwerk op de grond viel. Ik wilde het ‘zendtijdvenster’ uitbreiden naar anderhalf uur. En toen besloten ze een ballon te gebruiken. De vluchtduur bedraagt ​​twee uur. Bovendien, ook al is de vlucht niet geheel controleerbaar, kan het zijn dat er onze engineer in de mand zit die, bij een storing, snel en ter plekke ‘de vlucht aan en uit kan zetten’.

  3. We zullen mobiele communicatie gebruiken als transportnetwerk

    Moderne WiFi-antennes kunnen behoorlijk lange afstanden "doorboren", maar hiervoor zou het nodig zijn om een ​​communicatiecomplex te bouwen dat qua parameters niet veel onderdoet voor een militair radarstation. En omwille van 1,5-2 uur communicatie heeft het geen zin om zo'n systeem te bouwen, omdat op de hoogte van de ballon de cellulaire communicatie stabiel moet werken.

Na het formuleren van deze ‘postulaten’ leek het project niet langer onuitvoerbaar, en al snel begonnen we in alle drie de richtingen tegelijk te werken.

Allereerst wendden we ons tot de jongens van nearspace.ru, die de hond opat terwijl hij allerlei stukken ijzer de lucht in gooide (met daaropvolgende zoek- en reddingsacties).

Vervolgens haalden we de Raspberry Pi 3 tevoorschijn, die op het nachtkastje van onze beheerder lag, en begonnen hem in te stellen.

Server in de cloud: klaar voor lancering
De camera aangesloten:

Server in de cloud: klaar voor lancering
En we hebben het getest op onze “Semyon”:

Server in de cloud: klaar voor lancering
Semyon is erg handig als model en assistent - hij vraagt ​​niet om eten, wordt niet afgeleid door de telefoon, is altijd in een goed humeur en met een brede glimlach vanuit zijn hele helm. Voor de vlucht hebben we zo’n ruimtepak uiteraard niet nodig, maar het zorgt wel voor de juiste sfeer op kantoor.

Het projectoverzicht is als volgt:

Server in de cloud: klaar voor lancering
Powerbank wordt gebruikt voor grondtesten; voor de lancering is iets betrouwbaarders nodig.

Misschien wel het meest interessante stuk hardware is een bord voor het ontvangen van gegevens van alle sensoren:

Server in de cloud: klaar voor lancering
Jongens van nearspace.ru We hebben lang geworsteld met verschillende analogen, en daarna hebben we zelf een boordcomputer gemaakt, omdat betrouwbaarheid van doorslaggevend belang is, het lot van het hele project hangt af van telemetriegegevens. De boordcomputer is verantwoordelijk voor het ontvangen van gegevens van alle aangesloten sensoren en het verzenden ervan naar de Raspberry Pi.

We lanceerden het, configureerden het en na een paar weken programmeren en squats met tamboerijnen slaagden we erin telemetriegegevens en een foto van Semyon te verkrijgen van een groothoekcamera:

Server in de cloud: klaar voor lancering
Telemetriegegevens worden in één regel in de volgende vorm verzonden:

Server in de cloud: klaar voor lancering
Deze code converteert de string vervolgens naar een array en voert de gegevens uit naar de 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);

Beschrijving van enkele gegevens:

  • N:2432; — datapakketnummer, dat altijd toeneemt
  • T:40m39s; — tijd vanaf het moment dat de vluchtcontroller werd ingeschakeld
  • MP.Stage:0; — vluchtfase (0 — op de grond of minder dan 1 km, 1 — stijgen, 2 — zweven op hoogte, 3 — dalen)
  • MP.Alt:54; — barometrische hoogte in meters vanaf zeeniveau — deze moet worden weergegeven
  • MP.VSnelheid:0.0; — verticale snelheid in meter per seconde met mediaanfilter
  • MP.AvgVSnelheid:0.0; — verticale snelheid in meter per seconde met middelingsfilter
  • Baro.Pers: 1006.49; — barometerdruk in millibar
  • Baro.Alt:54; - hoogte volgens barometer
  • Barotemperatuur: 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; — GPS-hoogte in meters
  • GPS.Dst:10; — afstand vanaf het startpunt in meters
  • DS.Temp:[fc]=34.56; - temperatuursensor op het bord

Hoe de uitvoer eruit ziet:

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 
)

Wat te doen als de mobiele communicatie “wegvalt”? Voor dit geval hebben we een tweede kaart; er worden twee simkaarten in de modem geplaatst (één slot tegelijk):

Server in de cloud: klaar voor lancering
Het kan automatisch overschakelen naar een reservekanaal als het hoofdkanaal plotseling niet meer reageert.

Wat gebeurt er als beide mobiele netwerken niet meer beschikbaar zijn?

Server in de cloud: klaar voor lancering(Jongen uit uitgave "Yeralash" nr. 45 Het is niet voor niets dat hij “The Theory of Probability” leest

In dit geval hebben we een onafhankelijke GPS-tracker die een signaal verzendt over de locatie. Houd er rekening mee dat dit niet via een mobiel netwerk gebeurt, waarvan de beschikbaarheid over lange afstanden door niemand wordt gegarandeerd, maar via een satelliet.

Server in de cloud: klaar voor lancering
Ja, de GPS-tracker is iets groter dan degene die onder de huid van James Bond werd geïmplanteerd. Omdat onze concurrentie afhangt van de coördinaten van de vliegende server, zal dit deel van de gegevens die van het bord worden ontvangen het belangrijkste zijn. Maar hierover zullen we het in het volgende bericht hebben. Binnenkort beschikbaar, volg onze blog!

We geloven zo sterk in het succes van de hele onderneming dat we zelfs een wedstrijd hebben aangekondigd voor degenen die plotseling willen raden waar de bal zal landen. Details in onze nieuw bericht.

Bron: www.habr.com

Voeg een reactie