Busca en nuestro Blog. Encontrarás múltiples aplicaciones, soluciones, ejemplos de código. Navega utilizando la nube de etiquetas o busca utilizando criterios específicos

WiFi / Bluetooth Module ESP32

How it works

Introducción


En este post se explicará cómo funciona el módulo ESP32 según la hoja de datos de la serie ESP32. Al final del post hay un ejemplo práctico. 

Aquí tiene un enlace a la Hoja de Datos:  

ESP32 Series Datasheet


Visión general


ESP32 es un único chip combinado Wi-Fi y Bluetooth de 2,4 GHz diseñado con la tecnología TSMC de 40 nm de potencia ultrabaja.  Está diseñado para lograr la mejor potencia y rendimiento de RF, mostrando robustez,  que muestra robustez, versatilidad y fiabilidad en una amplia variedad de aplicaciones y escenarios de potencia. Algunas aplicaciones son IoT Sensor Hub genérico de baja potencia, registradores de datos IoT genéricos de baja potencia y red de malla.

Está diseñado para aplicaciones móviles, electrónica portátil y Internet de las cosas (IoT).  Cuenta con todas las características de última generación de los chips de baja potencia, incluyendo el alcance de reloj de grano fino,  múltiples modos de potencia y escalado de potencia dinámico. La salida del amplificador de potencia también es ajustable,  contribuyendo así a un equilibrio óptimo entre el rango de comunicación, la velocidad de datos y el consumo de energía.


Características generales 


Wi-Fi

  • 802.11 b/g/n 

  • 802.11 n (2.4 GHz), up to 150 Mbps

Bluetooth

  • Controlador de modo dual Bluetooth 4.2 BR/EDR BLE

  • +12 dBm de potencia de transmisión

  • Receptor NZIF con sensibilidad BLE de -97 dBm

CPU and Memory

  • Xtensa single-/dual-core 32-bit LX6 microprocessor(s), hasta 600 MIPS (200 MIPS para ESP32-S0WD, 400 MIPS para ESP32-D2WD).

  • 448 KB ROM

  • 520 KB SRAM

  • 16 KB SRAM in RTC ( 8KB RTC FAST Memory accessed by the main CPU during RTC Boot from the Deep-sleep mode and 8 KB RTC SLOW Memory accessed by the co-processor during the Deep-sleep mode). 

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/BT functionality)

  • External 32 kHz crystal oscillator for RTC with calibration

  • Two timer groups, including 2 x 64-bit timers and 1 x main watchdog in each group 

  • One RTC timer

  • RTC watchdog


Advanced Peripherial Interfaces

  • 34 x programmable GPIOs

  • 12-bit SAR ADC up to 18 channels

  • 2 x 8-bit DAC

  • 10 x touch sensors

  • 4 x SPI

  • 2 x I2S

  • 2 x I2C

  • 3 x UART

  • 1 host (SD/eMMC/SDIO)

  • 1 slave (SDIO/SP)

  • Ethernet MAC interface with dedicated DMA and IEEE 1588 support

  • CAN 2.0

  • IR (TX(RX)

  • Motor PWM

  • Motor PWM

  • LED PWM up to 16 channels

  • Hall sensor


Security 

  • Secure boot

  • Flash encryption

  • 1024-bit OTP, up to 768-bit for customers

  • Cryptographic hardware acceleration:

    • AES

    • Hash (SHA-2)

    • RSA

    • EXX

    • Random Number Generator (RNG)



La imagen abajo muestra el pinout ESP32:



Para obtener más información consulte Datasheet. 


Arduino

ESP32 board


Para cargar el programa en el ESP32 tienes que instalar la placa. Vete a File >  Preferences and into Additional Boards Manager URLs añadir el siguiente   URLhttps://dl.espressif.com/dl/package_esp32_index.json

 *Si ya tienes una URL ponla junto a la otra separeted por coma, como en la imagen de abajo.  

Ahora usted es capaz de instalar la placa. Vete a Tools > Boards > Boards Manager y búsqueda por ESP32. Aparecerá el esp32 de Espressif Systems. Instálelo.  

Una vez instalado vaya a Tools > Boards y elija  DOIT ESP32 DEVKIT V1



Ejemplos


WiFi


Encontrará algunos ejemplos para probar en File > Examples > Examples for ESP32 Dev Module.  Echemos un vistazo al ejemplo de WiFi Scan 



Aquí tienes el código con algunas adiciones y comentarios:


Wifi_Scan código:

#include "WiFi.h"

void setup()
{
    Serial2.begin(19200);
    // Set WiFi to station mode and disconnect from an AP if it was previously connected
    WiFi.mode(WIFI_STA);
    WiFi.disconnect();
    delay(100);
    
    Serial2.println("Setup done");
}

void loop()
{
    int start = millis(); // Capture start time 
    Serial2.println("scan start");

    // WiFi.scanNetworks will return the number of networks found
    int n = WiFi.scanNetworks();
    int finish = millis();
    Serial2.print("scan done, time = ");
    Serial2.print(finish - start);
    Serial2.println(" ms");
    if (n == 0) {
        Serial2.println("no networks found");
    } else {
        Serial2.print(n);
        Serial2.println(" networks found");
        for (int i = 0; i < n; ++i) {
            // Print SSID and RSSI for each network found
            Serial2.print(i + 1);
            Serial2.print(": ");
            Serial2.print(WiFi.SSID(i));
            Serial2.print(" (");
            Serial2.print(WiFi.RSSI(i));
            Serial2.print(")");
            Serial2.println((WiFi.encryptionType(i) == WIFI_AUTH_OPEN)?" ":"*");
            delay(10);
        }
    }
    Serial2.print("");

    // Wait a bit before scanning again
    delay(5000);
}


Cargar un programa 


IMPORTANTE 

Para cargar un programa tienes que pulsar el botón BOOT  mientras estás subiendo el programa. Una vez cargado pulse el botón EN para ejecutar el programa. 


Resultado


Después de subir el programa anterior de WiFiScan verá algo como esto en el Monitor serie:  


Bluetooth


Encontrará algunos ejemplos para probar en  File > Examples > Examples for ESP32 Dev Module. Echemos un vistazo al ejemplo de escritura BLE.