W5100S-EVB-Pico: un Raspberry PI Pico con puerto Ethernet

Manos en una placa W5100S-EVB-Pico. Descubramos este microcontrolador y sus principales características

En este tutorial, les mostraré qué es la placa microcontroladora W5100S-EVB-Pico y cómo usarla.

Explicaré las características principales de esta placa IoT, luego mostraré algunos ejemplos de uso con el ejemplo básico de Ping y un ejemplo de Mosquitto (MTTQ) para interactuar con un corredor MTTQ como Thingsboard.

Características del W5100S-EVB-Pico

La placa de evaluación WIZnet W5100S-EVB-Pico es un microcontrolador compacto Raspberry Pi Pico, del cual toma el microcontrolador RP2040 y más. Está diseñado para adaptarse a las necesidades de IoT para administrar aplicaciones en una amplia gama de campos de bricolaje, como automatización de edificios, registro de datos, educación, automatización del hogar, iluminación, monitoreo remoto, robótica, etc. También es una gran oportunidad para la industria en muchos sectores como agricultura, bienes de consumo, energía/servicios públicos, comercio minorista, ciudad inteligente, hogar inteligente.

Desde Raspberry PI Pico, puede considerar la misma hoja de datos de hardware. Por otro lado, el WIZnet W5100S agrega capacidades de ethernet con las siguientes características:

  • Admite protocolos de Internet cableados: TCP, UDP, WOL sobre UDP, ICMP, IGMPv1/v2, IPv4, ARP, PPPoE
  • Admite 4 SOCKET de hardware independientes simultáneamente
  • Memoria interna de 16 Kbytes para búferes TX/ RX
  • Interfaz SPI
  • 10/100 Ethernet PHY integrado
  • Admite negociación automática
    • Dúplex completo / semidúplex
    • Basado en 10 / 100
  • RJ45 incorporado (RB1-125BAG1A)
  • LDO incorporado (LM8805SF5-33V)

asignación de pines

Puede pensar en la placa W5100S-EVB-Pico como un Raspberry PI Pico con el WIZnet Ethernet HAT adjunto. Los GPIO16, GPIO17, GPIO18, GPIO19, GPIO20, GPIO21 están cableados al W5100S dentro de la placa. Estos pines permiten la comunicación SPI con W5100S para usar la función Ethernet. Los otros conectores son los mismos que el pinout de Raspberry PI Pico.

Es importante tener en cuenta que si está utilizando la función Ethernet, estos pines no se pueden utilizar para ningún otro propósito.

Lo que necesitamos

Como de costumbre, sugiero agregar desde ahora a su carrito de compras de comercio electrónico favorito todo el hardware necesario, para que al final pueda evaluar los costos generales y decidir si continúa con el proyecto o los elimina del carrito de compras. Entonces, el hardware será solo:

Procedimiento paso a paso

Antes de comenzar, puede soldar los encabezados de PIN disponibles en el paquete, de modo que sea más fácil usar la placa con sensores en laboratorios utilizando placas de prueba. Una buena guía para soldar correctamente estos pines está disponible en MagPI How to solder pin headers GPIO to Raspberry Pi Pico tutorial.

Este paso no es estrictamente necesario y los siguientes pasos funcionarán incluso sin los cabezales soldados.

Por otro lado, debe tener una PC (tal vez Windows, Linux o una placa de computadora Raspberry PI como la RPI 4 modelo B) con Thonny instalado.

Instalar firmware

En el momento de este tutorial, el firmware oficial de Raspberry PI Pico Micropython, que puede instalar con mi tutorial Primeros pasos con Raspberry PI Pico para principiantes, funciona en W5100S-EVB-Pico pero solo si no necesita las capacidades de Ethernet. Esto se debe a que el firmware oficial no parece incluir las bibliotecas de usocket, lo que resulta en «ImportError: ningún módulo llamado ‘usocket'».

Entonces, para obtener lo mejor de este microcontrolador, debe usar el firmware WIZnet disponible en su página de Github (https://github.com/Wiznet/RP2040-HAT-MicroPython/), o puede descargarlo siguiendo el enlace directo desde mi area de descarga -> firmware.uf2.

Instalar este firmware en W5100S-EVB-Pico es realmente sencillo.

Presione (y mantenga presionado) el botón BOOTSEL a bordo:

Con este botón presionado, conecte el cable USB al W5100S-EVB-Pico y a su computadora. Verá la placa como almacenamiento extraíble (la siguiente captura de pantalla proviene de Raspberry PI OS Desktop):

Si esto no sucede, intente cambiar el cable USB.

Ahora puede soltar el botón BOOTSEL. El nuevo almacenamiento incluirá solo unos pocos archivos:

Pegue el archivo uf2 descargado (firmware) en este almacenamiento. Una vez copiada, la placa W5100S-EVB-Pico se reiniciará. Abra Thonny y detectará automáticamente una nueva placa «MicroPython (Raspberry PI Pico)». Es posible que deba configurar el intérprete Thonny desde Herramientas -> Opciones -> pestaña Intérprete si no se detecta automáticamente y configurar el puerto en «Intentar detectar el puerto automáticamente».

Importar bibliotecas de redes

Para obtener servicios de red, necesitamos agregar bibliotecas WIZnet. Obtenga los dos archivos de la página de bibliotecas de Wiznet en GitHub. Necesitará los siguientes 2 archivos:

Abra estos archivos en Thonny y guárdelos en su placa W5100S-EVB-Pico seleccionando «Raspberry PI Pico» cuando se le solicite.

Puede guardar estos 2 archivos bot en la carpeta raíz o puede colocarlos en una nueva carpeta llamada «lib» (como se explica en mi Adición de módulos externos a MicroPython con Raspberry PI Pico.

Ahora está listo para ejecutar la siguiente prueba.

Ejemplo 1: prueba de ping

La prueba de ping principal se puede realizar configurando la interfaz Ethernet con una dirección IP estática específica compatible con su red doméstica.

Descargue el código MicroPython para la prueba de ping de WZINnet GitHub w5x00_Ping_Test.py o descárguelo de mi área de descarga con el siguiente enlace:

Guarde este archivo cambiándole el nombre a «main.py» en la carpeta raíz de su Raspberry PI Pico. De esta forma, contendrá los siguientes archivos:

umqttsimple.py urequest.py main.py

Tenga en cuenta configurar su dirección IP de acuerdo con la red de su enrutador. Por ejemplo, si en su hogar tiene direcciones IP como 192.160.1.x, debe encontrar una dirección IP libre para el último byte (la «X») y establecerla en el código ping en la siguiente fila:

    nic.ifconfig(('192.168.1.20','255.255.255.0','192.168.1.1','8.8.8.8'))

Aquí, la segunda IP es la máscara de subred (generalmente «255.255.255.0» para los enrutadores domésticos clásicos), la tercera IP es la puerta de enlace predeterminada (generalmente la dirección IP de su enrutador) y el último valor es el DNS («8.8.8.8» indica para usar Google DNS, cuando se requiere resolución de nombres).

Puede ejecutar esta prueba de ping desde su Thonny IDE, una vez que el cable Ethernet esté enchufado, o ahora puede desconectar el W5100S-EVB-Pico de su computadora y conectarlo al puerto Ethernet de su enrutador, de un lado, y un micro Fuente de alimentación USB (desde el otro lado). Como el código de ping se guardó y cambió de nombre en «main.py», se ejecutará en W5100S-EVB-Pico una vez que se encienda.

Desde su computadora, verifique que todo funcione con un comando de ping remoto:

pi@raspberrypi:~ € ping 192.168.1.20 PING 192.168.1.20 (192.168.1.20) 56(84) bytes of data. 64 bytes from 192.168.1.20: icmp_seq=1 ttl=128 time=0.453 ms 64 bytes from 192.168.1.20: icmp_seq=2 ttl=128 time=0.441 ms 64 bytes from 192.168.1.20: icmp_seq=3 ttl=128 time=0.444 ms 64 bytes from 192.168.1.20: icmp_seq=4 ttl=128 time=0.442 ms 64 bytes from 192.168.1.20: icmp_seq=5 ttl=128 time=0.458 ms 64 bytes from 192.168.1.20: icmp_seq=6 ttl=128 time=0.449 ms ^C --- 192.168.1.20 ping statistics --- 6 packets transmitted, 6 received, 0% packet loss, time 187ms rtt min/avg/max/mdev = 0.441/0.447/0.458/0.028 ms 

Ejemplo 2: Conexión MTTQ a Thingsboard

En este ejemplo, conectaremos el W5100S-EVB-Pico a una instancia en ejecución de Thingsboard. Esto se puede instalar en una placa de computadora Raspberry PI siguiendo mi tutorial de ThingsBoard y Raspberry PI (parte 1), mientras que el W5100S-EVB-Pico se configurará prestando atención al uso de autenticación «MTTQ Basic» (ID de cliente, nombre de usuario y contraseña). puede ser lo que prefieras):

Para esto, puede consultar mi tutorial de ThingsBoard y Raspberry PI (parte 2).

Para que el MTTQ funcione con Thingsboard, puede descargar mi código MTTQ_thingsboard.py con el siguiente enlace:

MTTQ_thingsboard.py

Como en la prueba de pinta anterior, configure los parámetros de la dirección IP.

La variable mttq_server debe coincidir con la dirección IP de su servidor ThingsBoard:

mqtt_server = '192.168.1.91'

La autenticación se configura de manera diferente al código de ejemplo MTTQ estándar de WIZnet, ya que ThingsBoard necesita una autenticación más sólida. Lo definido en ThingsBoard al crear el nuevo dispositivo debe configurarse en las siguientes variables:

client_id = 'Pico#1' user_t = 'pico' password_t = 'pico'

El topic_pub tiene que quedar lo establecido en las siguientes líneas para publicar en telemetría. Publicaremos una clave de telemetría «Temp» constante en ThingsBoard, con un valor constante de 25, con topic_msg establecido como se muestra a continuación:

topic_pub = 'v1/devices/me/telemetry' topic_msg = '{"Temp":25}'

Por supuesto, podrá administrar claves y valores de telemetría con código MicroPython para obtener diferentes datos de telemetría.

Conecte el cable Ethernet y ejecute el código de Thonny o conecte una fuente de alimentación a W5100S-EVB-Pico y verifique que los datos de telemetría deberían comenzar a llegar a la página de su dispositivo ThingsBoard.

Obtener más ejemplos de W5100S-EVB-Pico

Se pueden encontrar más ejemplos de código de MicroPython en la página de Wiznet RP2040-HAT-MicroPython.