A motor controller consists of three major parts as shown in the figure: a micro-controller, a gate driver, and a power stage. In this design, the Seeeduino board is used as the micro-controller, and BTN8982TA chip is used as the gate driver and power stage. The micro-controller receives moving instructions from the Raspberry Pi and sends Pulse Width Modulation (PWM) signals to the gate driver. The gate driver which contains level shifts logic interprets the PWM signal and tells H bridges to turn on or turn off the switches. Then, a three phase current source can be generated with three half bridges to energize the motor coils and spin the rotor. While the rotor spins, the Hall Sensors detect the rotor position and feed data back to the microcontroller. The closed loop system can realize a better motor controlling than the ESC, especially at low running speed.