ESPRESSIF SYSTEMS ESPWROOM32D Wi-Fi & Bluetooth Internet of Things Module User Manual ESP WROOM 32D User Guide EN
ESPRESSIF SYSTEMS (SHANGHAI) PTE LTD Wi-Fi & Bluetooth Internet of Things Module ESP WROOM 32D User Guide EN
User Guide
!
Version 1.0
Copyright © 2017
ESP-WROOM-32D
User Guide
About This Guide
This document is intended to help users set up the basic software development
environment for developing applications using hardware based on the ESP-WROOM-32D.
Through a simple example, this document illustrates how to use ESP-IDF (Espressif IoT
Development Framework), including the menu based configuration wizard, compiling the
ESP-IDF and firmware download to the ESP32 module.
Release Notes
Date
Version
Release notes
2017.11
V1.0
First release.
Table of Contents
1. Introduction!1".............................................................................................................................
1.1. ESP-WROOM-32D!1".....................................................................................................................
1.2. ESP-IDF!1".....................................................................................................................................
1.3. Preparation!1".................................................................................................................................
2. Get Started on ESP-WROOM-32D!2".........................................................................................
2.1. Standard Setup of Toolchain for Linux!2".......................................................................................
2.1.1. Install Prerequisites!2".......................................................................................................
2.1.2. Toolchain Setup!2"............................................................................................................
2.2. Get ESP-IDF!3"...............................................................................................................................
2.3. Set up Path to ESP-IDF!3".............................................................................................................
3. Start a Project!4".........................................................................................................................
4. Connect!5"..................................................................................................................................
5. Configure!6"................................................................................................................................
6. Build and Flash!7".......................................................................................................................
6.1. Build and Flash!7"..........................................................................................................................
6.2. Monitor!8.......................................................................................................................................
!
1. Introduction
1. Introduction
1.1. ESP-WROOM-32D
ESP-WROOM-32D is a powerful, generic Wi-Fi+BT+BLE MCU module that targets a wide
variety of applications, ranging from low-power sensor networks to the most demanding
tasks, such as voice encoding, music streaming and MP3 decoding.
At the core of this module is the ESP32-D0WD chip*.
The integration of Bluetooth, Bluetooth LE and Wi-Fi ensures that a wide range of
applications can be targeted, and that the module is future proof: using Wi-Fi allows a large
physical range and direct connection to the internet through a Wi-Fi router, while using
Bluetooth allows the user to conveniently connect to the phone or broadcast low energy
beacons for its detection. The sleep current of the ESP32 chip is less than 5 $\mu$A,
making it suitable for battery powered and wearable electronics applications. ESP32
supports a data rate of up to 150 Mbps, and 20.5 dBm output power at the antenna to
ensure the widest physical range. As such the chip does offer industry-leading
specifications and the best performance for electronic integration, range, power
consumption, and connectivity.
The operating system chosen for ESP32 is freeRTOS with LwIP; TLS 1.2 with hardware
acceleration is built in as well. Secure (encrypted) over the air (OTA) upgrade is also
supported, so that developers can continually upgrade their products even after their
release.
1.2. ESP-IDF
The Espressif IoT Development Framework (ESP-IDF for short) is a framework for
developing applications based on the Espressif ESP32. Users can develop applications in
Windows/Linux/MacOS based on ESP-IDF. It is recommended to use Linux distribution.
Lubuntu 16.04 has been used as an example in this document for illustration purposes.
1.3. Preparation
To develop applications for ESP-WROOM-32D you need:
•PC loaded with either Windows, Linux or Mac operating system
•Toolchain to build the Application for ESP32
•ESP-IDF that essentially contains API for ESP32 and scripts to operate the Toolchain
•A text editor to write programs (Projects) in C, e.g. Eclipse
•The ESP32 board itself and a USB cable to connect it to the PC
Espressif
!/!1 8
2017.11
!
2. Get Started on ESP-WROOM-32D
2. Get Started on ESP-
WROOM-32D
2.1. Standard Setup of Toolchain for Linux
The quickest way to start development with ESP32 is by installing a prebuilt toolchain. Pick
up your OS below and follow provided instructions.
2.1.1. Install Prerequisites
To compile with ESP-IDF you need to get the following packages:
•CentOS 7:
sudoyuminstallgitwgetmakencurses-develflexbisongperfpythonpyserial
•Ubuntu and Debian:
sudoapt-getinstallgitwgetmakelibncurses-devflexbisongperfpythonpython-serial
•Arch:
sudopacman-S--neededgccgitmakencursesflexbisongperfpython2-pyserial
2.1.2. Toolchain Setup
ESP32 toolchain for Linux is available for download from Espressif website:
•for 64-bit Linux:
https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-61-gab8375a-5.2.0.tar.gz
•for 32-bit Linux:
https://dl.espressif.com/dl/xtensa-esp32-elf-linux32-1.22.0-61-gab8375a-5.2.0.tar.gz
Download this file, then extract it in ~/esp directory
mkdir-p~/esp
cd~/esp
tar-xzf~/Downloads/xtensa-esp32-elf-linux64-1.22.0-61-gab8375a-5.2.0.tar.gz
The toolchain will be extracted into ~/esp/xtensa-esp32-elf/ directory.
To use it, you will need to update your ``PATH`` environment variable in ~/.bash_profile file.
To make xtensa-esp32-elf` available for all terminal sessions, add the following line to your
~/.bash_profile file:
exportPATH=$PATH:$HOME/esp/xtensa-esp32-elf/bin
Espressif
!/!2 8
2017.11
!
2. Get Started on ESP-WROOM-32D
Alternatively, you may create an alias for the above command. This way you can get the
toolchain only when you need it. To do this, add different line to your ~/.bash_profile file:
aliasget_esp32="exportPATH=$PATH:$HOME/esp/xtensa-esp32-elf/bin"
Then when you need the toolchain you can type get_esp32 on the command line and the
toolchain will be added to your PATH.
2.2. Get ESP-IDF
Once you have the toolchain (that contains programs to compile and build the application)
installed, you also need ESP32 specific API / libraries. They are provided by Espressif in
ESP-IDF repository. To get it, open terminal, navigate to the directory you want to put ESP-
IDF, and clone it using gitclone command:
cd~/esp
gitclone--recursivehttps://github.com/espressif/esp-idf.git
ESP-IDF will be downloaded into ~/esp/esp-idf.
2.3. Set up Path to ESP-IDF
The toolchain programs access ESP-IDF using IDF_PATH environment variable. This
variable should be set up on your PC, otherwise projects will not build. Setting may be
done manually, each time PC is restarted. Another option is to set up it permanently by
defining IDF_PATH in user profile. To do so, follow instructions specific to :ref:`Windows
<add-idf_path-to-profile-windows>`, :ref:`Linux and MacOS <add-idf_path-to-profile-
linux-macos>` in section :doc:`add-idf_path-to-profile`.
📖 Note:
•While cloning submodules on Windows platform, the gitclone command may print some output starting
':notavalididentifier.... This is a known issue but the git clone still succeeds without any
problems.
•Do not miss the --recursive option. If you have already cloned ESP-IDF without this option, run another
command to get all the submodules:
cd~/esp/esp-idf
gitsubmoduleupdate--init
Espressif
!/!3 8
2017.11
!
3. Start a Project
3. Start a Project
Now you are ready to prepare your application for ESP32. To start off quickly, we will
use :example:`get-started/hello_world project from :idf:`examples` directory in IDF.
Copy :example:`get-started/hello_world` to ~/esp directory:
cd~/esp
cp-r$IDF_PATH/examples/get-started/hello_world.
You can also find a range of example projects under the :idf:`examples` directory in ESP-
IDF. These example project directories can be copied in the same way as presented above,
to begin your own projects.
📖 Note:
The ESP-IDF build system does not support spaces in paths to ESP-IDF or to projects.
Espressif
!/!4 8
2017.11
!
4. Connect
4. Connect
You are almost there. To be able to proceed further, connect ESP32 board to PC, check
under what serial port the board is visible and verify if serial communication works. If you
are not sure how to do it, check instructions in section :doc:`establish-serial-connection`.
Note the port number, as it will be required in the next step.!
Espressif
!/!5 8
2017.11
!
4. Configure
5. Configure
Being in terminal window, go to directory of hello_world application by typing cd~/esp/
hello_world. Then start project configuration utility menuconfig:
cd~/esp/hello_world
makemenuconfig
If previous steps have been done correctly, the following menu will be displayed:
!
In the menu, navigate to Serial flasher config > Default serial port to configure the serial
port, where project will be loaded to. Confirm selection by pressing enter, save
configuration by selecting < Save > and then exit application by selecting < Exit >.
Here are couple of tips on navigation and use of menuconfig:
•Use up & down arrow keys to navigate the menu.
•Use Enter key to go into a submenu, Escape key to go out or to exit.
•Type ? to see a help screen. Enter key exits the help screen.
•Use Space key, or Y and N keys to enable (Yes) and disable (No) configuration items
with checkboxes “[*]“.
•Pressing ? while highlighting a configuration item displays help about that item.
•Type / to search the configuration items.
📖 Notes:
•On Windows, serial ports have names like COM1. On MacOS, they start with /dev/cu.. On Linux, they
start with /dev/tty. (See :doc:`establish-serial-connection` for full details.)
•If you are Arch Linux user, navigate to SDK tool configuration and change the name of Python 2
interpreter from python to python2.
•Most ESP32 development boards have a 40 MHz crystal installed. However, some boards use a 26 MHz
crystal. If your board uses a 26MHz crystal, or you get garbage output from serial port after code upload,
adjust the :ref:`CONFIG_ESP32_XTAL_FREQ_SEL` option in menuconfig.
Espressif
!/!6 8
2017.11
!
5. Build and Flash
6. Build and Flash
6.1. Build and Flash
Now you can build and flash the application. Run:
makeflash
This will compile the application and all the ESP-IDF components, generate bootloader,
partition table, and application binaries, and flash these binaries to your ESP32 board.
esptool.pyv2.0-beta2
Flashingbinariestoserialport/dev/ttyUSB0(appatoffset0x10000)...
esptool.pyv2.0-beta2
Connecting........___
Uploadingstub...
Runningstub...
Stubrunning...
Changingbaudrateto921600
Changed.
AttachingSPIflash...
Configuringflashsize...
Auto-detectedFlashsize:4MB
Flashparamssetto0x0220
Compressed11616bytesto6695...
Wrote11616bytes(6695compressed)at0x00001000in0.1seconds(effective920.5kbit/s)...
Hashofdataverified.
Compressed408096bytesto171625...
Wrote408096bytes(171625compressed)at0x00010000in3.9seconds(effective847.3kbit/
s)...
Hashofdataverified.
Compressed3072bytesto82...
Wrote3072bytes(82compressed)at0x00008000in0.0seconds(effective8297.4kbit/s)...
Hashofdataverified.
Leaving...
Hardresetting...
Espressif
!/!7 8
2017.11
!
5. Build and Flash
If there are no issues, at the end of build process, you should see messages describing
progress of loading process. Finally, the end module will be reset and “hello_world”
application will start.
If you'd like to use the Eclipse IDE instead of running make, check out the :doc:`Eclipse
guide <eclipse-setup>`.
6.2. Monitor
To see if “hello_world” application is indeed running, type makemonitor. This command is
launching :doc:`IDF Monitor <idf-monitor>` application:
$makemonitor
MONITOR
---idf_monitoron/dev/ttyUSB0115200---
---Quit:Ctrl+]|Menu:Ctrl+T|Help:Ctrl+TfollowedbyCtrl+H---
etsJun8201600:22:57
rst:0x1(POWERON_RESET),boot:0x13(SPI_FAST_FLASH_BOOT)
etsJun8201600:22:57
...
Several lines below, after start up and diagnostic log, you should see “Hello world!” printed
out by the application.
...
Helloworld!
Restartingin10seconds...
I(211)cpu_start:StartingscheduleronAPPCPU.
Restartingin9seconds...
Restartingin8seconds...
Restartingin7seconds...
To exit monitor use shortcut Ctrl+]. To execute makeflash and makemonitor in one shoot
type makeflashmonitor. Check section :doc:`IDF Monitor <idf-monitor>` for handy
shortcuts and more details on using this application.
That's all what you need to get started with ESP32!
Now you are ready to try some other :idf:`examples`, or go right to developing your own
applications.
Espressif
!/!8 8
2017.11
Disclaimer and Copyright Notice
Information in this document, including URL references, is subject to change without
notice.
THIS DOCUMENT IS PROVIDED AS IS WITH NO WARRANTIES WHATSOEVER,
INCLUDING ANY WARRANTY OF MERCHANTABILITY, NON-INFRINGEMENT, FITNESS
FOR ANY PARTICULAR PURPOSE, OR ANY WARRANTY OTHERWISE ARISING OUT
OF ANY PROPOSAL, SPECIFICATION OR SAMPLE.
All liability, including liability for infringement of any proprietary rights, relating to use of
information in this document is disclaimed. No licenses express or implied, by estoppel or
otherwise, to any intellectual property rights are granted herein.
The Wi-Fi Alliance Member logo is a trademark of the Wi-Fi Alliance. The Bluetooth logo is
a registered trademark of Bluetooth SIG.
All trade names, trademarks and registered trademarks mentioned in this document are
property of their respective owners, and are hereby acknowledged.
Copyright © 2017 Espressif Inc. All rights reserved.
Espressif IOT Team"
www.espressif.com
FCCLabel:TheFCCIDisonthefrontofthedevice.Itiseasilyvisible.
ThedeviceFCCIDis2AC7Z‐ESPWROOM32D.
Alabelwiththefollowingstatementsmustbeattachedtothehostendproduct:
ThisdevicecontainsFCCID:2AC7Z‐ESPWROOM32D.
Themanualprovidesguidancetothehostmanufacturerwillbeincludedinthedocumentationthatwill
beprovidedtotheOEM.
Themoduleislimitedtoinstallationinmobileorfixedapplications.
Theseparateapprovalisrequiredforallotheroperatingconfigurations,includingportableconfigurations
anddifferentantennaconfigurations.
TheOEMintegratorsareresponsibleforensuringthattheend‐userhasnomanualorinstructionsto
removeorinstallmodule.
ThemoduleislimitedtoOEMinstallationONLY.
Modulegrantee(thepartyresponsibleforthemodulegrant)shallprovideguidancetothehost
manufacturerforensuringcompliancewiththePart15SubpartBrequirements.
Thehostmanufacturerisresponsibleforadditionaltestingtoverifycomplianceasacompositesystem.
WhentestingthehostdeviceforcompliancewiththePart15SubpartBrequirements,thehost
manufacturerisrequiredtoshowcompliancewiththePart15SubpartBwhilethetransmittermodule(s)
areinstalledandoperating.Themodulesshouldbetransmittingandtheevaluationshouldconfirmthat
themodule’sintentionalemissionsarecompliant(i.e.fundamentalandoutofbandemissions)withthe
Radioessentialrequirements.Thehostmanufacturermustverifythattherearenoadditional
unintentionalemissionsotherthanwhatispermittedinthePart15SubpartBoremissionsarecomplaint
withtheRadioaspects.
CAUTION:
Anychangesormodificationsnotexpresslyapprovedbythegranteeofthisdevicecouldvoidtheuser’s
authoritytooperatetheequipment.
FCCRFExposureRequirements
ThisdevicecomplieswithFCCRFradiationexposurelimitssetforthforanuncontrolledenviroment.
Theantenna(s)usedforthistransmittermustnotbeco‐locatedoroperatinginconjunctionwithany
otherantennaortransmitterandmustbeinstalledtoprovideaseparationdistanceofatleast20cmfrom
allpersons.
FCCRegulations
Thisdevicecomplieswithpart15oftheFCCRules.Operationissubjecttothefollowingtwoconditions:
(1)Thisdevicemaynotcauseharmfulinterference,and(2)thisdevicemustacceptanyinterference
received,includinginterferencethatmaycauseundesiredoperation.
ThisdevicehasbeentestedandfoundtocomplywiththelimitsforaClassBdigitaldevice,pursuantto
Part15oftheFCCRules.
Theselimitsaredesignedtoprovidereasonableprotectionagainstharmfulinterferenceinaresidential
installation.Thisequipmentgenerates,usesandcanradiateradiofrequencyenergyand,ifnotinstalled
andusedinaccordancewiththeinstructions,maycauseharmfulinterferencetoradiocommunications.