Étape 2: Architecture et Design
Tous les 3 dispositifs doivent être connectés au même réseau WiFi. Le diagramme ci-dessus montre le téléphone Android étant utilisé comme un WiFi Hotspot, avec 2 autres appareils reliant à elle, mais d’autres configurations sont possibles.
Une amélioration évidente de cette conception serait de permettre la communication avec le périphérique Android via la connexion Mobile au lieu de WiFi, étendant ainsi la gamme de drone n’importe où avec une couverture LTE. Cela exigerait l’ajout d’un serveur de tourner dans la conception.
Le bourdon de la vigne vierge peut être contrôlé depuis n’importe quel appareil connecté WiFi qui peut s’exécuter Chrome, ou un autre navigateur prenant en charge WebRTC.
Un WebSocket est utilisé comme un canal de signalisation entre le navigateur et le système Android phone.
Un socket TCP/IP simple est utilisé pour communiquer avec le Raspberry Pi. Le Raspberry Pi utilise le port GPIO intégré pour communiquer avec la Commission de contrôle, qui gère la configuration matérielle requise de la conduite des servos et des moteurs.
Communication avec le drone commence par ouvrir le navigateur et se connecter à http://[android-ip-address]:8000/. Cela provoque le serveur Web intégré (Netty) exécute à l’intérieur de l’application Android pour servir un fichier HTML et du code JavaScript nécessaire pour gérer la fonctionnalité de côté navigateur. Cela inclut le traitement des événements de clavier pour envoyer des commandes de contrôle du Drone, visualisation de l’état de plante grimpante, WebRTC signalisation à travers le WebSocket, affichage du flux Media de la drone et le flux de média pour le drone.
Une fois que la connexion de WebSocket se termine, la pile WebRTC sur l’androïde est initialisée et un SDP offre est envoyée via le WebSocket au navigateur. Le code client s’exécutant dans le navigateur reçoit l’offre, initialise sa propre pile WebRTC et envoyer une Réponse de SDP. À ce stade, l’Android et le navigateur échangent ICE candidats et établissent une session WebRTC.
Lorsqu’une session réussie de WebRTC est établie, l’utilisateur peut désormais voir et entendre tout à travers le vrombissement de plante grimpante. En utilisant le clavier l’utilisateur peut maintenant contrôler la position de la caméra et conduire le drone.
Une commande est envoyée à travers le WebSocket, reconnue comme tel par l’app CreeperAndroid et transmise à la Pi framboise via une prise réseau. L’IPD reçoit la commande et le distribue au module générateur PWM correct (servos nécessitent un système de contrôle différent de moteurs à courant continu). Le module PWM sélectionné utilise la bibliothèque de pigpio pour envoyer des signaux PWM via le port GPIO. Une fois la commande sélectionnée a été exécutée, un Message d’État pour le moteur/servo approprié est communiqué à travers la prise réseau, à travers le WebSocket et dans la page du navigateur, l’utilisateur utilise pour contrôler le drone.