🛠 Dominar E/S Avanzadas: GPIO, I2C y Pantallas en Xerxes Nano
Objectifs
Este tutorial tiene como objetivo configurar interfaces de bajo nivel (GPIO, I2C, SPI) en la placa portadora Xerxes Nano. Conectaremos un sensor de temperatura I2C y una pequeña pantalla OLED para validar la cadena de datos. Estas habilidades son esenciales para proyectos de IoT industrial o robótica embebida que utilizan módulos NVIDIA Jetson Orin Nano Super o Turing RK1.
Matériel nécessaire
- Placa portadora Xerxes Nano con módulo Jetson Orin Nano o Turing RK1.
- Sensor de temperatura I2C (ej. BME680 o TMP102).
- Pantalla OLED I2C (SSD1306, 0.96 pulgadas).
- Cables Dupont (Hembra-Macho) para conexiones GPIO/I2C.
- Fuente de alimentación estable (USB-C o PoE según configuración).
- Estación de trabajo con acceso SSH o pantalla/teclado conectado.
Étapes
Conéctese a su placa mediante SSH. Actualice los paquetes del sistema para garantizar la compatibilidad de las bibliotecas. ``bash sudo apt update && sudo apt upgrade -y ``
- Acceso al sistema y preparación
La Xerxes Nano expone pines compatibles con Jetson. Use la herramienta de configuración NVIDIA para habilitar los buses. Tenga en cuenta que los pines específicos dependen del módulo (Orin vs RK1); consulte el esquema KiCad de código abierto para las correspondencias exactas. ``bash sudo /opt/nvidia/jetson-io/jetson-io.py `` Seleccione "Configure 40-pin expansion header" y habilite I2C2 y SPI1 si están disponibles en su configuración de hardware.
- Habilitación de interfaces I2C y SPI
Instale las bibliotecas necesarias para la interacción GPIO e I2C mediante pip. ``bash sudo apt install python3-pip python3-dev pip3 install smbus2 adafruit-circuitpython-ssd1306 adafruit-circuitpython-bme680 ``
- Instalación de bibliotecas Python
Verifique que el sensor y la pantalla sean reconocidos en el bus I2C. Las direcciones comunes son 0x3C para OLED y 0x77 para BME680. ``bash sudo i2cdetect -y -r 1 `` Debería ver las direcciones hexadecimales correspondientes mostradas en la cuadrícula.
- Detección de dispositivos I2C
Cree un script Python sensor_display.py para leer la temperatura y mostrarla. ```python import board import busio import adafruit_ssd1306 import adafruit_bme680 import time
- Script de lectura y visualización
# Inicialización I2C (bus 1 por defecto en Jetson) i2c = busio.I2C(board.SCL, board.SDA)
# Inicialización de Pantalla display = adafruit_ssd1306.SSD1306_I2C(128, 64, i2c) display.fill(0) display.text('Xerxes Nano', 0, 0, 1) display.show()
# Inicialización del Sensor bme = adafruit_bme680.Adafruit_BME680_I2C(i2c)
while True: temp = bme.temperature display.fill(0) display.text(f'Temp: {temp:.2f} C', 0, 0, 1) display.show() time.sleep(2) ```
Inicie el script con los permisos necesarios para acceder a los dispositivos. ``bash sudo python3 sensor_display.py ``
- Ejecución del script
Vérification
La pantalla OLED debe mostrar la temperatura ambiente actualizada cada 2 segundos. Si no se muestra nada, verifique las conexiones físicas (SCL/SDA) y los permisos de acceso a los archivos /dev/i2c-1. Use dmesg | tail para verificar errores del kernel.
Pour aller plus loin
Explore el uso del conector OCuLink para descargar el cálculo de IA a una GPU externa, o configure el enfriamiento activo mediante el conector PWM basado en la carga térmica detectada por el sensor.