Stap 20: Hoe de software werkt
- Lijn 8 kan het programma de SoftwareSerial-bibliotheek die wordt gebruikt om te communiceren met de RFID reader gebruiken
- Regels 10-16 definiëren de pinnen van de Arduino gebruikt door het programma
- Regels 18-23 definiëren de variabelen die worden gebruikt door het programma
- Lijnen 28-36 uitgevoerd wanneer de Arduino is eerst ingeschakeld of op beginstand zetten. Deze code schakelt de kleur veranderende LED circuit, initialiseert de verbinding met de PC en de RFID-kaartlezer en initialiseert de LED's op de top van de gizmo.
- Lijnen 41-71 zijn de hoofdlus van het programma. Deze lus wordt uitgevoerd totdat de Arduino is uitgeschakeld of op beginstand zetten. Het eerste wat gedaan in de lus is te controleren of de RFID-lezer heeft het lezen van alle gegevens en of de gegevens lezen geeft het begin van een tag. Als dat zo is:
- Lijnen 44-53 worden gegevens gelezen van de RFID-lezer totdat de tag is volledig gelezen.
- Lijnen 55-63 sturen de gegevens naar de PC. Drie datum worden verzonden: de graaf van tags gelezen tot nu toe, het tijdstip waarop de tag is gelezen, en de label-ID die is gelezen. De graaf en de tijd niet worden gebruikt door het programma op de PC maar zijn er voor debugging doeleinden en zijn handig als u wilt deze code gebruiken voor andere projecten Arduino RFID.
- Lijnen 64-68 tijdelijk de RFID-kaartlezer uitgeschakeld, maakt de LED's op de top van de gizmo race rond en vervolgens slaapplaatsen voor een korte tijd. De RFID-lezer is weer ingeschakeld en het programma lussen terug naar de top.
- Lijnen 74-88 zijn een subroutine dat maakt de LED's op de top van gizmo in de juiste volgorde verlichten en te lijken racen rond in cirkels. De ingang aan de subroutine is het aantal keren om te racen rond en het het aantal milliseconden dat elke LED verlicht.
- Een subroutine waarmee initialiseert de pinnen voor de LEDs en zet ze als output pinnen zijn lijnen 90-98.
Het Python gizmo programma draait op de PC en lussen wachten op gegevens wordt verzonden door de Arduino. Wanneer gegevens worden ontvangen, wordt het programma worden de ID van de tag in een tabel te vinden van de bijbehorende website opgezocht. Als de label-ID in de tabel, het programma gebruikt een Python library "webbrowser" geroepen om een nieuw tabblad openen in de standaardbrowser op de PC en de webpagina laadt. Als de browser niet loopt, zal "webbrowser" starten. Als de label-ID is niet in de tabel, de programma's een HTML-bestand gemaakt en wordt een foutbericht weergegeven met de label-ID en toont dat in een nieuw tabblad in de browser. Een voorbeeld is weergegeven in de laatste afbeelding. Het programma wordt weergegeven in de vierde, vijfde, zesde en zevende diagrammen. Een overzicht van programma volgt:
- Lijnen 12-15 importeren de bibliotheken voor het maken en het schrijven aan dossiers, communiceren met de Arduino, parseren van de gegevens verzonden van de Arduino en beheersing van de webbrowser.
- Lijnen 20-34 zijn de tabel (woordenboek in Python termen) gebruikt om de label-id koppelen aan websites. Elke regel heeft de tien karakter RFID tag-ID en een HTTP-koppeling naar de website. Merk op dat de eerste tag "" voor het webadres Quit heeft. Als deze tag wordt gelezen, vervolgens eindigt het programma. Nieuwe tags kunnen worden toegevoegd door het dupliceren van de laatste regel en de label-ID te vervangen door de nieuwe tag en zetten in de website die u voor de tag wilt.
- Lijn 37 bepaalt welke COM-poort die wordt gebruikt om te communiceren met de Arduino. Dit is de dezelfde COM-onderdeel dat wordt gebruikt door de Arduino ontwikkeling software te laden het gecompileerde programma in de Arduino. U moet veranderen zodat deze overeenkomen met uw systeem.
- Lijn 42 is de naam van het bestand dat wordt gemaakt wanneer een onbekende tag is gelezen. Dit bestand wordt gemaakt in de map waar u Python geïnstalleerd. In mijn geval was het "c:\Python27".
- De pySerial bibliotheek lijnen 45-54 gebruiken om te verbinden met de Arduino. Berichten zullen worden weergegeven in het venster van de Python die aangeeft of de verbinding is gemaakt of niet.
- Lijn 56 controleert of de verbinding geslaagd is. Als de verbinding tot stand is gebracht, blijft verwerking anders dat het programma zal eindigen.
- Lijn 58 stelt een variabele die is gebruikt om te bepalen of een dubbele tag is gelezen. Het idee is om te voorkomen dat dezelfde website in de browser worden geopend als de RFID-lezer gebeurt om te lezen van de tag meerdere keren wanneer deze boven de lezer geplaatst.
- De "pySerial" bibliotheek lijnen 62-63 gebruiken om te lezen van de data van de Arduino.
- Lijn 66 controleert als data gelezen is.
- Lijnen 68-74 gebruik de bibliotheek van de "shlex" te breken van de gegevens van de Arduino in drie delen: de graaf, de tijd en de label-ID.
- Lijnen 76-78 een functie aanroepen om te zoeken op de website op basis van de label-ID. De website in de Python en de label-ID worden weergegeven in het consolevenster van de Python voor foutopsporing.
- Lijnen 81-82 controleren om te zien als dit is de speciale code die wordt gebruikt om te stoppen met het programma en dus, wordt het programma afgesloten voor de lus en het programma eindigt.
- Regel 86 gecontroleerd om te zien of de tag lees net hetzelfde als de vorige. Als dat zo is, wordt het terug naar de top.
- Lijn 87 gebruikmaakt van de bibliotheek "webbrowser" om te beginnen de browser als niet actief en open vervolgens een nieuw tabblad voor de website.
- Regel 88 slaat de tag net gelezen om te voorkomen dat dubbele sites wordt weergegeven. Het programma wordt dan terug om te wachten op een ander label.
- Lijnen 90-104 zijn de functie die wordt gebruikt om te zoeken van de websites die zijn gekoppeld aan de label-ID:
- Regel 93 controleert om te zien of de label-ID in het woordenboek
- Lijn 94 retourneert de website als de label-ID in het woordenboek was.
- Lijnen 98-100 bouwen de HTML voor het foutbericht voor de onbekende tag.
- Lijnen 101-103 de "sys" bibliotheek kunnen maken van een HTML-bestand, de HTML-code te schrijven naar het bestand en sluit het bestand. Als het bestand gebeurt reeds bestaan, wordt de HTML-code in het bestand overschreven door de nieuwe HTML-code.
- Lijn 104 retourneert de naam van het bestand. Terug in het hoofdprogramma, zal de webbrowser open dit bestand in plaats van een website en het foutbericht weer.
- Lijnen 107-111 kunnen u dit programma starten vanaf de opdrachtregel en passeren in de naam van de COM-poort als een parameter in plaats van het programma wijzigen. Zie de volgende stap voor meer informatie over hoe dit te gebruiken.
Ik heb de software met een verscheidenheid van web-browsers getest: de "webbrowser" bibliotheek werkt prima met Firefox, Safari en Internet Explorer. Het werkt niet goed met Opera.