ESPcopter Overview

1-) ESPcopter Specifications

2-) Pinout and Propeller Directions


3-) What’s in the ESPcopter box


  • 1 Piece ESPcopter board.
  • 1 Piece 240mAh Li-Po battery.
  • 1 Piece propeller protector.
  • 4 Piece 7*20mm Motor.
  • 1 Piece battery holder shield.
  • 1 Piece solder shield.
  • 4 Piece propeller.
  • 4 Piece reserve propeller. 
  • 4 Piece rubber grommets.
  • 4 Piece legs.
  • 1 Piece propeller disassembly tool. 
  • 1 Piece motor assembly tool.

4-) How to assembly ESPcopter


4-) ESPcopter Switch and Button

  • The button is used to reset ESPcopter MCU
  • The switch is used to open and close ESPcopter 

5-) How to charge ESPcopter

  • When the switch is off and USB cable plugged, ESPcopter will charge its battery.
  • When the switch is off, ESPcopter will not charge itself. But the computer will recognize the ESPcopter like a COM port.

6-) Charge inductors of ESPcopter

  • Full Change(GREEN LED) 
  • Changing(RED LED)   

7-) How to calibrate ESPcopter



Installing ARDUİNO

Installing Arduino

Get the latest version from the download page. You can choose between the Installer (.exe) and the Zip packages. We suggest you use the first one that installs directly everything you need to use the Arduino Software (IDE), including the drivers. With the Zip package you need to install the drivers manually. The Zip file is also useful if you want to create aportable installation.

When the download finishes, proceed with the installation and please allow the driver installation process when you get a warning from the operating system.

Choose the components to install

Choose the installation directory (we suggest to keep the default one)

The process will extract and install all the required files to execute properly the Arduino Software (IDE)

Installing the ESP8266 Arduino Addon

There are a variety of development environments that can be equipped to program the ESP8266. You can go with a simple Notepad/gcc setup, or fine-tune an Eclipse environment, use a virtual machine provided by Espressif, or come up with something of your own.

Fortunately, the amazing ESP8266 community recently took the IDE selection a step further by creating an Arduino addon. If you’re just getting started programming the ESP8266, this is the environment we recommend beginning with, and the one we’ll document in this tutorial.

This ESP8266 addon for Arduino is based on the amazing work by Ivan Grokhotkov and the rest of the ESP8266 community. Check out the ESP8266 Arduino GitHub repository for more information.

Installing the Addon With the Arduino Boards Manager

With the release of Arduino 1.6.4, adding third party boards to the Arduino IDE is easily achieved through the new board manager. If you’re running an older version of Arduino (1.6.3 or earlier), we recommend upgrading now. As always, you can download the latest version of Arduino from

To begin, we’ll need to update the board manager with a custom URL. Open up Arduino, then go to the Preferences (FilePreferences). Then, towards the bottom of the window, copy this URL into the “Additional Board Manager URLs” text box:

If you already have a URL in there, and want to keep it, you can separate multiple URLs by placing a comma between them. (Arduino 1.6.5 added an expanded text box, separate links in here by line.)

Adding Board Manager URL to Arduino preferences

Hit OK. Then navigate to the Board Manager by going to Tools > Boards > Boards Manager. There should be a couple new entries in addition to the standard Arduino boards. Look for esp8266. Click on that entry, then select Install.

You need to install 2.3.0 version of esp8266  library. 

Installing additional boards from Board Manager

The board definitions and tools for the ESP8266 Thing include a whole new set of gcc, g++, and other reasonably large, compiled binaries, so it may take a few minutes to download and install (the archived file is ~110MB). Once the installation has completed, an Arduino-blue “INSTALLED” will appear next to the entry.

Selecting the ESP8266 Thing Board

With the Board addon installed, all that’s left to do is select “ESP8266 Thing” from the Tools > Boards menu.

then select your FTDI’s port number under the Tools > Port menu. İf you do not see com port, you need to install driver s software by using the following button.


ESPcopter Driver


If you are using mac diveces and espcopter is not list in your post list, you need to do following steps.

  1. Shut Down
  2. Hold mac+ R during boot to enter recovery mode
  3. Open a terminal
  4. type spctl kext-consent disable and press enter
  5. Reboot
  6. Go to “System Preferences” -> “Security & Privacy”
  7. In the bottom of the window, you will see a message “System software from developer “SiLabs” was blocked from loading.”
  8. Click on “Allow” button
  9. Restart your Mac
  10. Now my device is listed as /dev/cu.SLAB_USBtoUART and everything work as expected.

Uploading Code

Installing Arduino IDE

This tutorial will walk you through downloading, installing, and testing the Arduino software (also known as the Arduino IDE - short for Integrated Development Environment). Before you jump to the page for your operating system, make sure you’ve got all the right equipment.

What you will need:

  • A computer (Windows, Mac, or Linux)
  • An ESPcopter
  • A USB - micro USB

micro usb ile ilgili görsel sonucu



Launch and Blink!

After following the appropriate steps for your software install, we are now ready to test your first program with your Arduino board!

  • Launch the Arduino application
  • If you disconnected your board, plug it back in
Lesson 1. Blink


  • Select the type of ESP8266 you’re using: Tools > Board > your board type



  • Select the serial/COM port that your Arduino is attached to: Tools > Port > COMxx


alt text

  • If you’re not sure which serial device is your Arduino, take a look at the available ports, then unplug your Arduino and look again. The one that disappeared is your Arduino.
  • With your Arduino board connected, and the Blink sketch open, press the ‘Upload’ button

alt text

  • After a second, you should see some LEDs flashing on your Arduino, followed by the message ‘Done Uploading’ in the status bar of the Blink sketch.
  • If everything worked, the onboard LED on your Arduino should now be blinking! You just programmed your first ESPcopter!

Lesson 5. VL53L0X Time-of-Flight Distance Sensor

Dowland VL53L0X  library:


/* This example shows how to get single-shot range
measurements from the VL53L0X. The sensor can optionally be
configured with different ranging profiles, as described in
the VL53L0X API user manual, to get better performance for
a certain application. This code is based on the four
"SingleRanging" examples in the VL53L0X API.

The range readings are in units of mm. */

#include <Wire.h>
#include <VL53L0X.h>

VL53L0X sensor;


// Uncomment this line to use long range mode. This
// increases the sensitivity of the sensor and extends its
// potential range, but increases the likelihood of getting
// an inaccurate reading because of reflections from objects
// other than the intended target. It works best in dark
// conditions.

//#define LONG_RANGE


// Uncomment ONE of these two lines to get
// - higher speed at the cost of lower accuracy OR
// - higher accuracy at the cost of lower speed

//#define HIGH_SPEED


void setup()


#if defined LONG_RANGE
// lower the return signal rate limit (default is 0.25 MCPS)
// increase laser pulse periods (defaults are 14 and 10 PCLKs)
sensor.setVcselPulsePeriod(VL53L0X::VcselPeriodPreRange, 18);
sensor.setVcselPulsePeriod(VL53L0X::VcselPeriodFinalRange, 14);

#if defined HIGH_SPEED
// reduce timing budget to 20 ms (default is about 33 ms)
#elif defined HIGH_ACCURACY
// increase timing budget to 200 ms

void loop()
if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }





Lesson 3. 9250 Accelerometer and Gyroscope Sensor

9250 Accelerometer and Gyroscope Sensor


#include <Wire.h>

#define MPU9250_ADDRESS 0x68
#define MAG_ADDRESS 0x0C

#define GYRO_FULL_SCALE_250_DPS 0x00
#define GYRO_FULL_SCALE_500_DPS 0x08
#define GYRO_FULL_SCALE_1000_DPS 0x10
#define GYRO_FULL_SCALE_2000_DPS 0x18

#define ACC_FULL_SCALE_2_G 0x00
#define ACC_FULL_SCALE_4_G 0x08
#define ACC_FULL_SCALE_8_G 0x10
#define ACC_FULL_SCALE_16_G 0x18

// This function read Nbytes bytes from I2C device at address Address.
// Put read bytes starting at register Register in the Data array.

uint8_t ST1;
int16_t mag_int[3] = {0};

void writeBIT(int addr, int data, int adrrTrans){
void I2Cread(uint8_t Address, uint8_t Register, uint8_t Nbytes, uint8_t* Data){
// Set register address
// Read Nbytes
Wire.requestFrom(Address, Nbytes);
uint8_t index=0;
while (Wire.available())

// Initializations
void setup()
// Arduino initializations

// Set accelerometers low pass filter at 5Hz
writeBIT(29, 0x06,MPU9250_ADDRESS);
// Set gyroscope low pass filter at 5Hz
writeBIT(26, 0x06,MPU9250_ADDRESS);
// Configure gyroscope range
// Configure accelerometers range
// Set by pass mode for the magnetometers
writeBIT(0x37, 0x02,MPU9250_ADDRESS);
// Request continuous magnetometer measurements in 16 bits
//writeBIT(0x0A, 0x16,MAG_ADDRESS);
// writeBIT(0x0A, mRes << 4 | 0x06 ,MAG_ADDRESS);

writeBIT(0x0A, 0x00 , MAG_ADDRESS); // Power down magnetometer
writeBIT(0x0A , 0x0F, MAG_ADDRESS); // Enter Fuse ROM access mode


// Main loop, read and display data
void loop()
// ____________________________________
// ::: accelerometer and gyroscope :::

// Read accelerometer and gyroscope
uint8_t Buf[14];
int16_t accel[3] = {0}, gyro_int[3] = {0}, MEAN_GYRO[3] = {0};;


accel[0]=(Buf[0]<<8 | Buf[1]);
accel[1]=(Buf[2]<<8 | Buf[3]);
accel[2]=Buf[4]<<8 | Buf[5];

// Gyroscope
gyro_int[0]=(Buf[8]<<8 | Buf[9]);
gyro_int[1]=(Buf[10]<<8 | Buf[11]) ;
gyro_int[2]=Buf[12]<<8 | Buf[13] ;

// Display values

// Accelerometer
Serial.print (accel[0],DEC);
Serial.print ("\t");
Serial.print (accel[1],DEC);
Serial.print ("\t");
Serial.print (accel[2],DEC);
Serial.print ("\t");

// Gyroscope
Serial.print (gyro_int[0],DEC);
Serial.print ("\t");
Serial.print (gyro_int[1],DEC);
Serial.print ("\t");
Serial.print (gyro_int[2],DEC);
Serial.println ("\t");


Lesson 5. DC Motors


In this lesson, you will learn how to control ESPcopter DC motors.

void setup() {
// set pins 12 through 15 as outputs:
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(14, OUTPUT);
pinMode(15, OUTPUT);

void loop() {
// iterate over the pins:
for (int i = 0; i <= 200; i+++) {
analogWrite(12, i);