Blog Home

Use the Nano 33 BLE Sense’s IMU and gesture sensor to control a DJI Tello drone

Arduino TeamSeptember 8th, 2021

Piloting a drone with something other than a set of virtual joysticks on a phone screen is exciting due to the endless possibilities. DJI’s Tello can do just this, as it has a simple Python API which allows for basic aspects to be controlled such as taking off, landing, and moving within a horizontal plane. Soham Chatterjee built a system that takes advantage of two sensors within the Arduino Nano 33 BLE Sense’s onboard suite, namely the APDS-9960 and LSM9DS1 IMU.

He started this endeavor by creating two simple programs that ran on the BLE Sense. The first initializes the APDS-9960 to detect gestures, which then sends strings like “detected DOWN gesture” via the USB port to a host machine. The second program checks if the IMU has gone over a certain threshold in a single direction and relays a corresponding string if it has. 

A Raspberry Pi runs one of two Python scripts that essentially read the incoming data from the Arduino and converts it into movements. For example, a gesture in the ‘DOWN’ direction lands the Tello drone, whereas tilting the board forwards will move the drone forward 50cm. As an added safety feature, the drone automatically lands after 60 seconds, although the Python script can be modified to prevent this behavior.

To read more about how Chatterjee constructed his drone system, you can view his first APDS-9960-based project here and the second IMU-controlled tutorial here.