Paso 2: Arquitectura y diseño
3 todos los dispositivos deben conectarse a la misma red WiFi. El diagrama de arriba muestra el teléfono Android siendo utilizado como un punto de acceso WiFi, con los otros 2 dispositivos de conexión, pero son posibles otras configuraciones.
Una mejora evidente de este diseño sería permitir la comunicación con el dispositivo Android a través de la conexión móvil en vez de WiFi, ampliando así la gama de zumbido a cualquier lugar con cobertura LTE. Esto requeriría probablemente una adición de un servidor de vuelta en el diseño.
El Drone de enredadera se puede controlar desde cualquier dispositivo conectado de WiFi que se puede ejecutar Chrome u otro browser capaz de WebRTC.
Un WebSocket se utiliza como un canal de señalización entre el navegador y el teléfono Android.
Un socket de TCP/IP simple se utiliza para comunicarse con el Raspberry Pi. El Raspberry Pi utiliza el puerto GPIO a bordo para comunicar con el tablero de Control que se encarga de los requisitos de hardware de conducir motores y servos.
Comunicación con el drone comienza por abrir el navegador y la conexión a http://[android-ip-address]:8000/. Esto hace que el servidor Web incorporado (Netty) ejecutándose dentro de la aplicación para Android para servir un archivo HTML y código JavaScript necesario para el manejo de la funcionalidad de lado del navegador. Esto incluye el procesamiento de eventos de teclado para enviar comandos de Control del abejón, exhibición de enredadera, WebRTC señalización a través de lo WebSocket, exhibición de la corriente de los medios de comunicación de los aviones no tripulados y el manejo de la corriente de los medios de comunicación a los aviones no tripulados.
Una vez finalizada el protocolo WebSocket, se inicializa la pila WebRTC en Android y un SDP ofrecen es enviado vía el WebSocket al navegador. El código de cliente que se ejecuta en el navegador recibe la oferta, inicializa su propia pila de WebRTC y envía una Respuesta de SDP. En este punto el Android y el navegador cambio Candidatos hielo y establecen una sesión de WebRTC.
Cuando se establece una sesión exitosa de WebRTC, el usuario ahora puede ver y escuchar todo a través de los aviones no tripulados de enredadera. Con el teclado el usuario puede ahora controlar la posición de la cámara y conducir el drone.
Un comando de Control es enviado a través de lo WebSocket, reconocido como tal por la aplicación de CreeperAndroid y remitido a la frambuesa Pi a través de un socket de red. El IPC recibe el comando y envía al módulo generador de PWM correcta (los servos requieren un esquema de control diferente de motores de corriente continua). El módulo PWM seleccionado utiliza la biblioteca pigpio para enviar señales PWM a través del puerto GPIO. Una vez que se ejecuta el comando seleccionado, un mensaje de estado para el servomotor apropiado se comunica a través de la toma de red, a través de lo WebSocket y en la página del navegador, el usuario está utilizando para el control de los aviones no tripulados.