Getting Started with Espressif ESP32 Wi-Fi & Bluetooth SoC using DOIT-ESP32-DevKit-V1 Development Board

Learn how to use Espressif ESP32 SoC for Wi-Fi and Bluetooth development using DOIT ESP32 DevKit V1 development board. Use Arduino, ESP-IDF, PlatformIO and VS Code for software development.
Gettgin Started with Espressif ESP32 WiFi BLE SoC Using DOIT-ESP32-DevKit-V1 CIRCUITSTATE Electronics Featured Image

ESP32 is a family of 32-bit SoCs (System-on-Chip) from the Chinese company Espressif. It was introduced as a successor to the popular ESP8266 Wi-Fi SoC from the same company. ESP32 quickly gained popularity due to its features and cost compared to similar products from US and EU companies. It blew everything else out of the water. Low cost and the features were not the only reasons for the success of ESP32. Instead, the company also heavily invested resources to create and publish super-detailed English documentation for their products (language is a real barrier for many Chinese companies to become successful outside of the country). Moreover, the company is also devoted to developing open-source toolchains and frameworks, especially for Arduino development. Today, ESP32 is undoubtedly the first choice for engineers and makers when they want to implement something with Wi-Fi and Bluetooth. The lower cost and the accessibility to tools and other resources for development make ESP32 boards the favorite of makers around the world. Espressif continues to empower its business by leveraging the maker market. Today we are going to learn more about their legacy ESP32 SoC and a popular development board based on it called the DOIT ESP32 DevKit V1.

We can develop embedded firmware for you

CIRCUITSTATE can develop embedded firmware for any microcontroller/microprocessor including 8051, PIC, AVR, ARM, STM32, ESP32, and RISC-V using industry-leading SDKs, frameworks, and tools. Contact us today to share your requirements.

Electronics Networking Vector Image

ESP32 SoC

ESP32 is a family of SoCs (System-on-Chip) from Espressif. But when it was first introduced, there was only one SoC called simply “ESP32”. As the company added more products to the line-up, it became a family. Today there are many other SoCs in the family of which a few are ESP32-S2, ESP32-S3, and ESP32-C3. In this post, we will only talk about the first version of the ESP32 and that’s why we called it the legacy ESP32.

ESP32 is precisely a System-on-Chip. This is because the chip die integrates more than a typical microcontroller does. The ESP32 integrates entire RF front-ends and MAC for Bluetooth and Wi-Fi into a single chip. The CPU used in ESP32 is a dual-core Xtensa LX6 from Tensilica (now Cadence). The Xtensa is a 32-bit RISC core IP that is different from ARM, AVR, 8051, and others. The Xtensa cores are supported by GCC-based Xtensa toolchain for development. Shown below is the internal block diagram of the ESP32 SoC.

Espressif ESP32 Functional Block Diagram
ESP32 functional block diagram

ESP32 has multiple SoC variants of which some are now NRND (Not Recommended for New Designs). Try to not use NRND products for new designs.

Ordering CodeCore CountChip RevisionIn-Package Flash/PSRAMPackageVDD_SDIO Voltage
ESP32-DOWD-V32v3.0/v3.14QFN 5*51.8 V/3.3 V
ESP32-D0WDR2-V32v3.0/v3.142 MB PSRAMQFN 5*53.3 V
ESP32-U4WDH2v3.0/v3.144 MB flash (80 MHz)QFN 5*53.3 V
ESP32-DOWDQ6-V3 (NRND)2v3.0/v3.14QFN 6*61.8 V/3.3 V
ESP32-DOWD (NRND)2v1.0/v1.15QFN 5*51.8 V/3.3 V
ESP32-DOWDQ6 (NRND)2v1.0/v1.15QFN 6*61,8 V/3.3 V
ESP32-SOWD (NRND)1v1.0/v1.15QFN 5*51,8 V/3.3 V
ESP32 SoC variants comparison

As you can see there are a few variants with different core counts and in-package flash capacities. For this tutorial, we will use the ESP32-D0WDQ6 variant, simply because it is what is present on the development board we are going to use. But as we said, you should not use that specific variant for any actual product designs as it is in the NRND status. Instead, you can use ESP32-DOWD-V3, for example, which has the same hardware and software functionality as the D0WDQ6 variant.

Each CPU core of the ESP32 is a separate processor. So with a dual-core SoC, you get two processors in the same package. To give you a familiar context, the Arduino Uno uses an ATmega328P AVR microcontroller with a single core inside. Compared to an Arduino Uno, ESP32 is much more powerful as shown in the comparison table below.

PropertyESP32ATmega328P (Uno)
Core TypeXtensa LX6AVR
Instruction TypeRISCRISC
Instruction Size32-bit8-bit
Core Count21
Maximum Clockspeed240 MHz20 MHz
SRAM520 KB2 KB
Flash SizeUp to 16 MB32 KB
GPIO Count3423
ADC Resolution12 bit10 bit
PWMAll GPIO pinsLimited GPIO pins
InterruptAll GPIO pins2 GPIO pins
UART31
SPI41
I2C21
I2S20
CAN (TWAI)10
DAC8 bitNone
SDIO10
Ethernet10
USBNoNo
Price~$2.9~$2.7
Firmware Lock ProtectionYesYes
Working Voltage2.3 to 3.6V1.8 to 5.5V
Comparison between ESP32 and ATmega328P used in Arduino Uno

The more the CPU frequency the faster it can execute your code. Similarly, large memory width and instruction size make accessing memory and executing instructions faster. Therefore the computing throughput of an ESP32 SoC is much higher than an average 8-bit microcontroller. This is what allows ESP to run web servers or drive large LCD displays. ESP32 also integrates a large 520 KB of SRAM (Static RAM), 448 KB ROM (not usable), and optionally up to 16 MB flash memory and 8 MB PSRAM (Pseudo Static RAM). Some variants come with internal flash and PSRAM capacities so that you can reduce the BoM cost and PCB area.

In terms of peripherals, ESP32 comes with all modern hardware peripherals such as multiple UART, SPI, I2C, I2S, CAN, SDIO, Ethernet, ADC, and DAC. The only major feature the ESP32 lacks is USB. But Espressif solved this with later versions of ESP32 such as ESP32-S3.

Most of the peripheral functions can be mapped to any GPIO pins of the ESP32, thanks to the IO multiplexer. There are 34 GPIO pins available but not all of them are user-accessible. Some pins have special functions and therefore can not be used for general-purpose IO operations. We will talk about this later.

Features & Specifications

  • W-Fi
    • IEEE 802.11n (2.4 GHz), up to 150 Mbps
    • WMM
    • TX/RX A-MPDU, RX A-MSDU
    • Immediate Block ACK
    • Defragmentation
    • Automatic Beacon monitoring (hardware TSF)
    • 4 × virtual Wi-Fi interfaces
    • Simultaneous support for Infrastructure Station, SoftAP, and Promiscuous modes
      Note that when ESP32 is in Station mode, performing a scan, the SoftAP channel will be changed.
    • Antenna diversity
  • Bluetooth
    • Compliant with Bluetooth v4.2 BR/EDR and Bluetooth LE specifications
    • Class-1, Class-2, and Class-3 transmitter without external power amplifier
    • Enhanced Power Control
    • +9 dBm transmitting power
    • NZIF receiver with –94 dBm Bluetooth LE sensitivity
    • Adaptive Frequency Hopping (AFH)
    • Standard HCI based on SDIO/SPI/UART
    • High-speed UART HCI, up to 4 Mbps
    • Bluetooth 4.2 BR/EDR and Bluetooth LE dual mode controller
    • Synchronous Connection-Oriented/Extended (SCO/eSCO)
    • CVSD and SBC for audio codec
    • Bluetooth Piconet and Scatternet
    • Multi-connections in Classic Bluetooth and Bluetooth LE
    • Simultaneous advertising and scanning
  • CPU and Memory
    • Xtensa® single-/dual-core 32-bit LX6 microprocessor(s)
    • CoreMark® score:
      • 1 core at 240 MHz: 504.85 CoreMark; 2.10 CoreMark/MHz
      • 2 cores at 240 MHz: 994.26 CoreMark; 4.14 CoreMark/MHz
    • 448 KB ROM
    • 520 KB SRAM
    • 16 KB SRAM in RTC
    • QSPI supports multiple flash/SRAM chips
  • Clocks and Timers
    • Internal 8 MHz oscillator with calibration
    • Internal RC oscillator with calibration
    • External 2 MHz ~ 60 MHz crystal oscillator (40 MHz only for Wi-Fi/Bluetooth functionality)
    • External 32 kHz crystal oscillator for RTC with calibration
    • Two timer groups, including 2 × 64-bit timers and 1 × main watchdog in each group
    • One RTC timer
    • RTC watchdog
  • Advanced Peripheral Interfaces
    • 34 × programmable GPIOs
      • 5 strapping GPIOs
      • 6 input-only GPIOs
      • 6 GPIOs needed for in-package flash/PSRAM (ESP32-D0WDR2-V3, ESP32-U4WDH)
    • 12-bit SAR ADC up to 18 channels
    • 2 × 8-bit DAC
    • 10 × touch sensors
    • 4 × SPI
    • 2 × I2S
    • 2 × I2C
    • 3 × UART
    • 1 host (SD/eMMC/SDIO)
    • 1 slave (SDIO/SPI)
    • Ethernet MAC interface with dedicated DMA and IEEE 1588 support
    • TWAI®, compatible with ISO 11898-1 (CAN Specification 2.0)
    • RMT (TX/RX)
    • Motor PWM
    • LED PWM up to 16 channels
  • Power Management
    • Fine-resolution power control through a selection of clock frequency, duty cycle, Wi-Fi operating modes, and individual power control of internal components
    • Five power modes designed for typical scenarios: Active, Modem-sleep, Light-sleep, Deep-sleep, Hibernation
    • Power consumption in Deep-sleep mode is 10 μA
    • Ultra Low-Power (ULP) coprocessors
    • RTC memory remains powered on in Deep-sleep mode
  • Security
    • Secure boot
    • Flash encryption
    • 1024-bit OTP, up to 768-bit for customers
    • Cryptographic hardware acceleration:
      • AES
      • Hash (SHA-2)
      • RSA
      • ECC
      • Random Number Generator (RNG)

Pinout

Espressif ESP32 6x6mm QFN Package pinout
ESP32 6x6mm QFN pinout (top view)

Chip Revisions

One thing you have to look out for when selecting ESP32 chips is the chip revision. Most modern ICs are designed programmatically using a set of instructions. Sometimes there can be bugs that make it into the semiconductor fabrication stage and can not be fixed by software. Such bugs are fixed with workarounds as a temporary solution. For a permanent solution, the chip design is revised and a new version is produced to replace the affected ones. ESP32 also underwent multiple chip revisions, fixing bugs in each version. When you order new chips and modules, you have to make sure you are getting the latest version. This can be determined by either part labels, or by checking the manufacturing date (week or year code). The following image shows how the marking appears on the chip.

Espressif ESP32 SoC IC Chip Marking Legend by CIRCUITSTATE Electronics
ESP32 chip marking legend. This marking is for chips without in-package Flash or PSRAM.
Espressif ESP32-D0WDQ6 Chip Revision and Die Marking on the Package CIRCUITSTATE Electronics
ESP32-D0WDQ6 chip revision 1 manufactured on week 27 of 2018.

For example, in the image of ESP32-D0WDQ6, the date code is 272018 which translates to week 27 of the year 2018, and the TUB0PKAV07 is the main die serial number. According to Espressif documents, the second character of the chip die should indicate the chip revision. However, the character “U” is not a valid one according to the following table. So we assume it is the third character “B” that is the revision indicator.

Chip SeriesChip RevisionMarking Indicator
ESP32v0.0A
v1.0B
v1.1F
v3.0E
v3.1G
ESP32-S2v0.0A
v1.0B
ESP32-C3v0.0A
v0.1B
v0.2C
v0.3D
v0.4E
ESP32-S3v0.0A
v0.1B
v0.2C
ESP32-C2/ESP8684v0.0A
v1.0AA
v1.1B
v1.2C
ESP32-C6v0.0A
ESP32-H2v0.0A
v0.1B
ESP32 SoC series and their chip revision indicators. Source: Espressif docs

We are not sure why there is a discrepancy between the official documentation and the actual chip marking. Anyway, you now know how to identify the chip revisions. Additionally, the chip model and revision are printed by the esptool during uploading or can be printed with the following code in ESP-IDF or Arduino IDE. Refer to this ESP-IDF program for more info.

esp_chip_info_t chip_info;
esp_chip_info (&chip_info);
Serial.println ("Chip model: " + String (chip_info.model));
Serial.println ("Chip revision: " + String (chip_info.revision));
C++

You can find everything about chip revisions, bugs, and their workarounds in the official errata documents from Espressif.

  1. ESP32 SoC Series – Errata [PDF]
  2. Espressif Chip Packaging Information [PDF]
Espressif ESP32 SoC Chip Revisions and Chip Variants Tree CIRCUITSTATE Electronics
ESP32 SoC chip revisions and variants

ESP32-WROOM-32

Espressif ESP32-WROOM-32 WiFi Bluetooth Module by CIRCUITSTATE Electronics
ESP32-WROOM-32 modules

You can buy bare ESP32-D0WDQ6 chips and design a system around it. You will need to add an external flash chip, PSRAM if necessary, crystal, reset circuit, and antenna circuit with matched impedance and a suitable antenna or antenna connector. That sounds like too much work, right? In addition to that, if you plan to convert your design into a sellable product, you will also need to get approvals from many regulatory bodies such as FCC depending on where you are going to sell it. That process can be tedious and costly. To alleviate that problem, most manufacturers also produce precertified modules that you can directly integrate into your products. These modules are usually small PCBs with castellated holes that can be directly soldered onto a main PCB; no wiring or connectors are needed. The good thing? Since they are precertified, you don’t need to apply for certification by yourself. This saves you a lot of time and money and allows you to reach the market faster.

Espressif also produces precertified ESP32 modules and one such module is the ESP32-WROOM-32. It integrates ESP32-D0WDQ6 SoC, 40 MHz crystal, 4 MB SPI flash, a reset circuit, and a PCB antenna. Everything you need to get the ESP32 working is right within the module. All you need to do is supply power and upload your program. For this reason, you will find more development boards with ESP32 modules rather than bare chips. If you are planning to buy the modules, then choose the ESP32-WROOM-32E version (comes with V3 chip) as the non-E version is now NRND.

Espressif ESP32-WROOM-32E WiFi  Bluetooth Module by CIRCUITSTATE Electronics
ESP32-WROOM-32E modules

Specifications

CategoriesItemsSpecifications
CertificationRF CertificationFCC, CE, SRRC, ANATEL, NCC, MIC
Wi-Fi CertificationWi-Fi Alliance
Bluetooth CertificationBQB
Green CertificationRoHS/REACH
TestReliabilityHTOL/HTSL/uHAST/TCT/ESD
Wi-FiProtocols802.11 b/g/n (802.11n up to 150 Mbps)
A-MPDU and A-MSDU aggregation and 0.4 us guard interval support
Center frequency range of operating channel2412 ~ 2484 MHz
BluetoothProtocolsBluetooth v4.2 BR/EDR and Bluetooth LE specification
RadioNZIF receiver with -97 dBm sensitivity
Class-1, Class-2 and Class-3 transmitter
AFH
AudioCVSD and SBC
HardwareModule interfacesSD card, UART, SPI, SDIO, I2C, LED PWM, Motor PWM, 12S, IR, pulse counter, GPIO, capacitive touch sensor, ADC, DAC, Two-Wire Automotive Interface (TWAI), compatible with ISO11898-1 (CAN Specification 2.0)
Integrated crystal40 MHz
Integrated SPI flash4 MB
Operating voltage/Power supply3.0 V ~ 3.6 V
Operating currentAverage: 80 mA
Minimum current delivered by power supply500 mA
Recommended operating ambient temperature range-40 °C ~ +85 °C
Package size18 mm X 25.5 mm X 3.10 mm
Moisture sensitivity level (MSL)Level 3
ESP32-WROOM-32 specifications

Pinout

Espressif ESP32-WROOM-32 Module Pinout by CIRCUITSTATE Electroncis
ESP32-WROOM-32 pinout

Mechanical Drawing

Espressif ESP32-WROOM-32 Module Mechanical Drawing by CIRCUITSTATE Electronics
ESP32-WROOM-32 mechanical drawing

Schematic

Espressif ESP32-WROOM-32 Module Schematic Diagram by CIRCUITSTATE Electronics
ESP32-WROOM-32 schematic diagram

As you can see a few of the GPIO pins are used for interfacing the flash memory. These pins can not be used for any other purposes. This is also true even if the flash memory is inside the ESP32 chip.

Pin NameGPIO
SCS/CMDGPIO11
SCK/CLKGPIO6
SHD/SD2GPIO9
SDI/SD1GPIO8
SDO/SD0GPIO7
SWP/SD3GPIO10
ESP32 SPI flash pins

ESP32 needs a 40 MHz or 26 MHz crystal for the clock circuit. You can use the ESP32-WROOM-32 module schematic as a reference for your own board designs based around ESP32 bare chips.

DOIT ESP32 DevKit V1

DOIT-ESP32-Devkit-V1 WiFi Development Board Top Straight View by CIRCUITSTATE Electronics
DOIT ESP32 DevKit V1 board (30 pin version)

DOIT ESP32 DevKit V1 is probably the most popular ESP32 board out there. It was first produced by DOIT (Sibo Zhilian Technology Co., Ltd), another Chinese company. The design was later replicated by many other generic manufacturers and the market is currently saturated with similar clones. So there is no guarantee that you will get an “original” board. But it doesn’t matter either. Because most boards cost in the range of INR 350 and there are no significant differences between different makes. That said, some boards come with conflicting pinouts in our experience and auto-programming doesn’t work correctly for some boards. This can be due to faulty ESP32 chips or modules. Yes, if you do not buy from authorized sellers, you will probably get a faulty ESP32 board. Some of the functions of the board may still work, but some don’t. So just be cautious when you are buying a new board. If you do not want to take a risk, then buy the official ESP32-DevKitC from Espressif.

There are two variants of the DOIT ESP32 DevKit V1 in the market – one with 30 pins and another with 36 pins. The original board we bought almost 7 years ago has 36 pins (as two rows of 18-pin headers). The board is physically longer and breaks out the flash memory pins. But since we don’t need the SPI flash pins for regular applications, the boards that came later must have removed them. So in the 30-pin version of the board, the SPI flash pins are dropped. Regardless of the pi count, both boards have the same functionality. If you are buying these boards for plugging into another board you have, then you must make sure you get the correct one.

Even though we are going to use the DOIT ESP32 DevKit V1 board for this tutorial, there are countless other ESP32-based boards out there and this tutorial will be applicable to all of them. If you are wondering if there is an official Arduino board that uses ESP32, then yes, the Arduino Nano ESP32 is a recent board from Arduino that uses ESP32-S3 SoC. We have a complete tutorial on it.

Getting Started with Arduino Nano ESP32 by CIRCUITSTATE Electronics Featured Image

Getting Started with Arduino Nano ESP32 Wi-Fi & IoT Development Board

Get started with the latest Arduino Nano ESP32-S3 microcontroller board for Wi-Fi, BLE and IoT development board.

Features

SpecificationValue
ModuleESP32-WROOM-32
SoCESP32-D0WDQ6
Flash Memory4 MB
PSRAMNo
Antenna TypePCB Strip
USBUSB-Micro
USB-Serial ChipCP2102
Voltage RegulatorAMS1117 3.3V
Supply Voltage4-12 V
LEDs2 (Power & Debug)
Debug LED PinGPIO2
Reset ButtonYes
Boot ButtonYes
Breadboard-CompatibleNo
DOIT ESP32 DevKit V1 features and specifications

Pinout

We have created a beautiful vector pinout diagram and Arduino pin reference for the DOIT ESP32 DevKit V1 board. You can download it in high-resolution PNG or as PDF. The PDF file is compatible with Adobe Illustrator and you can edit and redistribute it if you want.

DOIT-ESP32-DevKit-V1-Pinout-Diagram-and-Reference-CIRCUITSTATE-Electronics-Featured-Image-01-2

DOIT ESP32 DevKit V1 Wi-Fi Development Board – Pinout Diagram & Arduino Reference

Complete pinout reference for DOIT ESP32 DevKit V1 Wi-Fi development board including Arduino pin and interface references.
ESP32-DevKit-V1-Pinout-Diagram-r0.1-CIRCUITSTATE-Electronics-2
DOIT ESP32 DevKit V1 (30 pin version) pinout diagram. Click for a high-resolution image.

Schematic

DOIT ESP32 DevKit V1 30 Pin Version Schematic by CIRCUITSTATE Electronics
DOIT ESP32 DevKit V1 (30-pin version) schematic

Programming

Before we explain how you can develop software for your ESP32 board using various frameworks and platforms, you should know a few things about the methods of programming an ESP32 SoC and how it differs from other microcontrollers.

ESP32 SoC has a JTAG (Joint Test Action Group) interface for programming and debugging. The JTAG functionality is assigned to GPIO pins given in the following table. You can use the official ESP-Prog debugger/programmer to program or debug your ESP32 chips using the JTAG interface.

Pin NameGPIOFunction
MTDI12Test Data In
MTCK13Test Clock
MTMS14Test Mode Select
MTDO15Test Data Out
ESP32 JTAG pins

However, the widely used interface for programming ESP32 is not the JTAG, but a serial interface. The UART0 serial port of ESP32 can be used to program the flash memory connected to the ESP32. This is achieved with the help of a bootloader program saved in the ROM of the ESP32. The 448 KB of ROM contains read-only programs that are critical for the functioning of the ESP32 SoC. A user can not erase this program manually or accidentally. The presence of the bootloader prevents you from bricking the ESP32 (you can still brick your ESP32 if you want to) and makes recovery easy even if you did something wrong.

One of the jobs of the bootloader is to check the states of a few GPIO pins called strapping pins and initialize the SoC to different configurations. It can also detect when the user tries to program the flash via the UART0 port. Whenever it detects such an operation, it accepts the data coming through the serial port, writes it to the flash memory, and restarts the SoC. We will see this in action later.

The GPIO pins 1 (U0TXD) and 3 (U0RXD) are used for the UART0 interface by default. You can connect any USB-to-Serial converters such as CP2102, FT232, etc. to the serial port in order to connect an ESP32 board to a computer and upload the firmware through the serial link. Before you can upload your firmware, you need to tell the bootloader about it. That can be done in two ways; by manually pressing the BOOT button or using an auto-programming circuit.

GPIO0 is a strapping pin and the bootloader will enter serial bootloader mode whenever it detects the pin state to be LOW during startup (after a power-up or restart). The GPIO0 is internally pulled up. When the pin state is HIGH, ESP32 will execute the firmware in the flash memory as normal. GPIO0 pin is typically connected to a push-button which if pressed, will connect the GPIO0 to GND. You can find this button on the DOIT ESP32 DevKit V1 board. You need to press both the BOOT button and EN (Reset) button together and release the EN button first.

The manual activation of the BOOT button can be automated with a simple auto-programming circuit. This is achieved with the help of two complimentary signals DTR (Data Terminal Ready) and RTS (Request to Send) coming from a USB-Serial chip. These are called flow control pins (together with CTS (Clear to Send)).

ESP32 Serial Auto Program Circuit CIRCUITSTATE Electronics
ESP32 serial auto-programming circuit

The flow control pins can be controlled from the serial monitor provided by the operating system. In Windows, the flow control signals associated with a COM port can be controlled from apps like YAT. The two pins can be used to set the state of both the GPIO0 and EN pins of the ESP32. When you try to upload a firmware file serially, the DTR and RTS pins are signaled appropriately to put the chip into serial bootloader mode. This removes the need to manually press the BOOT button on the board.

The software tool that takes care of driving the flow control pins and uploading the firmware is the esptool from Espressif. It is an open-source tool written in Python and it works on all operating systems. If you are curious, the reset.py script is what takes care of controlling the flow control pins.

System Organization

Before delving into software development, let’s learn a few things about the software side of things of ESP32. This knowledge is crucial to understanding how your application is loaded and runs on an ESP32.

Flash Partition

The ESP32-WROOM-32 module has 4 MB of flash memory for storing programs and data. ESP32 can support up to 16 MB of flash memory. To organize the data and programs better, the whole memory can be divided into separate logical sections called partitions. The starting address of each partition and their sizes will be stored in the flash memory. Such a list is called a partition table. ESP32 partition table is stored at an offset 0x8000 (memory address) with a maximum size of 4 KB. A total of 95 entries can be stored in the table. Each entry in the partition table has a name (label), type (app, data, or something else), subtype, and the offset in flash where the partition is loaded. You can configure the partition table according to your application needs using the ESP-IDF tools. For example, the predefined partition table Single factory app, no OTA has the following partition scheme.

# ESP-IDF Partition Table
# Name,   Type, SubType, Offset,  Size, Flags
nvs,      data, nvs,     0x9000,  0x6000,
phy_init, data, phy,     0xf000,  0x1000,
factory,  app,  factory, 0x10000, 1M,
CSV

The app type partition contains executable programs and the data type contains any type of data. factory partition is where your programs are stored by default. You can learn more about ESP32 partitions from the ESP-IDF partition table documentation.

ESP32 Bootloader

We have already mentioned about the ESP32 bootloader and one of its functions. The following is a set of all functions taken care of by the bootloader.

  1. Minimal initial configuration of internal modules.
  2. Initialize Flash Encryption and/or Secure features, if configured.
  3. Select the application partition to boot, based on the partition table and OTA data (if any).
  4. Load this image to RAM (IRAM & DRAM) and transfer management to the image that was just loaded.

The bootloader has two stages of execution.

  1. First Stage Bootloader in ROM loads the second-stage bootloader image to RAM (IRAM & DRAM) from flash offset 0x1000.
  2. The Second Stage Bootloader loads the partition table and main app image from the flash.

Once the bootloader stages are complete the application can start executing. The second-stage bootloader can decide which app partition to execute. ESP32 supports OTA (Over the Air) updates and a new version of your app can be loaded into the OTA partition of the flash. If the bootloader finds a new version of the app, it will start to execute that. You can learn more about how the bootloader works and how the startup process of an ESP32 works from the ESP-IDF bootloader documentation.

FreeRTOS

A Real-Time Operating System (RTOS) for embedded systems helps us manage tasks and data in a better way than a simple infinite loop usually implemented on low-end microcontrollers. FreeRTOS is an open-source RTOS used by the ESP-IDF framework with a few modifications. With it, we can do multiple tasks parallelly, either in the same core or in different cores, and manage inter-process communication and synchronization. We have a dedicated tutorial covering FreeRTOS and how you can write parallel multitasking apps on ESP32 using Arduino.

How-to-Write-Parallel-Multitasking-Applications-for-ESP32-with-FreeRTOS-and-Arduino-CIRCUITSTATE-Electronics-Featured-Image-01-2

How to Write Parallel Multitasking Applications for ESP32 using FreeRTOS & Arduino

Learn how to take advantage of the multitasking features of FreeRTOS for ESP32 dual-core SoC using your favorite Arduino IDE. Use our examples to learn about mutex, semaphore and critical section code.

Software Development

Software development for the ESP32 SoC family is carried out with the help of a GCC-based toolchain for Xtensa cores. For ESP32, Espressif has compiled them into a software development framework called ESP-IDF (Espressif IoT Development Framework). All official features and SoCs are first supported by the ESP-IDF before others. In addition to the ESP-IDF, Espressif also officially maintains the arduino-esp32 core for Arduino development. With it, you can write Arduino-style code and use all Arduino libraries with your ESP32-based boards. We will demo both ESP-IDF and Arduino-ESP32 frameworks in this tutorial.

Arduino IDE

The most popular way of developing software for ESP32 boards is through the Arduino Development Framework (ADF). Arduino is simple and intuitive in its design. But simple doesn’t mean it is less powerful. Because the Arduino ESP32 framework uses the same ESP-IDF framework and FreeRTOS for implementing your Arduino code on ESP32. So pretty much everything you can do with ESP-IDF can be done with Arduino framework as well. Another reason why the Arduino framework is the favorite of makers is the availability of Arduino-style libraries. It saves you from writing libraries on your own and you can build faster with other open-source libraries. CIRCUITSTATE also develops and publishes open-source libraries that are compatible with ESP32. You can check them out on our GitHub.

Installing

Arduino IDE version 2 with ESP32 packages and code
Arduino ESP32 packages

We will use the latest Arduino IDE 2 for this tutorial. You can use the Boards Manager of the Arduino IDE to search for “esp32” and install the package esp32 by Espressif Systems. You need to have an active internet connection for this to work. If you are unable to find the package, then go to Files → Preference → Additional boards manager URLs: and add the following URL on a new line.

https://espressif.github.io/arduino-esp32/package_esp32_index.json
URL

After saving the preferences, the boards index will be updated and you will be able to install it. The installation can take some time to finish. Wait until it finishes before doing anything else. If you are new to the Arduino IDE and want to learn more about it, we have a dedicated tutorial using the popular Arduino Uno board.

Getting-Started-with-Arduino-Open-Source-Electronics-Prototyping-Platform-Arduino-UNO-CIRCUITSTATE-Electronics-Featured-Image-01-2

Getting Started with Arduino – Beginner’s Tutorial to Open-Source Hardware Prototyping with Arduino Uno

Learn electronics hardware prototyping and coding with the most popular Arduino open-source microcontroller platform. Learn how to write your first program and upload it to the Arduino Uno board.

Board Definition

The boards.txt is the file that contains all the definitions of the boards supported by the arduino-esp32 core. Whenever support for a new board is to be added, it is done by updating this file. The definition of the DOIT ESP32 DevKit V1 is given below.

esp32doit-devkit-v1.name=DOIT ESP32 DEVKIT V1

esp32doit-devkit-v1.bootloader.tool=esptool_py
esp32doit-devkit-v1.bootloader.tool.default=esptool_py

esp32doit-devkit-v1.upload.tool=esptool_py
esp32doit-devkit-v1.upload.tool.default=esptool_py
esp32doit-devkit-v1.upload.tool.network=esp_ota

esp32doit-devkit-v1.upload.maximum_size=1310720
esp32doit-devkit-v1.upload.maximum_data_size=327680
esp32doit-devkit-v1.upload.flags=
esp32doit-devkit-v1.upload.extra_flags=

esp32doit-devkit-v1.serial.disableDTR=true
esp32doit-devkit-v1.serial.disableRTS=true

esp32doit-devkit-v1.build.tarch=xtensa
esp32doit-devkit-v1.build.bootloader_addr=0x1000
esp32doit-devkit-v1.build.target=esp32
esp32doit-devkit-v1.build.mcu=esp32
esp32doit-devkit-v1.build.core=esp32
esp32doit-devkit-v1.build.variant=doitESP32devkitV1
esp32doit-devkit-v1.build.board=ESP32_DEV

esp32doit-devkit-v1.build.f_cpu=240000000L
esp32doit-devkit-v1.build.flash_mode=dio
esp32doit-devkit-v1.build.flash_size=4MB
esp32doit-devkit-v1.build.boot=dio
esp32doit-devkit-v1.build.partitions=default
esp32doit-devkit-v1.build.defines=

esp32doit-devkit-v1.menu.FlashFreq.80=80MHz
esp32doit-devkit-v1.menu.FlashFreq.80.build.flash_freq=80m
esp32doit-devkit-v1.menu.FlashFreq.40=40MHz
esp32doit-devkit-v1.menu.FlashFreq.40.build.flash_freq=40m

esp32doit-devkit-v1.menu.UploadSpeed.921600=921600
esp32doit-devkit-v1.menu.UploadSpeed.921600.upload.speed=921600
esp32doit-devkit-v1.menu.UploadSpeed.115200=115200
esp32doit-devkit-v1.menu.UploadSpeed.115200.upload.speed=115200
esp32doit-devkit-v1.menu.UploadSpeed.256000.windows=256000
esp32doit-devkit-v1.menu.UploadSpeed.256000.upload.speed=256000
esp32doit-devkit-v1.menu.UploadSpeed.230400.windows.upload.speed=256000
esp32doit-devkit-v1.menu.UploadSpeed.230400=230400
esp32doit-devkit-v1.menu.UploadSpeed.230400.upload.speed=230400
esp32doit-devkit-v1.menu.UploadSpeed.460800.linux=460800
esp32doit-devkit-v1.menu.UploadSpeed.460800.macosx=460800
esp32doit-devkit-v1.menu.UploadSpeed.460800.upload.speed=460800
esp32doit-devkit-v1.menu.UploadSpeed.512000.windows=512000
esp32doit-devkit-v1.menu.UploadSpeed.512000.upload.speed=512000

esp32doit-devkit-v1.menu.DebugLevel.none=None
esp32doit-devkit-v1.menu.DebugLevel.none.build.code_debug=0
esp32doit-devkit-v1.menu.DebugLevel.error=Error
esp32doit-devkit-v1.menu.DebugLevel.error.build.code_debug=1
esp32doit-devkit-v1.menu.DebugLevel.warn=Warn
esp32doit-devkit-v1.menu.DebugLevel.warn.build.code_debug=2
esp32doit-devkit-v1.menu.DebugLevel.info=Info
esp32doit-devkit-v1.menu.DebugLevel.info.build.code_debug=3
esp32doit-devkit-v1.menu.DebugLevel.debug=Debug
esp32doit-devkit-v1.menu.DebugLevel.debug.build.code_debug=4

esp32doit-devkit-v1.menu.EraseFlash.none=Disabled
esp32doit-devkit-v1.menu.EraseFlash.none.upload.erase_cmd=
esp32doit-devkit-v1.menu.EraseFlash.all=Enabled
esp32doit-devkit-v1.menu.EraseFlash.all.upload.erase_cmd=-e
boards.txt

There are limited options available from the menu for the DOIT ESP32 DevKit V1. If you need all customizable options, you can change the board type to ESP32 Dev Module.

ESP32 Dev Module Board Options for Arduino by CIRCUITSTATE Electronics
ESP32 Dev Module board options

Let us explain those options to you.

  1. JTAG Adapter
    • Selects the JTAG adapter type for debugging. Can be,
      • FTDI Adapter – a debugger using FT2232 chips or similar. For example, ESP-Prog.
      • ESP USB Bridge – using an ESP32 chip with USB-JTAG functionality such as ESP32-S2 and ESP32-S3.
  2. PSRAM
    • Whether to enable PSRAM or not.
  3. Partition Scheme
    • The type of partitioning you want to use.
  4. CPU Frequency
    • The CPU frequency you want to use.
    • The larger the frequency, the higher the throughput. It also increases the power consumption.
    • Not all frequencies can support Wi-Fi and Bluetooth functions.
    • The crystal frequency has to be 40 MHz or 26 MHz.
  5. Flash Mode
    • Determines which type of SPI interface to be used with the flash chip.
    • Can be QIO, DIO, QOUT, and DOUT.
    • QIO at 80 MHz is the fastest.
    • Select depending on the type of flash chip you are using.
  6. Flash Frequency
    • Selects the SPI frequency for the flash chip.
    • Not all flash chips support all the frequencies.
  7. Flash Size
    • Selects the flash size.
    • Maximum is 16 MB.
  8. Upload Speed
    • Selects the upload speed in bits.
    • Lower the upload speed if you are encountering uploading issues.
  9. Arduino Runs On
    • Selects which CPU core you want to use for the Arduino program. Core 1 is the default. Core 0 is used for RF-related functions.
  10. Events Run On
    • Selects where the Wi-Fi-related events (callbacks) run.
  11. Core Debug Level
    • Selects how much debugging information has to be printed when running.
    • Setting to Verbose will print all possible debug information.
  12. Erase All Flash Before Sketch Upload
    • Whether to erase the entire flash chip before uploading the code.
    • Erasing is writing the flash chip with 0xFF. Since flash chips have a limited (still large) number of write cycles available, we only need to erase portions we want to write to.

Connecting the Board

You can use a USB-Micro cable to connect the board to your computer. A COM port will be opened on your computer. The COM port is a serial communication port where you can send or receive binary data. The COM port number is automatically assigned by the operating system and is not permanent for your board. The OS can reassign the COM port to another device if needed. The OS assigns the COM port number based on the availability. So it is important to check the COM port associated with your device every time you plug it on the computer.

You can open the device manager of your system to see the COM port. In Windows, the COM ports will be listed under Ports (COM & LPT) as you can see from the screenshot below.

DOIT-ESP32-DevKit-V1 WiFi Board CP2102 USB Serial COM Port on Windows Device Manager by CIRCUITSTATE Electronics
COM ports list on the Windows device manager

Here, our DOIT ESP32 DevKit V1 board has the COM29 port assigned to it. But how do we know this? There is more than one COM port and none of them says it is a DOIT ESP32 DevKit V1 board. We know it for two reasons,

  1. When we plug and unplug the DOIT ESP32 DevKit V1 board, the COM29 appears and disappears, which indicates that the COM port is assigned to that device.

  2. The COM port description Silicon Labs CP210x USB to UART Bridge (COM29) means the USB-Serial chip that uses that COM port is indeed the CP2102 chip on the DevKit board.

So that is how you find which board is which. But what if you have two DOIT ESP32 DevKit V1 boards connected to the same computer? How do we know which one is which? Well, you have to manually plug and unplug the device to find out. The COM port assigned to a device during an OS session doesn’t usually change in that session. So you can be confident that the COM port will remain the same, at least until you restart your computer.

When you connect your board to the computer, and open the serial monitor through the board’s COM port, you will see a strange message on the serial monitor every time the board is reset. The message looks like something below.

ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1184
load:0x40078000,len:13260
load:0x40080400,len:3028
entry 0x400805e4
Serial Monitor

This diagnostic startup message is printed by the ESP32’s bootloader program through UART0 port at a baudrate of 115200 bps. The message contains some important working parameters related to flash memory, CPU clock, and startup reason among other things. This message is printed even before your actual code starts and baudrate doesn’t depend on the baudrate you are going to use for your board. For example, if you are going to print some messages at 9600 bps through the serial port, the boot message will still be printed at 115200 bps and you will see some garbage data on the serial monitor before your actual messages.

DOIT-ESP32-DevKit-V1 WiFi Board Serial Startup Boot Message Garbage Data by CIRCUITSTATE Electronics
ESP32 serial boot message showing up as garbage data with 9600 bps baudrate

You can disable the ESP32 serial boot message by pulling the GPIO15 pin LOW during startup or reset.

Compiling & Uploading

Below is a simple blink sketch to blink the onboard LED of DOIT ESP32 DevKit V1. The LED is connected to GPIO2 and can be accessed as LED_BUILTIN.

void setup() {
  // put your setup code here, to run once:
  Serial.begin (115200);
  Serial.println ("Blink with ESP32");

  pinMode (LED_BUILTIN, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite (LED_BUILTIN, HIGH);
  delay (500);
  digitalWrite (LED_BUILTIN, LOW);
  delay (500);
}
Blink.ino

Before uploading, you have to select the board from the Tools → Board → esp32 → DOIT ESP32 DevKit V1 and the COM (serial) port the board is connected to. Clicking the Upload button will compile and upload the code to the ESP32 board. A compilation log will be printed to the console window. If your program has any errors, the compilation and uploading process will stop and the error will be shown in the console log. For example, the compilation log from our IDE is given below.

FQBN: esp32:esp32:esp32doit-devkit-v1
Using board 'esp32doit-devkit-v1' from platform in folder: C:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12
Using core 'esp32' from platform in folder: C:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12

loading library from d:\Code\Arduino\libraries\Conflicting: invalid library: no header files found
cmd /c if exist "D:\\Code\\Arduino\\Nano-ESP32\\Blink\\partitions.csv" COPY /y "D:\\Code\\Arduino\\Nano-ESP32\\Blink\\partitions.csv" "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341\\partitions.csv"
cmd /c if not exist "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341\\partitions.csv" if exist "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12\\variants\\doitESP32devkitV1\\partitions.csv" COPY "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12\\variants\\doitESP32devkitV1\\partitions.csv" "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341\\partitions.csv"
cmd /c if not exist "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341\\partitions.csv" COPY "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12\\tools\\partitions\\default.csv" "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341\\partitions.csv"
cmd /c IF EXIST "D:\\Code\\Arduino\\Nano-ESP32\\Blink\\bootloader.bin" ( COPY /y "D:\\Code\\Arduino\\Nano-ESP32\\Blink\\bootloader.bin" "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341\\Blink.ino.bootloader.bin" ) ELSE ( IF EXIST "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12\\variants\\doitESP32devkitV1\\bootloader.bin" ( COPY "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12\\variants\\doitESP32devkitV1\\bootloader.bin" "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341\\Blink.ino.bootloader.bin" ) ELSE ( "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esptool_py\\4.5.1/esptool.exe" --chip esp32 elf2image --flash_mode dio --flash_freq 80m --flash_size 4MB -o "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341\\Blink.ino.bootloader.bin" "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12\\tools\\sdk\\esp32\\bin\\bootloader_dio_80m.elf" ) )
esptool.py v4.5.1
Creating esp32 image...
Merged 1 ELF section
Successfully created esp32 image.
cmd /c if exist "D:\\Code\\Arduino\\Nano-ESP32\\Blink\\build_opt.h" COPY /y "D:\\Code\\Arduino\\Nano-ESP32\\Blink\\build_opt.h" "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341\\build_opt.h"
cmd /c if not exist "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341\\build_opt.h" type nul > "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341\\build_opt.h"
cmd /c type nul > "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341/file_opts"
Detecting libraries used...
C:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0/bin/xtensa-esp32-elf-g++ -DHAVE_CONFIG_H -DMBEDTLS_CONFIG_FILE="mbedtls/esp_config.h" -DUNITY_INCLUDE_CONFIG_H -DWITH_POSIX -D_GNU_SOURCE -DIDF_VER="v4.4.5" -DESP_PLATFORM -D_POSIX_READER_WRITER_LOCKS -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/newlib/platform_include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/freertos/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/freertos/include/esp_additions/freertos -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/freertos/port/xtensa/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/freertos/include/esp_additions -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_hw_support/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_hw_support/include/soc -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_hw_support/include/soc/esp32 -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_hw_support/port/esp32 -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_hw_support/port/esp32/private_include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/heap/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/log/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/lwip/include/apps -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/lwip/include/apps/sntp -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/lwip/lwip/src/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/lwip/port/esp32/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/lwip/port/esp32/include/arch -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/soc/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/soc/esp32 -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/soc/esp32/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/hal/esp32/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/hal/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/hal/platform_port/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_rom/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_rom/include/esp32 -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_rom/esp32 -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_common/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_system/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_system/port/soc -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_system/port/public_compat -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp32/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/xtensa/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/xtensa/esp32/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/driver/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/driver/esp32/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_pm/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_ringbuf/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/efuse/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/efuse/esp32/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/vfs/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_wifi/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_event/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_netif/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_eth/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/tcpip_adapter/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_phy/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_phy/esp32/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_ipc/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/app_trace/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_timer/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/mbedtls/port/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/mbedtls/mbedtls/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/mbedtls/esp_crt_bundle/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/app_update/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/spi_flash/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bootloader_support/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/nvs_flash/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/pthread/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_gdbstub/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_gdbstub/xtensa -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_gdbstub/esp32 -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espcoredump/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espcoredump/include/port/xtensa -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/wpa_supplicant/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/wpa_supplicant/port/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/wpa_supplicant/esp_supplicant/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/ieee802154/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/console -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/asio/asio/asio/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/asio/port/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/common/osi/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/include/esp32/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/common/api/include/api -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/common/btc/profile/esp/blufi/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/common/btc/profile/esp/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/host/bluedroid/api/include/api -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_common/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_common/tinycrypt/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_core -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_core/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_core/storage -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/btc/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_models/common/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_models/client/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_models/server/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/api/core/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/api/models/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/api -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/cbor/port/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/unity/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/unity/unity/src -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/cmock/CMock/src -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/coap/port/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/coap/libcoap/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/nghttp/port/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/nghttp/nghttp2/lib/includes -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp-tls -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp-tls/esp-tls-crypto -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_adc_cal/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_hid/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/tcp_transport/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_http_client/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_http_server/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_https_ota/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_https_server/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_lcd/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_lcd/interface -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/protobuf-c/protobuf-c -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/protocomm/include/common -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/protocomm/include/security -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/protocomm/include/transports -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/mdns/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_local_ctrl/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/sdmmc/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_serial_slave_link/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_websocket_client/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/expat/expat/expat/lib -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/expat/port/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/wear_levelling/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/fatfs/diskio -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/fatfs/vfs -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/fatfs/src -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/freemodbus/freemodbus/common/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/idf_test/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/idf_test/include/esp32 -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/jsmn/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/json/cJSON -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/libsodium/libsodium/src/libsodium/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/libsodium/port_include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/mqtt/esp-mqtt/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/openssl/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/perfmon/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/spiffs/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/ulp/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/wifi_provisioning/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/rmaker_common/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_diagnostics/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/rtc_store/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_insights/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/json_parser/upstream/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/json_parser/upstream -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/json_generator/upstream -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_schedule/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp_secure_cert_mgr/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_rainmaker/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/gpio_button/button/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/qrcode/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/ws2812_led -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_littlefs/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp-dl/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp-dl/include/tool -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp-dl/include/typedef -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp-dl/include/image -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp-dl/include/math -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp-dl/include/nn -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp-dl/include/layer -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp-dl/include/detect -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp-dl/include/model_zoo -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp32-camera/driver/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp32-camera/conversions/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/dotprod/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/support/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/support/mem/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/hann/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/blackman/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/blackman_harris/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/blackman_nuttall/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/nuttall/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/flat_top/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/iir/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/fir/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/add/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/sub/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/mul/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/addc/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/mulc/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/sqrt/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/matrix/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/fft/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/dct/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/conv/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/common/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/kalman/ekf/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/kalman/ekf_imu13states/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/fb_gfx/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/dio_qspi/include -mlongcalls -Wno-frame-address -ffunction-sections -fdata-sections -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-sign-compare -ggdb -freorder-blocks -Wwrite-strings -fstack-protector -fstrict-volatile-bitfields -Wno-error=unused-but-set-variable -fno-jump-tables -fno-tree-switch-conversion -std=gnu++11 -fexceptions -fno-rtti -c -w -Os -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10607 -DARDUINO_ESP32_DEV -DARDUINO_ARCH_ESP32 -DARDUINO_BOARD="ESP32_DEV" -DARDUINO_VARIANT="doitESP32devkitV1" -DARDUINO_PARTITION_default -DESP32 -DCORE_DEBUG_LEVEL=0 -DARDUINO_USB_CDC_ON_BOOT=0 @C:\Users\Vishnu Mohanan\AppData\Local\Temp\arduino\sketches\8DA72F1453A887AECAAF7F5938781341/build_opt.h @C:\Users\Vishnu Mohanan\AppData\Local\Temp\arduino\sketches\8DA72F1453A887AECAAF7F5938781341/file_opts -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12\cores\esp32 -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12\variants\doitESP32devkitV1 C:\Users\Vishnu Mohanan\AppData\Local\Temp\arduino\sketches\8DA72F1453A887AECAAF7F5938781341\sketch\Blink.ino.cpp -o nul
Generating function prototypes...
C:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\esp-2021r2-patch5-8.4.0/bin/xtensa-esp32-elf-g++ -DHAVE_CONFIG_H -DMBEDTLS_CONFIG_FILE="mbedtls/esp_config.h" -DUNITY_INCLUDE_CONFIG_H -DWITH_POSIX -D_GNU_SOURCE -DIDF_VER="v4.4.5" -DESP_PLATFORM -D_POSIX_READER_WRITER_LOCKS -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/newlib/platform_include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/freertos/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/freertos/include/esp_additions/freertos -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/freertos/port/xtensa/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/freertos/include/esp_additions -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_hw_support/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_hw_support/include/soc -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_hw_support/include/soc/esp32 -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_hw_support/port/esp32 -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_hw_support/port/esp32/private_include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/heap/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/log/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/lwip/include/apps -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/lwip/include/apps/sntp -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/lwip/lwip/src/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/lwip/port/esp32/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/lwip/port/esp32/include/arch -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/soc/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/soc/esp32 -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/soc/esp32/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/hal/esp32/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/hal/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/hal/platform_port/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_rom/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_rom/include/esp32 -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_rom/esp32 -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_common/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_system/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_system/port/soc -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_system/port/public_compat -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp32/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/xtensa/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/xtensa/esp32/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/driver/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/driver/esp32/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_pm/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_ringbuf/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/efuse/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/efuse/esp32/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/vfs/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_wifi/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_event/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_netif/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_eth/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/tcpip_adapter/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_phy/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_phy/esp32/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_ipc/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/app_trace/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_timer/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/mbedtls/port/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/mbedtls/mbedtls/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/mbedtls/esp_crt_bundle/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/app_update/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/spi_flash/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bootloader_support/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/nvs_flash/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/pthread/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_gdbstub/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_gdbstub/xtensa -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_gdbstub/esp32 -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espcoredump/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espcoredump/include/port/xtensa -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/wpa_supplicant/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/wpa_supplicant/port/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/wpa_supplicant/esp_supplicant/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/ieee802154/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/console -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/asio/asio/asio/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/asio/port/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/common/osi/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/include/esp32/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/common/api/include/api -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/common/btc/profile/esp/blufi/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/common/btc/profile/esp/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/host/bluedroid/api/include/api -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_common/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_common/tinycrypt/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_core -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_core/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_core/storage -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/btc/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_models/common/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_models/client/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_models/server/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/api/core/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/api/models/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/api -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/cbor/port/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/unity/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/unity/unity/src -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/cmock/CMock/src -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/coap/port/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/coap/libcoap/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/nghttp/port/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/nghttp/nghttp2/lib/includes -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp-tls -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp-tls/esp-tls-crypto -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_adc_cal/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_hid/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/tcp_transport/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_http_client/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_http_server/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_https_ota/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_https_server/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_lcd/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_lcd/interface -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/protobuf-c/protobuf-c -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/protocomm/include/common -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/protocomm/include/security -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/protocomm/include/transports -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/mdns/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_local_ctrl/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/sdmmc/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_serial_slave_link/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_websocket_client/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/expat/expat/expat/lib -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/expat/port/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/wear_levelling/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/fatfs/diskio -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/fatfs/vfs -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/fatfs/src -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/freemodbus/freemodbus/common/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/idf_test/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/idf_test/include/esp32 -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/jsmn/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/json/cJSON -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/libsodium/libsodium/src/libsodium/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/libsodium/port_include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/mqtt/esp-mqtt/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/openssl/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/perfmon/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/spiffs/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/ulp/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/wifi_provisioning/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/rmaker_common/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_diagnostics/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/rtc_store/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_insights/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/json_parser/upstream/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/json_parser/upstream -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/json_generator/upstream -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_schedule/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp_secure_cert_mgr/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_rainmaker/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/gpio_button/button/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/qrcode/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/ws2812_led -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp_littlefs/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp-dl/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp-dl/include/tool -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp-dl/include/typedef -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp-dl/include/image -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp-dl/include/math -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp-dl/include/nn -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp-dl/include/layer -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp-dl/include/detect -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp-dl/include/model_zoo -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp32-camera/driver/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/esp32-camera/conversions/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/dotprod/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/support/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/support/mem/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/hann/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/blackman/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/blackman_harris/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/blackman_nuttall/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/nuttall/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/flat_top/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/iir/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/fir/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/add/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/sub/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/mul/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/addc/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/mulc/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/sqrt/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/matrix/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/fft/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/dct/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/conv/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/common/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/kalman/ekf/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/kalman/ekf_imu13states/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/include/fb_gfx/include -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/sdk/esp32/dio_qspi/include -mlongcalls -Wno-frame-address -ffunction-sections -fdata-sections -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-sign-compare -ggdb -freorder-blocks -Wwrite-strings -fstack-protector -fstrict-volatile-bitfields -Wno-error=unused-but-set-variable -fno-jump-tables -fno-tree-switch-conversion -std=gnu++11 -fexceptions -fno-rtti -c -w -Os -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10607 -DARDUINO_ESP32_DEV -DARDUINO_ARCH_ESP32 -DARDUINO_BOARD="ESP32_DEV" -DARDUINO_VARIANT="doitESP32devkitV1" -DARDUINO_PARTITION_default -DESP32 -DCORE_DEBUG_LEVEL=0 -DARDUINO_USB_CDC_ON_BOOT=0 @C:\Users\Vishnu Mohanan\AppData\Local\Temp\arduino\sketches\8DA72F1453A887AECAAF7F5938781341/build_opt.h @C:\Users\Vishnu Mohanan\AppData\Local\Temp\arduino\sketches\8DA72F1453A887AECAAF7F5938781341/file_opts -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12\cores\esp32 -IC:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12\variants\doitESP32devkitV1 C:\Users\Vishnu Mohanan\AppData\Local\Temp\arduino\sketches\8DA72F1453A887AECAAF7F5938781341\sketch\Blink.ino.cpp -o C:\Users\Vishnu Mohanan\AppData\Local\Temp\2905292829\sketch_merged.cpp
C:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\builtin\tools\ctags\5.8-arduino11/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives C:\Users\Vishnu Mohanan\AppData\Local\Temp\2905292829\sketch_merged.cpp
Compiling sketch...
"C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\xtensa-esp32-elf-gcc\\esp-2021r2-patch5-8.4.0/bin/xtensa-esp32-elf-g++" -DHAVE_CONFIG_H "-DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\"" -DUNITY_INCLUDE_CONFIG_H -DWITH_POSIX -D_GNU_SOURCE "-DIDF_VER=\"v4.4.5\"" -DESP_PLATFORM -D_POSIX_READER_WRITER_LOCKS "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/newlib/platform_include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/freertos/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/freertos/include/esp_additions/freertos" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/freertos/port/xtensa/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/freertos/include/esp_additions" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_hw_support/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_hw_support/include/soc" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_hw_support/include/soc/esp32" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_hw_support/port/esp32" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_hw_support/port/esp32/private_include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/heap/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/log/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/lwip/include/apps" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/lwip/include/apps/sntp" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/lwip/lwip/src/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/lwip/port/esp32/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/lwip/port/esp32/include/arch" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/soc/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/soc/esp32" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/soc/esp32/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/hal/esp32/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/hal/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/hal/platform_port/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_rom/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_rom/include/esp32" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_rom/esp32" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_common/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_system/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_system/port/soc" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_system/port/public_compat" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp32/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/xtensa/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/xtensa/esp32/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/driver/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/driver/esp32/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_pm/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_ringbuf/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/efuse/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/efuse/esp32/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/vfs/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_wifi/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_event/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_netif/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_eth/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/tcpip_adapter/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_phy/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_phy/esp32/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_ipc/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/app_trace/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_timer/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/mbedtls/port/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/mbedtls/mbedtls/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/mbedtls/esp_crt_bundle/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/app_update/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/spi_flash/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/bootloader_support/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/nvs_flash/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/pthread/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_gdbstub/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_gdbstub/xtensa" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_gdbstub/esp32" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espcoredump/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espcoredump/include/port/xtensa" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/wpa_supplicant/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/wpa_supplicant/port/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/wpa_supplicant/esp_supplicant/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/ieee802154/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/console" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/asio/asio/asio/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/asio/port/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/bt/common/osi/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/bt/include/esp32/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/bt/common/api/include/api" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/bt/common/btc/profile/esp/blufi/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/bt/common/btc/profile/esp/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/bt/host/bluedroid/api/include/api" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_common/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_common/tinycrypt/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_core" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_core/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_core/storage" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/btc/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_models/common/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_models/client/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_models/server/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/api/core/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/api/models/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/bt/esp_ble_mesh/api" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/cbor/port/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/unity/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/unity/unity/src" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/cmock/CMock/src" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/coap/port/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/coap/libcoap/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/nghttp/port/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/nghttp/nghttp2/lib/includes" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp-tls" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp-tls/esp-tls-crypto" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_adc_cal/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_hid/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/tcp_transport/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_http_client/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_http_server/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_https_ota/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_https_server/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_lcd/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_lcd/interface" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/protobuf-c/protobuf-c" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/protocomm/include/common" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/protocomm/include/security" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/protocomm/include/transports" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/mdns/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_local_ctrl/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/sdmmc/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_serial_slave_link/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_websocket_client/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/expat/expat/expat/lib" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/expat/port/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/wear_levelling/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/fatfs/diskio" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/fatfs/vfs" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/fatfs/src" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/freemodbus/freemodbus/common/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/idf_test/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/idf_test/include/esp32" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/jsmn/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/json/cJSON" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/libsodium/libsodium/src/libsodium/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/libsodium/port_include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/mqtt/esp-mqtt/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/openssl/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/perfmon/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/spiffs/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/ulp/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/wifi_provisioning/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/rmaker_common/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_diagnostics/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/rtc_store/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_insights/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/json_parser/upstream/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/json_parser/upstream" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/json_generator/upstream" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_schedule/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espressif__esp_secure_cert_mgr/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_rainmaker/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/gpio_button/button/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/qrcode/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/ws2812_led" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp_littlefs/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp-dl/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp-dl/include/tool" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp-dl/include/typedef" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp-dl/include/image" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp-dl/include/math" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp-dl/include/nn" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp-dl/include/layer" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp-dl/include/detect" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp-dl/include/model_zoo" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp32-camera/driver/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/esp32-camera/conversions/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/dotprod/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/support/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/support/mem/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/hann/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/blackman/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/blackman_harris/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/blackman_nuttall/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/nuttall/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/flat_top/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/iir/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/fir/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/add/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/sub/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/mul/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/addc/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/mulc/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/sqrt/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/matrix/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/fft/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/dct/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/conv/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/common/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/kalman/ekf/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/espressif__esp-dsp/modules/kalman/ekf_imu13states/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/include/fb_gfx/include" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/dio_qspi/include" -mlongcalls -Wno-frame-address -ffunction-sections -fdata-sections -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-sign-compare -ggdb -freorder-blocks -Wwrite-strings -fstack-protector -fstrict-volatile-bitfields -Wno-error=unused-but-set-variable -fno-jump-tables -fno-tree-switch-conversion -std=gnu++11 -fexceptions -fno-rtti -MMD -c -Os -DF_CPU=240000000L -DARDUINO=10607 -DARDUINO_ESP32_DEV -DARDUINO_ARCH_ESP32 "-DARDUINO_BOARD=\"ESP32_DEV\"" "-DARDUINO_VARIANT=\"doitESP32devkitV1\"" -DARDUINO_PARTITION_default -DESP32 -DCORE_DEBUG_LEVEL=0 -DARDUINO_USB_CDC_ON_BOOT=0 "@C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341/build_opt.h" "@C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341/file_opts" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12\\cores\\esp32" "-IC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12\\variants\\doitESP32devkitV1" "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341\\sketch\\Blink.ino.cpp" -o "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341\\sketch\\Blink.ino.cpp.o"
Compiling libraries...
Compiling core...
cmd /c echo -DARDUINO_CORE_BUILD > "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341/file_opts"
Using precompiled core: C:\Users\Vishnu Mohanan\AppData\Local\Temp\arduino\cores\ef30185a88e3b61459a691726e476829\core.a
cmd /c type nul > "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341/file_opts"
Linking everything together...
"C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\xtensa-esp32-elf-gcc\\esp-2021r2-patch5-8.4.0/bin/xtensa-esp32-elf-g++" "-Wl,--Map=C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341/Blink.ino.map" "-LC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/lib" "-LC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/ld" "-LC:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/sdk/esp32/dio_qspi" -T esp32.rom.redefined.ld -T memory.ld -T sections.ld -T esp32.rom.ld -T esp32.rom.api.ld -T esp32.rom.libgcc.ld -T esp32.rom.newlib-data.ld -T esp32.rom.syscalls.ld -T esp32.peripherals.ld -mlongcalls -Wno-frame-address -Wl,--cref -Wl,--gc-sections -fno-rtti -fno-lto -Wl,--wrap=esp_log_write -Wl,--wrap=esp_log_writev -Wl,--wrap=log_printf -u ld_include_hli_vectors_bt -u _Z5setupv -u _Z4loopv -u esp_app_desc -u pthread_include_pthread_impl -u pthread_include_pthread_cond_impl -u pthread_include_pthread_local_storage_impl -u pthread_include_pthread_rwlock_impl -u include_esp_phy_override -u ld_include_highint_hdl -u start_app -u start_app_other_cores -u __ubsan_include -Wl,--wrap=longjmp -u __assert_func -u vfs_include_syscalls_impl -Wl,--undefined=uxTopUsedPriority -u app_main -u newlib_include_heap_impl -u newlib_include_syscalls_impl -u newlib_include_pthread_impl -u newlib_include_assert_impl -u __cxa_guard_dummy -DESP32 -DCORE_DEBUG_LEVEL=0 -DARDUINO_USB_CDC_ON_BOOT=0 -Wl,--start-group "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341\\sketch\\Blink.ino.cpp.o" "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\cores\\ef30185a88e3b61459a691726e476829\\core.a" -lesp_ringbuf -lefuse -lesp_ipc -ldriver -lesp_pm -lmbedtls -lapp_update -lbootloader_support -lspi_flash -lnvs_flash -lpthread -lesp_gdbstub -lespcoredump -lesp_phy -lesp_system -lesp_rom -lhal -lvfs -lesp_eth -ltcpip_adapter -lesp_netif -lesp_event -lwpa_supplicant -lesp_wifi -lconsole -llwip -llog -lheap -lsoc -lesp_hw_support -lxtensa -lesp_common -lesp_timer -lfreertos -lnewlib -lcxx -lapp_trace -lasio -lbt -lcbor -lunity -lcmock -lcoap -lnghttp -lesp-tls -lesp_adc_cal -lesp_hid -ltcp_transport -lesp_http_client -lesp_http_server -lesp_https_ota -lesp_https_server -lesp_lcd -lprotobuf-c -lprotocomm -lmdns -lesp_local_ctrl -lsdmmc -lesp_serial_slave_link -lesp_websocket_client -lexpat -lwear_levelling -lfatfs -lfreemodbus -ljsmn -ljson -llibsodium -lmqtt -lopenssl -lperfmon -lspiffs -lulp -lwifi_provisioning -lrmaker_common -lesp_diagnostics -lrtc_store -lesp_insights -ljson_parser -ljson_generator -lesp_schedule -lespressif__esp_secure_cert_mgr -lesp_rainmaker -lgpio_button -lqrcode -lws2812_led -lesp32-camera -lesp_littlefs -lespressif__esp-dsp -lfb_gfx -lasio -lcmock -lunity -lcoap -lesp_lcd -lesp_websocket_client -lexpat -lfreemodbus -ljsmn -llibsodium -lperfmon -lesp_adc_cal -lesp_hid -lfatfs -lwear_levelling -lopenssl -lspiffs -lesp_insights -lcbor -lesp_diagnostics -lrtc_store -lesp_rainmaker -lesp_local_ctrl -lesp_https_server -lwifi_provisioning -lprotocomm -lbt -lbtdm_app -lprotobuf-c -lmdns -ljson -ljson_parser -ljson_generator -lesp_schedule -lespressif__esp_secure_cert_mgr -lqrcode -lrmaker_common -lmqtt -lcat_face_detect -lhuman_face_detect -lcolor_detect -lmfn -ldl -lesp_ringbuf -lefuse -lesp_ipc -ldriver -lesp_pm -lmbedtls -lapp_update -lbootloader_support -lspi_flash -lnvs_flash -lpthread -lesp_gdbstub -lespcoredump -lesp_phy -lesp_system -lesp_rom -lhal -lvfs -lesp_eth -ltcpip_adapter -lesp_netif -lesp_event -lwpa_supplicant -lesp_wifi -lconsole -llwip -llog -lheap -lsoc -lesp_hw_support -lxtensa -lesp_common -lesp_timer -lfreertos -lnewlib -lcxx -lapp_trace -lnghttp -lesp-tls -ltcp_transport -lesp_http_client -lesp_http_server -lesp_https_ota -lsdmmc -lesp_serial_slave_link -lulp -lmbedtls_2 -lmbedcrypto -lmbedx509 -lcoexist -lcore -lespnow -lmesh -lnet80211 -lpp -lsmartconfig -lwapi -lesp_ringbuf -lefuse -lesp_ipc -ldriver -lesp_pm -lmbedtls -lapp_update -lbootloader_support -lspi_flash -lnvs_flash -lpthread -lesp_gdbstub -lespcoredump -lesp_phy -lesp_system -lesp_rom -lhal -lvfs -lesp_eth -ltcpip_adapter -lesp_netif -lesp_event -lwpa_supplicant -lesp_wifi -lconsole -llwip -llog -lheap -lsoc -lesp_hw_support -lxtensa -lesp_common -lesp_timer -lfreertos -lnewlib -lcxx -lapp_trace -lnghttp -lesp-tls -ltcp_transport -lesp_http_client -lesp_http_server -lesp_https_ota -lsdmmc -lesp_serial_slave_link -lulp -lmbedtls_2 -lmbedcrypto -lmbedx509 -lcoexist -lcore -lespnow -lmesh -lnet80211 -lpp -lsmartconfig -lwapi -lesp_ringbuf -lefuse -lesp_ipc -ldriver -lesp_pm -lmbedtls -lapp_update -lbootloader_support -lspi_flash -lnvs_flash -lpthread -lesp_gdbstub -lespcoredump -lesp_phy -lesp_system -lesp_rom -lhal -lvfs -lesp_eth -ltcpip_adapter -lesp_netif -lesp_event -lwpa_supplicant -lesp_wifi -lconsole -llwip -llog -lheap -lsoc -lesp_hw_support -lxtensa -lesp_common -lesp_timer -lfreertos -lnewlib -lcxx -lapp_trace -lnghttp -lesp-tls -ltcp_transport -lesp_http_client -lesp_http_server -lesp_https_ota -lsdmmc -lesp_serial_slave_link -lulp -lmbedtls_2 -lmbedcrypto -lmbedx509 -lcoexist -lcore -lespnow -lmesh -lnet80211 -lpp -lsmartconfig -lwapi -lesp_ringbuf -lefuse -lesp_ipc -ldriver -lesp_pm -lmbedtls -lapp_update -lbootloader_support -lspi_flash -lnvs_flash -lpthread -lesp_gdbstub -lespcoredump -lesp_phy -lesp_system -lesp_rom -lhal -lvfs -lesp_eth -ltcpip_adapter -lesp_netif -lesp_event -lwpa_supplicant -lesp_wifi -lconsole -llwip -llog -lheap -lsoc -lesp_hw_support -lxtensa -lesp_common -lesp_timer -lfreertos -lnewlib -lcxx -lapp_trace -lnghttp -lesp-tls -ltcp_transport -lesp_http_client -lesp_http_server -lesp_https_ota -lsdmmc -lesp_serial_slave_link -lulp -lmbedtls_2 -lmbedcrypto -lmbedx509 -lcoexist -lcore -lespnow -lmesh -lnet80211 -lpp -lsmartconfig -lwapi -lesp_ringbuf -lefuse -lesp_ipc -ldriver -lesp_pm -lmbedtls -lapp_update -lbootloader_support -lspi_flash -lnvs_flash -lpthread -lesp_gdbstub -lespcoredump -lesp_phy -lesp_system -lesp_rom -lhal -lvfs -lesp_eth -ltcpip_adapter -lesp_netif -lesp_event -lwpa_supplicant -lesp_wifi -lconsole -llwip -llog -lheap -lsoc -lesp_hw_support -lxtensa -lesp_common -lesp_timer -lfreertos -lnewlib -lcxx -lapp_trace -lnghttp -lesp-tls -ltcp_transport -lesp_http_client -lesp_http_server -lesp_https_ota -lsdmmc -lesp_serial_slave_link -lulp -lmbedtls_2 -lmbedcrypto -lmbedx509 -lcoexist -lcore -lespnow -lmesh -lnet80211 -lpp -lsmartconfig -lwapi -lphy -lrtc -lesp_phy -lphy -lrtc -lesp_phy -lphy -lrtc -lxt_hal -lm -lnewlib -lstdc++ -lpthread -lgcc -lcxx -lapp_trace -lgcov -lapp_trace -lgcov -lc -Wl,--end-group -Wl,-EL -o "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341/Blink.ino.elf"
"C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esptool_py\\4.5.1/esptool.exe" --chip esp32 elf2image --flash_mode dio --flash_freq 80m --flash_size 4MB --elf-sha256-offset 0xb0 -o "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341/Blink.ino.bin" "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341/Blink.ino.elf"
esptool.py v4.5.1
Creating esp32 image...
Merged 2 ELF sections
Successfully created esp32 image.
"C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/gen_esp32part.exe" -q "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341/partitions.csv" "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341/Blink.ino.partitions.bin"
cmd /c if exist "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341\\libraries\\Insights" "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12/tools/gen_insights_package.exe" "C:\\Users\\Vishnu" "Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341" Blink.ino "D:\\Code\\Arduino\\Nano-ESP32\\Blink"
cmd /c IF 0==1 COPY /y "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\openocd-esp32\\v0.11.0-esp32-20221026\\share\\openocd\\scripts\\board\\esp32-wrover-kit-3.3v.cfg" "D:\\Code\\Arduino\\Nano-ESP32\\Blink\\debug.cfg"
cmd /c IF 0==1 COPY /y "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12\\tools\\ide-debug\\esp32.json" "D:\\Code\\Arduino\\Nano-ESP32\\Blink\\debug_custom.json"
cmd /c IF 0==1 COPY /y "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.12\\tools\\ide-debug\\svd\\esp32.svd" "D:\\Code\\Arduino\\Nano-ESP32\\Blink\\debug.svd"

"C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\xtensa-esp32-elf-gcc\\esp-2021r2-patch5-8.4.0/bin/xtensa-esp32-elf-size" -A "C:\\Users\\Vishnu Mohanan\\AppData\\Local\\Temp\\arduino\\sketches\\8DA72F1453A887AECAAF7F5938781341/Blink.ino.elf"
Sketch uses 261881 bytes (19%) of program storage space. Maximum is 1310720 bytes.
Global variables use 21344 bytes (6%) of dynamic memory, leaving 306336 bytes for local variables. Maximum is 327680 bytes.
"C:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\tools\esptool_py\4.5.1/esptool.exe" --chip esp32 --port "COM29" --baud 921600  --before default_reset --after hard_reset write_flash  -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0x1000 "C:\Users\Vishnu Mohanan\AppData\Local\Temp\arduino\sketches\8DA72F1453A887AECAAF7F5938781341/Blink.ino.bootloader.bin" 0x8000 "C:\Users\Vishnu Mohanan\AppData\Local\Temp\arduino\sketches\8DA72F1453A887AECAAF7F5938781341/Blink.ino.partitions.bin" 0xe000 "C:\Users\Vishnu Mohanan\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12/tools/partitions/boot_app0.bin" 0x10000 "C:\Users\Vishnu Mohanan\AppData\Local\Temp\arduino\sketches\8DA72F1453A887AECAAF7F5938781341/Blink.ino.bin" 
esptool.py v4.5.1
Serial port COM29
Connecting....
Chip is ESP32-D0WDQ6 (revision v1.0)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 7c:9e:bd:47:9b:20
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Flash will be erased from 0x00001000 to 0x00005fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Flash will be erased from 0x0000e000 to 0x0000ffff...
Flash will be erased from 0x00010000 to 0x00050fff...
Compressed 17568 bytes to 12204...
Writing at 0x00001000... (100 %)
Wrote 17568 bytes (12204 compressed) at 0x00001000 in 0.5 seconds (effective 287.5 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 146...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (146 compressed) at 0x00008000 in 0.1 seconds (effective 255.8 kbit/s)...
Hash of data verified.
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.2 seconds (effective 416.0 kbit/s)...
Hash of data verified.
Compressed 262240 bytes to 145491...
Writing at 0x00010000... (11 %)
Writing at 0x0001c64e... (22 %)
Writing at 0x00024e45... (33 %)
Writing at 0x0002a0a7... (44 %)
Writing at 0x0002f441... (55 %)
Writing at 0x00035169... (66 %)
Writing at 0x0003f90f... (77 %)
Writing at 0x00045b53... (88 %)
Writing at 0x0004b08b... (100 %)
Wrote 262240 bytes (145491 compressed) at 0x00010000 in 2.5 seconds (effective 842.6 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
Compilation Log

As you can read from the log, the blink sketch is taking 19% or 261881 bytes of the flash memory with the maximum app partition being 1310720 bytes, or around 1.3 MB. The partition table for the project looks like below.

# Name,   Type, SubType, Offset,  Size, Flags
nvs,      data, nvs,     0x9000,  0x5000,
otadata,  data, ota,     0xe000,  0x2000,
app0,     app,  ota_0,   0x10000, 0x140000,
app1,     app,  ota_1,   0x150000,0x140000,
spiffs,   data, spiffs,  0x290000,0x160000,
coredump, data, coredump,0x3F0000,0x10000,
CSV

The blink sketch was saved to the app0 partition with a maximum size of 1310720 bytes (0x140000 in hex). You can also see there is an app1 partition with a subtype ota_1. This is reserved for OTA updates and a new version of your app can be saved here when you push it. The size of the OTA partition is also 1.3 MB. But what if you don’t need the OTA partition and you have a large app? For that, you can add a custom partition table as file partitions.csv to your sketch folder. During compilation, the toolchain will find the file and use it for flash partition.

Analyzing the compilation log, we can learn a few more things. One is the use of a stub. A flasher stub is a program loaded before your actual code is written. The stub is like the ROM bootloader but faster and more optimized. After the stub is loaded and running, the actual writing of the flash begins. You can see which address ranges each data is written to.

We know that an Arduino sketch is not a complete C/C++ source file. It is missing the main() function and many other basic constructs. So where is the main.cpp file? The Arduino IDE and consecutively the arduino-esp32 core converts your Arduino sketch to a proper C++ source file before compiling it. Your Arduino sketch then becomes an external .cpp file for that main project. For example, if your sketch name is Blink.ino, then the file becomes Blink.ino.cpp. Inside the arduino-esp32 package directory, there is a main.cpp file that acts as the backbone of your project. The content of the file is shown below.

#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_task_wdt.h"
#include "Arduino.h"
#if (ARDUINO_USB_CDC_ON_BOOT|ARDUINO_USB_MSC_ON_BOOT|ARDUINO_USB_DFU_ON_BOOT) && !ARDUINO_USB_MODE
#include "USB.h"
#if ARDUINO_USB_MSC_ON_BOOT
#include "FirmwareMSC.h"
#endif
#endif

#ifndef ARDUINO_LOOP_STACK_SIZE
#ifndef CONFIG_ARDUINO_LOOP_STACK_SIZE
#define ARDUINO_LOOP_STACK_SIZE 8192
#else
#define ARDUINO_LOOP_STACK_SIZE CONFIG_ARDUINO_LOOP_STACK_SIZE
#endif
#endif

TaskHandle_t loopTaskHandle = NULL;

#if CONFIG_AUTOSTART_ARDUINO
#if CONFIG_FREERTOS_UNICORE
void yieldIfNecessary(void){
    static uint64_t lastYield = 0;
    uint64_t now = millis();
    if((now - lastYield) > 2000) {
        lastYield = now;
        vTaskDelay(5); //delay 1 RTOS tick
    }
}
#endif

bool loopTaskWDTEnabled;

__attribute__((weak)) size_t getArduinoLoopTaskStackSize(void) {
    return ARDUINO_LOOP_STACK_SIZE;
}

void loopTask(void *pvParameters)
{
    setup();
    for(;;) {
#if CONFIG_FREERTOS_UNICORE
        yieldIfNecessary();
#endif
        if(loopTaskWDTEnabled){
            esp_task_wdt_reset();
        }
        loop();
        if (serialEventRun) serialEventRun();
    }
}

extern "C" void app_main()
{
#if ARDUINO_USB_CDC_ON_BOOT && !ARDUINO_USB_MODE
    Serial.begin();
#endif
#if ARDUINO_USB_MSC_ON_BOOT && !ARDUINO_USB_MODE
    MSC_Update.begin();
#endif
#if ARDUINO_USB_DFU_ON_BOOT && !ARDUINO_USB_MODE
    USB.enableDFU();
#endif
#if ARDUINO_USB_ON_BOOT && !ARDUINO_USB_MODE
    USB.begin();
#endif
    loopTaskWDTEnabled = false;
    initArduino();
    xTaskCreateUniversal(loopTask, "loopTask", getArduinoLoopTaskStackSize(), NULL, 1, &loopTaskHandle, ARDUINO_RUNNING_CORE);
}

#endif
main.cpp

As you can see setup() and loop() functions are invoked in the main.cpp file, inside a function called loopTask(). The starting point of the app is the app_main() function. Among other things, the app_main() will create a new FreeRTOS task using the loopTask() function and run it on the ARDUINO_RUNNING_CORE which has value 1. The task has a priority of 1. Since the loop() call appears in an infinite for loop, it is executed indefinitely.

VS Code + Arduino

Arduino IDE (even version 2) is limited in functionality and slow even on fast computers. Visual Studio Code (VS Code) is a general-purpose IDE from Microsoft. It can be used to develop software using almost any language or framework. VS Code and its powerful features can be leveraged for Arduino development using the official Arduino Extension from Microsoft. You need to install the Arduino CLI for this to work. We have a detailed tutorial on how you can install VS Code and the Arduino extension for Arduino development.

How-To-Use-VS-Code-To-Create-and-Upload-Arduino-Sketches-Featured-Image-01-1-1

How to Use VS Code for Creating and Uploading Arduino Sketches

Learn how to use the popular VS Code IDE to develop Arduino projects and upload your sketches to Arduino boards directly, without using Arduino IDE.

To compile your Arduino sketches for the DOIT ESP32 DevKit V1, you just need to select the board and the correct serial port.

PlatformIO

PlatformIO is an open-source unified framework for developing embedded software. It unifies a large number of SDKs, toolchains, frameworks, protocols, processor architectures, programmers, and debuggers into a single platform. PIO makes it extremely easy to develop and debug your embedded projects, without resorting to vendor-specific tools. PIO can be installed as an extension to VS Code and you can create Arduino or ESP-IDF projects with it. You don’t need to install Arduino IDE or Arduino CLI for the PIO extension to work. PIO can install and configure everything for you as long as you have an internet connection. We highly suggest you check out PIO, because once you use it, you won’t go back to other tools.

Arduino Framework

When creating a new project, you can select the board you want, in this case, the DOIT ESP32 DevKit V1, and the framework you want to use. PIO supports Arduino and ESP-IDF frameworks for ESP32. So you can choose one from them. You can also debug your ESP32 Arduino projects if you have a suitable debugger such as the ESP-Prog.

PlatformIO VS Code DOIT ESP32 DevKit V1 Arduino Blink Sketch Screenshot by CIRCUITSTATE Electronics
ESP32 Arduino blink sketch on PlatformIO and VS Code

ESP-IDF

Similar to how you have done for the Arduino project, you can select ESP-IDF as the framework when you are creating a new PIO project. PIO will install the latest stable version of the ESP-IDF toolchain and it can take some time. Below is a simple program to blink the built-in LED of the ESP32 board.

#include <stdio.h>
#include <stdlib.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"

#define LED_PIN GPIO_NUM_2

void app_main() {
  gpio_reset_pin (LED_PIN);
  gpio_set_direction (LED_PIN, GPIO_MODE_OUTPUT);

  static uint8_t ledState = 0;

  while (1) {
    gpio_set_level (LED_PIN, ledState);
    ledState = !ledState;
    vTaskDelay (1000 / portTICK_PERIOD_MS);
  }
}
main.cpp

The platformio.ini configuration file looks like below.

; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[env:esp32doit-devkit-v1]
platform = espressif32
board = esp32doit-devkit-v1
framework = espidf
platformio.ini

Since the ESP-IDF doesn’t have setup() or loop() functions, we have to add all the initialization code to the app_main() function and all the repeating code to an infinite loop.

PlatformIO VS Code DOIT ESP32 DevKit V1 ESP-IDF Blink Program Screenshot by CIRCUITSTATE Electronics
Blink program using ESP-IDF on PIO

Example Programs

We already saw the Blink program in action. So will demo a Wi-Fi server and BLE example here using Arduino.

Wi-Fi Web Server

There are many Wi-Fi-related examples available from Arduino. Here, we are going to show you a simple web server sketch that will connect your ESP32 to a Wi-Fi network and allow you to control an LED from a web browser. We will use the built-in LED LED_BUILTIN as the control target. In place of yourssid and yourpassword, you need to enter the actual Wi-Fi network name and the password before uploading the code. Below is the modified example.


//=========================================================================================//
/*
  WiFi Web Server LED Blink

  A simple web server that lets you blink an LED via the web. This sketch will print
  the IP address of your WiFi Shield (once connected) to the Serial monitor. From there,
  you can open that address in a web browser to turn on and off the built-in LED.

  If the IP address of your shield is yourAddress:
  http://yourAddress/H turns the LED on
  http://yourAddress/L turns it off

  This example is written for a network using WPA2 encryption. For insecure
  WEP or WPA, change the Wifi.begin() call and use Wifi.setMinSecurity()
  accordingly.

 Created for arduino 25 Nov 2012 by Tom Igoe
 */
//=========================================================================================//

#include <WiFi.h>

//=========================================================================================//

const char* ssid = "yourssid";
const char* password = "yourpassword";

WiFiServer server (80);

//=========================================================================================//

void setup() {
  Serial.begin (115200);
  pinMode (LED_BUILTIN, OUTPUT);  // set the LED pin mode
  delay (10);

  // We start by connecting to a WiFi network
  Serial.println();
  Serial.println();
  Serial.print ("Connecting to ");
  Serial.println (ssid);

  WiFi.begin (ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay (500);
    Serial.print (".");
  }

  Serial.println ("");
  Serial.println ("WiFi connected.");
  Serial.println ("IP address: ");
  Serial.println (WiFi.localIP());
  server.begin();
}

//=========================================================================================//

void loop() {
  WiFiClient client = server.available();  // listen for incoming clients

  if (client) {                     // if you get a client,
    Serial.println ("New Client.");  // print a message out the serial port
    String currentLine = "";  // make a String to hold incoming data from the client

    while (client.connected()) {  // loop while the client's connected
      if (client.available()) {   // if there's bytes to read from the client,
        char c = client.read();   // read a byte, then
        Serial.write (c);          // print it out the serial monitor
        if (c == '\n') {          // if the byte is a newline character
          // if the current line is blank, you got two newline characters in a
          // row. that's the end of the client HTTP request, so send a response:
          if (currentLine.length() == 0) {
            // HTTP headers always start with a response code (e.g. HTTP/1.1 200
            // OK) and a content-type so the client knows what's coming, then a
            // blank line:
            client.println ("HTTP/1.1 200 OK");
            client.println ("Content-type:text/html");
            client.println();
            // the content of the HTTP response follows the header:
            client.print ("Click <a href=\"/H\">here</a> to turn the LED on.<br>");
            client.print ("Click <a href=\"/L\">here</a> to turn the LED off.<br>");
            // The HTTP response ends with another blank line:
            client.println();
            // break out of the while loop:
            break;
          }
          else {  // if you got a newline, then clear currentLine:
            currentLine = "";
          }
        }
        else if (c != '\r') {  // if you got anything else but a carriage return character,
          currentLine += c;      // add it to the end of the currentLine
        }
        // Check to see if the client request was "GET /H" or "GET /L":
        if (currentLine.endsWith ("GET /H")) {
          digitalWrite (LED_BUILTIN, HIGH);  // GET /H turns the LED on
        }
        if (currentLine.endsWith ("GET /L")) {
          digitalWrite (LED_BUILTIN, LOW);  // GET /L turns the LED off
        }
      }
    }
    // close the connection:
    client.stop();
    Serial.println ("Client Disconnected.");
  }
}

//=========================================================================================//

WiFi-Server.ino

As soon as your board is connected to the Wi-Fi network, it will print the IP address assigned to it. The IP address is assigned by the Wi-Fi access point (AP, or the router) and can not be fixed. The AP will assign the next free IP when your board tries to reconnect. This makes the IP dynamic. You can open the serial monitor and reset the board to see the board’s IP address.

ESP32 Arduino WiFi Web Server Example Sketch VS Code CIRCUITSTATE Electronics
WiFi Web Server example. The serial monitor shows the IP address assigned to the ESP32 board. You can open that on a web browser.

If you copy the IP address and paste it into a web browser, you will get a page like the one below. In our case, the IP address is 192.168.31.199. The board opens HTTP port 80 as soon as it is connected to the network. That is why we can open the page served by the Nano ESP32 board. You can click on the two links to either turn on or off the LED. When you click on the links, an extra parameter is sent with the address. The parameter is either H (High) or L (Low). When the web server receives this parameter, it turns the LED ON/OFF.

Arduino Nano ESP32 Simple WiFi Server Example HTML Page by CIRCUITSTATE Electronics
Click on the links to turn the LED ON/OFF

Bluetooth LE

ESP32-S3 supports both Classic and Low Energy (LE) versions of Bluetooth. The Bluetooth version supported by ESP32-S3 is 5. To demonstrate the BLE feature of the Nano ESP32 board, we are going to create a simple Nordic UART Service example with which you can send and receive serial data using a serial monitor and the NRF Connect app from Nordic Semiconductor. Try uploading the following code to your Nano ESP32.


//==========================================================================================//
/*
  Based on Neil Kolban example for IDF:
  https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/tests/BLE%20Tests/SampleNotify.cpp
  Ported to Arduino ESP32 by Evandro Copercini. Modified by CIRCUITSTATE Electronics.
  This example created a BLE service with ID 6E400001-B5A3-F393-E0A9-E50E24DCCA9E
  (Nordic UART Service) and device name "UART Service". You can find the device by scanning
  the BLE. There are two associated characteristics:
  1. 6E400002-B5A3-F393-E0A9-E50E24DCCA9E - RX Characteristic
  Data you send through serial monitor will be received on the device end through this.
  2. 6E400003-B5A3-F393-E0A9-E50E24DCCA9E - TX Characteristic
  Data you send from the device uising Write operation will be sent back to the serial monitor
  though this.
  The design of creating the BLE server is:
  1. Create a BLE Server
  2. Create a BLE Service
  3. Create a BLE Characteristic on the Service
  4. Create a BLE Descriptor on the characteristic
  5. Start the service.
  6. Start advertising.
*/
//==========================================================================================//

#include <BLE2902.h>
#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>

//==========================================================================================//

BLEServer *pServer = NULL;
BLECharacteristic *pTxCharacteristic;
bool deviceConnected = false;
bool oldDeviceConnected = false;

//==========================================================================================//

// See the following for generating UUIDs:
// https://www.uuidgenerator.net/
#define SERVICE_UUID              "6E400001-B5A3-F393-E0A9-E50E24DCCA9E"  // UART service UUID
#define CHARACTERISTIC_UUID_RX    "6E400002-B5A3-F393-E0A9-E50E24DCCA9E"
#define CHARACTERISTIC_UUID_TX    "6E400003-B5A3-F393-E0A9-E50E24DCCA9E"

//==========================================================================================//

class MyServerCallbacks : public BLEServerCallbacks {
  void onConnect (BLEServer *pServer) { deviceConnected = true; };
  void onDisconnect (BLEServer *pServer) { deviceConnected = false; }
};

//==========================================================================================//

class MyCallbacks : public BLECharacteristicCallbacks {
  void onWrite (BLECharacteristic *pCharacteristic) {
    std::string rxValue = pCharacteristic->getValue();
    if (rxValue.length() > 0) {
      Serial.print ("Received Value: ");
      for (int i = 0; i < rxValue.length(); i++) Serial.print (rxValue [i]);
      Serial.println();
    }
  }
};

//==========================================================================================//

void setup() {
  Serial.begin (115200);
  // Create the BLE Device
  BLEDevice::init ("UART Service");
  // Create the BLE Server
  pServer = BLEDevice:: createServer();
  pServer->setCallbacks (new MyServerCallbacks());
  // Create the BLE Service
  BLEService *pService = pServer->createService (SERVICE_UUID);
  // Create a BLE Characteristic
  pTxCharacteristic = pService->createCharacteristic (CHARACTERISTIC_UUID_TX, BLECharacteristic::PROPERTY_NOTIFY);
  pTxCharacteristic->addDescriptor (new BLE2902());
  BLECharacteristic *pRxCharacteristic = pService->createCharacteristic (CHARACTERISTIC_UUID_RX, BLECharacteristic::PROPERTY_WRITE);
  pRxCharacteristic->setCallbacks (new MyCallbacks());
  // Start the service
  pService->start();
  // Start advertising
  pServer->getAdvertising()->start();
  Serial.println ("Waiting a client connection to notify..");
}

//==========================================================================================//

void loop() {
  if (deviceConnected) {
    if (Serial.available() > 0) {
      String serialString = Serial.readString();
      Serial.println ("Sending Value: " + serialString);
      pTxCharacteristic->setValue ((std::string) serialString.c_str());
      pTxCharacteristic->notify();
      delay (10);  // bluetooth stack will go into congestion, if too many packets are sent
    }
  }
  // disconnecting
  if (!deviceConnected && oldDeviceConnected) {
    delay (500);  // give the bluetooth stack the chance to get things ready
    pServer->startAdvertising();  // restart advertising
    Serial.println ("Start advertising");
    oldDeviceConnected = deviceConnected;
  }
  // connecting
  if (deviceConnected && !oldDeviceConnected) {
    // do stuff here on connecting
    oldDeviceConnected = deviceConnected;
  }
}

//==========================================================================================//
Bluetooth-Serial.ino

After uploading the code to your board, you can open the serial monitor with a baudrate 115200. To connect to the board, you first need to install the NRF Connect app on your smartphone and launch it. You can also use the desktop app if you have any Nordic BLE development dongle/board. In the SCANNER window, you can scan for all Bluetooth devices and if the Nano ESP32 is up and running, you should see a device named “UART Service”. Connect to the device using the CONNECT button. After connecting, the app will open a new tab that lists all the services and characteristics served by the Bluetooth device. In our case, there is only a single BLE service Nordic UART Service, and the two characteristics associated with it; TX Characteristic and RX Characteristic. From the serial monitor, you can send any data and it will be received by the TX Characteristic. In order to see the data, simply enable the notification by tapping the triple download button on the app. Here, we are sending “Hello” from the serial monitor. The data will be shown as the Value in the app.

To send any data back to the serial monitor, you can use the RX Characteristic. Use the up-pointing button in the RX Characteristic to write a new value. Here, we are sending the value “World”. As soon as you hit SEND, the value will appear on the serial monitor.

VS Code Serial Monitor Arduino Nano ESP32 BLE Serial CIRCUITSTATE Electronics
VS Code serial monitor

Debugging

ESP32 projects can be debugged using the official ESP-Prog debug probe. We have a dedicated tutorial on debugging ESP32 code using PlatformIO.

Debugging ESP32 Arduino and ESP-IDF Projects using ESP-Prog and PlatformIO CIRCUITSTATE Electronics Featured Image

Debugging ESP32 Arduino & ESP-IDF Projects using ESP-Prog and PlatformIO

Learn how to use the official Espressif ESP-Prog to debug your ESP32 Arduino and ESP-IDF projects with the help of PlatformIO.

With that, we can wind up this tutorial. There is so much to learn about the awesome ESP32. But we can not cover everything in a single post. In the upcoming tutorials, we will delve deep into the features of ESP32. Hope this tutorial was informative and helpful to you. If not, please let us know in the comments how we can improve this tutorial. Happy tinkering 🔧

  1. Espressif ESP32 SoC – Official Product Page
  2. ESP32 SoC – Datasheet [PDF]
  3. ESP32 SoC Series – Errata [PDF]
  4. Espressif Chip Packaging Information [PDF]
  5. How to identify ESP32 chip revision from the chip silk marking
  6. ESP32-WROOM-32 – Datasheet [PDF]
  7. ESP32-WROOM-32E/U – Datasheet [PDF]
  8. Getting Started with Arduino Nano ESP32 Wi-Fi & IoT Development Board
  9. DOIT ESP32 DevKit V1 Wi-Fi Development Board – Pinout Diagram & Arduino Reference
  10. Espressif ESP-Prog ESP32 Debugger/Programmer
  11. ESP32 Partition Tables
  12. ESP32 Bootloader and Startup
  13. ESP32 JTAG Debugging
  14. ESP32 SPI Flash Modes
  15. ESP32 Flasher Stub
  16. arduino-esp32 – GitHub
  17. ESP-IDF – GitHub
  18. Espressif esptool – GitHub
  19. FreeRTOS – Official Website
  20. Visual Studio Code – Download
  21. Microsoft VS Code Arduino Extension
  22. Arduino CLI
  23. PlatformIO – Official Website
  24. nRF Connect for Mobile – Google Playstore
Share to your friends
Vishnu Mohanan

Vishnu Mohanan

Founder and CEO at CIRCUITSTATE Electronics

Articles: 90

Leave a Reply

Your email address will not be published. Required fields are marked *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

The reCAPTCHA verification period has expired. Please reload the page.