Remote

Android App

Android app made in conjunction with ECE 150

Features

  • Control Raspberry Pi Ground Control Station (GCS) by being able to initiate and stop recordings.
  • Get live uplink status to the drone and live failed packet count.
  • Initiate reconnection on failed connections to GCS.
  • When connected to GCS, recording audio is routed through tablet mic and sent over TCP to the GCS (which then forwards it to the drone unit.

User Interface

Updates

Update #4

I added the sending audio functionaility in this update by using the AudioRecord API. Luckily the format that was outputted by the framework, was the same format that worked with our audio codec on the drone, however, I did have to buffer that data since the buffer on the tablet side was way bigger than the buffer on the drone side (this logic was done on the GCS). The audio is a little scratch but I chalk this up to the microphone and delay betweek the two wireless elements.

Update #3

I created the basic version of the app where it could control the GCS and receive connection and packet updates through a TCP connection. Both the GCS and Android app have separate threads for recieving data from each other. I also made Runnable functions for updating the UI on the main thread instead of on the TCP thread. I also did a bunch of edge case bug fixes and organized the code for sending audio.

Update #2

Did a lot of work on the Raspberry Pi to change it's WiFi modual to go into AP mode, broadcast a network, and assign IP addresses through DHCP. I did a lot of work in order to create a WiFi configuration in the Android App in order to make it connect to the network automatically (this was difficult because the drone tablet was always trying to disconnect and connect to the drone camera).

Update #1

Began initial UI design without connecting to Raspberry Pi. Create dynamic elements such as record button that changes when you pressed it and created dummy functions where recording functionality would go. Used a ConstraintLayout to organize everything to fit well on the drone controller screen. Code was set up in the main CloudControl Repo.