Resultados de Aprendizaje y Criterios de Evaluaci贸n
RA 2: Verifica el funcionamiento de equipos de radiocomunicaciones, analizando su estructura interna y sus caracter铆sticas.
Criterios de Evaluaci贸n:
- CE a) Se han identificado las caracter铆sticas t茅cnicas de los equipos de radiocomunicaciones. 0,4 puntos
- CE b) Se han conectado m贸dulos de equipos de radiodifusi贸n de FM, AM y/o televisi贸n (DVB-T y DVB-S). 0,2 puntos
- CE c) Se han conectado los equipos con los sistemas radiantes. 0,2 puntos
- CE d) Se ha configurado el modo de trabajo de los m贸dulos de emisi贸n (RX) y recepci贸n (TX): (d煤plex y full-d煤plex, entre otros). 0,8 puntos
- CE e) Se han identificado las se帽ales de las redes de comunicaciones v铆a sat茅lite y de posicionamiento global. 0,2 puntos
- CE f) Se han conectado los sistemas de control y mantenimiento remoto (GSM y FTP, entre otros). 0,2 puntos
- CE g) Se han verificado las se帽ales de los equipos de comunicaci贸n terrestre y v铆a sat茅lite. 0,2 puntos
Puntuaci贸n Total RA 2: 2,2 puntos
2.1 WiFi: Modos AP y Station
2.1.1 Modo Station (STA)
El ESP32 act煤a como cliente conect谩ndose a una red WiFi existente:
#include "WiFi.h"
const char* ssid = "MiRedWiFi";
const char* password = "miPassword123";
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.print("Conectando a WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println("WiFi conectado!");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
// Verificar estado de conexi贸n
if (WiFi.status() == WL_CONNECTED) {
Serial.println("WiFi conectado");
} else {
Serial.println("WiFi desconectado");
}
delay(5000);
}
2.1.2 Modo Access Point (AP)
El ESP32 crea su propia red WiFi:
#include "WiFi.h"
const char* ssid = "ESP32_AP";
const char* password = "12345678";
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_AP);
WiFi.softAP(ssid, password);
Serial.println("Access Point iniciado");
Serial.print("SSID: ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.softAPIP());
}
void loop() {
// Mostrar clientes conectados
Serial.printf("Clientes conectados: %d\n", WiFi.softAPgetStationNum());
delay(5000);
}
2.2 Protocolos TCP/UDP
2.2.1 Comunicaci贸n TCP
Protocolo orientado a conexi贸n para transmisi贸n confiable:
#include "WiFi.h"
#include "WiFiClient.h"
WiFiClient client;
void setup() {
Serial.begin(115200);
WiFi.begin("SSID", "password");
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Conectando...");
}
Serial.println("Conectado a WiFi");
}
void loop() {
if (client.connect("192.168.1.100", 8080)) {
Serial.println("Conectado al servidor");
// Enviar datos
client.println("Hola desde ESP32");
// Recibir respuesta
while (client.available()) {
String line = client.readStringUntil('\r');
Serial.println(line);
}
client.stop();
}
delay(5000);
}
2.2.2 Comunicaci贸n UDP
Protocolo sin conexi贸n para transmisi贸n r谩pida:
#include "WiFi.h"
#include "WiFiUdp.h"
WiFiUDP udp;
void setup() {
Serial.begin(115200);
WiFi.begin("SSID", "password");
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
}
udp.begin(8080);
Serial.println("UDP iniciado en puerto 8080");
}
void loop() {
// Enviar paquete UDP
udp.beginPacket("192.168.1.100", 8080);
udp.print("Datos desde ESP32");
udp.endPacket();
// Recibir paquetes
int packetSize = udp.parsePacket();
if (packetSize) {
char buffer[255];
int len = udp.read(buffer, 255);
buffer[len] = '\0';
Serial.println(buffer);
}
delay(1000);
}
2.3 Bluetooth Classic y BLE
2.3.1 Bluetooth Classic
Comunicaci贸n de datos a alta velocidad:
#include "BluetoothSerial.h"
BluetoothSerial SerialBT;
void setup() {
Serial.begin(115200);
SerialBT.begin("ESP32_BT"); // Nombre del dispositivo
Serial.println("Bluetooth iniciado. Empareja el dispositivo.");
}
void loop() {
// Enviar datos por Bluetooth
if (SerialBT.available()) {
String received = SerialBT.readString();
Serial.println("Recibido: " + received);
// Responder
SerialBT.println("Echo: " + received);
}
// Enviar datos desde Serial
if (Serial.available()) {
String data = Serial.readString();
SerialBT.println(data);
}
}
2.3.2 Bluetooth Low Energy (BLE)
Comunicaci贸n de bajo consumo:
#include "BLEDevice.h"
#include "BLEServer.h"
#include "BLEUtils.h"
BLEServer* pServer = NULL;
BLECharacteristic* pCharacteristic = NULL;
#define SERVICE_UUID "4fafc201-1fb5-459e-8fcc-c5c9c331914b"
#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8"
class MyServerCallbacks: public BLEServerCallbacks {
void onConnect(BLEServer* pServer) {
Serial.println("Cliente conectado");
};
void onDisconnect(BLEServer* pServer) {
Serial.println("Cliente desconectado");
}
};
void setup() {
Serial.begin(115200);
BLEDevice::init("ESP32_BLE");
pServer = BLEDevice::createServer();
pServer->setCallbacks(new MyServerCallbacks());
BLEService *pService = pServer->createService(SERVICE_UUID);
pCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID,
BLECharacteristic::PROPERTY_READ |
BLECharacteristic::PROPERTY_WRITE
);
pCharacteristic->setValue("Hola BLE");
pService->start();
BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
pAdvertising->addServiceUUID(SERVICE_UUID);
pAdvertising->setScanResponse(true);
pAdvertising->setMinPreferred(0x06);
pAdvertising->setMaxPreferred(0x12);
BLEDevice::startAdvertising();
Serial.println("BLE Server iniciado");
}
2.5 Antenas y Sistemas Radiantes
2.5.1 Tipos de Antenas
Diferentes tipos de antenas para ESP32:
Antenas integradas:
- PCB Antenna: Antena impresa en la placa
- Chip Antenna: Antena de chip cer谩mico
Antenas externas:
- Dipolo: Antena de media onda
- Monopolo: Antena de cuarto de onda
- Helicoidal: Para aplicaciones direccionales
2.5.2 Medici贸n de ROE (Relaci贸n de Ondas Estacionarias)
Verificaci贸n de la adaptaci贸n de impedancia:
// Medici贸n de potencia de transmisi贸n
#include "esp_wifi.h"
void medirPotenciaTransmision() {
int8_t power;
esp_wifi_get_max_tx_power(&power);
Serial.printf("Potencia m谩xima de transmisi贸n: %d dBm\n", power);
// Medir RSSI
int32_t rssi = WiFi.RSSI();
Serial.printf("RSSI: %d dBm\n", rssi);
// Calcular distancia aproximada
float distancia = pow(10, (27.55 - (20 * log10(2400)) + abs(rssi)) / 20.0);
Serial.printf("Distancia aproximada: %.2f metros\n", distancia);
}
2.6 Protocolos de Comunicaci贸n
2.6.1 MQTT (Message Queuing Telemetry Transport)
Protocolo de mensajer铆a para IoT:
#include "WiFi.h"
#include "PubSubClient.h"
const char* mqtt_server = "broker.hivemq.com";
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
Serial.begin(115200);
WiFi.begin("SSID", "password");
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
}
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
}
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Mensaje recibido [");
Serial.print(topic);
Serial.print("]: ");
for (int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
}
Serial.println();
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
// Publicar datos
client.publish("esp32/temperatura", "25.5");
delay(5000);
}
void reconnect() {
while (!client.connected()) {
if (client.connect("ESP32Client")) {
client.subscribe("esp32/comandos");
} else {
delay(5000);
}
}
}
2.6.2 HTTP y WebSocket
Comunicaci贸n web en tiempo real:
#include "WiFi.h"
#include "WebServer.h"
#include "WebSocketsServer.h"
WebServer server(80);
WebSocketsServer webSocket = WebSocketsServer(81);
void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t length) {
switch(type) {
case WStype_DISCONNECTED:
Serial.printf("Cliente [%u] desconectado\n", num);
break;
case WStype_CONNECTED:
Serial.printf("Cliente [%u] conectado\n", num);
break;
case WStype_TEXT:
Serial.printf("Recibido: %s\n", payload);
webSocket.sendTXT(num, "Echo: " + String((char*)payload));
break;
}
}
void setup() {
Serial.begin(115200);
WiFi.begin("SSID", "password");
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
}
server.on("/", []() {
server.send(200, "text/html",
""
"
ESP32 WebSocket
"
""
""
);
});
server.begin();
webSocket.begin();
webSocket.onEvent(webSocketEvent);
}
Pr谩cticas de Laboratorio
Pr谩ctica 2.1: Configuraci贸n WiFi B谩sica
Objetivo: Configurar el ESP32 como cliente y servidor WiFi.
Duraci贸n: 3 horas
Entregables: C贸digo fuente, mediciones de RSSI, informe t茅cnico
Pr谩ctica 2.2: Comunicaci贸n Bluetooth
Objetivo: Implementar comunicaci贸n Bluetooth Classic y BLE.
Duraci贸n: 3 horas
Entregables: Aplicaci贸n m贸vil, c贸digo ESP32, an谩lisis de rendimiento
Pr谩ctica 2.3: Sistema LoRa
Objetivo: Configurar comunicaci贸n LoRa entre dos ESP32.
Duraci贸n: 4 horas
Entregables: Sistema emisor-receptor, mediciones de alcance, informe t茅cnico
Pr谩ctica 2.4: Medici贸n de Antenas
Objetivo: Medir y comparar diferentes tipos de antenas.
Duraci贸n: 3 horas
Entregables: Mediciones de ROE, patrones de radiaci贸n, informe comparativo
Pr谩ctica 2.5: Protocolos de Comunicaci贸n
Objetivo: Implementar MQTT, HTTP y WebSocket.
Duraci贸n: 4 horas
Entregables: Servidor MQTT, interfaz web, an谩lisis de rendimiento
Pr谩ctica 2.6: Sistema Integrado
Objetivo: Crear un sistema de comunicaci贸n completo.
Duraci贸n: 3 horas
Entregables: Sistema completo, documentaci贸n, pruebas de funcionamiento