Tutorial sobre cómo conectar a AWS IoT la placa de evaluación con el W55RP20 de Wiznet
En este tutorial, veremos cómo podemos conectar a AWS IoT la placa de evaluación W55RP20-EVB-Pico, que incluye el W55RP20, un chip que combina W5500, un controlador TCP/IP de Wiznet, y el RP2040 de Raspberry Pi. Por lo tanto, se dispone tanto de las funciones de Raspberry Pi Pico como de las de W5500.
Tabla de Contenidos
1. Introducción
El chip W55RP20 de ioNIC de Wiznet, que cambia las reglas del juego en el ámbito de la tecnología IoT. Este potente chip combina funciones de seguridad avanzadas con un bajo consumo de energía, lo que lo hace perfecto para una amplia gama de aplicaciones, desde dispositivos domésticos inteligentes hasta automatización industrial. Con capacidades de procesamiento de datos de alta velocidad y conectividad sin fisuras, el W55RP20 garantiza que sus dispositivos estén siempre conectados y funcionen con eficiencia. Experimente el futuro del IoT con la fiabilidad y el rendimiento del chip W55RP20.
2. Placa de Evaluación W55RP20-EVB-PICO
2.1 W55RP20
El chip W55RP20 es una solución System-in-Package (SiP) que integra el controlador Ethernet W5500 de WIZnet con el microcontrolador RP2040 de Raspberry Pi, proporcionando capacidades de red y procesamiento para dispositivos IoT y aplicaciones inteligentes. El W5500 es compatible con una pila TCP/IP de hardware, lo que simplifica la conectividad de red y la gestión de las comunicaciones, y ofrece una solución eficiente sin necesidad de memoria externa. El RP2040 incorpora un procesador ARM Cortex-M0+ de doble núcleo, que permite un rápido procesamiento de datos y capacidades multitarea para gestionar múltiples tareas simultáneamente.
Este chip está diseñado para ser compatible con diversos entornos de programación, ya que admite lenguajes como Python y C/C++, lo que facilita a los desarrolladores la implementación de aplicaciones. Además, soporta varias interfaces externas y GPIO, ADC, UART, SPI e I2C, facilitando las conexiones con sensores, actuadores y otros dispositivos periféricos.
Puede consultar el datasheet del W55RP20 en el siguiente enlace.
2.2 Características de la W55RP20-EVB-PICO
- Microcontrolador W55RP20
- Flash interna de 2 MB
- Cortex M0+ de doble núcleo hasta 133 MHz
- SRAM multibanco de alto rendimiento de 264kByte
- Flash externa Quad-SPI con eXecute In Place (XIP)
- Estructura de bus de barras cruzadas de alto rendimiento
- 22 E/S multifunción de propósito general (4 pueden utilizarse para ADC)
- Voltaje de E/S de 1,8-3,3 V (NOTA: el voltaje de E/S de Pico está fijado en 3,3 V)
- Convertidor analógico-digital (ADC) de 12 bits y 500 k/s
- Varios periféricos digitales
- 2 × UART, 2 × I2C, 2 × I2C, 2 × SPI, 16 × canales PWM
- 1 × temporizador con 4 alarmas, 1 × contador en tiempo real
- 2 bloques de E/S programables (PIO), 8 máquinas de estado en total
- E/S de alta velocidad flexible y programable por el usuario
- Puede emular interfaces como tarjetas SD y VGA
- Admite protocolos de Internet cableados: TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE
- Soporta 8 SOCKETs de hardware independientes simultáneamente
- Memoria interna de 32 Kbytes para TX/ RX Buffers
- Soporta interfaz periférica serie de alta velocidad (SPI MODE 0, 3)
- Puerto USB C para alimentación y datos (y para reprogramar la Flash)
- Puerto ARM Serial Wire Debug (SWD) de 3 pines
- 10 / 100 Ethernet PHY integrado
- Soporta Auto Negociación
- Full / Half Duplex
- Basado en 10 / 100
- RJ45 integrado (POE)
- DCDC integrado (PWM/PFM)
- Se instalan módulos adicionales para habilitar POE
2.3 Especificación Hardware de la W55RP20-EVB-PICO
El pinout de W55RP20-EVB-Pico se conecta directamente al GPIO de RP2040 como se muestra en la imagen de arriba. Tiene el mismo pinout que la placa Raspberry Pi Pico. Sin embargo, GPIO17, GPIO20, GPIO21, GPIO22, GPIO23, GPIO24, y GPIO25 no están disponibles debido a la conexión dentro de la placa.
El GPIO W55RP20 utilizado dentro de W55RP20-EVB-Pico es el siguiente.
Puede consultar el esquemático, la lista de componentes y los archivos Gerber en siguiente enlace al Github de Wiznet.
3. Ejemplo de Conexión a AWS IoT
Este tutorial muestra los pasos para ejecutar los códigos de ejemplo del fabricante, y se encuentran recogidos en el Github de Wiznet, en el siguiente enlace.
3.1 Configuración del entorno de desarrollo
Para probar los ejemplos de AWS IoT SDK, el entorno de desarrollo debe configurarse para utilizar Raspberry Pi Pico, W5100S-EVB-Pico, W5500-EVB-Pico, W55RP20-EVB-Pico, W5100S-EVB-Pico2 o la W5500-EVB-Pico2.
Los ejemplos de AWS IoT SDK se probaron configurando el entorno de desarrollo para Windows. Consulte la sección ‘9.2. Building on MS Windows’ del siguiente documento ‘Getting started with Raspberry Pi Pico‘.
Empezando con Raspberry Pi Pico
Se utilizó Visual Studio Code durante el desarrollo y las pruebas de los ejemplos del SDK de AWS IoT, el documento guía de cada directorio también se preparó basándose en el desarrollo con Visual Studio Code. Consulte el documento correspondiente.
3.2 Estructura de ejemplos del SDK de AWS IoT
Los ejemplos están disponibles en el directorio ‘WIZnet-PICO-AWS-C/examples/’. Por ahora, se proporcionan los siguientes ejemplos.
Ten en cuenta que ioLibrary_Driver, mbedtls, aws-iot-device-sdk-embedded-C, pico-sdk son necesarios para ejecutar los ejemplos de AWS IoT SDK.
- La biblioteca ioLibrary_Driver es aplicable al chip ethernet W5x00 de WIZnet.
- La biblioteca mbedtls admite algoritmos adicionales y compatibilidad con conexiones TLS y SSL.
- La biblioteca aws-iot-device-sdk-embedded-C es C embebido (C-SDK) es una colección de archivos de origen C que se pueden utilizar en aplicaciones embebidas para conectar de forma segura dispositivos IoT al núcleo IoT de AWS.
- pico-sdk está disponible para que los desarrolladores puedan crear aplicaciones de software para la plataforma Pico.
- pico-extras contiene bibliotecas adicionales que aún no están listas para su inclusión en el SDK de Pico propiamente dicho, o que simplemente son útiles pero no pertenecen necesariamente al SDK de Pico.
Las librerías están localizadas en el directorio ‘WIZnet-PICO-AWS-C/libraries/‘ .
Si desea modificar el código que MCU-dependiente y utilizar un MCU que no sea RP2040, puede modificarlo en el directorio WIZnet-PICO-AWS-C/port/.
La estructura de esta versión WIZnet-PICO-AWS-C 2.0.0 o superior ha cambiado mucho en comparación con la versión anterior. Si desea consultar la versión anterior, consulte el siguiente enlace.
3.3 Pruebas de ejemplo del SDK de AWS IoT
3.3.1 Descargar
Si se clonan los ejemplos de AWS IoT SDK, el conjunto de bibliotecas como submódulo es un directorio vacío. Por lo tanto, si desea descargar el conjunto de bibliotecas como submódulo junto, clone los ejemplos de AWS IoT SDK con el siguiente comando Git.
/* Change directory */ // change to the directory to clone cd [user path] // e.g. cd D:/RP2040 /* Clone */ git clone --recurse-submodules https://github.com/WIZnet-ioNIC/WIZnet-PICO-AWS-C.git
Con Visual Studio Code, la biblioteca configurada como submódulo se descarga automáticamente, por lo que no importa si la biblioteca configurada como submódulo es un directorio vacío o no, así que remítase a él.
3.3.2 Configurar el chip ethernet
Configure el chip ethernet en ‘CMakeLists.txt‘ en el directorio ‘WIZnet-PICO-AWS-C/‘ de acuerdo con la placa de evaluación a utilizar haciendo referencia a lo siguiente.
- WIZnet Ethernet HAT
- W5100S-EVB-Pico
- W5500-EVB-Pico
- W55RP20-EVB-Pico
- W5100S-EVB-Pico2
- W5500-EVB-Pico2
Cuando se utiliza W55RP20-EVB-Pico :
# Set board
set(BOARD_NAME W55RP20_EVB_PICO)
3.3.3 Cómo utilizar el directorio port
El código se encuentra en el directorio port. El árbol del puerto se muestra a continuación.
- ioLibrary_Driver
Si quieres cambiar cosas relacionadas con SPI, como el número de puerto SPI y la función de lectura/escritura SPI, o el número de puerto GPIO y la función relacionada con la interrupción o usar un MCU diferente sin usar el RP2040, necesitas cambiar el código en el directorio ‘WIZnet-PICO-AWS-C/port/ioLibrary_Driver/’. Aquí hay información sobre las funciones.
- timer
Si quieres cambiar cosas relacionadas con el temporizador. También, si usas un MCU diferente sin usar el RP2040, necesitas cambiar el código en el directorio ‘WIZnet-PICO-AWS-C/port/timer/’. Aquí hay información sobre las funciones.
3.4 Cómo probar la conexión a AWS IoT a través de un ejemplo con MQTT
3.4.1 Preparar el software
El siguiente programa de terminal serial es necesario para conectar AWS IoT a través de una prueba de ejemplo MQTT; descárguelo e instálelo desde el siguiente enlace.
3.4.2 Preparar el hardware
Si está utilizando W5100S-EVB-Pico, W5500-EVB-Pico, W55RP20-EVB-Pico, W5100S-EVB-Pico2 o W5500-EVB-Pico2, puede omitir «1. Combinar…»
-
Combine WIZnet Ethernet HAT con Raspberry Pi Pico.
-
Conecte el cable Ethernet al puerto Ethernet WIZnet Ethernet HAT, W5100S-EVB-Pico, W5500-EVB-Pico, W55RP20-EVB-Pico, W5100S-EVB-Pico2 o W5500-EVB-Pico2.
-
Conecte Raspberry Pi Pico, W5100S-EVB-Pico o W5500-EVB-Pico a una computadora de escritorio o portátil mediante un cable micro USB de 5 pines. W55RP20-EVB-Pico, W5100S-EVB-Pico2 o W5500-EVB-Pico2 requieren un cable USB tipo C.
3.4.3 Configurar AWS IoT
Para conectarse a AWS IoT a través de MQTT, el entorno de desarrollo debe estar configurado para utilizar AWS IoT.
Este ejemplo se probó configurando AWS IoT Core. Consulta la sección «Crear recursos de AWS IoT» del documento que aparece a continuación y realiza la configuración correspondiente.
Para obtener más información sobre AWS IoT, consulte el documento a continuación.
3.4.4 Configuración sobre cómo Conectar AWS IoT a través del ejemplo MQTT
Para probar el ejemplo de conexión de AWS IoT a través de MQTT, se deben realizar configuraciones menores en el código.
- Configure el puerto SPI y el pin en ‘w5x00_spi.h’ en el directorio ‘WIZnet-PICO-AWS-C/port/ioLibrary_Driver/’.
Configure la interfaz SPI que utiliza.
- Configure la configuración de red como IP en ‘aws_iot_mqtt.c’, que es el ejemplo Conectar AWS IoT a través de MQTT en el directorio ‘WIZnet-PICO-AWS-C/examples/aws_iot_mqtt/’.
Configure la IP y otras configuraciones de red para adaptarlas a su entorno de red y si desea utilizar DHCP.
- Configurar la configuración de AWS IoT.
MQTT_DOMAIN debe configurarse como punto de conexión de datos de AWS IoT, y no es necesario configurar MQTT_USERNAME ni MQTT_PASSWORD. Configure MQTT_CLIENT_ID de la misma manera que lo creado durante la configuración de AWS IoT Core.
- Configurar el certificado y la clave del dispositivo.
Debes ingresar el certificado raíz, el certificado de cliente y la clave privada que se descargaron en el Paso 3.
El certificado raíz utiliza la clave RSA de 2048 bits, Amazon Root CA 1, y no utiliza la clave pública.
El certificado y la clave del dispositivo se pueden configurar en ‘mqtt_certificate.h’ en el directorio ‘WIZnet-PICO-AWS-C/examples/aws_iot_mqtt/’.
3.4.5 Build
-
Después de completar la configuración, haga clic en «compilar» en la barra de estado en la parte inferior de Visual Studio Code o presione la tecla «F7» en el teclado para compilar.
-
Cuando se completa la compilación, se genera ‘aws_iot_mqtt.uf2’ en el directorio ‘WIZnet-PICO-AWS-C/build/examples/aws_iot_mqtt/’.
3.4.6: Cargar y ejecutar
- Al presionar el botón BOOTSEL de encendido de Raspberry Pi Pico, W5100S-EVB-Pico, W5500-EVB-Pico, W55RP20-EVB-Pico, W5100S-EVB-Pico2 o W5500-EVB-Pico2 en la placa, se monta automáticamente el almacenamiento masivo USB ‘RPI-RP2’.
-
Arrastre y suelte ‘aws_iot_mqtt.uf2’ en el dispositivo de almacenamiento masivo USB ‘RPI-RP2’.
-
Conéctese al puerto COM serie de Raspberry Pi Pico, W5100S-EVB-Pico, W5500-EVB-Pico, W55RP20-EVB-Pico, W5100S-EVB-Pico2 o W5500-EVB-Pico2 con Tera Term.
-
Reinicia la placa.
-
Si el ejemplo Conectar AWS IoT a través de MQTT funciona normalmente en Raspberry Pi Pico, W5100S-EVB-Pico, W5500-EVB-Pico, W55RP20-EVB-Pico, W5100S-EVB-Pico2 o W5500-EVB-Pico2, puede ver la información de red de Raspberry Pi Pico, W5100S-EVB-Pico, W5500-EVB-Pico, W55RP20-EVB-Pico, W5100S-EVB-Pico2 o W5500-EVB-Pico2, conectándose a AWS IoT y publicando el mensaje.
- Si publica el mensaje a través de la función de prueba en el AWS IoT Core al tema subcribe se configuró en el Paso 4, puede ver que la Raspberry Pi Pico, W5100S-EVB-Pico, W5500-EVB-Pico, W55RP20-EVB-Pico, W5100S-EVB-Pico2 o W5500-EVB-Pico2 reciben el mensaje sobre el tema subcribe.