Stap 4: programma!
Tijd voor het programmeren van de arduino. Dit kan een beetje lastig met behulp van een fundamentele arduino, wellicht moet druk op de resetknop meerdere malen vóór en tijdens het eerste deel van de upload. Een zeer belangrijk ding om te onthouden, u krijgt een upload foutmelding als u koppel niet tijdelijk de seriële lijn van ID-20 aan de arduino Rx lijn. De ATMega168 heeft slechts 1 Rx ingang en gebruikt het voor het uploaden van de code om te praten met de programmeur. Verbreken van de ID-20 tijdens programmeren dan de stekker terug in wanneer je bent klaar. Ik gebruikte een FTDI programmeur waarmee u voor het programmeren van de arduino via USB met slechts 4 draden. De Controller Schematische toont een pin header verbinding zodat u sluit een direct. Sparkfun verkoopt ook dit deel maar velen misschien al het.
U kunt gemakkelijk uploaden mijn code naar je arduino en nooit terugkijken maar whats het plezier in dat? Laat het me uitleggen van de fundamentele idee van hoe het werkt.
Eerst en vooral, ik wilde niet een externe knoppen/schakelaars/etc en ik wilde niet te herprogrammeren van de arduino, elke keer als ik wilde een nieuwe kaart toevoegen. Daarom wilde ik alleen RFID gebruiken om te controleren de werking van het circuit, alsmede de controle over het deurslot.
Het programma draait op de blauwe LED om aan te geven dat het is klaar om te lezen een nieuwe kaart. Wanneer de kaart wordt gelezen dat het besluit als het een geldige kaart of niet door te vergelijken wat het lezen in om een lijst met geldige kaarten. Als de gebruiker geldig is, de arduino de blauwe LED uitgeschakeld en schakelt de groene LED voor 5 seconden. Het draait ook op een andere uitgang hoog gedurende 5 seconden. Deze uitgang is verbonden met de TIP31A transistor en laat de kleine arduino wilt beheren een veel grotere 12v 300mA deurslot zonder wordt beschadigd. Na 5 seconden de deur vergrendeling opnieuw vergrendeld en de LED terug naar draait blauw te wachten op een andere kaart te lezen. Als de kaart ongeldig is dan de LED wordt gewijzigd in rood voor een paar seconden en weer terug naar blauw te wachten op een andere kaart.
Het is belangrijk dat de deur nog steeds werkt vergrendelen, zelfs als de arduino's nachts de stroom uitvalt of opnieuw wordt ingesteld. Dus alle geldige kaart id's worden opgeslagen in EEPROM geheugen. De ATMega168 heeft 512 Bytes van het geheugen van de EEPROM. Elke RFID-kaart heeft een 5 Byte Hex serieel getal en een 1 Hex Byte controleren som die we gebruiken kunnen om te controleren of dat er geen fouten zijn opgetreden in de transmissie tussen de ID-20 en de arduino.
Geldige kaarten worden opgeslagen in de EEPROM met behulp van de eerste Byte als een teller. Bijvoorbeeld, als er 3 geldig kaarten opgeslagen de eerste Byte in de EEPROM zou 3. EEPROM.read(0); = 3. Weten dit, en het feit dat elke ID 5 Bytes lang we weten dat de 1-5 is kaart een, 6-10 is kaart 2 en 11-15 is kaart 3. Kunnen we een lus die de EEPROM 5 bytes tegelijk doorzocht en probeert te vinden van de kaart die werd voorgelezen door de lezer.
Maar hoe kunnen we nieuwe kaarten toe te voegen de EEPROM nadat het circuit is geïnstalleerd? Ik heb gelezen in een van de RFID-kaarten heb ik en hard gecodeerd om te worden van de Master RFID-kaart. Dus zelfs als de gehele EEPROM geveegd functioneert de Hoofdkaart nog steeds. Wanneer een kaart is gelezen, controleert het eerste om te zien als het is de Hoofdkaart, zoniet, vervolgt het om te zien of het een geldige kaart of niet. Als de kaart de Hoofdkaart is hebben we de arduino gaan in een "programmeren" waar het knippert RGB en wacht voor een andere geldige code te lezen. De volgende code wordt gelezen wordt toegevoegd aan de volgende gratis plek in de EEPROM en de teller is oplopend 1 als de kaart niet in het EEPROM geheugen bestaat nog. De lezer vervolgens keert terug naar de normale modus en wacht op een nieuwe kaart te lezen.
Momenteel heb ik niet een manier om te verwijderen van een kaart, zoals de redenen voor het verwijderen van een kaart zou het meest waarschijnlijk geprogrammeerd werd verloren of gestolen. Aangezien dit zou zeer waarschijnlijk worden gebruikt met 1-10 mensen de makkelijkste om te doen zou zijn om harde programma een Master wissen-kaart, die alle kaarten van de EEPROM wegvagen zal re voegt u hen allen, die duurt slechts een paar seconden. Ik heb code voor het wissen van de EEPROM toegevoegd maar ik heb deze functie nog niet geïmplementeerd. .
De code is gekoppeld in een tekstbestand samen met een kopie van de lijst van onderdelen.