Bluetooth-based Micro Quad-copter is a voice-enabled Micro Quad-Copter that is autonomous and is used for guiding the path for the people inside the shopping malls. The Micro-copter has Bluetooth inbuilt in it and hence the individual can give voice command over the phone to lead to the respective destination. It has a flight capacity of 40 minutes and also an auto-docking feature for turbocharging which is done in 10 minutes. The micro-copter also has an LED strip attached which is customized as per the voice input. The micro-copter is autonomous i.e it can fly independently, it has an IR sensor inbuilt with it for collision detection. In further advancement, GPS was enabled for the application of following me. The micro-copter carries a payload of 80 grams.
An introduction and overview of the path from sensor acquisition to motor control. In order to understand the details of each of the steps, the best is to read the code, but it’s not trivial to understand the flow. Therefore this should be seen more like a map of where to look in the code to understand, than complete documentation of each step..0
To do modeling, simulations, or to improve the flight algorithms the physical parameters of the Micro-copter system are good to know. The following tests are done to find some of these parameters.
To measure the RPM we used optical switches that we connected to a prototype board. The firmware was then modified to measure the timing of the optical switches, convert them to RPM and make them available to the subsystem. The logging subsystem was also “hacked” so that more frequent samples could be taken (500Hz instead of max 100Hz).
To measure the thrust we built a simple test fixture. We use a precision scale to measure the thrust. It is done by letting a weight hold the Micro-copter down that is standing the scale. The lift generated will show up on the scale as the total weight gets lighter. We glued a prototype expansion board to a bottle that we could attach the Micro-copter to. It is not a perfect fixture but shouldn’t be too far off.
Voltage measurements are already done in firmware but amps had to be measured using a multimeter in series with the power source. Later it would be nice to add this to the RPM board so it could be measured during flight.
The IMU sensor which is used for the Micro-copter has the following specs
An NRF51, Cortex-M0, that handles radio communication and power management:
An STM32F405, Cortex-M4@160MHz that handles the heavy work of flight control and everything else:
The firmware was adjusted to increase the trust from 0% to 93.75% in 16 steps. Each step period was set to four seconds so that thrust and amps could be manually written down. The RF client was set up to log the PWM, voltage, and RPM during the same time.
As can be seen in the graph both the RPM and voltage vs. thrust is quadratic while the Power vs. thrust is linear. Also from the figures, one can see that at 93.75% PWM the trust is about 58g. Using the values some interesting plots can be made. Like estimated flight time vs. battery capacity.
Amps | Thrust (g) | Voltage | PWM (%) | Average RPM |
0.24 | 0.0 | 4.01 | 0 | 0 |
0.37 | 1.6 | 3.98 | 6.25 | 4485 |
0.56 | 4.8 | 3.95 | 12.5 | 7570 |
0.75 | 7.9 | 3.92 | 18.75 | 9374 |
0.94 | 10.9 | 3.88 | 25 | 10885 |
1.15 | 13.9 | 3.84 | 31.25 | 12277 |
1.37 | 17.3 | 3.80 | 37.5 | 13522 |
1.59 | 21.0 | 3.76 | 43.25 | 14691 |
1.83 | 24.4 | 3.71 | 50 | 15924 |
2.11 | 28.6 | 3.67 | 56.25 | 17174 |
2.39 | 32.8 | 3.65 | 62.5 | 18179 |
2.71 | 37.3 | 3.62 | 68.75 | 19397 |
3.06 | 41.7 | 3.56 | 75 | 20539 |
3.46 | 46.0 | 3.48 | 81.25 | 21692 |
3.88 | 51.9 | 3.40 | 87.5 | 22598 |
4.44 | 57.9 | 3.30 | 93.75 | 23882 |
The Micro-copter communication stack is divided into three layers:
Module: End receiving service of data
MRTP: Protocol for communication
Link: Physical communication link
Each layer communicates on a logical level with the same layer on the other side.
Command | Name | Note |
0x10 | GET_INFO | |
0x11 | SET_ADDRESS | Only implemented on Micro-copter version 0x00 |
0x12 | GET_MAPPING | Only implemented in version 0x10 target 0xFF |
0x14 | LOAD_BUFFER | |
0x15 | READ_BUFFER | |
0x18 | WRITE_FLASH | |
0x19 | FLASH_STATUS | |
0x1C | READ_FLASH |
Byte | Request fields | Content |
0 | GET_INFO | 0x10 |
Byte | Answer fields | Content |
0 | GET_INFO | 0x10 |
1-2 | pageSize | Size in a byte of flash and buffer page |
3-4 | nBuffPage | Number of ram buffer page available |
5-6 | flash page | Total number of flash page |
7-8 | flash start | Start flash page of the firmware |
9-21 | cpuId | Legacy 12Bytes CPUID, shall be ignored |
22 | version | A version of the protocol |
This exchange requests the bootloader info. The content of this packet contains all information required to program the flash.
We built a working Micro Quad-Copter, there is much room for many improvements. First of all, we can make it much more stable so that we could let it fly freely in an open place even with spectators around. We can improve the accuracy of our wireless protocol to make it possible to fly the micro-quadcopter wirelessly from quite a distance. While the initial goal of creating an autonomous quadcopter capable of sensing obstacles was not reached in a given time, our group still learned a substantial amount about robot design, fabrication, control, and embedded programming. We used the spring test rig to determine the motor and propeller thrust for various PWM signals. We used this information for quadcopter frame-down selection and control. We learned important soldering and electric system fabrication skills including making a power harness and digital to analog motor control. Our group all became proficient in ARM Cortex series programmers by necessity as it was the most complex part and required a group effort. In these ten weeks, we succeeded in stabilizing the quadcopter in two degrees of freedom. The end of the project is bittersweet. We are proud of our accomplishments but wish that there was more time to improve the quadcopter. We would further fine-tune the stability and add code to handle yaw and translation in the XYZ-axes. We would also implement the ultrasonic sensors for obstacle detection and avoidance as in the initial goal.
Faststream helped one of the clients to design a next-generation vending machine solution using IoT and AI that supports functions such as predictive maintenance, customer-centric loyalty programs, and cashless transactions, and Bluetooth Enabled Autonomous Micro Quad-Copter, feel free and contact us for more details: Email: info@faststreamtech.com