Description
Our client is a company that delivers an automatic drone battery charging and data management system for aerial photography. They were looking for an experienced engineering team to develop software for it. Charging drone batteries along with sorting and copying data produced during a whole day of shooting is a pain for all drone pilots. Our client decided to make their lives easier by creating a device that manages batteries and copies data from a drone’s SD card to cloud storage. To develop software for drone battery charging, our client needed a team with experience in embedded and mobile app development, virtualization, and reverse engineering.
Challenge
Drone owners needed to be able to control the drone battery charging process, manage data on a drone’s SD card, and upload that data to the correct endpoints. The main requirements for the project were the following: Automatically define the type of battery and monitor its power condition Display and control the battery charging process from mobile apps Upload data from a drone’s SD card to AWS instances Allow for interaction with the charging kit via Wi-Fi, BLE, and LTE Preview recorded media from the SD card in mobile apps Provide support for automated over-the-air updates.
Solution
To deliver this project, we planned to: Create Linux software and firmware for Pine ROCK64 Develop cloud-based infrastructure Deliver Android and iOS apps that allow drone pilots to control the system After discussing the project with the client, we planned four key stages: 1. Project discovery. Before the development, we reverse engineered Pine ROCK64 to study how it manages batteries and communicates with mobile apps and other hardware. 2. Proof of concept. We implemented basic functionalities like drone battery management, communication with AWS, and data management. We tested these features on a Linux virtual machine (VM) to avoid waiting for a real device. Also, we delivered the iOS application with basic unit management features. 3. Demo alpha version. We added possibilities for OTA updates and automated battery management. We also ensured that the iOS app can communicate with the device via Bluetooth, Wi-Fi, and LTE. 4. Minimum viable product (MVP). To deliver the MVP, we needed to port our software from the VM to the physical target device. At this stage, we discovered a lot of issues with the hardware and worked with the manufacturer, client’s engineers, and third-party experts to solve them.