🛠 Maîtriser les E/S : GPIO et IMU sur AIWorld P1

Module d'IA AIWorld P1 pour BPI-M2 Ultra et Berry · avance · Guide avancé pour interfacer le capteur inertielle ICM20602 et les GPIO via le port d'extension de l'AIWorld P1.

Objectifs

Ce tutoriel vise à exploiter les capacités d'entrées-sorties de l'AIWorld P1 au-delà des démos basiques. Nous allons configurer l'accès bas-niveau au capteur inertielle ICM20602 et manipuler les GPIO disponibles via le port d'extension. L'objectif est de comprendre l'interaction entre le SoC Allwinner V40, le bus I2C/SPI pour les capteurs, et les GPIO pour le contrôle physique, en utilisant l'environnement Linux Vecoo.

Matériel nécessaire

Étapes

Connectez la carte via USB. Utilisez l'outil VecooAT pour établir une session adb. Assurez-vous que le mode développeur est activé pour permettre les accès système. ``bash adb devices adb shell ``

  1. Préparation de l'environnement de débogage

L'ICM20602 communique généralement via I2C ou SPI. Identifiez le bus I2C actif et vérifiez la présence de l'adresse du capteur (souvent 0x68 ou 0x69). ``bash i2cdetect -y 1 ` Si l'adresse apparaît, le capteur est détecté. Sinon, vérifiez les modules kernel chargés avec lsmod | grep icm`.

  1. Vérification des périphériques I2C et IMU

Pour les utilisateurs avancés, évitez les wrappers Python si une latence minimale est requise. Utilisez les interfaces sysfs ou les drivers directs. Vérifiez les nœuds de périphérique sous /dev ou /sys/class/input. ``bash cat /sys/class/input/input0/device/name cat /sys/class/input/input0/device/accel_x `` Notez que les chemins exacts dépendent de l'implémentation du driver Vecoo.

  1. Accès aux données brutes de l'IMU

Les GPIO ne sont pas tous exposés par défaut. Exportez un GPIO spécifique (par exemple, GPIO PA10, identifiant numérique à confirmer selon la datasheet Allwinner V40). ``bash echo 10 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio10/direction echo 1 > /sys/class/gpio/gpio10/value `` Observez le changement d'état sur la broche correspondante du port d'extension.

  1. Configuration des GPIO via sysfs

Pour une performance optimale, utilisez les bibliothèques ARM Computer Library 17.06 fournies. Créez un fichier imu_read.c utilisant les appels système pour lire l'IMU et contrôler un GPIO en fonction de l'orientation. ``c #include <stdio.h> #include <fcntl.h> // Code simplifié pour l'accès sysfs int main() { int fd = open("/sys/class/gpio/gpio10/value", O_WRONLY); write(fd, "1", 1); close(fd); return 0; } ` Compilez avec gcc -o imu_read imu_read.c`.

  1. Compilation d'un exemple C avec ARM Computer Library

Vérification

Exécutez le binaire compilé. Utilisez un multimètre pour confirmer que la tension sur la broche GPIO passe de 0V à 3.3V. Pour l'IMU, exécutez une boucle de lecture des axes X, Y, Z et vérifiez que les valeurs changent lorsque vous inclinez la carte. L'absence d'erreur de permission (Permission denied) confirme que vous êtes en root ou que les droits udev sont correctement configurés.

Pour aller plus loin

Explorez l'intégration de ces données avec OpenCV v3.2 pour la stabilisation d'image (EIS) en temps réel. Utilisez Gstreamer V1.10 pour créer un pipeline vidéo qui superpose les données de l'IMU sur le flux caméra OV5640. Étudiez les interruptions GPIO pour réagir aux événements physiques sans polling, optimisant ainsi la consommation CPU.

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels