Archi Net es una placa de desarrollo diseñada para facilitar la conectividad mediante WiFi, Ethernet y Bluetooth Low Energy (BLE). Cuenta con 4 entradas analógicas y 8 entradas/salidas digitales.
El diseño está pensado para que todas las funciones puedan ser programadas y controladas directamente desde el microcontrolador ARCHI (basado en RP2040), sin necesidad de programar el ESP32 por separado. Este actúa como un coprocesador de comunicaciones, operando mediante comandos enviados en formato Json.
- Voltaje de Entrada del Shield: 5V a 12V.
- Conectividad Wi-Fi: Estándar 802.11 b/g/n (2.4 GHz) con soporte para modos de estación, Punto de Acceso (AP) y Wi-Fi Direct (ESP32-S3).
- Conectividad Bluetooth: Bluetooth LE 5.0 (Bluetooth Low Energy).
- Conectividad Ethernet: Compatible con 10Base-T/100Base-TX Ethernet (WIZnet W5500).
- Voltaje de Operación Interno: Los módulos internos (ESP32-S3 y W5500) operan típicamente a 3.3V, provistos por reguladores a bordo del shield.
- Pines de Entrada/Salida (I/O):
- 4 Entradas/Salidas Analógicas.
- 8 Entradas/Salidas Digitales.
- Programación/Depuración: Incluye un puerto USB JTAG integrado para la programación y depuración directa del ESP32-S3.
- Fuente de Alimentación: Este bloque garantiza la alimentación estable a los bloques de conectividad.
- Archi: Es el microcontrolador principal que controla la comunicación y funcionalidad de los bloques de conectividad (ESP32 y Ethernet WIZNET W5500).
- ESP32-S3: Funciona como un coprocesador dedicado a la conectividad inalámbrica, comunicándose con Archi mediante interfaces como UART o SPI.
- Ethernet (WIZNET W5500): Proporciona la conexión de red cableada a través de un puerto RJ45, permitiendo una comunicación Ethernet.
El siguiente diagrama en bloque muestra la distribución de voltaje.
El shield ArchiNet tiene una entrada para una fuente externa de +5V con una capacidad de hasta 2A.
Este voltaje de +5V se utiliza para la alimentación principal de la placa. La placa ArchiNet, a su vez, regula este voltaje para obtener una salida de +3.3V.
Esta salida de +3.3V es la que se utiliza para alimentar los módulos de bajo voltaje, como el Wiznet 5500 , el ESP32S3 y sensores
Para realizar una conexión por medio de Ethernet se deben tener cargadas las siguientes librerías en la carpeta CIRCUITPY/lib:
Adafruit_Bus_DeviceAdafruit_Wiznet5KAdafruit_Connection_ManagerAdafruit_RequestsAdafruit_Ticks
- SPI:
SCK→GP10MOSI→GP11MISO→GP12Chip Select (CS)→GP9
Este script permite comprobar que el dispositivo se conecta correctamente a la red mediante Ethernet.
- Configura el bus SPI y el pin CS.
- Inicializa el módulo Ethernet
WIZNET5K. - Crea una sesión HTTP con
adafruit_requests. - Muestra:
- Versión del chip
- Dirección MAC
- Dirección IP asignada
import board
import busio
import digitalio
import adafruit_connection_manager
import adafruit_requests
from adafruit_wiznet5k.adafruit_wiznet5k import WIZNET5K
spi = busio.SPI(board.GP10, MOSI=board.GP11, MISO=board.GP12)
cs = digitalio.DigitalInOut(board.GP9)
eth = WIZNET5K(spi, cs)
pool = adafruit_connection_manager.get_radio_socketpool(eth)
ssl_context = adafruit_connection_manager.get_radio_ssl_context(eth)
requests = adafruit_requests.Session(pool, ssl_context)
print("Chip Version:", eth.chip)
print("MAC Address:", [hex(i) for i in eth.mac_address])
print("My IP address is:", eth.pretty_ip(eth.ip_address))El ESP32 se utiliza como coprocesador encargado de gestionar la conexión WiFi. La comunicación entre el microcontrolador principal (ej. RP2040, Archi u otros) y el ESP32 se realiza mediante UART o SPI, mediante el envío de comandos en formato JSON.
- UART: Se comunica a través de pines TX/RX, usando comandos y respuestas JSON.
- SPI: Alternativamente, se puede implementar una versión basada en SPI (no cubierta en este ejemplo, pero compatible).
Este ejemplo muestra cómo controlar el ESP32 como coprocesador para conectarse a una red WiFi/BLE mediante UART.
- Comunicación UART entre el microcontrolador principal y el ESP32.
- El pin
readyindica cuándo el ESP32 está disponible para recibir comandos. - Uso de JSON para enviar comandos como
CONNECT,SCAN,STATUS, etc. - Reset físico al ESP32 para asegurar un arranque limpio.
-
UART y pines de control:
UART TX→GP12UART RX→GP13Pin ready→GP14Pin reset→GP15
- Reinicia el ESP32 con un pulso en el pin
reset. - Espera la señal
readydel ESP32. - Envía el comando
CONNECTcon SSID y contraseña. - Recibe las respuestas en formato JSON.
- Finaliza cuando se recibe
{"end": true}desde el ESP32.
esp = ESP32UART(tx_pin=board.GP12, rx_pin=board.GP13, ready_pin=board.GP14)
if esp.esperar_ready(timeout=10):
esp.solicitar_comando({"cmd": "CONNECT", "ssid": "tu_ssid", "pass": "tu_password"})
esp.leer_respuesta(timeout=20)
else:
print("ESP32 no está listo.")Para iniciar comunicación BLE se realiza mediante la misma manera por comandos:
#Inicia BLE->Con el siguiente comando por defecto tiene el nombre de ARCHINET_BLEXX
print("\n--- TEST: CONNECT BLE---")
esp.solicitar_comando({"cmd": "BLEINIT"})
esp.leer_respuesta(timeout=20) #respuesta el nombre del dispositivo
while True:
esp.solicitar_comando({"cmd": "BLETX","data": "{pcb:archinet, version:v2}"})#tx
esp.solicitar_comando({"cmd": "BLERX"})
esp.leer_respuesta(timeout=15) #respuesta del ble rx
time.sleep(2) Una vez que tienes la conexión hecha, puedes realizar una app escritorio/celular para obtener datos.
| Comando | Parámetros | Descripción | 📄 Código de ejemplo |
|---|---|---|---|
SCAN |
(ninguno) | Escanea y lista redes WiFi disponibles. | 🔗 Ver ejemplo |
CONNECT |
ssid, pass |
Conecta a una red WiFi específica. | 🔗 Ver ejemplo |
DISCONNECT |
target ("WiFi" o "AP") |
Desconecta de la red o cierra el punto de acceso. | 🔗 Ver ejemplo |
AP |
ssid, pass |
Crea un punto de acceso (Access Point). | 🔗 Ver ejemplo |
PING |
(ninguno) | Verifica si el ESP32 está activo y responde con su IP. | 🔗 Ver ejemplo |
INFO |
(ninguno) | Devuelve información del sistema: IP, RSSI y memoria disponible. | 🔗 Ver ejemplo |
GET |
url |
Realiza una petición HTTP GET a la URL indicada. | 🔗 Ver ejemplo |
POST |
url, data |
Envía datos mediante HTTP POST (JSON) a la URL especificada. | 🔗 Ver ejemplo |
WebServer |
label, data |
Crea o actualiza un endpoint en el servidor embebido del ESP32. | 🔗 Ver ejemplo |
HTML |
html |
Inyecta HTML personalizado en el servidor web embebido. | 🔗 Ver ejemplo |
UART_OFF |
UART_OFF |
Apaga el UART para utilizar el Ethernet, para volver utilzar reiniciar esp32. | 🔗 Ver ejemplo |
BLEINIT |
(ninguno o name) | Inicia BLE por defecto crea el nombre del dispositivo | 🔗 Ver ejemplo |
BLETX |
data |
Realiza la transmisión de datos de BLE , se debe mandar los datos en el parametro data en formato json | 🔗 Ver ejemplo |
BLERX |
(ninguno) | Realiza la recepción de datos de BLE | 🔗 Ver ejemplo |
BLEOFF |
(ninguno o name) | Desactiva el BLE | 🔗 Ver ejemplo |
