Den Arduino Internet Gizmo (20 / 22 steg)
Steg 20: Hur programmet fungerar
- Linje 8 låter programmet använder SoftwareSerial biblioteket som används för att kommunicera med RFID-läsare
- Rader 10-16 ange Arduino stiften används av programmet
- Linje 18-23 definiera de variabler som används i programmet
- Linje 28-36 körs när Arduino är första påslagen eller återställa. Denna kod tänds den Färgskiftande LED krets, initierar anslutningen till datorn och RFID-kortläsare och initierar lysdioder ovanpå gizmo.
- 41-71 är huvudloop för programmet. Denna loop körs tills Arduino är avstängd eller återställa. Den första sak gjort i en slinga är att kontrollera om RFID-läsare har läst några data och huruvida data läsa anger början av ett tag. Om så är fallet:
- Linjerna 44-53 läsa data från RFID-läsare till etiketten har varit helt läsa.
- Rader 55-63 skicka data till PC. Tre datum skickas: greven av Taggar läst hittills, den tid som etiketten lästes och tagg-ID som lästes. Räkna och tid används inte av programmet på datorn men finns för felsökning ändamål och är användbara om du vill använda den här koden för andra Arduino RFID-projekt.
- Linjer 64-68 stängs tillfälligt den RFID-kortläsaren, gör lysdioderna på gizmo racen runt om och sedan sover en kort tid. RFID-läsare är tillbaka på och programmet loopar tillbaka till toppen.
- 74-88 är en subrutin att gör lysdioderna på gizmo belysa i sekvens och tycks tävla runt i cirklar. Indata till subrutinen är antalet gånger att tävla runt och antalet millisekunder att hålla varje LED belysta.
- Linjerna 90-98 är en subrutin som initierar stiften för lysdioderna och sätter dem vara utgångsstift.
Python gizmo programmet körs på datorn och loopar väntar på data skickas med Arduino. När data tas emot, letar programmet upp tagg-ID i en tabell att hitta den associerade webbplatsen. Om tagg-ID i tabellen, använder programmet en Python kallas "webbrowser" för att öppna en ny flik i standard som webbläsare på datorn och ladda webbsidan. Webbläsaren inte är igång, kommer att "webbrowser" starta om. Om inte är tagg-ID i tabellen, program skapas en HTML-fil med ett felmeddelande med tagg-ID och visar det i en ny flik i webbläsaren. Ett exempel visas i den sista bilden. Programmet visas i fjärde, femte, sjätte och sjunde diagram. En översikt över programmet följande:
- Linjerna 12-15 importera bibliotek för att skapa och skriva till filer, kommunicera med Arduino, analysera data skickas från Arduino och styra webbläsaren.
- 20-34 är tabellen (ordbok i Python termer) används för att associera etiketten IDs med webbplatser. Varje rad har tio tecken RFID-tagg-ID och en HTTP-länk till webbplatsen. Observera att den första-taggen har "quit" för webbadressen. Om denna tagg läses, avslutas programmet. Nya märken kan läggas genom att duplicera den sista raden och ersätter tagg-ID med den nya taggen och sätta på den webbplatsen du vill använda för etiketten.
- Linje 37 definierar vilken COM-port som används för kommunikation med Arduino. Detta är samma COM del som används av Arduino utveckling programvaran för att ladda den kompilerade programmet till Arduino. Du bör ändra detta för att matcha ditt system.
- Linje 42 är namnet på den fil som skapas när en okänd tagg läses. Denna fil skapas i katalogen där du installerade Python. I mitt fall var det "c:\Python27".
- Rader 45-54 använda pySerial biblioteket för att ansluta till Arduino. Meddelanden kommer att visas i fönstret Python som anger om anslutningen gjordes eller inte.
- Linje 56 kontroller för att se om anslutningen var framgångsrik. Om anslutningen gjordes, fortsätter behandlingen annars programmet avslutas.
- Linje 58 anger en variabel som används för att avgöra om en dubblett tagg har lästs. Tanken är att förhindra samma webbplats öppnas i webbläsaren om RFID-läsare råkar läsa etiketten mer än en gång när den placeras över läsaren.
- Linjerna 62-63 använda "pySerial" biblioteket för att läsa data från Arduino.
- Linje 66 kontroller för att se om data har lästs.
- Linjerna 68-74 användning "shlex" biblioteket för att bryta data från Arduino i tre delar: greven, tiden och tagg-ID.
- Linje 76-78 anropa en funktion för att slå upp webbplatsen baserat på taggen ID. Tagg-ID och webbplats i Python visas i fönstret Python konsolen för felsökning ändamål.
- Linjerna 81-82 kontrollera om detta är den särskilda taggen används för att stoppa programmet och om så, programmet avslutas loopen och programmet avslutas.
- Line 86 kontroller för att se om etiketten just läst är samma som det föregående. I så fall loopar det tillbaka till toppen.
- Linje 87 använder "webbrowser" biblioteket att starta webbläsaren om inte körs och öppna en ny flik för webbplatsen.
- Linje 88 sparar etiketten läste just att förhindra att dubblerade platser visas. Programmet loopar sedan tillbaka för att vänta på en annan tagg.
- Linjerna 90-104 är den funktion som används för att slå upp på webbplatser som är associerade med tagg-ID:
- Linje 93 kontrollerar om tagg-ID finns i ordlistan
- Linje 94 returnerar webbplatsen om tagg-ID var i ordlistan.
- Linjerna 98-100 bygga HTML för felmeddelandet för okända taggen.
- Linjer 101-103 använda "sys" biblioteket för att skapa en HTML-fil, skriva HTML-kod till filen och stäng filen. Om filen redan finns, och HTML-koden i filen ersätts med nya HTML.
- Linje 104 Returnerar namnet på filen. Tillbaka i huvudprogrammet, kommer webbläsaren öppna denna fil i stället för en webbplats och visa felmeddelandet.
- Linjerna 107-111 kan du köra programmet från kommandoraden och passera i namn av COM-port som en parameter i stället för att modifiera programvaran. Se nästa steg för detaljer om hur man använder detta.
Jag har testat programvaran med olika webbläsare: "webbrowser" biblioteket fungerar bra med Firefox, Safari och Internet Explorer. Det fungerar inte korrekt med Opera.