🛠 Maîtriser les E/S Avancées : GPIO, I2C et Affichage sur Xerxes Nano
Objectifs
Ce tutoriel vise à configurer les interfaces de bas niveau (GPIO, I2C, SPI) sur la carte porteuse Xerxes Nano. Nous connecterons un capteur de température I2C et un petit affichage OLED pour valider la chaîne de données. Ces compétences sont essentielles pour les projets d'IoT industriel ou de robotique embarquée utilisant les modules NVIDIA Jetson Orin Nano Super ou Turing RK1.
Matériel nécessaire
- Carte porteuse Xerxes Nano avec module Jetson Orin Nano ou Turing RK1.
- Capteur de température I2C (ex : BME680 ou TMP102).
- Écran OLED I2C (SSD1306, 0.96 pouces).
- Câbles Dupont (Femelle-Mâle) pour les connexions GPIO/I2C.
- Alimentation stable (USB-C ou PoE selon votre configuration).
- Station de travail avec accès SSH ou écran/clavier connecté.
Étapes
Connectez-vous à votre carte via SSH. Mettez à jour les paquets système pour garantir la compatibilité des bibliothèques. ``bash sudo apt update && sudo apt upgrade -y ``
- Accès au système et préparation
La Xerxes Nano expose des broches compatibles Jetson. Utilisez l'outil de configuration NVIDIA pour activer les bus. Notez que les broches spécifiques dépendent du module (Orin vs RK1), consultez le schéma KiCad open-source pour les correspondances exactes. ``bash sudo /opt/nvidia/jetson-io/jetson-io.py `` Sélectionnez "Configure 40-pin expansion header" puis activez I2C2 et SPI1 si disponibles sur votre configuration matérielle.
- Activation des interfaces I2C et SPI
Installez les bibliothèques nécessaires pour l'interaction GPIO et I2C via pip. ``bash sudo apt install python3-pip python3-dev pip3 install smbus2 adafruit-circuitpython-ssd1306 adafruit-circuitpython-bme680 ``
- Installation des bibliothèques Python
Vérifiez que le capteur et l'écran sont reconnus sur le bus I2C. Les adresses courantes sont 0x3C pour l'OLED et 0x77 pour le BME680. ``bash sudo i2cdetect -y -r 1 `` Vous devriez voir les adresses hexadécimales correspondantes affichées dans la grille.
- Détection des périphériques I2C
Créez un script Python sensor_display.py pour lire la température et l'afficher. ```python import board import busio import adafruit_ssd1306 import adafruit_bme680
- Script de lecture et affichage
# Initialisation I2C (bus 1 par défaut sur Jetson) i2c = busio.I2C(board.SCL, board.SDA)
# Initialisation Affichage display = adafruit_ssd1306.SSD1306_I2C(128, 64, i2c) display.fill(0) display.text('Xerxes Nano', 0, 0, 1) display.show()
# Initialisation Capteur 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) `` *(Note : Assurez-vous d'importer time` en haut du script)*.
Lancez le script avec les permissions nécessaires pour accéder aux périphériques. ``bash sudo python3 sensor_display.py ``
- Exécution du script
Vérification
L'écran OLED doit afficher la température ambiante mise à jour toutes les 2 secondes. Si rien ne s'affiche, vérifiez les connexions physiques (SCL/SDA) et les permissions d'accès aux fichiers /dev/i2c-1. Utilisez dmesg | tail pour vérifier les erreurs de noyau.
Pour aller plus loin
Explorez l'utilisation du connecteur OCuLink pour décharger le calcul IA sur un GPU externe, ou configurez le refroidissement actif via le connecteur PWM en fonction de la charge thermique détectée par le capteur.