Tid & närvaro System med hallon och Phidgets (3 / 3 steg)

Steg 3: RFID-taggar



Vi kommer att använda en enkel textfil för att lagra RFID-etiketten. Med ett Python-skript kommer vi läsa etiketten och om filen innehåller det, vi kommer att spela in en ny rad i filen attendance.txt. På samma gång skickar skriptet ett meddelande som visas.

Skapa en ny fil /home/pi/tag.txt med vissa Taggar

Skapa en ny fil /home/pi/attendance.txt där vi lagrar rörelser inkommande och utgående

Skapa filen /home/pi/rfid.py med detta innehåll

#! / usr/bin/env python

#Basic import
ctypes importera *
importera sys
Importera tid
importera datetime
importera urllib2
importera urllib
#Phidget särskilda import
importera från Phidgets.PhidgetException PhidgetErrorCodes, PhidgetException
från Phidgets.Events.Events importera AttachEventArgs, DetachEventArgs, ErrorEventArgs, OutputChangeEventArgs, TagEventArgs
från Phidgets.Devices.RFID importera RFID, RFIDTagProtocol

tagsList=list()
tagStatus=list()

med open('tag.txt') som f:
tagsList = f.read().splitlines()

för indexet i range(len(tagsList)):
tagStatus.append(0)

#Create ett RFID-objekt
försök:
RFID = RFID()
utom RuntimeError som e:
skriva ut ("Runtime undantag: %s" % e.details)
Print("Exiting...")
Exit(1)

#Information med funktionen
def displayDeviceInfo():
print("|------------|----------------------------------|--------------|------------|")
skriva ut ("| - anslutna-| - typ-| - serienr-| - Version-|")
print("|------------|----------------------------------|--------------|------------|")
skriva ut ("| - %8s-| - % 30s-| - % 10d-| - %8 d-|" % (rfid.isAttached(), rfid.getDeviceName(), rfid.getSerialNum(), rfid.getDeviceVersion()))
print("|------------|----------------------------------|--------------|------------|")
skriva ut ("Antal utgångar: %i--antenn Status: %s--ombord LED Status: %s" % (rfid.getOutputCount(), rfid.getAntennaOn(), rfid.getLEDOn()))

#Event handler återkopplingsfunktioner
def rfidAttached(e):
Fäst = e.device
skriva ut ("RFID %i bifogad!" % (attached.getSerialNum()))

def rfidDetached(e):
fristående = e.device
skriva ut ("RFID %i fristående!" % (detached.getSerialNum()))

def rfidError(e):
försök:
Source = e.device
skriva ut ("RFID-% i: Phidget fel % i: %s" % (source.getSerialNum(), e.eCode, e.description))
utom PhidgetException som e:
skriva ut ("Phidget undantag % i: %s" % (e.code, e.details))

def rfidOutputChanged(e):
Source = e.device
skriva ut ("RFID-% i: utdata %i stat: %s" % (source.getSerialNum(), e.index, e.state))

def rfidTagGained(e):
Source = e.device
rfid.setLEDOn(1)
försök:
om tagStatus[tagsList.index(e.tag)] == 0:
postdata = "Välkommen, ha en bra dag"
tagStatus[tagsList.index(e.tag)] = 1
annat:
postdata = "Hej, vi ses i morgon"
tagStatus[tagsList.index(e.tag)] = 0
om e.tag i tagsList:
query_args = {"riktning": postdata}
URL = "http://localhost/web/message.php"
user_agent = "Mozilla/5.0 (X11; Linux armv7l) AppleWebKit/537.4 (KHTML, lik Gecko) Chrome/22.0.1229.94 Safari / 537.4 "
headers = {"User-Agent": user_agent}
data=urllib.URLEncode(query_args)
begäran = urllib2. Request(URL,data,headers)
Request.add_header ("Referer", "http://localhost/web/")
Response=urllib2.urlopen(Request).Read()

nu = datetime.datetime.now()
FH = öppna ("/home/pi/attendance.txt", "a")
#fh.write (now.strftime (' %s'))
#fh.write (", {}; {}; \n".format (tagStatus[tagsList.index(e.tag)], e.tag))
FH.write ("{}, {}; {}; \n".format (now.strftime('%s'), tagStatus[tagsList.index(e.tag)], e.tag))
FH.Close
Förutom ValueError:
skriva ut ("Fel okänd tag %s" % (e.tag))

def rfidTagLost(e):
Source = e.device
rfid.setLEDOn(0)
Time.Sleep(2)
postdata = "Redo..."
query_args = {"riktning": postdata}
URL = "http://localhost/web/message.php"
user_agent = "Mozilla/5.0 (X11; Linux armv7l) AppleWebKit/537.4 (KHTML, lik Gecko) Chrome/22.0.1229.94 Safari / 537.4 "
headers = {"User-Agent": user_agent}
data=urllib.URLEncode(query_args)
begäran = urllib2. Request(URL,data,headers)
Request.add_header ("Referer", "http://localhost/web/")
Response=urllib2.urlopen(Request).Read()

#Main programkod
försök:
rfid.setOnAttachHandler(rfidAttached)
rfid.setOnDetachHandler(rfidDetached)
rfid.setOnErrorhandler(rfidError)
rfid.setOnOutputChangeHandler(rfidOutputChanged)
rfid.setOnTagHandler(rfidTagGained)
rfid.setOnTagLostHandler(rfidTagLost)
utom PhidgetException som e:
skriva ut ("Phidget undantag % i: %s" % (e.code, e.details))
Print("Exiting...")
Exit(1)

skriva ut ("öppning phidget objekt...")

försök:
rfid.openPhidget()
utom PhidgetException som e:
skriva ut ("Phidget undantag % i: %s" % (e.code, e.details))
Print("Exiting...")
Exit(1)

skriva ut ("väntar på Bifoga...")

försök:
rfid.waitForAttach(10000)
utom PhidgetException som e:
skriva ut ("Phidget undantag % i: %s" % (e.code, e.details))
försök:
rfid.closePhidget()
utom PhidgetException som e:
skriva ut ("Phidget undantag % i: %s" % (e.code, e.details))
Print("Exiting...")
Exit(1)
Print("Exiting...")
Exit(1)
annat:
displayDeviceInfo()

skriva ut ("vrida på RFID-antennen...")
rfid.setAntennaOn(True)

skriva ut ("Tryck Enter för att avsluta...")

Chr = sys.stdin.read(1)

försök:
lastTag = rfid.getLastTag()
skriva ut ("sista Tag: %s" % (lastTag))
utom PhidgetException som e:
skriva ut ("Phidget undantag % i: %s" % (e.code, e.details))

Print("Closing...")

försök:
rfid.closePhidget()
utom PhidgetException som e:
skriva ut ("Phidget undantag % i: %s" % (e.code, e.details))
Print("Exiting...")
Exit(1)

Print("Done.")
Exit(0)

Kör skriptet

sudo python /home/pi/rfid.py

RFID-läsare parkeras, om närmar sig en tagg bildskärmen visar ett välkomstmeddelande.

Samtidigt spara skriptet en ny rad i attendance.txt.

En variabel lagrar statligt av taggen och närmar sig tillbaka samma tagg visas ett meddelande av hälsning till utgången

Se Steg
Relaterade Ämnen

Vattenmelon och fetaost sallad med hallon och körvel vinägrett

Idag kommer vi att göra en vattenmelon och fetaost sallad med körvel och hallon vinägrett. Där kommer att lära dig hur man skalar en vattenmelon, rosta några mandlar, göra vissa gurka ringar, gör en vinägrett och sedan slutligen plattan det upp. Varj...

Närvaro system med Raspberry Pi och NFC Tag reader

med min nya leksak Raspberry pi jag har gjort flera tester-projekt frånInstructables, adafruit etc. Men efter ett tag blev det tråkigt och jag har börjat letar efter något faktiskt bra för mig. Min tidigare lekplats var min nya telefon flera veckor s...

Hem Automation hallon och Phidgets del 3

Detta är den tredje artikeln i Home automation med Phidgets och hallon.I tidigare artiklar såg vi hur du interagerar med den digitala utgångar och digitala ingångar.Nu ska vi se hur man läser värdena för vissa sensorer direkt på din smartphone eller...

Summern system med LabVIEW och MyRIO-1900

Detta Instructable handlar om att göra en Summer system med NI MyRIO-1900Pre-projektanteckningar:För en frågesport konkurrens, kommer att snabbast och det rätta svaret betraktas, som inte är möjligt manuellt för frågesport befälhavaren att välja vilk...

Hem Automation hallon och Phidgets

Vi använde tidigare tutorials Raspberry Pi att köra Phidgets InterfaceKit. Vi har också lagt upp en webbserver på hallon.I den här guiden kommer vi att använda lyckades den information som samlades för att skapa ett hem automationssystem med ett webb...

Hem Automation hallon och Phidgets del 2

I den tidigare handledning såg vi hur du kan driva de digitala utgångarna för Phidgets 1018distans, i denna tutorial kommer att i stället vi kontrollera status för de digitala ingångar, som kan anslutas till magnetiska kontakter, tryckknappar, växlar...

Styra din Tv, Dvd och ljud system med Arduino och Android

Hej alla, detta är min andra instructable och min första på engelska, så, ledsen för misstag.Jag vill dela detta projekt det handlar om hur du kan styra din Tv, DVD och ljudanläggningen med Arduino och en app för Android med app inventor.Om du gillar...

Rosta kaffe med hantverkare och Phidgets

I denna tutorial får vi se hur du konfigurerar hantverkare för att ansluta Phidgets 1048. Det är inte en uttömmande handledning av alla funktioner av hantverkare, för dem som vill lära dig det finns många guider finns på Artisan hemsida."Hantverkare...

Inomhus Security System med RFID och Status Display av LCD med hjälp av Arduino Micrcontroller

Det är en Inomhus Security System som automatiserar dörren öppna/stäng rörelse. Användarautentiseringen är gjort med hjälp av smarta RFID -kort som kommer att autentisera och auktorisera användaren att skriva in in i lokalerna genom att öppna och stä...

Hem säkerhet System med RFID och Reed Switch kontrolleras med hjälp av Arduino Microcontroller

Detta projekt har genomfört två lager säkerhetsarkitektur med mikro-controller. Primär/första lager av säkerhet kommer att genomföra användaren autentiseringssystem med smarta RFID-kort. Listan över auktoriserade RFID kommer att hållas som en databas...

Ball Targeting System med positiv Feedback

instruktioner för att göra en bärbar variabel effekt boll targeting system med ljus och ljud återkopplingProblemformuleringenSkapa mål skapades specifikt för en anpassad gymnastiklärare, Mr David Martinez och hans studenter. Målet behövs för att kunn...

Mugg musik: Förvandla vatten till ett Instrument med Arduino och ChucK

Vad händer om du slå alla ledande yta till ett instrument? Gillar, säga... en mugg vatten? Bäst av allt, är det billigt; du behöver bara $1 värt extra elektriska komponenter (inte inklusive Arduino).För detta projekt, min vän skörd och jag kombinerad...

Enkla animatörerna med servon och Arduino

servon är förvånansvärt enkel att använda. Ännu mer så än enkel DC-motorer och steppers när du har en mikrokontroller. I detta instructable vi använder en "duino att köra fem servon som kommer att kontrollera en docka armar och nacke.Jag köpte servon...

Raspberry Pi och Arduino: bygga tillförlitliga system med WatchDog timer

Sammanfattning: I detta Instructable titta vi på hur man bygger mer tillförlitliga datorsystem med WatchDog timer. Vi visar hur du ställer in och använder Raspberry Pi och Arduino inre watchdog timer. Vi förklarar också varför en extern WatchDog Time...

Systemövervakaren med Arduino och 7 segment display

Nyligen jag fick en ny dator och började spela TV-spel. Jag gillar att övervaka min system samtidigt ha spel full-skärm: Jag vill se min GPU temperatur och min belopp används ram (Minecraft FTB äter en massa, som 3-6 GB!).Jag hade en bärgade 7-segmen...

Övervakning och vattning system med evive (Arduino powered embedded plattform)

Övervakning växtskydd är mycket viktigt för deras snabba tillväxt. I denna hektisk värld glömmer människor oftast att vattna sina växter som leder till dålig tillväxt och hälsa för sina anläggningar.Vi har genomfört en växt övervakning och vattning s...

Dagis övervakning och spårning System med Intel Edison Development Kit

Vi har byggt ett dagis övervakning och spårning system med Intel Edison styrelsen tillsammans med Bluetooth låg energi (BLE) enheter och en USB-kamera. Det är en demonstration av hur lätt Intel Edison DevKit kan användas för att bygga en lösning till...

DIY Smart rummet ljust System med PIR rörelsesensor och Arduino

Hej vänner, dagens ämne är smarta rum ljus system och hur PIR rörelsesensor känner av rörelse och arbete därefter. Jag ska berätta för er om projektet där du lär dig hur du kan auto turn-on rummets ljus när någon kommer in i rummet. Det börjar funger...

Fontän med ljud och ljus system (Letourneau EPM-projektet)

Hej, mitt namn är Namkyoung Lee.Vårt team gjorde en fontän med ljud och ljus system.Det är en del av LeTourneau university EPM lab projekt.Denna fontän drivs av fristående batteri och har 2 arduino unos; en är för ljus systemet och den andra för vatt...