Station de contrôle pour drone avec le module NodeJS serialport

Nodejs websockets AngularJS Mavlink ground control station

Cette application est une "station de contrôle au sol" qui reçoit et affiche les informations (vitesse, altitude, inclinaison, etc) d'un véhicule aérien sans pilote.L'application ouvre une connection websocket entre le client (navigateur) et le serveur, la connection reste ensuite ouverte et permet au serveur de "pusher" des informations, le client n'a pas besoin de faire une requête toutes les X secondes pour avoir des informations à jours.

Les informations sont lues depuis le port série avec le module node.js : serialport sur lequel est connecté un module de télémétrie comme celui ci-dessous.On traite ensuite les informations avec un autre module node : mavlink qui nous permet de decoder les messages du protocol MAVLink (protocol de communication pour drones)Les informations sont ensuite affichées en "Near real-time" sur l'interface par Angular.js qui update automatiquement la "view" dès que de nouvelles données sont disponibles.Des transitions CSS3 permettent d'afficher une boussole sans avoir recours à de lourdes animations javascript.Cette application est utilisable mais à été développée avant tout dans un but ludique, et comme "proof of concept" afin de montrer ce qu'il était possible de faire avec les dernières technologies web. Il resterait pas mal de boulot pour en faire un "daily driver". Mais son utilisation est sans aucun risque pour le drone puisque l'application ne fait que récupérer les informations sans en envoyer. N'hésitez pas à forker ce projet sur GitHub. A l'avenir, on pourrais imaginer par exemple pouvoir armer et désarmer les moteurs du drone, créer des missions ou utiliser les accéléromètres d'une tablette pour contrôler le drone en vol avec l'API "device orientation" du HTML5.

radio-telemetry-kit-433mhz.jpg

https://ardupilot.org/copter/docs/common-sik-telemetry-radio.html

Voir le projet sur GitHub

Read this page in English here / Voir cette page en anglais ici