~~NOCACHE~~ ====== lamaPLC: ESP32 / ESP8266 ====== {{ :esp:esp32_ic_1.png?120|ESP32 / ESP8266}} The ESP32 can operate as a standalone system or as a slave device to a host MCU, reducing communication stack overhead on the central application processor. It can interface with other systems to provide Wi-Fi and Bluetooth functionality via its [[com:basic_spi|SPI]]/SDIO or [[com:basic_i2c|I²C]]/[[com:basic_uart|UART]] interfaces. The **ESP32 / ESP8266** was designed by **Espressif Systems** and is manufactured by TSMC using their 40 nm process ===== Different between ESP32 and ESP8266 ===== The main differences are that the ESP32 has significantly more processing power (a dual-core CPU), more memory, and Bluetooth, while the ESP8266 is older, single-core, and Wi-Fi-only. The ESP32 is better suited to complex projects due to its improved performance and peripheral features, while the ESP8266 is a more affordable choice for simple IoT applications. ===== Types of ESP32 / ESP8266 ===== ^Type of ESP32^CPU^Max clock speed^Connectivity^RAM^GPIO^ADC^Security^Peripherials/Note| |{{anchor:esp3266}} **ESP8266** \\ Cost-effective and highly integrated Wi-Fi MCU for IoT applications \\ \\ **ESP8266MOD** \\ [[#lolin_d1_mini|Lolin D1 Mini]]|Single-core L106 32-bit RISC|160 MHz|Wi-Fi only|160KB SRAM|17|10-bit ADC|TLS encryption, validate certificates|SPI, I2C, and UART, no TWAI| |{{anchor:esp32}} **ESP32** \\ Integrated Wi-Fi and Bluetooth connectivity for a wide-range of applications|Dual-core LX6/LX7|240 MHz|Wi-Fi and Bluetooth (BLE)|520KB|34|12-bit ADC|Secure Boot, Flash Encryption, HMAC|Ethernet, USB, touch sensors, CAN, and hall sensor, 1 TWAI| |{{anchor:esp32-dowd}} **ESP32-DOWD** \\ Wide variety of applications, ranging from low-power sensors networks\\ \\ [[#esp-wroom-32d|ESP32-WROOM-32D]]|Dual-core LX6|240 MHz|Wi-Fi and Bluetooth (BLE)|520KB|32|two 12-bit SAR ADC|Secure Boot, Flash Encryption|SD card, UART, SPI, SDIO, I2C, LED PWM, Motor PWM, I2S, IR, pulse counter, GPIO, capacitive touch sensor, ADC, DAC, TWAI® (compatible with ISO 11898-1, i.e., CAN Specification 2.0)| |{{anchor:esp32-c2}} **ESP32-C2** \\ Small-sized, cost-effective SoC|Single-core RISC-V|120 MHz|Wi-Fi 2.4 GHz, Bluetooth 5 (LE)|272 KB SRAM \\ 576 KB ROM|20|12-bit ADC|Secure Boot, Flash Encryption|SPI, UART, I2C, LED PWM controller, General DMA controller (GDMA), SAR ADC, no TWAI| |{{anchor:esp32-c3}} **ESP32-C3** \\ A cost-effective RISC-V MCU with Wi-Fi and Bluetooth 5 (LE) connectivity for secure IoT applications|Single-core RISC-V|160 MHz|Wi-Fi 2.4 GHz, Bluetooth 5 (LE)|400 KB SRAM \\ 384 KB ROM|22|12-bit ADC|Secure Boot, Flash Encryption|Cost-sensitive applications, Pin compatible with ESP8266, 1 TWAI| |{{anchor:esp32-c5}} **ESP32-C5** \\ 2.4 and 5 GHz dual-band Wi-Fi 6 MCU, along with Bluetooth 5 (LE) and 802.15.4 for secure and reliable connectivity|Single-core 32-bit RISC-V|240 MHz|Wi-Fi 6 2.4/5 GHz, Bluetooth 5 (LE), Thread, Zigbee, Matter, HomeKit, MQTT|384KB SRAM \\ 320KB ROM|29|12-bit ADC|Secure boot, flash, and PSRAM encryption, and cryptographic accelerators|ADC, SPI, UART, I2C, I2S, RMT, PWM, 2 TWAI| |{{anchor:esp32-c6}} **ESP32-C6** \\ A low-power and cost-effective 2.4 GHz Wi-Fi 6 + Bluetooth 5 (LE) + Thread/Zigbee SoC|Single-core RISC-V|160 MHz|Wi-Fi 6 2.4 GHz, Bluetooth 5.3 (LE), Thread, Zigbee, Matter|512 KB SRAM \\ 320 KB ROM|30 (QFN40) or 22 (QFN32)|12-bit ADC|RSA-3072 support|Matter Gateways, Thread Border Routers or Zigbee Matter Bridges, SPI, UART, I2C, I2S, RMT, TWAI, PWM, SDIO, Motor Control PWM, 2 TWAI| |{{anchor:esp32-c61}} **ESP32-C61** \\ Delivering affordable Wi-Fi 6 connectivity|Single-core RISC-V|160 MHz|Wi-Fi 6 2.4 GHz, Bluetooth 5.3 (LE) + Mesh 1.1, Matter|320 KB SRAM \\ 256 KB ROM|30 (QFN40) or 22 (QFN32)|12-bit ADC|secure boot, flash and PSRAM encryption|I2C, I2S, SPI, UART, LED PWM, 2 TWAI, ADC, GPIO, LP IO, Timers, and GDMA. Specialized peripherals include the Event Task Matrix (ETM) for automation-triggered tasks and the Analog Voltage Comparator for easy zero-crossing detection| |{{anchor:esp32-h2}} **ESP32-H2** \\ Low power and secure connectivity|Single-core 32-bit RISC-V|96 MHz|Wi-Fi 2.4 GHz, Bluetooth 5 (LE), Thread, Zigbee, Matter|320KB SRAM \\ 128KB ROM|19|12-bit ADC|Secure Boot, Flash Encryption|ADC, SPI, UART, I2C, I2S, RMT, 1 TWAI, GDMA and LED PWM| |{{anchor:esp32-s2}} **ESP32-S2** \\ Secure and Powerful Wi-Fi MCU with Numerous I/O Capabilities \\ \\ [[#wemos_s2_mini|Wemos S2 mini]] |Single-core Xtensa LX7|240 MHz|Wi-Fi 2.4 GHz, USB OTG|320KB SRAM \\ 128KB ROM|43|2 × 13-bit SAR ADC|RSA-3072 support|Camera Interface, fit for lower-power applications like secure IoT| |{{anchor:esp32-s3}} **ESP32-S3** \\ Powerful AI acceleration Reliable security features \\ \\ [[#esp-s3_super_mini|ESP32-S3 Super Mini]]|Dual-core Xtensa LX7|240 MHz|Wi-Fi 2.4 GHz, Bluetooth 5 (LE), USB OTG|512KB SRAM \\ 384KB ROM|45|2 × 12-bit SAR ADC|RSA-4096 support|Camera Interface, Accelerate machine learning applications| |{{anchor:esp32-s4}} **ESP32-P4** \\ High-performing SoC offering extensive IO connectivity, HMI, and security|Dual-core RISC-V|400 MHz|Wi-Fi 6, Bluetooth 5 (LE), USB OTG, ACK, AWS IoT ExpressLink, etc|768KB SRAM|55|-|Secure Boot, Flash Encryption, cryptographic accelerators, and TRNG ensure|SPI, I2S, I2C, LED PWM, MCPWM, RMT, ADC, UART, 3 TWAI. Additionally, it supports USB OTG 2.0 HS, Ethernet, and SDIO Host 3.0. Parallel display and camera interfaces.| ===== Wemos / Lolin D1 Mini ===== {{anchor:lolin_d1_mini}} {{anchor:wemos_d1_mini}} |{{ :esp:esp32_d1_mini_1.png?250|Wemos D1 Mini}}|{{ :esp:esp32_d1_mini_2.png?250|Wemos D1 Mini}}|{{ :esp:esp32_d1_mini_6.png?250|Wemos D1 Mini}}| ==== Wemos / Lolin D1 Mini Features ==== A mini wifi board with 4MB flash based on ESP-8266EX / MOD * 11 digital IO, interrupt/pwm/I2C/one-wire supported(except D0) * 1 analog input(3.2V max input) * Type-C USB Port * LOLIN I²C Port * Compatible with MicroPython, Arduino, NodeMCU * **Peripherals** * **GPIO:** The D1 Mini has 11 GPIO pins that can be programmed to perform a variety of functions. Each GPIO can be configured with an internal pull-up or pull-down resistor, or set to high impedance. * **PWM:** Almost all digital pins (except D0) can produce a Pulse Width Modulation (PWM) signal * **UART:** D1 Mini has a single usable UART (Universal Asynchronous Receiver/Transmitter) interface * **I²C:** D1 Mini has a single I2C interface * **SPI:** The D1 Mini has one hardware SPI interface (HSPI). It supports the general-purpose SPI features listed below: Full-duplex SPI communication, four timing modes of the SPI format transfer, Clock frequency is 20 MHz at maximum, Up to 64-Byte FIFO * **ADC:** The D1 Mini has a single analog input, A0. This analog input pin can measure voltages from 0 to 3.3V. ==== Wemos / Lolin D1 Mini Control Pins ==== |< 100% 70% 30% >| | - The **RST** pin is the reset pin. Pulling this pin low resets the microcontroller, which is equivalent to pressing the board's reset button. \\ \\ - The D1 Mini uses the **FLASH** pin to decide when to boot into the bootloader. By pulling this pin low during power-up, you can put the D1 Mini into flashing mode, which is required for programming the board with new firmware. \\ \\ - The **WAKE** pin wakes the D1 Mini from deep sleep.|{{ :esp:esp32_d1_mini_7.png?300|Wemos / Lolin D1 Mini control pins}}| ==== Wemos / Lolin D1 Mini UART ==== For most ESP32 boards, the UART pin assignment is as follows: ^UART Port^TX^RX^Remarks| |UART0|GPIO 1|GPIO 3|Used for Serial Monitor and uploading code; Can be assigned to other GPIOs| |UART1|GPIO 10|GPIO 9|Must be assigned to other GPIOs| |UART2|GPIO 17|GPIO 16|Can be assigned to other GPIOs| About UART1 (GPIO 9 and GPIO 10) – these GPIOs are connected to the ESP32 SPI flash memory, so you can’t use them like that. To use UART1 to communicate with other devices, you must define different pins using the HardwareSerial library. ===== ESP32-WROOM-32D ===== {{anchor:esp-wroom-32d}} |{{ :esp:esp32-wroom-32d_2.png?250 |ESP32-WROOM-32D}}|{{ :esp:esp32-wroom-32d_4.png?250 |ESP32-WROOM-32D}}|{{ :esp:esp32-wroom-32d_1.png?250 |ESP32-WROOM-32D}}| ==== ESP32-WROOM-32D Features ==== * **CPU and On-Chip Memory** * ESP32-D0WD embedded, Xtensa dual-core 32-bit LX6 microprocessor, up to 240 MHz * 448 KB ROM * 520 KB SRAM * 8 KB SRAM in RTC * **Wi-Fi** * 802.11b/g/n * Bit rate: 802.11n up to 150 Mbps * A-MPDU and A-MSDU aggregation * 0.4 µs guard interval support * Center frequency range of operating channel: 2412 ~ 2484 MHz * **Bluetooth** * Bluetooth V4.2 BR/EDR and Bluetooth LE specification * Class-1, class-2 and class-3 transmitter * AFH * CVSD and SBC * **Peripherals** * Up to 32 GPIOs (5 strapping GPIOs) * SD card, UART, SPI, SDIO, I2C, LED PWM, Motor PWM, I2S, IR, pulse counter, GPIO, capacitive touch sensor, ADC, DAC, TWAI (compatible with ISO 11898-1, i.e., CAN Specification 2.0) === ESP32-WROOM-32D UART === For most ESP32 boards, the UART pin assignment is as follows: ^UART Port^TX^RX^Remarks| |UART0|GPIO 1|GPIO 3|Used for Serial Monitor and uploading code; Can be assigned to other GPIOs| |UART1|GPIO 10|GPIO 9|Must be assigned to other GPIOs| |UART2|GPIO 17|GPIO 16|Can be assigned to other GPIOs| About UART1 (GPIO 9 and GPIO 10) – these GPIOs are connected to the ESP32 SPI flash memory, so you can’t use them like that. To use UART1 to communicate with other devices, you must define different pins using the HardwareSerial library. ===== Wemos S2 mini ===== {{anchor:wemos_s2_mini}} |{{ :esp:wemos_s2_mini_1.png?250 |Wemos S2 mini}}|{{ :esp:wemos_s2_mini_2.png?250 |Wemos S2 mini}}|{{ :esp:wemos_s2_mini_3.png?250 |Wemos S2 mini}}| ==== Wemos S2 mini features ==== * A mini wifi board based on [[#esp32-s2|ESP32-S2]]FN4R2 * Type-C USB * ADC, DAC, I2C, SPI, UART, USB OTG * Compatible with LOLIN D1 mini shields * Compatible with MicroPython, Arduino, CircuitPython, and ESP-IDF * Default firmware: MicroPython * Operating Voltage: **3.3V** * Digital I/O Pins: 27 * Clock Speed: 240MHz * Flash: 4M Bytes * PSRAM: 2M Bytes * **Wi-Fi**: IEEE 802.11 b/g/n-compliant ** Supports 20 MHz, 40 MHz bandwidth in the 2.4 GHz band ** Single-band 1T1R mode with data rate up to 150 Mbps ** WMM ** TX/RX A-MPDU, RX A-MSDU ** Immediate Block ACK ** Fragmentation and defragmentation ** Automatic Beacon monitoring (hardware TSF) ** 4 × virtual Wi-Fi interfaces ** Simultaneous support for Infrastructure Station, SoftAP, and Promiscuous modes ** Note that when ESP32-S2 is in Station mode and performs a scan, the SoftAP channel will change along with the Station channel. ** Antenna diversity ** 802.11mc FTM * **Security**: Secure boot ** Flash encryption ** 4096-bit OTP, up to 1792 bits for users ** Cryptographic hardware acceleration: AES-128/192/256 (FIPS PUB 197), Hash (FIPS PUB 180-4), RSA, Random Number Generator (RNG), HMAC ** Digital signature * **Advanced Peripheral Interfaces:** * 43 × programmable GPIs * Digital interfaces: * 4 × SPI * 1 × I2S * 2 × I²C * 2 × UART * 1 × RMT (TX/RX) * LED PWM controller, up to 8 channels * 4 × pulse counters * 1 × full-speed USB OTG * 1 × DVP 8/16 camera interface, implemented using the hardware resources of I2S * 1 × LCD interface (8-bit serial RGB/8080/6800), implemented using the hardware resources of SPI2 * 1 × LCD interface (8/16/24-bit parallel) * DMA controller * 1 × TWAI® controller compatible with ISO 11898-1 (CAN Specification 2.0) * Analog interfaces: * 2 × 12-bit SAR ADCs, up to 20 channels * 2 × 8-bit DACs * 14 × touch sensing GPIOs * 1 × temperature sensor ==== Wemos S2 mini UART ==== For most ESP32 boards, the UART pin configuration is as follows: ^UART Port^TX^RX^Remarks| |UART0|GPIO 1|GPIO 3|Used for Serial Monitor and uploading code; Can be assigned to other GPIOs| |UART1|GPIO 10|GPIO 9|Must be assigned to other GPIOs| |UART2|GPIO 17|GPIO 16|Can be assigned to other GPIOs| About UART1 (GPIO 9 and GPIO 10) – these GPIOs are connected to the ESP32 SPI flash memory, so you can’t use them for other purposes. To use UART1 to communicate with other devices, you need to assign different pins using the HardwareSerial library. ==== Wemos S2 mini Arduino ==== Choose the board **LOLIN S2 MINI** or **LOLIN S2 PICO**. ===== ESP32-S3 Super Mini ===== {{anchor:esp-s3_super_mini}} |{{ :esp:esp32_s3_super_mini_1.png?250|ESP32-S3 Super Mini}}|{{ :esp:esp32_s3_super_mini_2.png?250|ESP32-S3 Super Mini}}|{{ :esp:esp32-s3_super_mini.png?250|ESP32-S3 Super Mini pinout}}| **Problem:** When connecting the unit to Windows 10, the USB connection cycles on and off. **Solution:** To fix a disconnected ESP32-C3 Super Mini on Windows 10, first try a manual boot mode: press and hold the boot button, then press and release the reset button, and finally release the boot button. It includes both **RST** (reset) and **BOOT** buttons. The **BOOT** button puts the board into bootloader mode for uploading code, while the **RST** button resets the board—useful for restarting and running newly uploaded code. ==== ESP32-S3 Features ==== * A mini wifi board based on [[#esp32-s3|ESP32-S3]] * **Wi-Fi**: IEEE 802.11b/g/n-compliant ** Supports 20 MHz and 40 MHz bandwidth in 2.4 GHz band ** 1T1R mode with data rate up to 150 Mbps ** Wi-Fi Multimedia (WMM) ** TX/RX A-MPDU, TX/RX A-MSDU ** Immediate Block ACK ** Fragmentation and defragmentation ** Automatic Beacon monitoring (hardware TSF) ** Four virtual Wi-Fi interfaces ** Simultaneous support for Infrastructure BSS in Station, SoftAP, or Station + SoftAP modes Note that when ESP32-S3 scans in Station mode, the SoftAP channel will change along with the Station channel ** Antenna diversity ** 802.11mc FTM ** * **Bluetooth**: Bluetooth LE: Bluetooth 5, Bluetooth mesh ** High power mode (20 dBm) ** Speed: 125 Kbps, 500 Kbps, 1 Mbps, 2 Mbps ** Advertising extensions ** Multiple advertisement sets ** Channel selection algorithm #2 ** Internal co-existence mechanism between Wi-Fi and Bluetooth to share the same antenna * **CPU and Memory**: Xtensa® dual-core 32-bit LX7 microprocessor, Clock speed: up to 240 MHz * **Advanced Peripheral Interfaces** * 45 programmable GPIOs * 4 strapping GPIOs * 6 or 7 GPIOs needed for in-package flash or PSRAM * ESP32-S3FN8、ESP32-S3R2、ESP32-S3R8、ESP32-S3R8V、ESP32-S3R16V: 6 GPIOs needed * ESP32-S3FH4R2: 7 GPIOs needed * **Digital interfaces:** * Two SPI ports for communication with flash and RAM * Two general-purpose SPI ports * LCD interface (8-bit ~ 16-bit parallel RGB, I8080 and MOTO6800), supporting conversion between RGB565, YUV422, YUV420 and YUV411 * DVP 8-bit ~ 16-bit camera interface * Three UARTs * Two I2Cs * Two I2Ss * RMT (TX/RX) * Pulse counter * LED PWM controller, up to 8 channels * Full-speed USB OTG * USB Serial/JTAG controller * Two Motor Control PWMs (MCPWM) * SD/MMC host controller with two slots * General DMA controller (GDMA), with 5 transmit channels and five receive channels * TWAI® controller, compatible with ISO 11898-1 (CAN Specification 2.0) * On-chip debug functionality via JTAG * **Analog interfaces:** * Two 12-bit SAR ADCs, up to 20 channels * Temperature sensor * 14 touch sensing IOs ==== ESP32-S3 UART ==== Using an ESP32-S3, the UART assignment is completely different from other ESP modules. The following table shows the default RX and TX pins for UART0, UART1, and UART2 on the ESP32-S3: ^UART Port^TX^RX^Remarks| |UART0|GPIO 43|GPIO 44|Cannot be changed| |UART1|GPIO 17|GPIO 18|Can be assigned to other GPIOs| |UART2|-|-|Assign any pins of your choice| ===== Sources ===== https://www.espressif.com/en/products/ \\ https://www.wemos.cc/en/latest/tutorials/s2/get_started_with_arduino_s2.html \\ https://documentation.espressif.com/esp32-s2_datasheet_en.pdf \\ https://documentation.espressif.com/esp32-wroom-32d_esp32-wroom-32u_datasheet_en.pdf \\ ===== Communication topics on lamaPLC ===== {{topic>communication}} \\ \\ {{tag>ESP8266 ESP32 ESP32-C2 ESP32-C3 ESP32-C5 ESP32-C6 ESP32-C61 ESP32-H2 ESP32-S2 ESP32-S3 ESP32-P4 Espressif_Systems communication ethernet ip esp32 esp8266 Wi-Fi Thread Zigbee Matter HomeKit Bluetooth MQTT ADC SPI UART I2C I2S RMT PWM USB USB_OTG TWAI}} \\ This page has been accessed for: Today: {{counter|today}}, Until now: {{counter|total}}