Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Enregistrement électronique

Composants et fournitures

Arduino Mega 2560
× 1
Module RF d'antenne de lecture de carte Mifare RC522
× 1
LED (générique)
× 2
Commutateur tactile
× 2
Résistance (générique)
× 4

À propos de ce projet

Un problème que nous avons fréquemment au Taipei Hackerspace est que les gens ne savent pas quand nous sommes ouverts. Notre règle de base est simple :chaque fois qu'un membre détenteur de la clé se trouve dans le Hackerspace, tout le monde peut entrer. Dans la pratique, même si les gens ne savent jamais vraiment s'il y a quelqu'un.

Ils pourraient appeler l'espace, ou même envoyer un e-mail à la liste de diffusion, tandis que les personnes que je connais finissent généralement par me demander directement - hé, quelqu'un est-il à l'espace en ce moment ? Comme je ne connais pas toujours la réponse, la recherche était en cours pour une meilleure solution, peut-être plus technologique ou plus bidon :construisons un système d'enregistrement/de départ électronique qui affichera l'état actuel sur notre site Web.

L'idée principale est qu'à Taipei, à peu près tout le monde a une EasyCard, une carte RFID à 13,56 MHz qui est utilisée pour tous les transports publics de la ville et bien plus encore. Le module carte-antenne RC522 semble assez bien pouvoir lire la carte, et tout ce dont j'ai besoin pour en retirer est le numéro d'identification qui est assez simple (après avoir creusé les forums Arduino pour le code source).

Le projet en quelques mots est :

  • Utilisez Arduino Mega avec une carte RC522 pour obtenir le numéro d'identification d'une EasyCard donnée
  • Utilisez des sorcières pour savoir si la personne s'enregistre ou sort
  • Utilisez des voyants pour fournir des commentaires et une interface utilisateur de base pour le matériel
  • Serveur Node.js pour communiquer avec l'Arduino, interfacer la base de données check-in/out et fournir une API et un accès en temps réel aux données
  • Créez un peu d'interface sur le site Web pour afficher le statut d'enregistrement

Permettez-moi maintenant d'approfondir les différentes parties en détail.

RFID

Le module RC522 a 8 broches et Arduino peut utiliser la bibliothèque SPI pour communiquer avec lui. J'ai utilisé Arduino Mega ADK, car les broches SPI sont facilement accessibles, contrairement par ex. le Leonardo, pour lequel j'aurais dû fabriquer de nouveaux câbles ou en-têtes. Les connexions RC522 (numéro de broche) -> Mega (numéro de broche) sont effectuées de telle sorte que :

  • SA(1) → SS(53)
  • SCK(2) → SCK(52)
  • MOSI(3) → MOSI(51)
  • MISO(4) → MISO(50)
  • (5) non connecté
  • GND(6) → GND
  • RST(8) → (n'importe quelle broche numérique)
  • +3,3 V(8) → +3,3 V
RFID-RC522, avec carte vierge et broches

Le code source pour parler à la carte provient d'un blog, et à l'origine d'un magasin de technologie en Chine, je suppose (basé sur le grand nombre de commentaires en chinois simplifié).

Commutateurs et rétroaction visuelle

Je voulais créer une interface aussi simple que possible pour le lecteur de carte. Ajout de cette paire d'interrupteurs et de LED (le D1 étant vert et D2 étant rouge). Une fois que l'Arduino a reçu un identifiant de carte du lecteur, les voyants clignotent pour inviter les gens à appuyer sur les boutons Check In ou Check Out. S'ils appuient sur l'un d'eux, la LED correspondante clignote très fortement pendant un instant, et l'ID de la carte et l'événement d'enregistrement/de départ sont envoyés à l'ordinateur connecté via une connexion série

Le circuit (très basique) pour les boutons de check-in/out et les LED de retour visuel. "Pins" fait référence aux broches Arduino utilisées dans la version actuelle


Si aucune pression sur un bouton n'a lieu dans les 10 secondes environ, la lecture est ignorée et le lecteur de carte repasse en mode d'écoute.

Serveur Web

Node.js est très utile pour créer des services Web rapides, et sa prise en charge de la bibliothèque n'est pas trop mauvaise du tout, même si tout n'est pas fluide :leur documentation est souvent au mieux rare. Néanmoins, c'était le plus rapide pour que les choses soient opérationnelles, car j'ai déjà utilisé presque tous les composants requis.

Le serveur communique avec Arduino via la bibliothèque de port série. Je suis plus habitué au pyserial de Python, bien que dans ce cas, il était très pratique que le port série puisse émettre des événements de lecture, donc le serveur peut simplement attendre qu'il y ait quelque chose à lire et exécuter certaines fonctions sur les données entrantes. D'après mon expérience, le port série ne serait pas bon pour tous les cas de coin que je rencontrais dans le pays série, mais dans cette configuration, cela fonctionne à merveille.

J'ai choisi SQLite3 pour stocker les données, en utilisant la bibliothèque sqlite3. Il y en a un tas d'autres, j'ai dû chercher lequel est encore en cours de développement. Cette bibliothèque en particulier n'est pas trop mauvaise, même si je me suis un peu battu contre le manque de documentation et l'asynchronicité. Le code résultant est assez moche j'en suis sûr, à certains endroits inefficace parce que je ne savais pas comment arriver au résultat que je voulais d'une manière moins détournée, cela semble néanmoins fonctionner et c'est ce qui compte pour un prototype.

J'ai d'abord créé une API REST simple pour interroger les personnes actuellement enregistrées, puis j'ai ajouté des mises à jour push (en temps réel) via socket.io, pour le rendre plus agréable. C'est génial que sans aucun sondage, tous les clients puissent être mis à jour une fois que quelqu'un s'est connecté ou s'est déconnecté.

Étant donné que ce code s'exécute sur un ordinateur différent de celui de notre serveur Web principal, nous avons dû jouer avec l'en-tête Access-Control-Allow-Origin et ajuster les paramètres de notre routeur pour le rendre correctement accessible pour le Web.

J'ai essayé d'ajouter un script à peu près autonome que le front-end peut charger, et il gère tout, il suffit d'un élément HTML span ou div approprié pour afficher les informations.

Configuration matérielle pour l'enregistrement/la sortie :Arduino Mega, circuit RFID-RC522 et certains commutateurs et LED.

Le résultat est plutôt bon, tant que le lecteur de carte ne plante pas. À l'origine, les résultats étaient affichés dans un tableau, mais je voulais le rendre plus humain, alors voici le format avec lequel j'ai fini :

Capture d'écran de la page d'accueil avec une situation d'enregistrement particulière

Il peut aussi y avoir des personnes sans nom, elles affichent simplement quelque chose comme "En ce moment, il y a trois personnes vérifié dans le Hackerspace :Greg et deux autres personnes."

SpaceAPI

Il existe également un projet appelé Space API pour une spécification unifiée permettant d'exposer des informations concernant l'espace lui-même (

Ce gadget d'enregistrement est intégré à notre point de terminaison de l'API Space de Taipei Hackerspace, indiquant notre statut d'ouverture, il peut donc être utilisé avec, par exemple. l'application Android My Hackerspaces, ou avec les autres applications répertoriées sur le site Space API.

Ça vit !

Voici une vidéo de démonstration rapide de son fonctionnement :

https://www.youtube.com/embed/L3ccO_AuhQ8?feature=oembed

Vous pouvez donc consulter notre site Web à l'adresse https://taipeihack.org/#open pour les résultats en direct, et passer si vous êtes dans le quartier s'il y a quelqu'un dans l'espace.

L'ensemble du code source est partagé dans un référentiel Github : le sketch Arduino, le script du serveur et tous les fichiers supplémentaires. Je suis sûr qu'il y a beaucoup de choses qui pourraient être améliorées à ce sujet...

Rédaction originale : Enregistrement électronique au Taipei Hackerspace

Code

Github
https://github.com/taipeihackerspace/thcheckinhttps://github.com/taipeihackerspace/thcheckin

Schémas


Processus de fabrication

  1. Encre électronique
  2. Verrou RFID Arduino avec RC522 - Protocole MIFARE 13,56 Mhz
  3. Arduino Spybot
  4. FlickMote
  5. Téléviseur maison B-Gone
  6. horloge maîtresse
  7. Trouvez-moi
  8. Puissance Arduino
  9. Caméléon électronique