#ESP32 Arduino can be found here ###This repository is now defunct and kept for reference.
##Arduino core for ESP31B WiFi chip## ###This is a beta project for a beta chip. Do not take it as final or stable. Intention is to have a working environment to test the new hardware and prepare the core and peripheral libs for the upcoming final ESP32 release.###
###This project brings support for ESP31B chip to the Arduino environment. It lets you write sketches using familiar Arduino functions and libraries, and run them directly on ESP31B, no external microcontroller required.###
- Compile the toolchain for your platform Instructions or download one of the toolchains below:
- Mac OS X
- Linux 32
- Linux 64
- RaspberryPi 2
- Windows 32 !! Requires Cygwin x86 to be installed (defaults are enough) and C:\cygwin\bin to be added to Path
- Windows 64 !! Requires Cygwin x86_64 to be installed (defaults are enough) and C:\cygwin64\bin to be added to Path
- Install Arduino 1.6.5+
- Go to Arduino directory
- Clone this repository into hardware/espressif/ESP31B directory (or clone it elsewhere and create a symlink)
cd hardware
mkdir espressif
cd espressif
git clone https://github.com/me-no-dev/ESP31B.git
- Install Python 2.7 and have it included in the PATH
- Extract/Copy the toolchain into hardware/espressif/ESP31B/tools directory
- Restart Arduino
The following hardware should be working:
- HSPI and VSPI SPI busses attached to any pin (VSPI is the devault SPI bus)
- UART 0 and 1 (0 is attached to pins 1 and 3) UART 1 can be attached to any pins
- pinMode/digitalRead/digitalWrite/attachInterrupt
- analogRead (duh) SDK functions are exposed (same goes for touch pads)
- 4 types of PWM! SigmaDelta, LEDC_HF, LEDC_LF and the old style based on timer (currently the one attached to analogWrite)
- ccompare and 1 hardware timers with Interrupts
- pinMatrix functions for easy signal routing (those are mostly the same as the ones in the driver lib)
Mostly everything should work the same as on ESP8266. Some methods are removed from the ESP and WiFi classes as they are not available anymore. UDP Multicasts are not build into lwip yet so any service that depends on them would not work (mDNS, SSDP and such). ArduinoOTA is also not working yet as it requires different rom layout.
- The noted pins for HSPI and VSPI are the default ones and can be changed with SPI.begin(sck, miso, mosi, ss) (ss can be defined with -1)
- Pins 32 and 33 have been routed differently on the module and you need to have some high soldering skills to put a couple of resistors to make the pins work
- Pins 6-11 are used by the onboard flash module (which I ws able to run only as 2MB)
- Pins 1,2 and 5 can be floating, but if connected to external hardware, the noted levels need to be active at boot for the chip to enter proper boot mode
- Only the first 8 pin interrupts/counters are implemnted but it's at the top of my ToDo list to enable all 16
- LedC PWM, SigmeDelta and Touch need to be wrapped in classes
Compatible with the following Async TCP library and WebServer
Most of the original source comes from the ESP8266 Arduino Project so hats off to @igrr, @Links2004, @me(no-dev) and many others
Arduino IDE is developed and maintained by the Arduino team. The IDE is licensed under GPL.
Espressif SDK included in this build is under Espressif MIT License.
ESP31B core files are licensed under LGPL.
SPI Flash File System (SPIFFS) written by Peter Andersson is used in this project. It is distributed under MIT license.