Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Elektronischer Check-in

Komponenten und Verbrauchsmaterialien

Arduino Mega 2560
× 1
Mifare RC522 Kartenleseantennen-RF-Modul
× 1
LED (generisch)
× 2
Tastbarer Schalter
× 2
Widerstand (generisch)
× 4

Über dieses Projekt

Ein Problem, das wir im Taipei Hackerspace häufig haben, ist, dass die Leute nicht wissen, wann wir geöffnet haben. Unsere  Grundregel ist einfach:Jedes Mal, wenn sich ein Keyholder-Mitglied im Hackerspace aufhält, kann jeder/jeder reinkommen. In der Praxis wissen die Leute jedoch nie wirklich, ob jemand dort ist.

Sie könnten den Space anrufen oder sogar eine E-Mail an die Mailingliste senden, während die Leute, die ich kenne, mich normalerweise direkt fragen - hey, ist gerade jemand im Space? Da ich die Antwort nicht immer weiß, war die Suche nach einer besseren - vielleicht technologischer oder hackigeren Lösung:Lass uns ein elektronisches Check-in/out-System aufbauen, das den aktuellen Status auf unserer Website anzeigt.

Die Grundidee ist, dass in Taipeh so ziemlich jeder eine EasyCard besitzt, eine 13,56 MHz RFID-Karte, die für alle öffentlichen Verkehrsmittel in der Stadt verwendet wird und vieles mehr. Das RC522-Karten-Antennen-Modul scheint in der Lage zu sein, die Karte ziemlich gut zu lesen, und alles, was ich brauche, um es loszuwerden, ist die ID-Nummer, die ziemlich einfach ist (nachdem ich die Arduino-Foren nach Quellcode ausgegraben habe).

Das Projekt in Kürze ist:

  • Verwenden Sie Arduino Mega mit einem RC522-Board, um die ID-Nummer einer bestimmten EasyCard zu erhalten
  • Benutze Hexen, um herauszufinden, ob die Person ein- oder auscheckt
  • Verwenden Sie LEDs, um Feedback und eine grundlegende Benutzeroberfläche für die Hardware bereitzustellen
  • Node.js-Server zur Kommunikation mit dem Arduino, Schnittstelle zur Check-in/out-Datenbank und Bereitstellung von API und Echtzeitzugriff auf die Daten
  • Erstellen Sie eine kleine Schnittstelle auf der Website, um den Check-in-Status anzuzeigen

Lassen Sie mich nun im Detail auf die verschiedenen Teile eingehen.

RFID

Das RC522-Modul hat 8 Pins und Arduino kann die SPI-Bibliothek verwenden, um damit zu kommunizieren. Ich habe Arduino Mega ADK verwendet, da die SPI-Pins im Gegensatz z.B. der Leonardo, für den ich einige neue Kabel oder Header hätte machen müssen. Die RC522(Pin-Nummer)->Mega(Pin-Nummer) Verbindungen werden so hergestellt, dass:

  • SA(1) → SS(53)
  • SCK(2) → SCK(52)
  • MOSI(3) → MOSI(51)
  • MISO(4) → MISO(50)
  • (5) nicht verbunden
  • GND(6) → GND
  • RST(8) → (beliebiger digitaler Pin)
  • +3,3V(8) → +3,3V
RFID-RC522, mit Blankokarte und Pins

Der Quellcode, um mit der Karte zu sprechen, stammt aus einem Blog und stammt vermutlich ursprünglich aus einem Tech-Shop in China (basierend auf den vielen Kommentaren zu vereinfachtem Chinesisch).

Schalter und visuelles Feedback

Ich wollte eine möglichst einfache Schnittstelle für den Kartenleser machen. Dieses Paar von Schaltern und LEDs hinzugefügt (das D1 ist grün und D2 ist rot). Nachdem das Arduino eine Karten-ID vom Leser erhalten hat, blinken die LEDs, um die Leute aufzufordern, entweder die Check-In- oder Check-Out-Taste zu drücken. Wenn sie eine von beiden drücken, blinkt die entsprechende LED kurz sehr hell und die Karten-ID und das Check-in/out-Ereignis werden über eine serielle Verbindung an den angeschlossenen Computer gesendet

Die (sehr einfache) Schaltung für die Check-In/Out-Tasten und die visuellen Feedback-LEDs. "Pins" beziehen sich auf die Arduino-Pins, die in der aktuellen Version verwendet werden


Wenn innerhalb von etwa 10 Sekunden kein Tastendruck erfolgt, wird der Messwert verworfen und der Kartenleser kehrt in den Hörmodus zurück.

Webserver

Node.js ist sehr nützlich, um schnelle Webdienste zu erstellen, und seine Bibliotheksunterstützung ist überhaupt nicht schlecht, obwohl nicht alles reibungslos verläuft:Ihre Dokumentation ist oft bestenfalls rar. Trotzdem war es das schnellste, um die Dinge zum Laufen zu bringen, da ich zuvor fast alle benötigten Komponenten verwendet habe.

Der Server kommuniziert mit Arduino über die Serialport-Bibliothek. Ich bin eher an Pythons pyserial gewöhnt, obwohl es in diesem Fall sehr praktisch war, dass serialport Leseereignisse ausgeben kann, sodass der Server einfach warten kann, bis etwas zu lesen ist und einige Funktionen für die eingehenden Daten ausgeführt werden. Meiner Erfahrung nach wäre Serialport nicht für jeden Eckfall gut, auf den ich im Serial-Land gestoßen bin, aber in diesem Setup funktioniert es wunderbar.

Ich habe SQLite3 gewählt, um die Daten mit der sqlite3-Bibliothek zu speichern. Es gibt eine Menge anderer, musste sich umschauen, welche noch in Entwicklung ist. Diese spezielle Bibliothek ist nicht so schlecht, obwohl ich ziemlich gegen den Mangel an Dokumentation und Asynchronität gekämpft habe. Der resultierende Code ist sicher ziemlich hässlich, an manchen Stellen ineffizient, weil ich nicht wusste, wie ich auf weniger Umwegen zum gewünschten Ergebnis komme, trotzdem scheint es zu funktionieren und das ist es, was für einen Prototyp zählt.

Zuerst habe ich eine einfache REST-API erstellt, um die aktuell eingecheckten Personen abzufragen, und später (Echtzeit-)Push-Updates über socket.io hinzugefügt, um es schöner zu machen. Es ist brillant, dass alle Clients ohne Abfrage aktualisiert werden können, sobald sich jemand an- oder abmeldet.

Da dieser Code auf einem anderen Computer als unserem Hauptwebserver ausgeführt wird, mussten wir mit dem Header "Access-Control-Allow-Origin" herumspielen und die Einstellungen unseres Routers anpassen, um ihn für das Web richtig zugänglich zu machen.

Es wurde versucht, ein ziemlich eigenständiges Skript hinzuzufügen, das das Front-End laden kann und alles verarbeitet. Benötigen Sie nur ein geeignetes HTML-Span- oder div-Element, um die Informationen anzuzeigen.

Hardware-Setup zum Ein- und Auschecken:Arduino Mega, RFID-RC522-Schaltung und einige Schalter und LEDs.

Das Ergebnis ist ziemlich gut, solange der Kartenleser nicht abstürzt. Ursprünglich wurden die Ergebnisse in einer Tabelle angezeigt, aber ich wollte es menschlicher machen, also habe ich hier das Format gefunden:

Screenshot der Homepage mit einer bestimmten Check-in-Situation

Es kann auch Leute ohne Namen geben, sie zeigen nur etwas wie "Im Moment sind es drei Leute im Hackerspace eingecheckt:Greg und zwei andere Leute."

SpaceAPI

Es gibt auch ein Projekt namens Space API für eine einheitliche Spezifikation, um Informationen zum Space selbst bereitzustellen (

Dieses Check-in-Gadget ist in unseren Space-API-Endpunkt von Taipei Hackerspace integriert und zeigt unseren Öffnungsstatus an, sodass es z. mit der My Hackerspaces Android-App oder mit den anderen auf der Space-API-Site aufgeführten Anwendungen.

Es lebt!

Hier ist ein kurzes Demonstrationsvideo, wie es funktioniert:

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

Sie können also unsere Website unter https://taipeihack.org/#open für die Live-Ergebnisse besuchen und vorbeischauen, wenn Sie in der Nähe sind, wenn sich jemand im Raum befindet.

Der gesamte Quellcode wird in einem Github-Repository geteilt:die Arduino-Skizze, das Serverskript und alle zusätzlichen Dateien. Ich bin sicher, es gibt viele Dinge, die daran verbessert werden könnten...

Ursprünglicher Bericht: Elektronischer Check-in im Taipei Hackerspace

Code

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

Schaltpläne


Herstellungsprozess

  1. Elektronische Tinte
  2. Arduino RFID-Schloss mit RC522 - MIFARE-Protokoll 13,56 Mhz
  3. Arduino Spybot
  4. FlickMote
  5. Selbstgemachter Fernseher B-Gone
  6. Hauptuhr
  7. Finde mich
  8. Arduino-Power
  9. Elektronisches Chamäleon
  10. Tech-TicTacToe