Système GPIO

De Movilab.org

Principe

Les ports GPIO (anglais : General Purpose Input/Output, littéralement Entrée-sortie à usage général) sont des ports d'entrées-sorties très utilisés dans le monde des microcontrôleurs, en particulier dans le domaine de l'électronique embarquée. Ils permettent de connecter des plateformes embarquées à des périphériques qui n’ont pas forcément les mêmes connecteurs ou qui ne communiquent pas avec les mêmes technologies.

Les ports GPIO sont intégrés directement sur certaines plateformes (certains modèles d’arduino, Raspberry Pi, etc …). Les plateformes sur lesquelles les ports GPIO ne sont pas intégrés, nécessitent une carte ou une extension indépendamment programmable.

Contexte

Dans le cadre du projet de la badgeuse lié à Dokos, une Raspberry Pi est connectée à une badgeuse via le port USB. La badgeuse est une solution du marché utilisant la technologie RFID et compatible avec les différents systèmes d’exploitation. L’utilisateur utilise des commandes systèmes sur la Raspberry Pi pour interagir avec la badgeuse qui remontera l’identifiant de la carte. Par la suite, la raspberry Pi remonte l’UID au serveur Dokos qui traitera l’information de son côté. La Raspberry joue ainsi le rôle de l'intelligence locale qui relaie les informations dans des conditions définies dans le code Python. La problématique actuelle est l’étude de la possibilité de remplacement d’une solution du marché par une solution locale et qui répond précisément au projet en cours.

Faisabilité

L'acheminement de l’information peut se séparer en deux segments : Le segment Badgeuse - Plateforme et le segment Plateforme - Serveur Dokos 

Concernant le premier segment, il est possible de remplacer la badgeuse par un capteur NFC ou RFID avec des pins GPIO. Cela implique de programmer le comportement de ce dernier lorsqu’il détecte une carte NFC ou RFID : Une carte possède un UID unique qu’elle stocke dans ses registres de mémoire. Le code consistera à aller interroger directement le registre de la carte pour obtenir l’UID. Notant que la solution du marché possède une commande que l’on saisie pour obtenir directement l’UID de la carte.

Sur ce même segment, la Raspberry Pi possède des pins GPIO sur lesquels nous pouvons connecter directement le capteur. Si le capteur utilise des pins différentes que celles du Raspberry Pi, il nécessitera une extension GPIO pour pouvoir connecter le capteur à la Raspberry Pi. En utilisant une raspberry Pi, la programmation du comportement du capteur sera effectuée en python ce qui est plutôt simple. Cependant il serait de même possible de remplacer le Raspberry Pi par une autre plateforme telle une arduino ou autre. Comme sur Raspberry Pi, il faudra un connecteur GPIO si nous ne pouvons pas connecter directement le capteur. Pour les autres plateformes industrielles, la programmation sera faite en langage bas niveau comme le C/C++ ou du C orienté Arduino par exemple.  Cela est plus complexe que le python parce qu’il faudra interroger les registres du capteur et cela nécessitera des connaissances en embarqué et en hexadécimal. 

Concernant le deuxième segment, la raspberry est un système d’exploitation à part entière qui peut se connecter au réseau en wifi ou filaire et envoyer les informations au serveur Dokos. Le choix d’utiliser une autre plateforme nécessitera l’étude de certaines technologies de télécommunications et l’utilisation d’extensions qui seront connectés à la plateforme pour lui permettre d’envoyer les informations au serveur Dokos.

Avantages

Remplacer la badgeuse :

  • Programmer les fonctionnalités de la badgeuse pour un usage spécifique 
  • Compatibilité avec plusieurs plateformes

Remplacer le Raspberry Pi :

  • Raspberry Pi très coûteuse
  • Raspberry Pi très consommateur

Inconvénients

Remplacer la badgeuse :

  • Solution du marché facile à manipuler (port USB, commandes simples)

Remplacer le Raspberry Pi :

  • Connaissances en embarqué requis
  • Connaissances en technologie de télécommunications
  • Programmation en C/C++ plus complexe que Python
  • Nécessite des extensions supplémentaires