Tema 1

Arquitectura ESP32 y Bloques de Radiocomunicaci贸n

ESP32 - Fundamentos de Radiocomunicaciones

Duraci贸n: 20 horas | Evaluaci贸n: 1陋 Evaluaci贸n

Resultados de Aprendizaje y Criterios de Evaluaci贸n

RA 1: Determina los bloques constructivos de los equipos de radiocomunicaciones, reconociendo sus m贸dulos y componentes y midiendo par谩metros.

Criterios de Evaluaci贸n:

Puntuaci贸n Total RA 1: 1,2 puntos

1.1 Arquitectura del ESP32

1.1.1 Caracter铆sticas Generales

El ESP32 es un microcontrolador de 32 bits desarrollado por Espressif Systems, dise帽ado espec铆ficamente para aplicaciones IoT y de conectividad inal谩mbrica.

Caracter铆sticas principales:

  • CPU Dual-Core: Dos procesadores Xtensa LX6 a 240 MHz
  • Memoria: 520 KB SRAM, 4 MB Flash (configurable)
  • Conectividad: WiFi 802.11 b/g/n, Bluetooth 4.2 y BLE
  • GPIO: 34 pines programables
  • Perif茅ricos: ADC, DAC, PWM, SPI, I2C, UART, I2S
  • Seguridad: Hardware de encriptaci贸n AES, SHA-2, RSA

1.1.2 Bloques Funcionales de Radiocomunicaci贸n

El ESP32 integra varios bloques especializados para radiocomunicaciones:

Bloque WiFi:

  • RF Frontend: Amplificador de bajo ruido (LNA), mezclador, filtros
  • Baseband Processor: Procesamiento de se帽ales digitales
  • MAC Layer: Control de acceso al medio
  • Protocol Stack: Implementaci贸n de protocolos WiFi

Bloque Bluetooth:

  • RF Transceiver: Transmisor y receptor de 2.4 GHz
  • Baseband Controller: Procesamiento de se帽ales Bluetooth
  • Link Manager: Gesti贸n de conexiones
  • HCI Interface: Interfaz de control del host

1.2 Configuraci贸n del Entorno de Desarrollo

1.2.1 Arduino IDE

Configuraci贸n del entorno de desarrollo para ESP32:

// Configuraci贸n b谩sica del ESP32 void setup() { // Inicializar comunicaci贸n serie Serial.begin(115200); // Configurar GPIO pinMode(2, OUTPUT); // LED integrado // Configurar WiFi WiFi.mode(WIFI_STA); Serial.println("ESP32 inicializado correctamente"); } void loop() { // Parpadeo del LED digitalWrite(2, HIGH); delay(1000); digitalWrite(2, LOW); delay(1000); }

1.2.2 ESP-IDF (Espressif IoT Development Framework)

Framework oficial de Espressif para desarrollo avanzado:

// Ejemplo b谩sico en ESP-IDF #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "driver/gpio.h" #define LED_PIN GPIO_NUM_2 void app_main() { // Configurar GPIO gpio_config_t io_conf = {}; io_conf.intr_type = GPIO_INTR_DISABLE; io_conf.mode = GPIO_MODE_OUTPUT; io_conf.pin_bit_mask = (1ULL << LED_PIN); io_conf.pull_down_en = 0; io_conf.pull_up_en = 0; gpio_config(&io_conf); // Bucle principal while(1) { gpio_set_level(LED_PIN, 1); vTaskDelay(1000 / portTICK_PERIOD_MS); gpio_set_level(LED_PIN, 0); vTaskDelay(1000 / portTICK_PERIOD_MS); } }

1.3 Perif茅ricos de Comunicaci贸n

1.3.1 GPIO (General Purpose Input/Output)

El ESP32 cuenta con 34 pines GPIO configurables:

// Configuraci贸n de GPIO #define LED_PIN 2 #define BUTTON_PIN 0 void setup() { pinMode(LED_PIN, OUTPUT); pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { if (digitalRead(BUTTON_PIN) == LOW) { digitalWrite(LED_PIN, HIGH); } else { digitalWrite(LED_PIN, LOW); } }

1.3.2 ADC (Analog-to-Digital Converter)

Conversi贸n de se帽ales anal贸gicas a digitales:

// Lectura de ADC #define ADC_PIN A0 void setup() { Serial.begin(115200); analogReadResolution(12); // 12 bits de resoluci贸n } void loop() { int adcValue = analogRead(ADC_PIN); float voltage = (adcValue * 3.3) / 4095.0; Serial.printf("ADC: %d, Voltaje: %.2f V\n", adcValue, voltage); delay(1000); }

1.3.3 DAC (Digital-to-Analog Converter)

Generaci贸n de se帽ales anal贸gicas:

// Generaci贸n de se帽al anal贸gica #define DAC_PIN DAC1 void setup() { // Configurar DAC dac_output_enable(DAC_PIN); } void loop() { // Generar onda senoidal for (int i = 0; i < 360; i++) { float angle = i * PI / 180.0; int value = (int)(127.5 + 127.5 * sin(angle)); dac_output_voltage(DAC_PIN, value); delay(10); } }

1.4 M贸dulos de Entrada de Audiofrecuencia

1.4.1 Micr贸fonos Digitales

Interfaz con micr贸fonos digitales I2S:

#include "driver/i2s.h" #define I2S_WS 25 #define I2S_SD 33 #define I2S_SCK 32 void setup() { i2s_config_t i2s_config = { .mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_RX), .sample_rate = 44100, .bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT, .channel_format = I2S_CHANNEL_FMT_ONLY_LEFT, .communication_format = I2S_COMM_FORMAT_I2S, .intr_alloc_flags = ESP_INTR_FLAG_LEVEL1, .dma_buf_count = 8, .dma_buf_len = 64 }; i2s_pin_config_t pin_config = { .bck_io_num = I2S_SCK, .ws_io_num = I2S_WS, .data_out_num = I2S_PIN_NO_CHANGE, .data_in_num = I2S_SD }; i2s_driver_install(I2S_NUM_0, &i2s_config, 0, NULL); i2s_set_pin(I2S_NUM_0, &pin_config); }

1.4.2 ADC de Audio

Captura de se帽ales de audio anal贸gicas:

// Captura de audio con ADC #define AUDIO_PIN A0 void setup() { Serial.begin(115200); analogReadResolution(12); analogSetAttenuation(ADC_11db); } void loop() { int audioSample = analogRead(AUDIO_PIN); // Convertir a voltaje float voltage = (audioSample * 3.3) / 4095.0; // Enviar por serie Serial.println(voltage); delay(1); // 1ms = 1kHz de muestreo }

1.5 Osciladores y Generadores de Frecuencia

1.5.1 Cristales y Osciladores

El ESP32 utiliza cristales de 40 MHz para el sistema principal y 32.768 kHz para el RTC.

Caracter铆sticas del oscilador principal:

  • Frecuencia: 40 MHz
  • Estabilidad: 卤20 ppm
  • Temperatura: -40掳C a +85掳C
  • Envejecimiento: 卤5 ppm/a帽o

1.5.2 PLL (Phase-Locked Loop)

El ESP32 incluye PLLs para generar frecuencias de reloj:

// Configuraci贸n de frecuencia de CPU #include "esp_system.h" void setup() { // Configurar frecuencia de CPU setCpuFrequencyMhz(240); // M谩xima frecuencia Serial.begin(115200); Serial.printf("Frecuencia CPU: %d MHz\n", getCpuFrequencyMhz()); Serial.printf("Frecuencia APB: %d MHz\n", getApbFrequency() / 1000000); }

1.6 Amplificadores de RF

1.6.1 LNA (Low Noise Amplifier)

Amplificadores de bajo ruido integrados en el ESP32:

Caracter铆sticas del LNA:

  • Ganancia: 20-30 dB
  • Ruido: < 2 dB
  • Frecuencia: 2.4 GHz
  • Consumo: 20-30 mA

1.6.2 Etapas de Potencia

Amplificadores de potencia para transmisi贸n:

// Configuraci贸n de potencia de transmisi贸n WiFi #include "esp_wifi.h" void setup() { WiFi.mode(WIFI_STA); // Configurar potencia de transmisi贸n esp_wifi_set_max_tx_power(84); // 20 dBm m谩ximo // Conectar a red WiFi.begin("SSID", "password"); }

Materiales Necesarios

Actividades Te贸ricas

Pr谩cticas de Laboratorio

Pr谩ctica 1.1: Configuraci贸n B谩sica del ESP32

Objetivo: Familiarizarse con el entorno de desarrollo y realizar las primeras configuraciones.

Duraci贸n: 2 horas

Entregables: C贸digo fuente comentado, mediciones de consumo, informe t茅cnico

Pr谩ctica 1.2: Configuraci贸n de GPIO y Perif茅ricos

Objetivo: Configurar y utilizar los perif茅ricos b谩sicos del ESP32.

Duraci贸n: 3 horas

Entregables: Esquema de conexiones, c贸digo fuente, mediciones de se帽ales

Pr谩ctica 1.3: Interfaz de Audio Digital

Objetivo: Implementar la captura de audio usando I2S.

Duraci贸n: 3 horas

Entregables: C贸digo I2S, an谩lisis de se帽ales, informe de rendimiento

Pr谩ctica 1.4: Medici贸n de Par谩metros RF

Objetivo: Medir y analizar los par谩metros de los m贸dulos de radiofrecuencia.

Duraci贸n: 4 horas

Entregables: Mediciones de potencia, an谩lisis de espectro, informe t茅cnico

Criterios de Evaluaci贸n

Instrumentos de evaluaci贸n:

Entregables obligatorios:

Recursos Adicionales