ich bin neu hier und schreibe meinen ersten Eintrag, ich hoffe, dass es unter die richtigen Kategorien fällt. Ich sitze an einem Projekt, wozu ich RFID-Reader benötige.
Ich habe mich schon eingelesen und weiß, dass man die UID eines Tags auslesen kann.
Für mein Projekt müsste ich allerdings eine Art Budget auf den Tags speichern&verändern können und dieses Budget als Variable nutzen können.
Meine Frage wäre nun, ob die Möglich ist.
(Arduino Mega & RFID RC522 mit SPI Interface)
Das beschreiben von RFIDs geht ist aber nicht ganz so einfach.
Wenn man es falsch macht kann der RFID-Tag unbrauchbar werden.
Wenn alles an einem einzelnen RFID-Reader stattfindet würde ich die Daten lieber im Microcontroller speichern. Wenn es mehrere sind und die keine gemeinsame Datenbank haben, dann kommt man um das Datenschreiben in den RFID-Tag nicht herum.
vgs
Die meisten realen RFID-Anwendungen mit Guthabenfunktion verwenden Datenbanken und Schattenkonten und nutzen die RFID-Karte nur zur Identifikation.
Damit ist dann auch bei beschädigter Karte (Hosentasche, Geldbörse, ...) das Geld nicht weg.
Gruß Tommy
Edit: Ich würde sogar noch weiter gehen und die Aussage dahin gehend verschärfen, dass eine Speicherung nur auf der RFID-Karte finanztechnisch wegen dem Verlustrisiko nicht zulässig sein dürfte.
Also bei uns in der Firma lief die Guthabenverwaltung (Kantine, Laden) über Schattenkonten. Wo siehst Du da Datenschutzprobleme? Nur Zeitpunkt und Betrag.
50€ auf den Betriebsausweis aufgeladen und die sind dann weg - das gibt einen Aufstand.
Meine Idee ist es, eine Art smartes Parkhaus zu entwickeln über RFID-Tags.
Da dies nur ein Schulprojekt ist, spielen die Sicherheitsaspekte keine tragende Rolle.
Es geht in Grunde genommen darum es gibt 5 Autos, jedes mit einem RFID-Tag versehen. Dann soll es mit einem dynamischen Budget bestückt werden und so entschieden werden, ob das Auto hinein darf oder nicht.
Was ich bis jetzt mitgenommen habe ist, dass ich das Budget quasi nicht auf dem Tag speichere, sondern den Tag nur nutze um über die UID etwas zu starten. Das Budget müsste ich Ann quasi als extra Variable einbringen, richtig?
Hallo,
das ist richtig . Es gibt Sektoren da lässt man besser die Finger von weg.
Es gibt auch Kaffeeautomaten in Firmen die mit RFID Tags arbeiten. Die kann man mit einem bestimmten Betrag aufladen und dann nutzen bist leer ist. Das geht auch ohne Datenbanken.
Ja.
Ist relativ easy und mit reiner Logik zu lösen.
Erst die Logik - dann den Code! Warum?
Die Logik ist an einem Auto exemplarisch durchzuspielen.
Dann kommen einfach nur die weiteren Autos im Code dazu.
Fragen:
festes Budget einmalig eingestellt und wenn leer ist Schluss oder wiederaufladbar?
Abrechnung nach Zeit innerhalb des Parkhauses (benötigt Ein- und Ausfahrtsensor) oder nur nach Einfahrt
Das Budget soll wiederaufladbar sein. (An einem bestimmten Ort)
Wie du schon sagst, berechnen sich die Kosten mit zwei Sensoren (RFID-Readern) und dann soll ein Timer laufen (Kosten = Preis x Zeit).
Insgesamt gibt es also 3 RFID Reader (Einer der die Einfahrt scannt und den Timer startet, der andere stoppt den Timer und reduziert das Budget, beim dritten soll man Budget aufladen können.
Ich habe auch einen Aufbau, damit man sich das ganze Projekt besser vorstellen kann, jedoch kann ich im Forum noch nichts hochladen
Alles gut - erklärt.
Super!
Ist nen Parkhaus für Beschäftigte
na mal schaun. Willst Dich mal an die Logik wagen - trocken; ohne Code nur den Ablauf aufschreiben?
Und wie schätzt Du Deine Erfahrung mit der Entwicklungsumgebung ein?
Ich weiß nicht genau was du genau mit dem Ablauf meinst, aber ich schreibe mal eine Art Pseudo-Code:
Zur IDE, ich habe vor zwei Tagen angefangen, denke aber mit jeder Stunde mehr wird es besser und das "einfache" Coden klappt schon
Parkplatzbelegung und Motorsteuerung (für Schranken) habe ich bis jetzt schon geschrieben.
Also: Wenn Tag(Auto) eine bekannte Adresse ist & das Budget > -100€ dann öffne Schranke & starte Timer. Wenn ich noch I/O überhabe werde ich dann noch auf einem LCD etwas ausgeben, wie Budget = <-100 ->" Kein Budget"; falsche UID -> "kein gültiger Tag".
Bei der zweiten Schranke wird es dann : Lies UID und Stoppe Timer. Budget(Tag) - Timer x VarPreis & öffne Schranke.
Die Budget auflade Station müsste dann so etwas sein wie: lese Tag und wenn Taster xy gedrückt, dann Budget plus 100.
Alle Budgets sollen sich bei einem kompletten Neustarts des Programms am besten auf Ihre Anfangswerte zurücksetzen. (Damit ich vor der Präsentation einen definierten Stand habe).
Nein, ich will es ja tatsächlich verstehen und hoffe, ich kriege da was gebastelt...
Habe nur irgendwie Probleme mit dem Anfang beim RFID und weiß nicht, wie ich dem RFID bzw. der UID dann deren Budget zuordne etc.
Aber ich werde da wohl einfach die ein oder andere Stunde reinhängen
Stichwort: Array.
Ginge zweidimensional. In der ersten Dimension die UID - in der zweiten das "Guthaben" (das es auch negativ werden kann).
Ich würde das mit zwei Arrays lösen.
Erstes Array enthält die ID des Auto.
Zweites Array enthält den verfügbaren Betrag.
Und genau darum habe ich oben schon geschrieben: Mach das nur für ein Auto.
Wenn das für ein Auto läuft, ist das für jedes weitere nur eine Klammer und ein bissl. Kleinkram.
Bau Deinen Code mal so, das er nur mit einem Auto geht.
Da gibt es eine Variable für das Auto und eine für den Betrag.
z.B. so:
Das autoGeld ist 100 vor dem Komma und 00 danach.
Mit der variable kannst arbeiten bis +/- 32767 - also 327,67€ Wenn mehr gebraucht wird, dann int32_t bzw long. Da biste bis 21474836, 47 dabei
Das aufrechnen auf dem Konto mit Pseudocode - das geht zwar, aber wird nichts, weil der auflädt ohne weitere Prüfung:
wenn ((chip==autoId) &&( tasteGedrueckt==true)) dann autogeld +=100
Moin, ich melde mich nochmal wegen etwas Allgemeinem.
Ich lese die ganze Zeit von Pull Ups/Pull downs. Ich habe meinen ersten Aufbau ohne solche externen Widerstände gemacht. Ich habe das Arduino Mega und habe gelesen dass die I/O auch interne Pull Ups haben. Wie macht ihr das Aktiviert ihr diese extra ?
Im Default Modus stehen die Kontakte auf Input mit einem Pull Up, stimmt das ?
Und dann noch eine Frage, ich brauche mehrere I2C Devices. auch da habe ich von einem Vorwiderstand gelesen zwischen Vcc und SDA & SCL. Bei meinem ersten Test mit einem LCD habe ich einfach 4 Kabel gehabt. VCC/GND/SDA/SCL ohne Widerstände. jetzt will ich weitere LCDs hinzufügen, reicht es, wenn ich SDA und SCL jeweils über ein Breaboard verbinde und VCC und GND kriegt jeder LCD selber?
du sprichst hier von pinMode(deinPin, INPUT); und einem nachfolgendem digitalRead(deinPin); oder was meinst du genau?
pinMode(deinPin, INPUT);
aktiviert KEINE pullups.
Du könntest einen Pullup (=Widerstand gegen VCC) setzen, den Schalter gegen GND schließen, dann hast du ein definiertes HIGH wenn ausgeschaltet oder LOW wenn eingeschaltet.
gleiches erziehlt man mit
pinMode(deinPin, INPUT_PULLUP);
nur brauchst keinen externen Widerstand sondern der Arduino legt einen intern an.
Hallo,
ich denke es macht Sinn einen Eingangspin z.B mit pinMode(pin, INPUT_PULLUP) richtig festzulegen. Dann werden die Eingänge z.B über einen Schalter auf GND gezogen. Offen hat der Eingang in dem Fall ein H. Default stehen die Eingänge auf Input , der interne Pullup ist aber ausgeschaltet.
Wenn der Schalter plus schalten soll benötigst Du einen externen Pulldown Widerstand, damit der Pegel am Eingang ein definiertes H oder L bekommt. Bei langen Leitungen kann es Sinn machen den Pulldown oder Pullup Widerstandswert zu verringern.
Bei Sensoren mit einem Transistor-Ausgang ist der Pegel in den meisten Fällen schon eindeutig damit ist kein externer Pulldown, Pullup notwendig. NPN oder PNP Ausgang. Es gibt Transistor-Ausgangsbeschaltungen da ist das nicht der Fall die werden mit "open Collector " bezeichnet und erfordern einen externen Widerstand. In der Regel einen Pullup.
I2C Teile haben meist die erforderlichen PullUps schon mit drauf , deshalb geht das in der Regel ohne zusätzliche Widerstände. Auch da kann es sein das man bei langen Leitungen (2-5m) zusätzliche Pullups parallel schalten muss, damit der Gesamtwiderstand kleiner wird.
Heinz
Jetzt noch eine Frage, und ich hoffe auch hier nicht euch zum Haareraufen zu bringen.
Die Outputs als Pin geben beim Arduino Mega 20mA aus. Ist es irgendwie möglich, mehrere LEDs (6-7) über einen Pin zu steuern ?
folgende LEDs stehen mir zu verfügung.
liegen an dem Output-Pin gegen Masse auch 5V an ?