This project was created for Build18 2019.
Build18 Garage: Here!
Collaborators: Tom Scherlis, Elio Bourcart, Michael Li, Jae Choi
Flight has fascinated generations of humans. For this project, we were interested in exploring how we could use modern technology to parallel the effortless patters of locomotion found in birds. The project consists of integration of electronic hardware, physical hardware, embedded software, and client-side software.
The hardware required for this project included a microcontroller that would be able to communicate through WiFi to obtain the packets sent through the client-side software. The custom PCB was designed by Tom and Jae to use a Texas Instruments MSP430FR2433 microcontroller. The board itself was very small and interacted with an ESP WiFi module to accept data through UART. For power, we used lightweight Lithium Polymer batteries.
One of the challenges presented by creating a flying robot is the fact that it must produce enough thrust for its weight. As a general guideline for similar ornithopters, we found 100 grams to be our maximum mass. We were able to achieve this by using carbon fiber rods and kite paper, both of which are fairly less dense to build our wireframe chassis and wings.
The main purpose of the software running on the microcontroller was to take input in the form of UART data and translate it into PWM for the servos to flap the wings. The client software would send packets that we defined with certain tags to the bird, which then parsed the bytes and decided the speed/amplitude of the servo accordingly. The servos were able to tilt the bird left or right, and increased amplitude of flapping between the left and right servos to facilitate turning.
The client software ran on a computer. It is designed to take a generic input from the user and translate it to be sent to a generic device. The software itself was built for generic telemetry systems, using a system of nodes and processes to design a work flow. The system was developed in C++ and Qt.
What Went Wrong:
The design for the embedded code took many hours of debugging. Whether this was a problem with the choice of microcontroller or the workflow we may never know. However, we tried various servo control systems including sinusoidal and triangular, but in the end, we could not use the microcontroller because of certain errors. For example, it seemed as if we were getting dropped packets and unresponsiveness from the bird even though all the data was being sent and parsed properly. In the end, it was transitioned to a standard flight controller which provided a more reliable response from the bird.
Software/Environments Used: Texas Instruments Code Composer Studio, C, C++