boards: add esp8266-esp-12x

This commit is contained in:
Schorcht 2018-09-05 02:39:50 +02:00
parent bc1906ef42
commit eca7169696
9 changed files with 346 additions and 0 deletions

View File

@ -0,0 +1,5 @@
MODULE = board
DIRS = $(RIOTBOARD)/common/esp8266
include $(RIOTBASE)/Makefile.base

View File

@ -0,0 +1 @@
include $(RIOTBOARD)/common/esp8266/Makefile.dep

View File

@ -0,0 +1,3 @@
# Board provides all common peripheral features defined for all ESP8266 boards
include $(RIOTBOARD)/common/esp8266/Makefile.features

View File

@ -0,0 +1,3 @@
USEMODULE += boards_common_esp8266
include $(RIOTBOARD)/common/esp8266/Makefile.include

View File

@ -0,0 +1,114 @@
/**
@defgroup boards_esp8266_esp-12x ESP-12x based boards
@ingroup boards_esp8266
@brief Support for boards that use ESP-12x modules.
## Overview
This board definition covers not just a single board, but rather a large set of generic boards that either use one of the AI-Tinker ESP-12x AI-Thinker ESP8266 modules or are compatible with them. ESP-12x stands for different versions of the ESP-12 module: ESP-12, ESP-12E, ESP-12E and ESP-12S.
\htmlonly<style>div.image img[src="https://gitlab.com/gschorcht/RIOT.wiki-Images/raw/master/esp8266/ESP-12F_Module.png"]{width:200px;}</style>\endhtmlonly
@image html "https://gitlab.com/gschorcht/RIOT.wiki-Images/raw/master/esp8266/ESP-12F_Module.png" "ESP8266 ESP-12F module"<br>
Common examples for this type of boards are the [WEMOS LOLIN D1 mini V2](#wemos_lolin_d1_mini), the [NodeMCU DEVKIT](#nodemcu_devkit_esp8266) and the [Adafruit Feather HUZZAH ESP8266](#adafruit_feather_huzzah_esp8266). All these boards are characterized by using any of the ESP-12x module and breaking out all GPIO pins.
@note This board definition is the most generic one and might also be used for other ESP8266 and ESP8285 boards.
## MCU
Most features of the boards are provided by the ESP8266EX SoC.
<center>
MCU | ESP8266EX
------------|----------------------------
Family | Tensilica Xtensa LX106
Vendor | Espressif
RAM | 80 kByte
Flash | 1 ... 16 MByte
Frequency | 80 / 160 MHz
FPU | no
Timers | 1 x 32 bit
ADCs | 1 x 10 bit (1 channel)
LEDs | 1 x GPIO2
I2Cs | 2 (software implementation)
SPIs | 1
UARTs | 1 (console)
WiFi | built in
Vcc | 2.5 - 3.6 V
Datasheet | [Datasheet](https://www.espressif.com/sites/default/files/documentation/0a-esp8266ex_datasheet_en.pdf)
Technical Reference | [Technical Reference](https://www.espressif.com/sites/default/files/documentation/esp8266-technical_reference_en.pdf)
</center>
<br>
## Flashing the Device
Flashing RIOT is quite straight forward, just connect the board using the programming port to your host computer and type:
```
make flash BOARD=esp8266-esp-12x ...
```
For detailed information about ESP8266 as well as configuring and compiling RIOT for ESP8266 boards, see \ref esp8266_riot.
## <a name="wemos_lolin_d1_mini"> WEMOS LOLIN D1 mini </a>
[WEMOS LOLIN D1 mini](https://wiki.wemos.cc/products:retired:d1_mini_v2.2.0) is a very interesting board series as it offers a stackable ESP8266 platform. This board can be easily extended with a large number of compatible peripheral shields, e.g. a micro SD card shield, an IR controller shield, a battery shield, and various sensor and actuator shields, see [D1 mini shields](https://wiki.wemos.cc/start#d1_mini_shields) for more information. This makes it possible to create different hardware configurations without the need for a soldering iron or a breadboard.
\htmlonly
<style>div.image img[src="https://gitlab.com/gschorcht/RIOT.wiki-Images/raw/master/esp8266/Wemos_D1_mini_Stack.png?inline=false"]{width:400px;}</style>
\endhtmlonly
@image html "https://gitlab.com/gschorcht/RIOT.wiki-Images/raw/master/esp8266/Wemos_D1_mini_Stack.png?inline=false" "WEMOS LOLIN D1 mini stack example"<br>
There is also a MRF24J40 shield that can be used to extend the board with an IEEE 802.15.4 radio module, the standard networking technology in RIOT.
\htmlonly
<style>div.image img[src="https://gitlab.com/gschorcht/RIOT.wiki-Images/raw/master/esp8266/Wemos_MRF24J40_Shield.png?inline=false"]{width:280px;}</style>
\endhtmlonly
@image html "https://gitlab.com/gschorcht/RIOT.wiki-Images/raw/master/esp8266/Wemos_MRF24J40_Shield.png?inline=false" "MRF24J40 shield for WEMOS LOLIN D1 mini"<br>
There are several versions of WEMOS LOLIN D1 mini, which only differ in the size of the flash memory and the MCU version used. All versions have a microUSB port with flash / boot / reset logic that makes flashing much easier. Their peripherals are equal and work with the default ESP8266 ESP-12x board definition.
For more information, see [D1 Boards] (https://wiki.wemos.cc/start#d1_boards).
<center>
Board | MCU | Flash | Antenna | Remark
-------------|-----------|----------|---------|--------
D1 mini V2 | ESP8266EX | 4 MByte | PCB | retired
D1 mini V3 | ESP8266EX | 4 MByte | PCB | |
D1 mini Lite | ESP8285 | 1 MByte | PCB | |
D1 mini Pro | ESP8266EX | 16 MByte | ceramic | |
</center>
<br>
Following image shows the pinout of all WEMOS LOLIN D1 mini boards. It is compatible with the WEMOS LOLIN D32 Pro ESP32 board.
@image html "https://gitlab.com/gschorcht/RIOT.wiki-Images/raw/master/esp8266/Wemos_D1_mini_pinout.png?inline=false" "WEMOS LOLIN D1 min pinout"<br>
## <a name="nodemcu_devkit_esp8266"> NodeMCU DEVKIT </a>
NodeMCU DEVKIT is an open-source hardware project hosted on [GitHub](ttps://github.com/nodemcu/nodemcu-devkit-v1.0). Therefore, there are a lot of clones available. The board was originally designed for NodeMCU firmware development.
As the other boards described here, NodeMCU ESP12 is generic board that uses ESP-12E module and breaks out all available GPIO pins. It has a Micro-USB port including a flash/boot/reset logic which makes flashing much easier.
\htmlonly
<style>div.image img[src="https://raw.githubusercontent.com/nodemcu/nodemcu-devkit-v1.0/master/Documents/NodeMCU_DEVKIT_1.0.jpg"]{width:400px;}</style>
\endhtmlonly
@image html "https://raw.githubusercontent.com/nodemcu/nodemcu-devkit-v1.0/master/Documents/NodeMCU_DEVKIT_1.0.jpg" "NodeMCE DEVKIT V1.0"<br>
Following image shows the pinout of NodeMCU DEVKIT boards.
@image html "https://gitlab.com/gschorcht/RIOT.wiki-Images/raw/master/esp8266/NodeMCU_pinout.png?inline=false" "NodeMCE DEVKIT V1.0 pinout".
## <a name="adafruit_feather_huzzah_esp8266"> Adafruit Feather HUZZAH ESP8266 </a>
Feather is the new series of development boards from Adafruit. [Adafruit Feather HUZZAH ESP8266](https://www.adafruit.com/product/2821) is a ESP8266 based development board with built in WiFi, USB and battery charging. As the other boards described here, Adafruit Feather HUZZAH ESP8266 is a generic board that uses an ESP-12x module and breaks out most of the available GPIO pins. It has one additional LED connected to GPIO0 and a Micro-USB port including a flash/boot/reset logic which makes flashing much easier.
\htmlonly
<style>div.image img[src="https://cdn-shop.adafruit.com/1200x900/2821-05.jpg"]{width:400px;}</style>
\endhtmlonly
@image html "https://cdn-shop.adafruit.com/1200x900/2821-05.jpg" "Adafruit Feather HUZZAH ESP8266"<br>
Following image shows the pinout of Adafruit Feather HUZZAH ESP8266.
@image html "https://gitlab.com/gschorcht/RIOT.wiki-Images/raw/master/esp8266/Adafruit_Huzzah_ESP8266_pinout.png?inline=false" "Adafruit Feather HUZZAH ESP8266 pinout"
*/

View File

@ -0,0 +1,76 @@
/*
* Copyright (C) 2018 Gunar Schorcht
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @ingroup boards_esp8266_esp-12x
* @{
*
* @file
* @brief Board specific configuration for the Arduino API
*
* @author Gunar Schorcht <gunar@schorcht.net>
*/
#ifndef ARDUINO_BOARD_H
#define ARDUINO_BOARD_H
#include "periph/gpio.h"
#include "periph/adc.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief The on-board LED is connected to pin 2 on this board
*/
#define ARDUINO_LED (GPIO2)
/**
* @brief Look-up table for the Arduino's digital pins
*/
static const gpio_t arduino_pinmap[] = {
GPIO1, /* ARDUINO_PIN_0 (RxD) */
GPIO3, /* ARDUINO_PIN_1 (TxD) */
GPIO0, /* ARDUINO_PIN_2 */
GPIO2, /* ARDUINO_PIN_3 */
#if defined(FLASH_MODE_QIO) || defined(FLASH_MODE_QOUT)
GPIO9, /* ARDUINO_PIN_4 */
GPIO10, /* ARDUINO_PIN_5 */
#else
GPIO_UNDEF, /* ARDUINO_PIN_4 */
GPIO_UNDEF, /* ARDUINO_PIN_5 */
#endif
GPIO_UNDEF, /* ARDUINO_PIN_6 */
GPIO_UNDEF, /* ARDUINO_PIN_7 */
GPIO_UNDEF, /* ARDUINO_PIN_8 */
GPIO_UNDEF, /* ARDUINO_PIN_9 */
GPIO15, /* ARDUINO_PIN_10 (CS0) */
GPIO13, /* ARDUINO_PIN_11 (MOSI) */
GPIO12, /* ARDUINO_PIN_12 (MISO) */
GPIO14, /* ARDUINO_PIN_13 (SCK) */
GPIO_UNDEF, /* ARDUINO_PIN_A0 */
GPIO_UNDEF, /* ARDUINO_PIN_A1 */
GPIO_UNDEF, /* ARDUINO_PIN_A2 */
GPIO_UNDEF, /* ARDUINO_PIN_A3 */
GPIO4, /* ARDUINO_PIN_A4 (SDA) */
GPIO5, /* ARDUINO_PIN_A5 (SCL) */
};
/**
* @brief Look-up table for the Arduino's analog pins
*/
static const adc_t arduino_analog_map[] = {
};
#ifdef __cplusplus
}
#endif
#endif /* ARDUINO_BOARD_H */
/** @} */

View File

@ -0,0 +1,47 @@
/*
* Copyright (C) 2018 Gunar Schorcht
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @defgroup boards_esp8266_esp-12x ESP-12x based boards
* @ingroup boards_esp8266
*/
/**
* @ingroup boards_esp8266_esp-12x
* @brief Board specific definitions for ESP-12x based boards.
* @file
* @author Gunar Schorcht <gunar@schorcht.net>
* @{
*/
#ifndef BOARD_H
#define BOARD_H
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
/**
* @name On-board LED configuration and control definitions
* @{
*/
#define LED0_PIN GPIO2 /**< GPIO2 is used as LED Pin */
#define LED0_ACTIVE (0) /**< LED is low active */
/** @} */
#ifdef __cplusplus
} /* end extern "C" */
#endif
/* include common board definitions as last step */
#include "board_common.h"
#endif /* BOARD_H */
/** @} */

View File

@ -0,0 +1,45 @@
/*
* Copyright (C) 2018 Gunar Schorcht
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
#ifndef GPIO_PARAMS_H
#define GPIO_PARAMS_H
/**
* @ingroup boards_esp8266_esp-12x
* @brief Board specific configuration of direct mapped GPIOs
* @file
* @author Gunar Schorcht <gunar@schorcht.net>
* @{
*/
#include "board.h"
#include "saul/periph.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief LED configuration
*/
static const saul_gpio_params_t saul_gpio_params[] =
{
{
.name = "LED",
.pin = LED0_PIN,
.mode = GPIO_OUT,
.flags = (SAUL_GPIO_INVERTED | SAUL_GPIO_INIT_CLEAR)
}
};
#ifdef __cplusplus
}
#endif
#endif /* GPIO_PARAMS_H */
/** @} */

View File

@ -0,0 +1,52 @@
/*
* Copyright (C) 2018 Gunar Schorcht
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @ingroup boards_esp8266_esp-12x
* @brief Board specific configuration of MCU periphery for ESP-12x based boards.
* @file
* @author Gunar Schorcht <gunar@schorcht.net>
* @{
*/
#ifndef PERIPH_CONF_H
#define PERIPH_CONF_H
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
/**
* @name I2C configuration
* @{
*/
#ifndef I2C_NUMOF
#define I2C_NUMOF (1) /**< Number of I2C interfaces */
#endif
#ifndef I2C0_SPEED
#define I2C0_SPEED I2C_SPEED_FAST /**< I2C bus speed of I2C_DEV(0) */
#endif
#ifndef I2C0_SDA
#define I2C0_SDA GPIO4 /**< SDA signal of I2C_DEV(0) */
#endif
#ifndef I2C0_SCL
#define I2C0_SCL GPIO5 /**< SCL signal of I2C_DEV(0) */
#endif
/** @} */
#ifdef __cplusplus
} /* end extern "C" */
#endif
/* include common peripheral definitions as last step */
#include "periph_conf_common.h"
#endif /* PERIPH_CONF_H */
/** @} */