ESP8266 Arduino开发环境搭建
-
-
获取板卡级支持
-
打开Arduino IDE-> 首选项 -> 附加开发板管理器网址,填入: http://arduino.esp8266.com/stable/package_esp8266com_index.json,重启一下IDE。
图 1填入开发板板卡支持下载链接
点击工具-> 开发板 -> 开发板管理器,搜索ESP8266:
图 2下载开发板支持包
安装esp8266 by ESP8266 Community:
图 3完成板卡支持包安装
-
-
选择开发板支持
-
点击工具->开发板,根据情况选择对应版本。(本人开发板选择NodeMCU 1.0(ESP-12E Module))
-
烧写板载例程
-
编辑代码
-
点击文件->示例->01.Basics->Blink;
-
-
安装CP210x芯片驱动
-
插上开发板,识别USB转串口(本机串口号为COM3);
-
-
点击工具对IDE进行如下配置:
-
图 4根据开发板选择Flash大小
-
-
点击上传按钮完成编译和下载
-
图 5点击下载按钮,自动完成编译和烧录
-
-
下载完成后芯片自动重启,可看到板载LED灯有规律闪烁。
-
附件
(1)ESP-12N模块(4Mbyte)引脚图:
图 6 ESP-12N模块管教
(2)ESP-12N模块资料
图 7 ESP-12模块资料
(3)NodeMCU V1.0引脚图
图 8 NodeMCU V1.0开发板引脚图
需要注意的是:ESP8266-12N和12E(F)模块的GPIO4、GPIO5管脚对换了,所以使用时D1对应了GPIO4和D2对应了GPIO5。
(4)CP210x USB 转UART芯片驱动
(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 */