Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Elektronisch inchecken

Componenten en benodigdheden

Arduino Mega 2560
× 1
Mifare RC522 kaartleesantenne RF-module
× 1
LED (generiek)
× 2
Tactiele schakelaar
× 2
Weerstand (algemeen)
× 4

Over dit project

Een probleem dat we vaak hebben bij de Taipei Hackerspace is dat mensen niet weten wanneer we open zijn. Onze basisregel is simpel:wanneer een sleutelhouder zich in de Hackerspace bevindt, kan iedereen/iedereen binnenkomen. In de praktijk weten mensen echter nooit of er iemand is.

Ze kunnen de ruimte bellen, of zelfs een e-mail sturen naar de mailinglijst, terwijl de mensen die ik ken me meestal rechtstreeks vragen - hey, is er op dit moment iemand in de ruimte? Omdat ik niet altijd het antwoord weet, was ik op zoek naar een betere - misschien meer technologische of hack-achtige oplossing:laten we een elektronisch in- en uitchecksysteem bouwen dat de huidige status op onze website laat zien.

Het belangrijkste idee is dat in Taipei vrijwel iedereen een EasyCard heeft, een 13,56MHz RFID-kaart die wordt gebruikt voor al het openbaar vervoer in de stad en nog veel meer. De RC522-kaartantennemodule lijkt de kaart redelijk goed te kunnen lezen, en alles wat ik nodig heb om er vanaf te komen, is het ID-nummer dat vrij eenvoudig is (na het doorzoeken van de Arduino-forums voor broncode).

Het project in een notendop is:

  • Gebruik Arduino Mega met een RC522-bord om het ID-nummer van een bepaalde EasyCard te krijgen
  • Gebruik heksen om te zien of de persoon in- of uitcheckt
  • Gebruik LED's om wat feedback en basisgebruikersinterface voor de hardware te geven
  • Node.js-server om met de Arduino te communiceren, de check-in/out-database te koppelen en API en realtime toegang tot de gegevens te bieden
  • Maak een stukje interface op de website om de incheckstatus weer te geven

Laat me nu in detail ingaan op de verschillende delen.

RFID

De RC522-module heeft 8 pinnen en Arduino kan de SPI-bibliotheek gebruiken om ermee te communiceren. Ik heb Arduino Mega ADK gebruikt, omdat de SPI-pinnen gemakkelijk toegankelijk zijn, in tegenstelling tot b.v. de Leonardo, waarvoor ik nieuwe kabels of headers had moeten maken. De RC522(pinnummer)->Mega(pinnummer) verbindingen zijn zo gedaan dat:

  • SA(1) → SS(53)
  • SCK(2) → SCK(52)
  • MOSI(3) → MOSI(51)
  • MISO(4) → MISO(50)
  • (5) niet verbonden
  • GND(6) → GND
  • RST(8) → (elke digitale pin)
  • +3,3V(8) → +3,3V
RFID-RC522, met blanco kaart en pinnen

De broncode om met de kaart te praten is afkomstig van een blog, en oorspronkelijk van een technische winkel in China, denk ik (op basis van de grote hoeveelheid vereenvoudigd Chinees commentaar).

Schakelaars en visuele feedback

Ik wilde een zo eenvoudig mogelijke interface voor de kaartlezer maken. Dit paar schakelaars en LED's toegevoegd (de D1 is groen en D2 is rood). Nadat de Arduino een kaart-ID van de lezer heeft ontvangen, knipperen de LED's om mensen te vragen op de knop Inchecken of Uitchecken te drukken. Als ze op een van beide drukken, knippert de bijbehorende LED een tijdje heel fel en worden de kaart-ID en het in- en uitchecken via een seriële verbinding naar de aangesloten computer verzonden

Het (zeer eenvoudige) circuit voor de check-in/out-knoppen en visuele feedback-LED's. "Pins" verwijzen naar de Arduino-pinnen die in de huidige versie worden gebruikt


Als er binnen 10 seconden geen knop wordt ingedrukt, wordt de meting genegeerd en gaat de kaartlezer terug naar de luistermodus.

Webserver

Node.js is erg handig om snelle webservices te maken, en de bibliotheekondersteuning is helemaal niet slecht, hoewel het niet allemaal van een leien dakje gaat:hun documentatie is op zijn best vaak schaars. Desalniettemin was het de snelste manier om dingen aan de gang te krijgen, aangezien ik eerder bijna alle vereiste componenten heb gebruikt.

De server communiceert met Arduino via de seriële poortbibliotheek. Ik ben meer gewend aan Python's pyserial, maar in dit geval was het erg handig dat serialport leesgebeurtenissen kan uitzenden, dus de server kan gewoon wachten tot er iets te lezen is en enkele functies uitvoeren op de binnenkomende gegevens. In mijn ervaring zou serialport niet goed zijn voor elke hoek die ik in serieland tegenkwam, maar in deze opstelling werkt het prachtig.

Ik koos SQLite3 om de gegevens op te slaan, met behulp van de sqlite3-bibliotheek. Er zijn er nog een heleboel, moest even rondkijken welke nog in ontwikkeling zijn. Deze specifieke bibliotheek is niet al te slecht, hoewel ik merkte dat ik nogal wat vocht tegen het gebrek aan documentatie en asynchroniciteit. Ik weet zeker dat de resulterende code behoorlijk lelijk is, op sommige plaatsen inefficiënt omdat ik niet wist hoe ik op een minder omslachtige manier tot het gewenste resultaat moest komen, toch lijkt het te werken en dat is wat belangrijk is voor een prototype.

Eerst heb ik een simpele REST API gemaakt om de momenteel ingecheckte mensen te bevragen, en later (realtime) push updates toegevoegd via socket.io, om het leuker te maken. Het is geweldig dat zonder polling alle klanten kunnen worden bijgewerkt zodra iemand zich aan- of afmeldt.

Aangezien deze code op een andere computer draait dan onze hoofdwebserver, moesten we wat spelen met de Access-Control-Allow-Origin-header en de instellingen van onze router aanpassen om deze correct toegankelijk te maken voor internet.

Geprobeerd om een ​​vrijwel op zichzelf staand script toe te voegen dat de front-end kan laden, en het handelt alles af, je hebt alleen een geschikt HTML-span- of div-element nodig om de informatie weer te geven.

Hardware-configuratie voor in- en uitchecken:Arduino Mega, RFID-RC522-circuit en enkele schakelaars en LED's.

Het resultaat is best goed, zolang de kaartlezer niet crasht. Oorspronkelijk werden de resultaten weergegeven in een tabel, maar ik wilde het menselijker maken, dus hier is het formaat waarmee ik eindigde:

Screenshot van de homepage met een bepaalde inchecksituatie

Er kunnen ook mensen zijn zonder naam, ze verschijnen gewoon in de trant van "Op dit moment zijn er drie mensen gecontroleerd in de Hackerspace:Greg en twee andere mensen."

SpaceAPI

Er is ook een project genaamd Space API voor een uniforme specificatie om informatie over de ruimte zelf bloot te leggen (

Deze incheckgadget is geïntegreerd met ons Space API-eindpunt van de Taipei Hackerspace om onze openingsstatus weer te geven, en kan dus worden gebruikt met b.v. de My Hackerspaces Android-app, of met de andere applicaties die worden vermeld op de Space API-site.

Het leeft!

Hier is een korte demonstratievideo van hoe het werkt:

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

Je kunt dus onze website bezoeken op https://taipeihack.org/#open voor de live resultaten, en als je in de buurt bent even binnenlopen als er iemand in de 'ruimte' is.

De hele broncode wordt gedeeld in een Github-repository:de Arduino-schets, het serverscript en eventuele aanvullende bestanden. Ik weet zeker dat er veel dingen aan verbeterd kunnen worden...

Origineel artikel: Elektronisch inchecken bij de Taipei Hackerspace

Code

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

Schema's


Productieproces

  1. Elektronische inkt
  2. Arduino RFID-slot met RC522 - MIFARE-protocol 13,56 Mhz
  3. Arduino Spybot
  4. FlickMote
  5. Zelfgemaakte tv B-Gone
  6. Hoofdklok
  7. Vind mij
  8. Arduino Power
  9. Elektronische kameleon
  10. Tech-TicTacToe
  11. Arduino Quadruped