El docente recuerda a los estudiantes que pueden copiar y pegar el código completo en Thonny y funcionará. No olvides cambiar el nombre de tu SSID y tu clave de red PASSWORD.
# ============================================
# SECCIÓN 1: IMPORTACIÓN DE BIBLIOTECAS
# ============================================
from machine import UART, Pin
import time
2. El docente guía a los estudiantes a ingresar los códigos a las sección Variables:
# ============================================
# SECCIÓN 2: VARIABLES Y CONSTANTES
# ============================================
# LED integrado de la Raspberry Pi Pico
LED = Pin(14, Pin.OUT)
# Configuración de la comunicación UART con el ESP-01
UART_BAUDRATE = 115200
UART_TX_PIN = 4 # GP4 conectado al RX del ESP-01
UART_RX_PIN = 5 # GP5 conectado al TX del ESP-01
# Configuración de tu red WiFi
# ============================================
# ¡¡¡CAMBIAR POR LOS DATOS DE TU WiFi!!!
# ============================================
SSID = "coloca la tuya" # <--- Ejemplo: "MOVISTAR_1234"
PASSWORD = "coloca la tuya" # <--- Ejemplo: "miclave123"
# ============================================
# Configuración del servidor TCP
PUERTO_SERVIDOR = 5000
# Estado inicial del LED
LED.value(0) # LED apagado
3. El docente guía a los estudiantes a ingresar el código en la sección 3 correspondiente a Configuración de Hardware.
# ============================================
# SECCIÓN 3: CONFIGURACIÓN DE HARDWARE
# ============================================
# Inicializar comunicación UART con el ESP-01
uart = UART(1, baudrate=UART_BAUDRATE, tx=Pin(UART_TX_PIN), rx=Pin(UART_RX_PIN))
time.sleep(2) # Pausa para estabilizar
def enviar_comando(comando, tiempo_espera=2):
"""
Envía un comando AT al ESP-01 y retorna la respuesta.
"""
uart.write(comando + "\r\n")
time.sleep(tiempo_espera)
respuesta = ""
while uart.any():
respuesta += uart.read().decode('utf-8')
print(f"CMD: {comando} -> {respuesta.strip()}")
return respuesta
print("=" * 50)
print("INICIANDO CONFIGURACIÓN DEL ESP-01")
print("=" * 50)
4. El docente guía a los estudiantes a colocar el código en la cuarta sección sobre Funciones.
# ============================================
# SECCIÓN 4: FUNCIONES AUXILIARES
# ============================================
def conectar_wifi():
"""
Conecta el ESP-01 a la red WiFi configurada.
Retorna True si conecta exitosamente, False en caso contrario.
"""
print(f"\n1. Conectando a WiFi: {SSID}")
# Configurar modo estación (cliente)
enviar_comando("AT+CWMODE=1", 2)
# Conectar a la red WiFi
respuesta = enviar_comando(f'AT+CWJAP="{SSID}","{PASSWORD}"', 10)
if "GOT IP" in respuesta or "CONNECTED" in respuesta:
print(" ✅ WiFi conectado exitosamente")
return True
else:
print(" ❌ Error al conectar a WiFi")
return False
def crear_servidor():
"""
Crea un servidor TCP en el ESP-01 para recibir comandos.
"""
print("\n2. Configurando servidor TCP...")
# Permitir múltiples conexiones
enviar_comando("AT+CIPMUX=1", 1)
# Crear servidor en el puerto especificado
enviar_comando(f"AT+CIPSERVER=1,{PUERTO_SERVIDOR}", 1)
print(f" ✅ Servidor creado en puerto {PUERTO_SERVIDOR}")
def mostrar_ip():
"""
Muestra la dirección IP del ESP-01 en la red.
"""
print("\n3. Obteniendo dirección IP...")
enviar_comando("AT+CIFSR", 2)
def controlar_led(mensaje):
"""
Analiza el mensaje recibido y controla el LED.
"""
if "ON" in mensaje or "on" in mensaje:
LED.value(1)
print(" 💡 LED ENCENDIDO")
# Enviar confirmación al celular
enviar_comando("AT+CIPSEND=0,14", 0.2)
uart.write("LED ENCENDIDO\r\n")
return True
elif "OFF" in mensaje or "off" in mensaje:
LED.value(0)
print(" 💡 LED APAGADO")
# Enviar confirmación al celular
enviar_comando("AT+CIPSEND=0,13", 0.2)
uart.write("LED APAGADO\r\n")
return True
return False
5. El docente guía a los estudiantes para la escritura del código sobre la última sección y así hacer funcionar todo el conjunto en armonía.
# ============================================
# SECCIÓN 5: EJECUCIÓN PRINCIPAL Y BUCLE
# ============================================
def main():
"""
Función principal que ejecuta la configuración y el bucle de control.
"""
# Conectar a WiFi
if not conectar_wifi():
print("\n⚠️ No se pudo conectar a WiFi. Reiniciando...")
while True:
LED.value(1)
time.sleep(0.2)
LED.value(0)
time.sleep(0.2)
# Mostrar IP
mostrar_ip()
# Crear servidor
crear_servidor()
# Mostrar instrucciones finales
print("\n" + "=" * 50)
print("✅ SISTEMA LISTO")
print("=" * 50)
print("\n📱 CONFIGURACIÓN EN LA APP TCP CLIENT:")
print(" ┌─────────────────────────────────┐")
print(" │ Protocolo: TCP Client │")
print(" │ IP: (ver arriba en AT+CIFSR) │")
print(f" │ Puerto: {PUERTO_SERVIDOR} │")
print(" │ Name: (cualquiera, ej. Pico) │")
print(" └─────────────────────────────────┘")
print("\n📲 COMANDOS PARA ENVIAR:")
print(" ┌─────────────────────────────────┐")
print(" │ Escribe 'ON' → LED enciende │")
print(" │ Escribe 'OFF' → LED apaga │")
print(" └─────────────────────────────────┘")
print("\n" + "=" * 50)
print("ESPERANDO COMANDOS DESDE EL CELULAR...")
print("=" * 50)
# Bucle principal: escuchar comandos
while True:
if uart.any():
datos = uart.read()
if datos:
try:
mensaje = datos.decode('utf-8')
print(f"\n📲 Mensaje recibido: {mensaje[:50]}...")
controlar_led(mensaje)
except Exception as e:
print(f"Error al decodificar: {e}")
time.sleep(0.05) # Pequeña pausa para no saturar
# ============================================
# PUNTO DE ENTRADA DEL PROGRAMA
# ============================================
if __name__ == "__main__":
main()
6. El docente guía a los estudiantes para interconectar los componentes sobre el protoboard.
El docente guía a los estudiantes para la colocación de los componentes electronicos a utilizar en el proyecto en el protoboard
Comentarios
Publicar un comentario