Stap 2: Architectuur en Design
Alle 3 apparaten moeten worden aangesloten op hetzelfde wifinetwerk. Het bovenstaande diagram toont de Android telefoon wordt gebruikt als een WiFi-Hotspot, met de andere 2 apparaten verbinding mee te maken, maar andere configuraties mogelijk.
Een duidelijke verbetering op dit ontwerp zou zijn om de communicatie mogelijk te maken met het Android apparaat via de mobiele verbinding in plaats van WiFi, dus van de drone bereik om overal uitbreiden met LTE dekking. Dit zou waarschijnlijk vereisen een toevoeging van een TURN -server in het ontwerp.
De klimplant Drone kan worden bediend vanuit elk WiFi aangesloten apparaat dat aankan, chroom, of een andere WebRTC staat browser.
Een WebSocket wordt gebruikt als een signalering kanaal tussen de browser en de Android telefoon.
Een eenvoudige TCP/IP socket wordt gebruikt voor de communicatie met de Raspberry Pi. De Raspberry Pi gebruikt de GPIO poort op de kaart om te communiceren met de Control Board, dat zorgt voor de hardware-eisen van de servo's en motoren rijden.
Communicatie met de drone begint met het openen van de browser en verbinding maken met http://[android-ip-address]:8000/. Dit zorgt ervoor dat de embedded Web Server (Netty) draait binnen de Android App om te dienen een HTML-bestand en sommige JavaScript-code nodig voor de behandeling van de browser-functionaliteit. Het gaat hierbij om verwerking van toetsenbordgebeurtenissen voor het verzenden van de Drone besturingsopdrachten weergave van de klimplant, WebRTC signalering via de WebSocket, weergave van de stroom van de Media van de drone en omgang met de Media streamen naar de drone.
Zodra de WebSocket handdruk voltooit, de WebRTC-stack op de Android is geïnitialiseerd en een SDP bieden via de WebSocket naar de browser wordt verzonden. De clientcode die wordt uitgevoerd in de browser ontvangt het aanbod, initialiseert eigen WebRTC-stack en een SDP antwoorddoen toekomen. Op dit punt de Android en de Browser ICE kandidaten uit te wisselen en een WebRTC-sessie tot stand brengen.
Wanneer een succesvolle WebRTC-sessie tot stand is gebracht, kan de gebruiker nu te zien en horen alles via de klimplant Drone. Met behulp van het toetsenbord de gebruiker kan nu de camerapositie bepalen en rijden de drone.
Een besturings is verzonden via de WebSocket, als zodanig erkend door de CreeperAndroid app, en doorgestuurd naar de Raspberry Pi via een netwerk-socket. De RPi de opdracht ontvangt en verzendt het naar de juiste PWM Generator module (servo's vereisen een ander besturingselement regeling van de gelijkstroommotoren). De geselecteerde PWM-module maakt gebruik van de pigpio bibliotheek om PWM-signalen via de GPIO poort. Zodra de geselecteerde opdracht werd uitgevoerd, een statusbericht voor de juiste/servomotor terug door de netwerk-socket, via de WebSocket wordt verstrekt en in de pagina van de Browser de gebruiker is met behulp van de drone.