Dans Nous avons mentionné qu'en août, tous les utilisateurs de Habr peuvent participer à un concours avec des prix. Il est temps de lever le voile sur ce projet. L'idée nous est venue que l'expression « serveur dans les nuages » peut être prise au sens littéral. Alors pourquoi ne pas lancer un serveur fonctionnel dans le ciel, que l'on pourra pinger ! Au début, l'idée paraissait folle, mais après y avoir réfléchi sous différents angles et en en discutant, nous avons finalement trouvé un moyen d'envoyer le serveur à la rencontre des oiseaux. Le lancement historique aura lieu fin août, et pour l'instant, nous peaufinons la partie matérielle du projet. Les détails sont sous le saut.
- Le serveur sera basé sur Raspberry Pi 3
Il serait intéressant de faire voler un serveur en une seule unité, mais son poids + le poids d'un UPS… Pour cela, il faudrait une certaine force de levage. Et pourquoi faire cela, si l'on peut déployer un serveur tout à fait respectable à partir de la compacte Raspberry Pi 3, dont la puissance de calcul est plusieurs centaines de fois supérieure à celle de la machine sur laquelle Tim Berners-Lee s'amusait en 1991.
- Nous lancerons le serveur sur un ballon
Nous avons eu l'idée de faire monter le serveur sur un sonde à hélium, mais alors, le serveur ne serait pingué que pendant un court laps de temps, avant que le ballon n'éclate à haute altitude dans une atmosphère raréfiée et que toute la structure ne tombe au sol. Nous souhaitions prolonger la « fenêtre » de temps d'émission à une heure et demie. Nous avons donc décidé d’utiliser un ballon. La durée du vol est de deux heures. De plus, bien que le vol ne soit pas totalement contrôlable, notre ingénieur peut se trouver dans le panier, et en cas de dysfonctionnement, il pourra réagir rapidement, sur place, pour « allumer et éteindre ».
- Nous utiliserons un réseau de téléphonie mobile
Les antennes WiFi modernes peuvent atteindre des distances assez grandes, mais pour cela, il faudrait construire un complexe de communication ne lâchant pas des performances d'une station de radar militaire. Et pour 1,5 à 2 heures de communication, cela n'a pas de sens de construire ce système, car à l'altitude du vol du ballon, la couverture mobile devrait être stable.
Après avoir formulé ces « postulats », le projet a cessé de sembler irréalisable, et nous avons rapidement commencé à travailler sur les trois axes.
Tout d'abord, nous avons demandé de l'aide à des gars de , des experts des lancements aériens de divers appareils (avec recherche et sauvetage ultérieurs).
Nous avons ensuite sorti le Raspberry Pi 3 qui traînait dans le tiroir de notre administrateur et avons commencé à le configurer.

Nous avons connecté la caméra :

Et nous l'avons testée sur notre « Semyon » :

Semyon est très pratique en tant que modèle et assistant — il ne demande pas à manger, ne se laisse pas distraire par le téléphone, est toujours de bonne humeur et avec un large sourire. Bien sûr, une telle combinaison ne sera pas nécessaire pour le vol, mais elle crée la bonne atmosphère dans le bureau.
Le schéma du projet se dessine comme suit :

Le powerbank est utilisé pour les tests au sol, il faut quelque chose de plus fiable pour le démarrage.
L'élément le plus intéressant est probablement la carte qui collecte les données de tous les capteurs :

Les gars de ont longtemps essayé différents analogues, puis ont fabriqué eux-mêmes un ordinateur de bord, car la fiabilité est cruciale ; des données de télémétrie dépend le destin du projet. L'ordinateur de bord est responsable de la réception des données de tous les capteurs connectés et les transmet au Raspberry Pi.
Nous avons lancé, configuré et après quelques semaines de programmation et de jonglages, nous avons pu obtenir des données de télémétrie et des photos de Semyon avec la caméra grand angle :

Les données de télémétrie sont transmises sous forme d'une ligne comme ceci :

Ensuite, ce code transforme la ligne en tableau et affiche les données sur le 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);Description de certaines données :
- N:2432; — numéro du paquet de données, augmente toujours
- T:40m39s; — temps écoulé depuis l'allumage du contrôleur de vol
- MP.Stage:0; — phase de vol (0 — au sol ou en dessous de 1 km, 1 — montée, 2 — vol stationnaire en altitude, 3 — descente)
- MP.Alt:54; — altitude barométrique en mètres au-dessus du niveau de la mer — à afficher
- MP.VSpeed:0.0; — vitesse verticale en mètres par seconde avec un filtre médian
- MP.AvgVSpeed:0.0; — vitesse verticale en mètres par seconde avec un filtre de moyenne
- Baro.Press:1006.49; — pression barométrique en millibars
- Baro.Alt:54; — altitude barométrique
- Baro.Temp:36.99; — température du baromètre
- GPS.Coord:N56d43m23s,E37d55m68s; — coordonnées actuelles
- GPS.Home:N56d43m23s,E37d55m68s; — coordonnées du point de départ
- GPS.Alt:165; — altitude par GPS en mètres
- GPS.Dst:10; — distance au point de départ en mètres
- DS.Temp:[fc]=34.56; — capteur de température sur la carte
Voici à quoi ressemblent les données affichées :
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
)
Que faire si la connexion mobile tombe ? Pour cela, nous avons une seconde carte, avec deux cartes SIM insérées dans le modem (une à la fois dans un slot) :

Il peut automatiquement basculer vers le canal de secours si le principal cesse de répondre.
Et que se passe-t-il si les deux réseaux mobiles deviennent indisponibles ?
(Le garçon de ne lit pas «La théorie des probabilités» sans raison)
Dans ce cas, nous aurons un GPS tracker indépendant envoyant un signal de sa position. Notez qu'il le fait non pas par le réseau mobile, dont la disponibilité à grande distance n'est pas garantie, mais par satellite.

Oui, le GPS tracker est un peu plus gros que celui implanté sous la peau de James Bond. Étant donné que notre concours dépend des coordonnées du serveur en vol, cette partie des données recevies à bord sera la plus importante. Mais nous en parlerons dans le prochain post. Restez à l'affût de notre blog !
Nous croyons tellement au succès de l'ensemble du projet que nous avons même lancé un concours pour ceux qui voudraient deviner l'endroit où la boule atterrira. Plus de détails dans notre .
Source : habr.com
