Inhaltsverzeichnis:

Coin-O-Matic-Tokenspender - Gunook
Coin-O-Matic-Tokenspender - Gunook

Video: Coin-O-Matic-Tokenspender - Gunook

Video: Coin-O-Matic-Tokenspender - Gunook
Video: How to Revoke Permissions with Metamask (Step by Step) 2024, Juli
Anonim
Image
Image

In unserem Büro haben wir einen Automaten, der entweder echtes Geld oder Token annehmen kann. Das Management entschied, dass wir einige kostenlose Süßigkeiten (in Grenzen) bekommen könnten, um uns mit den niedrigen Gehältern, die wir verdienen, zufrieden zu stellen. Das Problem war, wie würden Sie das kontrollieren? Der Automat gehört einer Fremdfirma, so dass Umbauten am Automaten nicht in Frage kamen.

Betritt den Frankenstein Coin-O-Matic, eine Schöpfung meines kranken Geistes. Bei der Entscheidung, wie das geht, dachte ich, dass RFID-Tags das Beste wären. Geben Sie jedem Mitarbeiter einen RFID-Tag und dokumentieren Sie, wie oft der RFID-Tag durchgezogen wird. Beim Durchziehen des Etiketts wird eine Wertmarke zur Verwendung mit dem Automaten ausgegeben (eine freie Öffnung). Jedes Mal, wenn der TAG durchgezogen wird, zeichnen Sie die Informationen auf einer SD-Karte auf. Die TAG-Nummer wird ebenfalls über LoraWAN in die „Cloud“hochgeladen. Ich habe bereits mit LoRaWAN und thethingsnetwork (TTN) mit einigen Temperatur- und Feuchtigkeitssensoren gespielt, also haben wir ein TTN-Gateway. Das TTN-Gateway ist ein Raspberry PI 3 mit einem IMST-Konzentrator, der an TTN angeschlossen ist.

Schritt 1: Stückliste

  1. Einige 3mm Plexiglas
  2. Einige 1mm Plexiglas
  3. Arduino Mega
  4. Arduino Pro Mini
  5. RFM95 Lora-Radio
  6. Tiny RTC DS1307 Echtzeituhr I2C-Modul
  7. Grafisches 2,2-Zoll-Farb-TFT-LCD 240x320 ILI9341
  8. 2 x 4-Kanal bidirektionale Pegelwandler
  9. NeoPixel Ring 24 - RGB-LED WS2812
  10. RFID-Starter-Kit 13,56MHz
  11. ESP8266 ESP12 Testboard WiFi-Modul
  12. SD-Kartenmodul
  13. 5 x Druckknöpfe
  14. 2 x dreifarbige LED
  15. Viele, viele Kabelbinder
  16. Viele Steckbrett-Jumper
  17. 40mm x 40mm Holz
  18. 2 Kanal 5V Relaismodul 10 AMP
  19. 5VDC Infrarot-Lichtschranke-optisches Sensormodul

Schritt 2: Begonnen mit dem Bau einer Basis aus Holz und Perpex

Begonnen mit dem Bau einer Basis aus Holz und Perpex
Begonnen mit dem Bau einer Basis aus Holz und Perpex

Begonnen mit dem Bau einer Box, um die gesamte Elektronik aus 3 mm Plexiglas zu beherbergen, wurden das Plexiglas und das Logo mit einer CNC-Maschine geschnitten. Die Frontabdeckung der Box beherbergt den Bildschirm, Tasten und einige blinkende LEDs. Die LEDs sind normale dreifarbige LEDs, die durch die Farben wechseln, siehe BOM

Ich habe dann einen 40 mm x 40 mm großen Holzblock verwendet, um einen Platz für den Münzspender und eine Rutsche für die Wertmarke zu bauen. Der Wertmarkenspender besteht aus 3 runden Plexiglasplatten, die obere und untere sind 3 mm Plexiglas und die mittlere, die die Wertmarke trägt, ist 1 mm Plexiglas. Es funktioniert so, dass sich die mittlere Platte dreht und eine Wertmarke vom Stapel greift und sie zum Loch in der Bodenplatte zieht und die Wertmarke in die Wertmarkenrutsche in die schmuddeligen wartenden Hände eines hungrigen Angestellten fällt.

Der Token Stacker ist ein altes Sprinklerrohr, das ich herumgelegt hatte und der Durchmesser war genau der gleiche wie bei den Token. Ich habe einige Löcher in das Sprinklerrohr gebohrt, damit Sie sehen können, wie viele Token bei Bedarf zum Nachfüllen gestapelt sind. Das Sprinklerrohr wurde mit Sekundenkleber auf die obere Plexiglasplatte geklebt.

Schritt 3: Der Token-Spender

Der Token-Spender
Der Token-Spender
Der Token-Spender
Der Token-Spender
Der Token-Spender
Der Token-Spender

Der Motor zum Antrieb der Mittelplatte ist ein 220V AC Synchronmotor von …. Ich habe keine Ahnung, habe es in meiner Ersatzteilkiste gefunden, solange es langsam und stark ist. Der Schaft wurde mit etwas Epoxidkleber namens Pratex auf die Mittelplatte geklebt. Das Relaismodul wird ausgelöst und die stromführende Leitung wird angeschlossen, um den Motor zum Laufen zu bringen. Ich habe einige Löcher in die Bodenplatte gebohrt, um der Reibung entgegenzuwirken, ob es einen Unterschied macht, weiß ich nicht. Auf beiden Seiten der mittleren Platte wurden 2 Löcher geschnitten, um die Token zu "greifen". Der Durchmesser der Löcher ist etwas größer als der Durchmesser der Token, so dass beim Greifen der Token ein gewisser Spielraum für Fehler besteht.

Schritt 4: Erkennen, ob ein Token ausgegeben wurde

Erkennen, ob ein Token ausgegeben wurde
Erkennen, ob ein Token ausgegeben wurde
Erkennen, ob ein Token ausgegeben wurde
Erkennen, ob ein Token ausgegeben wurde

Ich habe dafür eine Lichtschranke verwendet, wir wollen einen Mitarbeiter nicht ausgrenzen, wenn er nach dem Scannen eines Tags keinen Token erhalten hat. würden wir jetzt?. Der Datensatz wird nur auf die SD-Karte geschrieben, wenn die Erkennung des Tokens erfolgreich ist, wenn kein Token erkannt wurde, geht die Anzeige in Rage, beschuldigt den Dienst in der Firma und dass der Dienst scheiße ist. Es wird kein Datensatz geschrieben der Fall, in dem keine Token ausgegeben werden müssen. Ich habe den Fototransistor auf den Boden der Rutsche geklebt, damit der Token den Strahl bricht, wenn er durch den Strahl geht

Schritt 5: Elektronik

Elektronik
Elektronik

Arduino Mega - Dies ist das Gehirn des Coin-o-Matic, alle Sensoren usw. sind mit dem Mega verbunden

Arduino Pro Mini und RFM95 Lora Radio - Das Arduino Pro Mini und das Arduino Mega sind über den seriellen Bus miteinander verbunden, wenn ein Tag gescannt wird, wird die Tag-Nummer auf dem seriellen Bus vom Mega zum Pro Mini gesendet. Der Pro Mini ist die ganze Zeit in einer Schleife, sobald etwas auf dem seriellen Bus des Pro Mini eingeht, wird die Tag-Nummer mit LoraWan in das Thingsnetwork (TTN) hochgeladen. Ich habe diesbezüglich keine Integration vorgenommen, aber der Plan wäre eine AWS-Instanz zum Speichern und Sortieren der Informationen. Weitere Informationen finden Sie im nächsten Schritt.

Winziges RTC DS1307 Echtzeituhr I2C-Modul - Wenn der Coin-O-Matic hochfährt, meldet er sich beim WiFi-Netzwerk an und ruft die Zeit von einem NTP-Server über das ESP8266 ESP12 Test Board WiFi-Modul ab und stellt dann die RTC-Zeit entsprechend ein

Grafisches 2,2 TFT LCD 240x320 ILI93412 - Das Hauptdisplay zeigt normalerweise eine Uhr an und gibt dem Benutzer einige Gedanken

Bidirektionale 4-Kanal-Pegelwandler - Da die digitalen Pins des Mega 5 V haben, brauchte ich die Wandler, um mit einigen der Module auf einem sicheren Niveau zu kommunizieren

NeoPixel Ring 24 RGB LED WS2812 - Machen Sie etwas Licht, um den Benutzer zu betäuben und zu verwirren

RFID Starter Kit 13.56MHz - Der RFID-Leser

SD-Kartenmodul - Schreiben Sie die Tag-Nummer, das Datum und die Uhrzeit für jeden Tag-Swipe

Drucktasten - Administrator, der das Master-Tag hat, lädt neue Tags und ich benutze eine der Schaltflächen, um die Anzeige anzuhalten, bis er die Tag-Nummer kopieren und aufzeichnen kann, wer das Tag hat. Die anderen 4 Tasten sind verkabelt, werden aber derzeit nicht verwendet

Dreifarbige LED - Mehr Licht, um die Benutzer zu betäuben und zu verwirren

Viele, viele Kabelbinder - Versuchen Sie, alle Drähte in Ordnung zu bringen

Viele Steckbrett-Jumper - Verdrahten Sie das Zeug!

2-Kanal-5V-Relaismodul 10 AMP 5VDC - Das eine Relais wird verwendet, um den Münzausgabemotor und das andere das ESP8266-Modul einzuschalten. Das ESP8266-Modulprogramm befindet sich ebenfalls in einer Schleife, sobald es mit Strom versorgt wird, wird es Melden Sie sich beim WiFi-Netzwerk an und führen Sie einen Get NTP-Zeitanruf durch. Um die NTP-Zeitaufrufe zu minimieren, habe ich beschlossen, es mit dem Relais zu betreiben, dh das Relais zu aktivieren, das ESP-Modul zu aktivieren, das ESP-Modul die Zeit zu erhalten und das Relais wieder herunterzufahren… Und es macht auch schöne Klickgeräusche

Infrarot-Lichtschranken-Lichtschranke - Um zu erkennen, ob eine Wertmarke ausgegeben wurde

Schritt 6: LoRaWAN-Sensorplatine

LoRaWAN-Sensorplatine
LoRaWAN-Sensorplatine

Die Eagle-Designdateien sind beigefügt, das Board ist von mir, aber ich benutze eine Firma, um das Board selbst zu produzieren. Diese Platine kann auch als LoRAWAN-Sensorplatine verwendet werden, sie ist extrem klein, ~37 mm x 54 mm, sie eignet sich so wie sie ist für einen DHT 22 oder DHT 11 Temperatur- und Feuchtigkeitssensor.

Schritt 7: TTN - das Netzwerk der Dinge

TTN - das Netzwerk der Dinge
TTN - das Netzwerk der Dinge

Dazu gibt es viele Informationen unter

www.thethingsnetwork.org/

Grundsätzlich spricht der Coin-O-Matic über LoraWAN (Der Arduino Pro Mini mit dem RFM95-Radio) zu einem Gateway (Raspberry Pi mit IMST-Konzentrator), das über das Internet mit TTN verbunden ist, von TTN kann man viele Integrationen vornehmen, IE Swagger, AWS, http usw., das Bild oben zeigt einige Schlagwörter im Büro

Schritt 8: Software

Die Software ist in 3 Teile unterteilt

getNTPtime_instructables - Beim ESP8266-Programm müssen Sie die ssid, das Passwort und den ntpServerName vor dem Hochladen ändern. Ich verwende einen FTDI-Basisprogrammierer, verbinde Masse, TX und RX. Denken Sie daran, das ESP-Modul in der Arduino IDE auszuwählen und die Pins auf dem ESP zu sortieren, um es in den Programmiermodus zu versetzen

Coin-O-Matic_instructables - Das Coin-O-Matic-Programm. Dies wird auf dem Arduino Mega geladen, hier erforderliche Änderungen sind die Master-Tag-Nummer -

Byte MasterCard[Kartengröße] = {121, 178, 151, 26};

pro_mini_instructables - Das LoRaWAN-Programm. Dies wird auf den Pro Mini geladen. Weitere Informationen zur Verkabelung des Radios und zu den zu verwendenden PINs finden Sie im Schaltplan. Die Geräteadresse, der Netzwerksitzungsschlüssel und der App-Sitzungsschlüssel müssen nach der Geräteregistrierung auf TTN geändert werden, wenn Sie ABP verwenden

statisches const PROGMEM u1_t NWKSKEY[16] = { };s]

statische const u1_t PROGMEM APPSKEY[16] = { };

statische const u4_t DEVADDR = 0x; // <-- Diese Adresse für jeden Knoten ändern!

Schritt 9: Booten

Das Video zeigt, wie das Relais aktiviert wird (Relais 1), das ESP8266-Modul meldet sich beim WiFi-Netzwerk an, sendet ein getNTP-Zeitsignal und ruft die Uhrzeit vom NTP-Server ab, nachdem die Uhrzeit erfolgreich aktualisiert wurde, deaktiviert sich das Relais und trennt die Stromversorgung vom ESP8266. Wenn etwas schief geht und es kein erfolgreiches Zeitupdate gibt, startet das Arduino Mega neu und versucht es erneut. Das ESP8266-Modul und das Arduino Mega sind über die seriellen Ports (Serial2 beim Mega) miteinander verbunden. Das Arduino Mega lauscht auf eine Antwort vom ESP8266, die Meldung sieht so aus "UNX[and the epoch time stamp]", Ich bin in GMT+2, also füge ich im Arduino Mega-Code GMT+2 wie folgt hinzu

time_t gmtTimeVar = newTimeVar+7200;

rtc.adjust (DateTime (gmtTimeVar));

Schritt 10: Hinzufügen/Entfernen eines Tags

Image
Image

Der Master-Tag wird gescannt und das Display zeigt an, dass dies der Master-Tag ist. Das neue Tag wird gescannt und die Tag-Nummer wird auf dem Bildschirm angezeigt und es gibt dem Benutzer Zeit, die Nummer zu notieren und aufzuzeichnen, wer das neue Tag besitzt. Die Tag-Nummer wird in die Datenbank geschrieben, sobald der Benutzer die linke Taste drückt. Das gleiche Verfahren wird befolgt, um ein Tag aus der Datenbank zu entfernen

Schritt 11: Einige Videos, die die Funktionsweise des Coin-O-Matic zeigen

Ich habe node-red verwendet, um in Telegram zu integrieren, node-red hat ein Integrationsmodul für TTN. Was passiert also, wenn Sie ein Tag scannen?

  • Etikett wird gescannt
  • txt-Datei auf der SD-Karte wird gelesen, um zu sehen, ob es sich um ein gültiges Tag handelt
  • Bei gültigem Tag wird ein Zeitstempel mit der Tag-Nummer in eine txt-Datei auf der SD-Karte geschrieben
  • Die Tag-Nummer wird über LoRaWAN und das Raspberry PI Gateway an das TTN-Netzwerk gesendet
  • Node-red abonniert die MQTT-Nachrichten im TTN-Netz
  • Node-Red sendet die dekodierte HEX-zu-DEC-Tag-Nummer an eine Bash-Skriptdatei, die lokal auf einem Server ausgeführt wird
  • Das Bash-Skript scannt eine TXT-Datei mit TAG-NUMMERN und NAMEN
  • Die Bash-Skriptdatei lädt die Nachricht in einen Telegram-BOT mit curl hoch, der die TAG-NUMMER und den Namen der Person enthält

Schön komplex, ich liebe es, wie eine so einfache Aufgabe soooo komplex wird

Lass mich wissen, was du in den Kommentaren unten denkst