ESP8266 Arduino开发环境搭建

    1. 获取板卡级支持

打开Arduino IDE-> 首选项 -> 附加开发板管理器网址,填入: http://arduino.esp8266.com/stable/package_esp8266com_index.json,重启一下IDE。

ESP8266 Arduino开发环境搭建

图 1填入开发板板卡支持下载链接

点击工具-> 开发板 -> 开发板管理器,搜索ESP8266:

ESP8266 Arduino开发环境搭建

图 2下载开发板支持包

安装esp8266 by ESP8266 Community:

ESP8266 Arduino开发环境搭建

图 3完成板卡支持包安装

    1. 选择开发板支持

点击工具->开发板,根据情况选择对应版本。(本人开发板选择NodeMCU 1.0(ESP-12E Module))

  1. 烧写板载例程

    1. 编辑代码

点击文件->示例->01.Basics->Blink;

    1. 安装CP210x芯片驱动

插上开发板,识别USB转串口(本机串口号为COM3);

    1. 点击工具对IDE进行如下配置:

ESP8266 Arduino开发环境搭建

图 4根据开发板选择Flash大小

    1. 点击上传按钮完成编译和下载

ESP8266 Arduino开发环境搭建

图 5点击下载按钮,自动完成编译和烧录

    1. 下载完成后芯片自动重启,可看到板载LED灯有规律闪烁。

附件

(1)ESP-12N模块(4Mbyte)引脚图:

ESP8266 Arduino开发环境搭建

图 6 ESP-12N模块管教

(2)ESP-12N模块资料

ESP8266 Arduino开发环境搭建

图 7 ESP-12模块资料

(3)NodeMCU V1.0引脚图

ESP8266 Arduino开发环境搭建

图 8 NodeMCU V1.0开发板引脚图

需要注意的是:ESP8266-12N和12E(F)模块的GPIO4、GPIO5管脚对换了,所以使用时D1对应了GPIO4和D2对应了GPIO5。

(4)CP210x USB 转UART芯片驱动

ESP8266 Arduino开发环境搭建ESP8266 Arduino开发环境搭建ESP8266 Arduino开发环境搭建ESP8266 Arduino开发环境搭建ESP8266 Arduino开发环境搭建

(5)Arduino 中ESP8266 12E管脚宏定义

pins_arduino.h文件:

/*

  pins_arduino.h - Pin definition functions for Arduino

  Part of Arduino - http://www.arduino.cc/

  Copyright (c) 2007 David A. Mellis

  Modified for ESP8266 platform by Ivan Grokhotkov, 2014-2015.

  This library is free software; you can redistribute it and/or

  modify it under the terms of the GNU Lesser General Public

  License as published by the Free Software Foundation; either

  version 2.1 of the License, or (at your option) any later version.

  This library is distributed in the hope that it will be useful,

  but WITHOUT ANY WARRANTY; without even the implied warranty of

  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU

  Lesser General Public License for more details.

  You should have received a copy of the GNU Lesser General

  Public License along with this library; if not, write to the

  Free Software Foundation, Inc., 59 Temple Place, Suite 330,

  Boston, MA  02111-1307  USA

  $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $

*/

#ifndef Pins_Arduino_h

#define Pins_Arduino_h

#define PIN_WIRE_SDA (4)

#define PIN_WIRE_SCL (5)

static const uint8_t SDA = PIN_WIRE_SDA;

static const uint8_t SCL = PIN_WIRE_SCL;

#define LED_BUILTIN 16

static const uint8_t D0   = 16;

static const uint8_t D1   = 5;

static const uint8_t D2   = 4;

static const uint8_t D3   = 0;

static const uint8_t D4   = 2;

static const uint8_t D5   = 14;

static const uint8_t D6   = 12;

static const uint8_t D7   = 13;

static const uint8_t D8   = 15;

static const uint8_t D9   = 3;

static const uint8_t D10  = 1;

#include "../generic/common.h"

#endif /* Pins_Arduino_h */

(6)Arduino 中ESP8266通用宏定义

/generic/common.h文件:

/*

  common.h - Commoon pin definition functions for ESP8266 boards

  Part of Arduino - http://www.arduino.cc/

  Copyright (c) 2007 David A. Mellis

  Modified for ESP8266 platform by Ivan Grokhotkov, 2014-2016.

  This library is free software; you can redistribute it and/or

  modify it under the terms of the GNU Lesser General Public

  License as published by the Free Software Foundation; either

  version 2.1 of the License, or (at your option) any later version.

  This library is distributed in the hope that it will be useful,

  but WITHOUT ANY WARRANTY; without even the implied warranty of

  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU

  Lesser General Public License for more details.

  You should have received a copy of the GNU Lesser General

  Public License along with this library; if not, write to the

  Free Software Foundation, Inc., 59 Temple Place, Suite 330,

  Boston, MA  02111-1307  USA

  $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $

*/

#ifndef GENERIC_COMMON_H

#define GENERIC_COMMON_H

#define EXTERNAL_NUM_INTERRUPTS 16

#define NUM_DIGITAL_PINS        17

#define NUM_ANALOG_INPUTS       1

// TODO: this should be <= 9 if flash is in DIO mode

#define isFlashInterfacePin(p)      ((p) >= 6 && (p) <= 11)

#define analogInputToDigitalPin(p)  ((p > 0) ? NOT_A_PIN : 0)

#define digitalPinToInterrupt(p)    (((p) < EXTERNAL_NUM_INTERRUPTS)? (p) : NOT_AN_INTERRUPT)

#define digitalPinHasPWM(p)         (((p) < NUM_DIGITAL_PINS && !isFlashInterfacePin(p))? 1 : 0)

#define PIN_SPI_SS   (15)

#define PIN_SPI_MOSI (13)

#define PIN_SPI_MISO (12)

#define PIN_SPI_SCK  (14)

static const uint8_t SS    = PIN_SPI_SS;

static const uint8_t MOSI  = PIN_SPI_MOSI;

static const uint8_t MISO  = PIN_SPI_MISO;

static const uint8_t SCK   = PIN_SPI_SCK;

#ifndef PIN_A0

#define PIN_A0 (17)

#endif /* PIN_A0 */

static const uint8_t A0 = PIN_A0;

// These serial port names are intended to allow libraries and architecture-neutral

// sketches to automatically default to the correct port name for a particular type

// of use.  For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN,

// the first hardware serial port whose RX/TX pins are not dedicated to another use.

//

// SERIAL_PORT_MONITOR        Port which normally prints to the Arduino Serial Monitor

//

// SERIAL_PORT_USBVIRTUAL     Port which is USB virtual serial

//

// SERIAL_PORT_LINUXBRIDGE    Port which connects to a Linux system via Bridge library

//

// SERIAL_PORT_HARDWARE       Hardware serial port, physical RX & TX pins.

//

// SERIAL_PORT_HARDWARE_OPEN  Hardware serial ports which are open for use.  Their RX & TX

//                            pins are NOT connected to anything by default.

#define SERIAL_PORT_MONITOR        Serial

#define SERIAL_PORT_USBVIRTUAL     Serial

#define SERIAL_PORT_HARDWARE       Serial

#define SERIAL_PORT_HARDWARE_OPEN  Serial1

#ifdef LED_BUILTIN

#ifdef __cplusplus

extern "C"

#endif

const int BUILTIN_LED __attribute__((deprecated, weak)) = LED_BUILTIN;

#endif

#endif /* GENERIC_COMMON_H */