Boîte à clef, mail et RFID

Boîte à clef, mail et RFID

Nos articles de blog servent en général à donner des pistes pour aborder un problème à l'aide de modules Yoctopuce. Aujourd'hui, nous vous proposons non pas une piste mais une réalisation complète, utilisable par un utilisateur sans expérience informatique....




Le problème

L'utilisateur dispose d'une clef qui doit lui être rendue dans une boîte. Il souhaiterait recevoir un mail lorsque la clef est de retour dans la boîte. Il dispose d'une connexion Internet à proximité de la boîte, mais de rien d'autre. Il n'a aucune compétence particulière en informatique, il faut donc proposer une solution qui ne le forcera pas à faire quoi que ce soit de plus compliqué que consulter une page web.

L'idée

Comment détecter une clef dans une boîte? L'idée qu'on a eue est de lui attacher une puce RFID et de placer un récepteur RFID dans la boîte. Yoctopuce n'a pas de lecteur RFID au catalogue, en revanche Parallax en propose un avec une sortie série pour moins de 50 dollars. Il suffit de lui connecter un Yocto-Serial et de configurer ce dernier pour qu'il se comporte comme un senseur dont la valeur est l'ID de la puce RFID détectée.

Afin d'éviter d'avoir un ordinateur allumé en permanence à proximité de la boîte, on propose de connecter le Yocto-Serial à un YoctoHub-Ethernet. Ainsi on peut le configurer pour qu'il soit piloté en mode callback depuis un script PHP tournant sur un serveur quelconque. Autre avantage: le YoctoHub-Ethernet peut être alimenté par PoE, ainsi on peut se contenter de ne tirer qu'un seul câble jusqu'à la boîte.

Les différents éléments électroniques nécessaires pour construire la boîte
Les différents éléments électroniques nécessaires pour construire la boîte


Cette solution présente de multiple avantages: le client n'a qu'à connecter les différents modules entre eux, modules qui peuvent même être livrés pré-configurés. La partie programmation est réduite à un script PHP à copier sur un serveur, tâche qui peut facilement être effectuée à distance par un tiers.

Le hardware

Le lecteur RFID de Parallax est un simple lecteur qui dispose d'une interface série, il marche en 5V ce qui signifie qu'on peut même l'alimenter depuis le Yocto-Serial. Il a un comportement des plus basique: lorsqu'il détecte une puce RFID à proximité, il se contente d'envoyer une fois par seconde l'ID de cette puce sur la ligne série. Lorsque aucune puce n'est présente il ne fait rien. Le Yocto-Serial est simplement connecté au YoctoHub-Ethernet qui, lui, est raccordé au réseau.

Connexion entre les différents modules
Connexion entre les différents modules


Le lecteur RFID a des capacités assez limitées: il ne détectera une puce RFID que si elle se trouve à proximité immédiate, 2-3 centimètres tout au plus. Il faut donc faire en sorte que lorsqu'on place la clef dans la boîte, elle se retrouve automatiquement à proximité du détecteur. On a utilisé une boîte aux lettres toute simple et on a construit à l'intérieur une petite structure en forme d'entonnoir à la base duquel on a placé le détecteur.

On a placé tout ça dans une bête boîte aux lettres
On a placé tout ça dans une bête boîte aux lettres


Le software

Pour la partie Software, on a choisi de tout mettre dans un seul fichier PHP chargé de:

  • Communiquer avec le YoctoHub-Ethernet de la boîte.
  • Envoyer un mail lorsque la clef est détectée dans la boîte.
  • Proposer une interface de configuration pour définir comment et à qui envoyer ce mail.

Plutôt que de stocker l'état du système dans une base de données, on a choisi de le faire dans un simple petit fichier .ini. Ce n'est pas très élégant ni très efficace, mais cela évite d'avoir à configurer une base de données. L'installation de la partie software se limite alors une simple copie de fichiers.

Le code complet du script PHP n'a pas grand intérêt. Pour l'essentiel, il s'agit de code implémentant une interface utilisateur basique. Vous pouvez le télécharger ici. Il y a cependant quelques subtilités:

  • Le lecteur de Parallax n'émet des données que lorsqu'une puce RFID est à proximité, il ne fait rien de spécial lorsque la puce disparaît. Le Yocto-Serial n'a donc pas de moyen de signaler quand la puce s'en va. Cependant, l'ID de la puce étant mappé sur un des genericSensor du Yocto-Serial, on peut résoudre le problème en réinitialisant la valeur de ce genericSensor juste après l'avoir lue.
  • Le lecteur de Parallax n'est pas super fiable: de temps en temps, sans qu'on sache vraiment pourquoi, il émet une ligne vide, ou encore un ID faux. On suppose qu'il s'agit d'erreurs de transmission entre le lecteur et la puce RFID. Pour contourner le problème, on mémorise les 3 derniers états et on ne prend la décision d'envoyer un mail ou non que si ces trois états sont identiques.


La configuration

Pour que le tout fonctionne, le Yocto-Serial, le YoctoHub-Ethernet et le script doivent être configurés convenablement. Les modules Yoctopuce peuvent être configurés à l'aide du VirtualHub, le script PHP propose sa propre interface de configuration.

  1. Mettre l'alimentation du Yocto-Serial à 5V, le protocole à Line-based ASCII protocol, 2400, 8N1, none et les niveaux à TTL 5V.
  2. Définir un nouveau job contenant une tâche réactive lisant une valeur numérique hexadécimale mappée sur la fonction genericSensor1, lancer ce job.
  3. Faire en sorte que le job défini précédemment démarre automatiquement à l'allumage du Yocto-Serial, grâce au paramètre Startup job.
  4. Donner le nom logique "RFID" à la fonction "genericSensor1"
  5. Définir un "Outgoing callback" de type Yocto-API callback dans le YoctoHub-Ethernet, l'URL du callback doit être celle du script PHP, choisir une sécurité par MD5, le mot de passe MD5 se trouve dans le source du script PHP.
  6. Lancer le script PHP depuis un browser web, le mot de passe par défaut se trouve dans la source du fichier, et configurer les paramètres nécessaires à l'envoi d'un email. Ne pas oublier de configurer l'ID de la clef à détecter.

Une fois le tout configuré, il suffit de placer la clef et sa puce RFID près du lecteur pour recevoir quelques secondes après un mail signalant sa présence. Voici une petite vidéo illustrant le fonctionnement du système.

  



Conclusion

A l'aide de deux modules Yoctopuce, d'un module RFID bon marché, et d'un script PHP relativement court, on a réussi à construire un système qui envoie un mail à chaque fois qu'il détecte une clef ou tout autre objet équipé d'une puce RFID. Avantage non négligeable, le système n'a pas besoin d'un ordinateur local pour fonctionner, une simple connexion internet suffit... Bref, une solution à l'image de la technologie Yoctopuce: simple et efficace.

Commenter aucun commentaire
Retour au blog












Yoctopuce, get your stuff connected.