Bluetooth Enabled Autonomous Micro-QUADCOPTER

Business Overview

Bluetooth based Micro Quad-copter is a voice-enabled Quad-copter which is autonomous and is used for guiding the path for the people inside the shopping malls. The Micro-copter has a Bluetooth inbuilt in it and hence the individual can give voice command over the phone to lead to the respective destination. It has 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 IR sensor inbuilt with it for collision detection. In the further advancement, GPS was enabled for the application of following me. The micro-copter carries a payload of 80 grams.


Sensor Acquisition

Bluetooth Enabled Autonomous Micro-QUADCOPTER

An introduction and overview of the path from sensor acquisition to motor control. In order to understand the details of each of the step, the best is to read the code, but it’s not trivial to understand the flow. Therefore this should be seen more as a map of where to look in the code to understand, than a complete documentation of each step.


To do modeling, simulations or to improve the flight algorithms the physical parameters of the Micro-copter system is good to know. The following tests are done to find some of these parameters.

Measuring the RPM

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).

Bluetooth Enabled Autonomous Micro-QUADCOPTER

Measuring the THRUST

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 which we could attach the Micro-copter to. It is not a perfect fixture but shouldn’t be too far off.

Measuring AMPS and VOLTAGE

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.

Technologies Used


The IMU sensor which is used for the Micro-copter has following specs

  • 3 axis gyro (MPU-9250)
  • 3 axis accelerometer (MPU-9250)
  • 3 axis magnetometer (MPU-9250)
  • the high precision pressure sensor (LPS25H)
Radio Specs
  • 20 dBm radio amplifier tested to > 1 km range LOS with RF
  • Bluetooth Low Energy support with iOS and Android clients available (tested on iOS 7.1+ and Android 4.4+)
  • STM32F405 main application MCU (Cortex-M4, 168MHz, 192kb SRAM, 1Mb flash)
  • nRF51822 radio and power management MCU (Cortex-M0, 32Mhz, 16kb SRAM, 128kb flash)
  • 107C Coreless Motors
  • Keil µVision 5
  • nRFgo Studio

System Architecture

An NRF51, Cortex-M0, that handles radio communication and power management:

  • ON/OFF logic
  • Enabling power to the rest of the system (STM32, sensors and expansion board)
  • Battery charging management and voltage measurement
  • Master radio bootloader
  • Radio and BLE communication
  • Detect and check installed expansion boards

An STM32F405, Cortex-M4@160MHz that handles the heavy work of flight control and everything else:

  • Sensor reading and motor control
  • Flight control
  • Telemetry (including the battery voltage)
  • Additional user development


THRUST Measurement

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


Communication Stack

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.

Commands Summary
Command Name Note
0x11 SET_ADDRESS Only implemented on Micro-copter version 0x00
0x12 GET_MAPPING Only implemented in version 0x10 target 0xFF
Byte Request fields Content
0 GET_INFO 0x10
Byte Answer fields Content
0 GET_INFO 0x10
1-2 pageSize Size in byte of flash and buffer page
3-4 nBuffPage Number of ram buffer page available
5-6 nFlashPage Total number of flash page
7-8 flashStart Start flash page of the firmware
9-21 cpuId Legacy 12Bytes CPUID, shall be ignored
22 version 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-Quadcopter, 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 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 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 were 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.