Nota

¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete en el mundo de Raspberry Pi, Arduino y ESP32 junto a otros entusiastas.

¿Por qué unirse?

  • Soporte Experto: Resuelve problemas posventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.

  • Aprende y Comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Previsualizaciones Exclusivas: Obtén acceso anticipado a anuncios de nuevos productos y adelantos exclusivos.

  • Descuentos Especiales: Disfruta de descuentos exclusivos en nuestros productos más recientes.

  • Promociones Festivas y Sorteos: Participa en sorteos y promociones de temporada.

👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy.

1. Acceso a la Red

Raspberry Pi Pico W es muy similar a Raspberry Pi Pico, con el mismo GPIO, puerto microUSB y tamaño. La única diferencia es la adición del chip Wi-Fi CYW43439 de 2,4 GHz de Infineon. Veamos cómo se conecta a nuestra red Wi-Fi.

Componentes Requeridos

Para este proyecto, necesitamos los siguientes componentes.

Es conveniente adquirir el kit completo, aquí está el enlace:

Nombre

COMPONENTES DEL KIT

ENLACE

Kit Kepler

450+

Kepler Ultimate Kit

También puedes comprarlos por separado a través de los enlaces a continuación.

N.º

COMPONENTE

CANTIDAD

ENLACE

1

Conociendo el Pico W

1

COMPRAR

2

Cable Micro USB

1

1. Conexión a Internet

Con solo cinco líneas de código en MicroPython, nuestra Raspberry Pi Pico W puede conectarse a Internet.

Estas 5 líneas de código pueden ejecutarse directamente en la consola, presionando Enter después de escribir cada línea. O sigue el siguiente método y crea un nuevo archivo .py para ejecutarlo.

import network
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("SSID","PASSWORD")
print(wlan.isconnected())
  1. Crea un nuevo script haciendo clic en el botón Nuevo en Thonny y copia el código anterior, cambiando SSID y PASSWORD por los tuyos.

    ../../_images/access1.png
  2. Para ejecutar el script, haz clic en el botón Ejecutar script actual o presiona F5. Si la conexión es exitosa, se imprimirá true.

    Nota

    Asegúrate de que la Raspberry Pi Pico W esté conectada a la computadora mediante un cable USB y selecciona MicroPython (Raspberry Pi Pico).COMXxx como intérprete en la esquina inferior derecha.

    ../../_images/access2.png

2. Evaluación de Tiempo de Espera y Muestra de IP

Considerando condiciones de red deficientes, añadiremos una evaluación de tiempo de espera al código.

Si la conexión es exitosa, se mostrará la IP de la Pico W después de ejecutar el script.

import network
import time

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("SSID","PASSWORD")

# Espera hasta conectar o fallar
wait = 10
while wait > 0:
    if wlan.status() < 0 or wlan.status() >= 3:
        break
    wait -= 1
    print('waiting for connection...')
    time.sleep(1)

# Manejo de error de conexión
if wlan.status() != 3:
    raise RuntimeError('wifi connection failed')
else:
    print('connected')
    print('IP: ', wlan.ifconfig()[0])
../../_images/access3.png
  • Función wlan.status(): Devuelve el estado actual de la conexión inalámbrica, el valor devuelto se muestra en la tabla a continuación.

    Estado

    Valor

    Descripción

    STAT_IDLE

    0

    sin conexión ni actividad,

    STAT_CONNECTING

    1

    en progreso de conexión,

    STAT_WRONG_PASSWORD

    -3

    fallo debido a contraseña incorrecta,

    STAT_NO_AP_FOUND

    -2

    fallo porque ningún punto de acceso respondió,

    STAT_CONNECT_FAIL

    -1

    fallo por otros problemas,

    STAT_GOT_IP

    3

    conexión exitosa.

  • Función wlan.ifconfig(): Obtiene direcciones IP, máscaras de subred, puertas de enlace y servidores DNS. Esta función devuelve una tupla con esta información; en este caso, imprimimos solo la dirección IP.

  • class WLAN – MicroPython Docs

3. Guarda la Información Privada en secrets.py

Al compartir tu proyecto con Pico W, probablemente no desees que otros vean tu contraseña Wi-Fi o clave de API. Para mejorar la seguridad, podemos crear un archivo secrets.py y almacenar tu información privada allí.

  1. Copia el siguiente código en un nuevo archivo de script en Thonny. Cambia SSID y PASSWORD a tus datos.

    secrets = {
    'ssid': 'SSID',
    'password': 'PASSWORD',
    }
    
  2. Elige Raspberry Pi Pico en la ventana emergente al hacer clic en el botón Guardar o presiona Ctrl+S.

    ../../_images/access4.png
  3. Nombra el archivo como secrets.py.

    ../../_images/access5.png
  4. Ahora puedes ver este script en tu Raspberry Pi Pico W.

    ../../_images/access6.png
  5. En otros scripts, puedes llamarlo de la siguiente manera. Al ejecutarlo, verás una conexión Wi-Fi exitosa. El archivo secrets.py se importa como una biblioteca, por lo que no hay riesgo de exponer la información.

    import network
    import time
    from secrets import secrets
    
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    wlan.connect(secrets['ssid'], secrets['password'])
    
    # Espera hasta conectar o fallar
    wait = 10
    while wait > 0:
        if wlan.status() < 0 or wlan.status() >= 3:
            break
        wait -= 1
        print('waiting for connection...')
        time.sleep(1)
    
    # Manejo de error de conexión
    if wlan.status() != 3:
        raise RuntimeError('wifi connection failed')
    else:
        print('connected')
        print('IP: ', wlan.ifconfig()[0])
    
    ../../_images/access8.png

4. Conexión a Internet con do_connect.py

Dado que en cada proyecto necesitaremos una conexión a la red, ¿por qué no crear un nuevo archivo do_connect.py con funciones relevantes para su reutilización, lo que simplifica el código de proyectos complejos?

  1. Copia el siguiente código en un nuevo archivo de script y guárdalo en la Raspberry Pi Pico como do_connect.py.

    import network
    import time
    from secrets import *
    
    def do_connect(ssid=secrets['ssid'],psk=secrets['password']):
        wlan = network.WLAN(network.STA_IF)
        wlan.active(True)
        wlan.connect(ssid, psk)
    
        # Espera hasta conectar o fallar
        wait = 10
        while wait > 0:
            if wlan.status() < 0 or wlan.status() >= 3:
                break
            wait -= 1
            print('waiting for connection...')
            time.sleep(1)
    
        # Manejo de error de conexión
        if wlan.status() != 3:
            raise RuntimeError('wifi connection failed')
        else:
            print('connected')
            ip=wlan.ifconfig()[0]
            print('network config: ', ip)
            return ip
    
    ../../_images/access7.png
  2. Llamando a esta función en otros scripts, permitirá que la Raspberry Pi Pico W se conecte a la red.

    from do_connect import *
    do_connect()