WebRTC Creeper Drone - webbläsare kontrolleras RC bil (2 / 19 steg)
Steg 2: Arkitektur och Design
Alla 3 enheter måste vara ansluten till samma WiFi-nätverk. Diagrammet ovan visar Android telefonen som används som en WiFi Hotspot, med de andra 2 enheter ansluter till den, men andra konfigurationer är möjliga.
En uppenbar förbättring till denna design skulle vara att möjliggöra kommunikation med Android-enhet via mobil anslutning i stället för WiFi, vilket utökar det surret utbud till någonstans med LTE täckning. Detta skulle sannolikt kräva ett tillägg av en vända server i designen.
Creeper Drone styrs från valfri WiFi ansluten enhet som kan köra Chrome eller en annan webbläsare för WebRTC.
En WebSocket används som en signalering kanal mellan webbläsaren och Android-telefon.
En enkel TCP/IP uttag används för att kommunicera med Raspberry Pi. Raspberry Pi använder GPIO-porten på kortet för att kommunicera med styrelsen kontrollen som hanterar maskinvarukraven för att köra servon och motorer.
Kommunikation med drone börjar genom att öppna webbläsaren och ansluta till http://[android-ip-address]:8000/. Detta orsakar den inbäddade webbservern (Netty) kör inne i Android App att tjäna en HTML-fil och några JavaScript-koden krävs för att hantera den webbläsare funktionaliteten. Detta inkluderar behandling av tangentbordshändelser att skicka kommandon för styrning av Drone, visningen av Creeper, WebRTC signalering genom WebSocket, visning av Media Stream från drone och hantering av Media dataströmmen drone.
När WebSocket handslag slutförd, WebRTC stacken på Android har initierats och en SDP erbjudande skickas via WebSocket till webbläsaren. Klientkoden körs i webbläsaren tar emot erbjudandet, initierar egna WebRTC stack och skicka en SDP svar. På denna punkt Android och webbläsaren utbyta ICE kandidater och upprätta en WebRTC session.
När en framgångsrik WebRTC session upprättas, du kan nu se och höra allt genom Creeper Drone. Med hjälp av tangentbordet kan användaren nu styra kameraposition och driva drone.
En kontroll kommando skickas genom WebSocket, erkänns som sådan av den CreeperAndroid app, och vidarebefordras till Raspberry Pi via en nätverksuttaget. RPi tar emot kommandot och skickar det till rätt PWM Generator modul (servon kräver en olika kontrollprogram från DC-motorer). Den valda PWM modulen använder pigpio biblioteket för att skicka PWM signaler via GPIO-porten. När det valda kommandot utfördes, ett statusmeddelande för lämpliga servomotor lämnas tillbaka genom nätverksuttaget, genom WebSocket och in i webbläsaren sidan användaren använder för att styra drone.