| Journal of Fuzzy Systems and Control, Vol. 1, No 2, 2023 | 
Interface Design of DJI Tello Quadcopter Flight Control
Fahmizal 1,*, Danis Afidah 2, Swadexi Istiqphara 3, Nur Syuhadah Abu 4
1,2 Department of Electrical Engineering and Informatics, Vocational College, Universitas Gadjah Mada, Indonesia
3 Electrical Engineering Department, Institut Teknologi Sumatera, Lampung, Indonesia
4 Faculty of Electrical Engineering, University Teknikal Malaysia Melaka (UTeM), Melaka, Malaysia
Email: 1 fahmizal@ugm.ac.id, 2 danisafidah@gmail.com, 3 swadexi.istiqphara@el.itera.ac.id,
4 nursyuhadahabu0805@gmail.com
*Corresponding Author
Abstract—Quadcopter is an unmanned, remote-controlled aircraft. This quadcopter has various types, in this study, the DJI Tello is used. The aim is to create a DJI Tello quadcopter flying control interface with Processing IDE, where the DJI Tello quadcopter will be controlled via a keyboard, joystick, and Graphical User Interface (GUI). Programmed through the Processing IDE, so the quadcopter can be controlled via the keyboard. The functions of some keys on the keyboard and joystick will be used to control the quadcopter's flying. To control these flying, several libraries available in the Processing IDE are required, while the GUI will function to read how the conditions of the quadcopter when the quadcopter and processing IDE are connected. The testing results show that the GUI can display the same position as the actual DJI Tello based on the data communication.
Keywords—DJI Tello; Processing IDE; quadcopter; control
Developments regarding unmanned aerial vehicles (UAVs) are currently very diverse, various types with various specifications are developing rapidly. UAVs are vehicles that can fly and can be controlled over long distances by users or can automatically. UAVs come in various sizes, types, configurations, shapes, and characters. UAV technology is developing in various fields to facilitate and assist human work, such as assisting in terms of security and monitoring [1], transportation [2], agriculture [3], mining [4], search and rescue [5], and military purposes [6].
Quadcopter is a type of UAV, where can be controlled automatically through programs added and designed by programmers, and controlled remotely through a controller by users who are in a stationary place or in other vehicles. A quadcopter is a multirotor with four motors as its driving force, a quadcopter can also be called a quadrotor helicopter, which has four motors for lifting and propulsion [7]. Some of the components used to design a quadcopter consist of the flight controller, brushless motors, quadcopter frames, electronic speed controllers (ESCs), accelerometers, inertial measurement units (IMU) sensors, and Global Positioning System (GPS) [8]. The advantage of a quadcopter is its ability to take off and land which is known as vertical take-off landing (VTOL) [9]-[10].
There are various types of quadcopters that have been designed, one of which is the DJI Tello quadcopter which is included in the multi-copter type and usually has four propellers. DJI Tello is an unmanned aircraft that has a small size, only 98 x 92.5 x 41mm, and weighs 80 grams. DJI Tello is used for beginners in learning to control a quadcopter. DJI Tello does not have a GPS but is equipped with a camera and a proximity sensor underneath for stable flight [11].
Teleoperated aerial manipulators are still a relatively new field of study. Even for seasoned operators, typical manual control of aerial manipulators is challenging, according to earlier research [12], and completely new interface designs are needed for the best human-machine interaction (HMI) [13]. In situations where there are serious safety concerns or to address functional issues, operators will always be required to interface with robotic systems, regardless of the degree of autonomy of the UAV [14]. Because of this, it is crucial to comprehend the best interface layouts for aerial manipulation jobs before implementing them in the open.
This research was conducted to control DJI Tello using open-source software, namely Processing IDE. It is a software sketchbook that learns how to program with an artistic appearance and literacy. The User Interfaces (GUI) buttons from Processing IDE and keyboard are developed to control DJI Tello. The goal is to show that DJI Tello can be controlled with various programming languages.
The rest of the paper is as follows: Section II discusses the materials and method which include the overview of DJI Tello and the proposed method. The results and discussion is presented in Section III. Finally, the conclusion of this research is resumed in Section IV.
DJI Tello is a tiny quadcopter intended for beginners manufactured by Ryze Tech [15], shown in Fig. 1. It has flight stabilization technology developed by DJI. Meanwhile, Intel added technology to make it safer and easier to fly indoors. Another uniqueness of DJI Tello is its acrobatic capabilities in the air, live streaming, and being able to program the airframe of this quadcopter.
DJI Tello has various specifications that support DJI Tello use, with a propeller length of 3 inches. The design of DJI Tello is to remove the landing gear and extend the base of the rotor as the foot rotor so that it has a small size that makes it easier to fly indoors. DJI Tello has an electronic image stabilization (EIS) feature so that the results of the photos and videos are more stable.
DJI Tello can fly in 13 minutes, with an image transmission distance of 100 meters. It can take pictures or record with 720 HD quality and is equipped with a 5-megapixel camera [16]. In addition, this drone can carry out automatic vertical takeoff and landing (VTOL) movements, perform precise hovering, and has a battery warning when it is nearing depletion.
Processing IDE is a software concept with visual, motion, and interaction principles. Processing is made to provide knowledge on how to process programs that can be made by a basic computer in a context that can function as a design. Processing becomes a unit in a programming language, or programming environment, and provides methods or information into the system itself to produce an integrated system [17]. Processing is a Java-based programming language that can be used in various operating systems, namely Mac OS, GNU/Linux, and Windows. This Processing IDE will be very easy to learn and use by users who are used to using programming syntax that is like C, C++, and Java. Processing can be an alternative in making graphics-based applications because it applies various principles of animation, motion, interaction, and appearance. And especially console-based applications for beginning programmers. Because all graphical object commands from the Processing IDE use text-based commands.
ControlP5 in the Processing IDE offers a variety of controllers that make it possible to easily change and adjust values while the sketch is running. ControlP5 places variables and functions in the sketch and will link the controller to the appropriate variable or function automatically. Controllers that have been added to a sketch can be arranged in tabs and groups to customize their controllers. All controls used in the drawing or shown in the processing sketch are by default. The ControlP5 library can be obtained directly by downloading it via the Processing library or via GitHub.
User Datagram Protocol (UDP) is a communication protocol or shield in a low latency layer or low tolerance resulting in unreliable communication between networks and applications or used without a connection between users in networks using TCP/IP. The UDP library for Processing is used for IP DJI Tello communication with Processing to send command data from the Processing work screen. This UDP can be downloaded via import library Processing directly.
This study uses a QWERTY type of keyboard, which is commonly used. This keyboard will function in terms of controlling DJI Tello on several keys, which is the same as controlling games based on using a keyboard as a control.
The joystick in Fig. 2 is a Logitech Extreme 3D Pro joystick, which has an oval shape upwards. This joystick is used in special games such as airplane games, so this joystick is suitable for controlling the DJI Tello quadcopter which was carried out in this study. This joystick has twelve buttons that can be programmed according to the user, and eight-way switches that are used to receive input in an accurate flight simulation.
The buttons of the Extreme 3D Pro joystick are programmable, where programmed buttons can be configured to perform simple, single commands, to complex commands such as movements that combine several actions, mouse movements, and so on. In addition, the Extreme 3D Pro joystick is programmed to activate its profile feature using the Logitech-support software if using Windows and Linux OS.
The joystick is used as a tool to point or to direct movement. The lever on the joystick is used to move the cursor. The buttons on the keyboard can usually be integrated with the joystick. The advantages of using the joystick itself are that it can be operated on Windows or Mac, reliable, responsive, symmetrical, and versatile button positions.
The block diagram, Fig. 3, is intended as an initial system design that will be made. This block diagram explains how the DJI Tello control process works with the Processing IDE. The hardware and software components used in this control.
The system design method is outlined in the block diagram in Fig. 3 which of the Processing IDE software connected to DJI Tello via Wi-Fi and the Processing library. The commands are managed and processed by the Processing IDE, where the output from managing the process is GUI and control with the keyboard and joystick, the results of which will affect the movement of the DJI Tello quadcopter.
In this study, the keyboard becomes a remote control by using several keys on the keyboard as explained in Fig. 4 and Table 1. The control on the keyboard uses the mouse coordinate access function from Processing, namely Key Pressed which is a function to call the keyboard according to the variable it uses.
| No | Button | Function | 
| 1 | A | Turn left | 
| 2 | Z | Landing | 
| 3 | W | Move forward | 
| 4 | S | Move backward | 
| 5 | X | Takeoff | 
| 6 | D | Turn right | 
| 7 | H | Move counterclockwise | 
| 8 | U | Move up | 
| 9 | J | Move down | 
| 10 | K | Move clockwise | 
The process of connecting DJI Tello through Processing requires several steps that need to be carried out, whereas, at this design stage, it concerns the process when connecting DJI Tello with Processing related to programming in the Processing IDE. The flow chart in Fig. 5 explains the process for how Processing can control DJI Tello, this happens where Processing retrieves DJI Tello's IP address data, namely 192.168.10.1 and DJI Tello's port, namely 8890, using the User Datagram Protocol (UDP) library that relies on long-distance connections. UDP is imported when programming, with the name hypermedia.net, which is then declared in the data presented so that DJI Tello can be connected to Processing.
This chapter discusses the Processing IDE implementation process for DJI Tello quadcopter control using various libraries. The connection goes through the DJI Tello Wi-Fi network and sends IP, and DJI Tello ports via the UDP Processing library.
The design of the Processing GUI for DJI Tello is used to determine the condition of DJI Tello when it is actively connected to processing, where these conditions are shown in Fig. 6. The visual form of DJI Tello's conditions can be seen on the Processing IDE work screen. The GUI shows details of DJI Tello's condition when the Processing IDE software is connected to DJI Tello. The DJI Tello GUI can read battery conditions, temperature, roll, pitch, and yaw. The DJI Tello object file will perform roll, pitch, and yaw movements that are adjusted to the conditions of DJI Tello when flying.
To control the flight control of the DJI Tello quadcopter, in this case, consisting of digital buttons and analog buttons. The following is the GUI display for the joystick in Fig. 7. This base will be connected with digital buttons for take-off and landing while for movement control using analog buttons related to the axis value of the joystick, either from shifting or moving from DJI Tello.
DJI Tello control with this keyboard will set and control DJI Tello's flying position. Fig. 8 explains the flow chart for controlling through the keyboard. The keyboard button will be active by providing input on the button. Then, the process continues with decision conditions that may be received by DJI Tello. If the conditions given receive an order of yes, then DJI Tello will advance according to the command given, and the process is completed. On the other hand, if the condition DJI Tello receives an order no, then the process will send an "error” and DJI Tello will not process commands.
This DJI Tello clockwise control comparison test is used to determine IMU sensor data readings on DJI Tello in flight conditions, with a comparison of each movement clockwise rotating by 30 cm. The results are listed in Table 2.
In the results shown in Table 2, where the yaw value dominates the change in value, the yaw movement value is generated by the rotational motion of the motor and propeller. The propellers A, C, and B, D in the order that can be seen in Fig. 1. The position of this yaw value obtained from the comparison of motor speeds A, C and B, D. Where, in this case, the B, D motor has a greater speed compared to A, C so that it produces the right yaw value because it is controlled clockwise. And in this reading comparison test, it is known that there is a positive pitch value of 1. It is known that it is caused by the movement of motor C which is faster than motor A, so a positive pitch value of 1, is obtained because there is little noise in the test.
| No | Clockwise | IMU’s data | 
| 1 | 0 cm | Pitch = 0, Roll= 0, Yaw = 18 | 
| 2 | 30 cm | Pitch = 0, Roll = 0, Yaw = 30 | 
| 3 | 60 cm | Pitch = 0, Roll = 0, Yaw = 55 | 
| 4 | 90 cm | Pitch = 0, Roll = 0, Yaw = 73 | 
| 5 | 120 cm | Pitch = 0, Roll = 0, Yaw= 48 | 
| 6 | 150 cm | Pitch = 0, Roll =0, Yaw = 65 | 
| 7 | 180 cm | Pitch =0, Roll=0, Yaw=74 | 
| 8 | 210 cm | Pitch = 1, Roll =0, Yaw =94 | 
| 9 | 240 cm | Pitch =0, Roll =0, Yaw=117 | 
| 10 | 270 cm | Pitch = 0, Roll =0, Yaw = 136 | 
| 11 | 300 cm | Pitch =0, Roll =0, Yaw = 154 | 
| 12 | 330 cm | Pitch = 0, Roll=0, Yaw = -164 | 
This DJI Tello counterclockwise control comparison test is used to determine the reading of the IMU sensor data on DJI Tello in flight condition, with a comparison of each rotating counterclockwise movement of 30 cm. The results shown in Table 3, where the yaw value dominates the change in negative value. The yaw movement value is generated by the rotational motion of the motor and propeller between propellers A, C and B, D. Where, in this case, the A, C motor has a greater speed compared to B, D so that it produces a left yaw value because it is controlled counterclockwise. In this reading comparison test, it is known that there is a positive pitch value of 1, it is caused by the movement of motor C, which is faster than motor A, so a positive pitch value of 1, is obtained because there is little noise in the test. The roll value that has values -1 and -2, this roll value is obtained due to differences in motors B and D. If motor B has a faster speed than motor D, then the motor will rotate left indicating a negative value, and vice versa. This roll is the ratio of positive and negative angles to the X-axis.
| No | Clockwise | IMU’s data | 
| 1 | 0 cm | Pitch = 0, Roll= 0, Yaw = -15 | 
| 2 | 30 cm | Pitch = 0, Roll = 0, Yaw = -42 | 
| 3 | 60 cm | Pitch = 1, Roll = 0, Yaw = -70 | 
| 4 | 90 cm | Pitch = 0, Roll = -2, Yaw = -101 | 
| 5 | 120 cm | Pitch = 1, Roll = -1, Yaw= -130 | 
| 6 | 150 cm | Pitch = 0, Roll =0, Yaw = -150 | 
| 7 | 180 cm | Pitch =0, Roll=0, Yaw=-171 | 
| 8 | 210 cm | Pitch = 0, Roll =0, Yaw =144 | 
| 9 | 240 cm | Pitch =0, Roll =0, Yaw=116 | 
| 10 | 270 cm | Pitch = 0, Roll =0, Yaw = 88 | 
| 11 | 300 cm | Pitch =1, Roll =0, Yaw = 59 | 
| 12 | 330 cm | Pitch = 1, Roll=0, Yaw = 31 | 
This DJI Tello GUI comparison test is used to determine the reading of the IMU sensor data on DJI Tello when connected to the Processing IDE which displays the GUI interface. The results in Table 5 state the IMU data values from the GUI connected to DJI Tello, where these values have a difference in every change in movement. When DJI Tello is in the number one position the roll and pitch values are equal to 1 while the yaw value is -14, then the difference in the data value with position number 3, namely the roll value will show a negative position value of -51. While the pitch value is 0 and the yaw value is 72. Meanwhile, for the fifth position condition where the roll value is -19 which decreases, shows the difference in position with the third condition, the pitch value is 86 with the difference in position with the third condition which is close to 90 and the yaw value in the fifth condition is 51. Furthermore, the DJI Tello IMU value in the inverted DJI Tello position has a roll value, namely -174 where the position shows a rotation that is close to 180 degrees and the pitch value is 2, while the yaw condition is negative -97. The comparison of each of these data is a comparison of the orientation of the DJI Tello quadcopter with respect to gravity. The data is read by measuring the rotational speed of the roll, pitch, and yaw angles and compensating for error/drift from that angle.
The comparison test of DJI Tello's flight time to the temperature is used to find out the reading of DJI Tello's temperature data which has a range between 0-90⁰C. The results are shown in Table 4.
| No | GUI DJI Tello | IMU Data Value | 
| 1 | Pitch = 1, Roll= 1, Yaw = -14 | |
| 2 | Pitch = 5, Roll = 7, Yaw = -106 | |
| 3 | Pitch = -51, Roll = 0, Yaw = 72 | |
| 4 | Pitch = 51, Roll = 0, Yaw = 75 | |
| 5 | Pitch = -19, Roll = 86, Yaw= 51 | |
| 6 | Pitch = -9, Roll =-81, Yaw = 90 | |
| 7 | Pitch = -174, Roll=2, Yaw= -97 | 
During the initial flight, namely 4 seconds, the temperature on DJI Tello has a value of 23⁰C. The second time of 22 seconds DJI Tello has a temperature condition of 24⁰C, and the third time of 26 seconds has a temperature of 24⁰C. With a long flight time, DJI Tello's temperature conditions will always increase to the maximum range value of 90⁰C. In Table 5 it shows the temperature value of DJI Tello in a flying state for a period of approximately one minute the temperature value has a value of 29⁰C.
| No | Time (s) | Temperature (⁰C) | 
| 1 | 4 | 23 | 
| 2 | 22 | 24 | 
| 3 | 26 | 24 | 
| 4 | 40 | 27 | 
| 5 | 56 | 28 | 
| 6 | 77 | 29 | 
The purpose of research activities on the DJI Tello quadcopter flying interface with Processing IDE is for testing the DJI Tello quadcopter which can be controlled with the keyboard and joystick. Processing IDE is used to create a Graphical User Interface (GUI). The control of flying the DJI Tello quadcopter requires several libraries in the Processing IDE to support control using a joystick, namely game control plus, while the process of sending data uses the UDP library. The testing results show that the GUI can display the same position as the actual DJI Tello based on the data communication. This research can be further developed in the future by paying more attention to the stability of the DJI Tello network and developing DJI Tello camera access.
| [1] | B. B. Kocer, L. Orr, et al., “An intelligent aerial manipulator for wind turbine inspection and repair,” in 2022 UKACC 13th International Conference on Control (CONTROL), pp. 226–227, 2022, https://doi.org/10.1109/Control55989.2022.9781451. | 
| [2] | M.E. Guerrero-Sánchez, O. Hernández-González, R. Lozano, C.D. García-Beltrán, G. Valencia-Palomo, F.R. López-Estrada, “Energy-Based Control and LMI-Based Control for a Quadrotor Transporting a Payload.”, Mathematics 2019, vol. 7, no. 11, 2019, https://doi.org/10.3390/math7111090. | 
| [3] | S. Ahirwar, R. Swarnkar, S. Bhukya, and G. Namwade,” Application of drones in agriculture”, International Journal of Current Microbiology and Applied Sciences, vol. 8, no. 1, pp. 2500-2505, 2019, https://doi.org/10.20546/ijcmas.2019.801.264. | 
| [4] | J. Shahmoradi, E. Talebi, P. Roghanchi, and M. Hassanalian, “A comprehensive review of applications of drone technology in the mining industry”, Drones, vol. 4, no. 3, 2020, p. 34, https://doi.org/10.3390/drones4030034. | 
| [5] | M. A. Goodrich, J. L. Cooper, J. A. Adams, C. Humphrey, R. Zeeman and B. G. Buss, "Using a Mini-UAV to Support Wilderness Search and Rescue: Practices for Human-Robot Teaming," 2007 IEEE International Workshop on Safety, Security and Rescue Robotics, pp. 1-6, 2007, https://doi.org/10.1109/SSRR.2007.4381284. | 
| [6] | A. Sehrawat, T. A. Choudhury and G. Raj, "Surveillance drone for disaster management and military security," 2017 International Conference on Computing, Communication and Automation (ICCCA), pp. 470-475, 2017, https://doi.org/10.1109/CCAA.2017.8229846. | 
| [7] | M. Önder Efe, “Sliding Mode Control for Unmanned Aerial Vehicles Research,” Stud. Syst. Decis. Control, vol. 24, pp. 239–255, 2015, https://doi.org/10.1007/978-3-319-18290-2_12. | 
| [8] | U.F. Ukaegbu, L.K. Tartibu, M.O. Okwu, and I.O. Olayode, “Development of a lightweight unmanned aerial vehicle for precision agriculture”, Sensors, vol. 21, no. 13, p. 4417, 2021, https://doi.org/10.3390/s21134417. | 
| [9] | M. Santos, V. López and F. Morata, "Intelligent fuzzy controller of a quadrotor," 2010 IEEE International Conference on Intelligent Systems and Knowledge Engineering, pp. 141-146, 2010, https://doi.org/10.1109/ISKE.2010.5680812. | 
| [10] | H. Maghfiroh, C. Hermanu, and V.S.Z. Hizmi, “Position Control of VTOL System Using ANFIS via Hardware in The Loop”, SINERGI, vol. 25, no. 3, pp.309-318, 2021, https://doi.org/10.22441/sinergi.2021.3.008. | 
| [11] | L.G.M. Pinto, F. Mora-Camino, P.L. de Brito, A.C.B. Ramos, and H.F. Castro Filho, “A ssd–ocr approach for real-time active car tracking on quadrotors” 16th International Conference on Information Technology-New Generations (ITNG 2019), pp. 471-476, 2019, https://doi.org/10.1007/978-3-030-14070-0_65. | 
| [12] | M. Orsag, C. Korpela, et al., “Modeling and control of MM-UAV: Mobile manipulating unmanned aerial vehicle,” Journal of Intelligent and Robotic Systems: Theory and Applications, vol. 69, pp. 227–240, 2013, https://doi.org/10.1007/s10846-012-9723-4. | 
| [13] | M. Orsag, C. Korpela, S. Bogdan and P. Oh, "Valve turning using a dual-arm aerial manipulator," 2014 International Conference on Unmanned Aircraft Systems (ICUAS), pp. 836-841, 2014, https://doi.org/10.1109/ICUAS.2014.6842330. | 
| [14] | J. Y. C. Chen, E. C. Haas and M. J. Barnes, "Human Performance Issues and User Interface Design for Teleoperated Robots," IEEE Transactions on Systems, Man, and Cybernetics, Part C (Applications and Reviews), vol. 37, no. 6, pp. 1231-1245, 2007, https://doi.org/10.1109/TSMCC.2007.905819. | 
| [15] | A. Boonsongsrikul, and J. Eamsaard, “Real-Time Human Motion Tracking by Tello EDU Drone” Sensors, vol. 23, no. 2, p. 897, 2023, https://doi.org/10.3390/s23020897. | 
| [16] | W. Giernacki, J. Rao, S. Sladic, A. Bondyra, M. Retinger and T. Espinoza-Fraire, "DJI Tello Quadrotor as a Platform for Research and Education in Mobile Robotics and Control Engineering," 2022 International Conference on Unmanned Aircraft Systems (ICUAS), pp. 735-744, 2022, https://doi.org/10.1109/ICUAS54217.2022.9836168. | 
| [17] | F. G. Becker, “A Programming Handbook for Visual Designers and Artists,” MIT Press-200709, p. 373-403, 2015, https://mitpress.mit.edu/9780262182621/processing/. | 
Fahmizal, Interface Design of DJI Tello Quadcopter Flight Control