´ SISTEMA DE CONTROLE DE ACESSO AO LABORAT ORIO DE SISTEMAS ´ CIBERNETICOS UTILIZANDO RFID E APLICATIVO PARA CELULAR ´ Gabriel Hugo Alvares , Pedro Henrique Galdino Silva , Eduardo Bento Pereira ∗
∗
∗
GCOM - Grupo de Controle e Modelagem Departamento de Engenharia El´ etrica etrica UFSJ - Universidade Federal de S˜ ao Jo˜ ao del-Rei P¸ ca. ca. Frei rei Orlando, Orlando, 170 - Centro Centro - 36307-352 36307-352 - S˜ ao Jo˜ ao del-Rei, MG, Brasil ∗
[email protected],
[email protected],
[email protected] Emails:
[email protected],
Abstract— In this paper, paper, the concept concept of Inter Internet net of Things Things is applie applied d in the develo developme pment nt of a system system to control control the access access of students to a universit university’s y’s laboratory through radio frequency frequency card transmiters. transmiters. The system can be managed managed in real time through a cellphone cellphone application, application, which communicat communicates es with the physical physical system through through a cloud database. database. Details Details on the developmen developmentt of the project and the results results are presente presented. d. Keywords—
RFID, Access control, control, Internet of Things, Things, Automation
Resumo— Neste trabalho, trabalho, o conceito conceito de Internet Internet das Coisas ´ e aplicado aplicado no desenvolv desenvolvimen imento to de um sistema sistema de controle controle de acessos acessos de alunos alunos a um laborat´ laborat´ orio orio da universida universidade de atrav´ atrav´ es es de cart˜ oes transmissores transmissores de r´ adio adio frequˆ encia. encia. O sistema desenvolvido p ode ser gerenciado em tempo real atrav´ es es de aplicativo para celular, que se comunica com o sistema f´ısico ısico atrav´ es es de um banco de dados na nuvem. Detalhes do desenvolvimento desenvolvimento do projeto e os resultados obtidos s˜ ao ao apresentados. Palavras-chave—
1
RFID, Controle Controle de Acesso, Internet Internet das Coisas, Automa¸ Automac˜ c¸ao a ˜o
Intr Introd odu¸ u¸ c˜ cao a ˜o
De maneira geral, ambientes restritos necessitam de um sistem sistemaa que control controlee e gerenc gerencie ie os acesacessos. Tal controle controle pode ser feito de v´arias arias formas, desde as simples sim ples e tradicionais tradici onais chaves at´e sistemas sist emas computadori computadorizados zados que utilizam utilizam as mais diferentes t´ecnicas ecnicas e linguagens lin guagens de programa¸ pro grama¸c˜ cao, a˜o, e ainda uma gama imensa de dispositivos de identifica¸c˜ caao ˜o e hardwares que fazem a interface entre estes dispositivos e o sistema de gerenciamento. gerenciamento. Al´ em em de tornar mais r´apido apido e pr´atico atico o acesso ao ambiente, tais sistemas contribuem para aperfei¸coamento coamento da seguran¸ca. ca. Neste trabalho, o problema proposto foi desenvolver um sistema de controle de acesso para o Laborat´orio orio de Sistemas Cibern´eticos, eticos, utilizando a tecnologia RFID como identifica¸c˜ cao a˜o do usu´ario ario e a placa Raspberry Pi B+ para o gerenciamento de permiss˜oes oes e conex˜ao ao com um banco de dados na nuvem contendo as informa¸c˜ c˜oes oes de acesso acesso.. Para Para complementar o sistema, foi desenvolvido um aplicativo para celular para uso do respons´avel avel pelo laborat´orio. orio. Tal aplicativo aplicativo possib p ossibilita ilita a libera¸ c˜ caao ˜o e bloqueio de usu´arios arios autorizados a utilizar o laborat´orio orio em tempo real, al´em em de gerar, tamb´em em em tempo real, um hist´ orico de acessos, contendo orico o nome do usu´ario, ario, a data e a hora que ele acessou o laborat´orio. orio. O presente artigo est´a organizado da seguinte maneir maneira. a. Na Se¸ Se¸c˜ cao ˜ao 2, os conceitos b´asicos asicos para entendimento do tema abortado s˜ ao ao apresentados. A seguir, todo o procedimento adotado para o desenvolvimento senvolvimento do trabalho ´e detalhado na Se¸c˜ caao ˜o 3. Na Se¸c˜ cao a˜o 4, s˜ao ao apresentados os resultados al-
can¸cados, cados, bem como as respectivas an´alises alises e discuss˜ oes. Finalmente, as considera¸c˜ oes. coes o˜es finais sobre o trabalho e perspectivas de trabalhos futuros s˜aaoo abordadas na Se¸c˜ c˜ao ao 5. 2
Concei Conceitos tos Prelimi Preliminar nares es
O conceito con ceito de Internet Inte rnet das d as Coisas Coi sas ´e relativamente rela tivamente novo e tem grande potencial de crescimento nos pr´oximos oximos anos, anos, devido devido aos avan¸ avan¸ cos cos tecnol´ tecnol´ ogicos ogicos significativos que a humanidade vem experienciando recentemente. O conceito em si trata da possibilidade de conex˜ao ao dos mais variados objetos `a Internet, afim de compartilhar informa¸c˜ coes o˜es e coordenar tarefas, trabalhando como um grande sistema inteligente. Sistemas como estes est˜ao ao sendo aplicados em dom´otica, otica, na ind´ ustria, ustria, agricultura, pecu´aria, aria, no com´ ercio ercio e em diversos outros setores. Um sistema de controle de acesso deve ser capaz de aceitar ou n˜ao ao o acesso de determinado usu´ario ario ao ambiente, e de forma segura guardar as informa¸c˜ coes ˜oes desse usu´ario, ario, al´ em em de ser capaz de gerar dados com os hist´oricos oricos de acesso. Para Para efetuar efetuar sua fun¸c˜ cao ˜ao de forma constante e segura segu ra ´e necess´ nece ss´ario ario que o sistema conte com uma centra centrall de control controle. e. Esta Esta centra centrall pode ser, por exemplo, um microcontrolador, ou um computador. dor. A escolh escolhaa desta desta central central vai vai de acordo acordo com o volume de dados a ser processados, os recursos financeiros dispon disp on´´ıveis para o projeto e ao espa¸co co f´ısic ıs icoo disp di spon´ on´ıvel ıve l para pa ra imp i mpla lanta nta¸c˜ c¸ao. a˜o. No projeto discutido foi escolhida a placa Raspberry Pi model B devido a sua capacidade de processamento, baixo custo e pequeno pe queno tamanho. tama nho. Al´em em disso, a placa p laca ofe-
rece outras funcionalidades, como conex˜ao ethernet nativa, cart˜ao de mem´oria SD e GPIOs. O dispositivo utilizado para identifica¸ca˜ o do usu´ ario ´e conhecido como cart˜ao RFID (do inglˆes, Radio Frequency Identification) e consiste em um cart˜ao transmissor que emite uma identifica¸ca˜o por r´ adio frequˆencia. Cada cart˜ a o possui um c´odigo u ´nico. Ainda ´e importante definir o conceito de banco de dados em nuvem, que nada mais ´e do que um conjunto de informa¸co˜es salvas em uma p´ agina na internet, que podem ser acessadas remotamente atrav´ es de dispositivos que possuam conex˜ ao `a rede mundial de computadores. Neste projeto, o Raspberry Pi e o aplicativo desenvolvido para Android ir˜ a o enviar e receber informa¸c˜oes do bando de dados. Por fim, ´e necess´ario apresentar o conceito do bloco TinyWebDB, que ´e um bloco dispon´ıvel dentro da plataforma App Inventor, utilizada para desenvolver o aplicativo. Este bloco ´e o respons´avel por se comunicar com o banco de dados. Para isso, utiliza o link do banco de dados e identificadores (tags) para identificar as informa¸co˜es que deve acessar. 3
Figura 1: Diagrama de blocos.
Metodologia
O primeiro passo para a realiza¸ca˜o do projeto, anterior `a execu¸ca˜o, consiste no planejamento do sistema. Portanto, foram tra¸cados o diagrama de blocos, que apresenta uma liga¸c˜ao simplificada de todos os componentes utilizados, e o fluxograma do c´odigo, qu apresenta uma sequˆ encia l´ogica da programa¸c˜ao utilizada, mostrados nas Figuras 1 e 2, respectivamente. Esta primeira etapa foi de suma importˆ ancia para o bom andamento do pro jeto, uma vez que proporcionou uma boa vis˜ ao do que seria feito e ajudou a definir um cronograma de atividades e listar quais componentes seriam necess´ arios para a execu¸ca˜o. Definidos os componentes a serem utilizados, foi poss´ıvel tra¸car o modo de funcionamento de cada um deles, as especifica¸c˜oes mais relevantes foram levadas em considera¸c˜ao, como por exemplo: •
Tens˜ao de entrada;
•
Corrente de trabalho;
•
Protocolo de comunica¸c˜ao.
A cria¸c˜a o do fluxograma foi importante tamb´em para definir a estrat´egia de programa¸ca˜o que seria utilizada, assim, depois de configurar corretamente a placa Raspberry de acordo com instru¸co˜es retiradas de (Upton, 2016), foi poss´ıvel iniciar o trabalho de aprender os conceitos b´asicos da linguagem de programa¸ca˜o Python, que ´e a linguagem mais utilizada em conjunto com a placa.
Figura 2: Fluxograma.
Para o aprendizado da linguagem Python foram utilizadas as instru¸c˜o es de (Menezes, 2014). A
placa Raspberry Pi tem como sistema operacional uma distribui¸c˜ao Linux , para o projeto a vers˜ao escolhida foi a Raspbian, disponibilizada pela fabricante da placa. Paralelamente `a cria¸c˜ao dos algoritmos para controle dos acessos no Raspberry, foi sendo feito o aplicativo na plataforma MIT AppInventor, que ´e um ambiente online caracterizado pela facilidade de uso. Para o desenvolvimento do aplicativo, foi utilizado como referˆencia e fonte de informa¸c˜oes o trabalho de(Wolber, 2014). No que diz respeito ao banco de dados, foi utilizado um tutorial (dispon´ıvel no Anexo C), afim de criar um servidor web que pudesse se comunicar facilmente com o aplicativo desenvolvido atrav´ es do bloco TinyWebDB dispon´ıvel no App Inventor. Com o banco de dados funcionando, foi implementado no c´odigo python uma rotina para acess´a-lo e enviar e receber informa¸co˜es. O banco de dados ´e formado basicamente por cinco identificadores (tags), cada um contendo uma lista com as seguintes informa¸co˜es: nome dos usu´ arios cadastrados, c´odigo do cart˜ao RFID de cada usu´a rio, data de acesso, hora do acesso e nome do usu´ ario que acessou o laborat´o rio. De posse dos identificados, tanto o aplicativo quanto o Raspberry podem acessar o banco de dados e enviar e receber as listas. O aplicativo ´e respons´avel por salvar no banco de dados a lista de usu´ arios e seus respectivos c´odigos RFID, al´em de ler os nomes dos usu´arios que acessaram o laborat´orio, com as respectivas datas e horas. J´a o Raspberry deve realizar o processo inverso, lendo a lista de usu´arios e c´odigos RFID e salvando data, hora e nome de usu´ario quando o acesso ao laborat´orio for autorizado. No Raspberry, foi necess´ario desenvolver um algoritmo em Python capaz de ler a informa¸c˜ao do leitor RFID, e verificar no banco dados se o c´odigo recebido ´e autorizado, acionando ou n˜ao o rel´e que ativa a fechadura el´etrica, e gravando o acesso no banco de dados. Por quest˜oes de seguran¸ca, para o caso de n˜ao haver conex˜ao Ethernet as listas contidas no banco de dados tamb´em foram salvas na mem´ oria da placa, sendo sincronizadas com a nuvem periodicamente. A medida que o aplicativo e o algoritmo foram evoluindo, foi sendo constru´ıdo o prot´ otipo do projeto. O objetivo do prot´ otipo ´e simular as condi¸c˜oes de uma porta com fechadura el´etrica. Os componentes presentes s˜ao: •
Raspberry Pi;
•
Receptor RFID;
•
Circuito eletrˆonico para acionar a fechadura;
•
Rel´e;
•
Fechadura el´etrica.
O circuito eletrˆonico foi necess´ario pelo fato de as portas de entrada e sa´ıda (GPIOs) do Raspberry n˜ao fornecerem corrente suficiente para acionar o rel´e, que por sua vez permite a passagem de corrente para a fechadura el´etrica quando um cart˜ao autorizado ´e detectado pelo sensor RFID. O circuito utilizado pode ser visualizado na Figura 3.
Figura 3: Circuito de acionamento do rel´ e. Todos os componentes f´ısicos do projeto foram devidamente acondicionados dentro de uma caixa acr´ılica refrigerada, tamb´em confeccionada pelos alunos, como mostrado na figura 9. A refrigera¸ca˜o foi feita atrav´es de um pequeno ventilador de 12V proveniente de material recicl´avel. 4
An´ alise dos Resultados
O prot´ otipo desenvolvido pode ser observado na Figura 8. Trata-se uma janela de madeira, com a fechadura el´ etrica instalada e de uma caixa de acr´ılico contendo os componentes eletrˆonicos. Quatro exemplos de telas do aplicativo podem ser vistos nas Figuras 4, 7, 5 e 6. Elas mostram, respectivamente, a tela de op¸co˜es do aplicativo, a tela de cadastro de novo usu´ario do sistema, a tela que apresenta o hist´orico de acessos dos usu´arios, com as datas e horas e a tela de usu´arios cadastrados. Durante os testes realizados, foi observado que, ao se aproximar um cart˜ ao cadastrado do sensor RFID, o sistema era capaz de reconhecˆ elo e acionar a fechadura el´ etrica por cerca de 1 segundo. No mesmo instante, os dados eram enviados ao servidor e podiam ser visualizados no aplicativo. Quando um novo usu´ario ´e cadastrado, deve-se esperar cerca de 10 segundos para que o mesmo seja reconhecido pelo sistema, uma vez que essa ´e a periodicidade com que o Raspberry acessa o banco de dados. Ao ser conectado `a fonte de energia, deve-se esperar 30 segundos ap´os `a completa inicializa¸ca˜o da placa (indicada pelos LEDs presentes) para que o sistema esteja ativo e funcionando. Este tempo foi configurado para que o Raspberry tenha tempo suficiente para iniciar todos os m´odulos, inclusive a conex˜ao Ethernet.
Figura 4: Tela de op¸co˜es do aplicativo.
Figura 6: Lista de usu´arios cadastrados.
Figura 5: Hist´orico de acessos.
Figura 7: Gerenciamento de usu´arios.
O aplicativo tamb´ em atendeu a`s expectativas, possibilitando o cadastro de novos usu´arios e tamb´em a exclus˜ao e/ou modifica¸ca˜o de usu´arios existentes como mostrado na figura 7.
forma, no caso hipot´ etico em que um usu´ ario perca seu cart˜ao, o sistema n˜ao ficaria vulner´avel at´ e que o administrador seja avisado para bloquear o acesso do cart˜ao. Conclui-se ainda que o trabalho possibilitou grande aprendizado aos alunos em conceitos importantes na evolu¸ca˜o tecnol´ogica que se vive atualmente, como a manipula¸ c˜ao de determinados componentes eletrˆonicos, como a placa de prototipagem Raspberry Pi, al´em de conhecimentos de software, como o sistema operacional Linux, utilizado no Raspberry, a linguagem de programa¸ca˜o Python, quest˜ oes relacionadas `a transmiss˜a o de dados e gerenciamento de banco de dados, al´em do desenvolvimento de aplicativo para celular. Podese ainda citar o aprendizado, na pr´atica, das habilidades necess´arias para conectar todos os elementos citados, que envolvem v´arias ´areas do conhecimento. Agradecimentos
Figura 8: Prot´otipo.
Os autores agradecem ao grupo Cyros e ao professor Eduardo pelo suporte e por disponibilizar os componentes necess´arios para realiza¸c˜ao deste trabalho. Referˆ encias
Menezes, N. N. C. (2014). Introdu¸c˜ ao a ` Programa¸ c˜ ao com Python , Novatec. 2 edition. a
Upton, E. (2016). Raspberry Pi User Guide , John Wiley Sons. 4 edition. a
Figura 9: Caixa contendo a Raspberry e o leitor.
5
Conclus˜ ao
Ao final deste trabalho, pode-se concluir que o projeto atingiu os objetivos propostos, conseguindo fazer a identifica¸c˜a o de cada usu´ ario atrav´ es de seu cart˜ a o RFID e interagir com o banco de dados e o aplicativo. Foi poss´ıvel desenvolver um sistema pr´ a tico e funcional, capaz gerenciar e monitorar os acessos, de forma econˆ omica e simples. Vale ressaltar que o sistema pode ser aplicado em outros ambientes al´em do abordado neste texto, como, por exemplo, ind´ ustrias, com´ercios e at´e mesmo residˆencias e condom´ınios residenciais. Outras melhorias e aprimoramento ainda podem ser feitas ao projeto, como a eleva¸ca˜o do n´ıvel de seguran¸ca do acesso acrescentando outro m´etodo de identifica¸ca˜o, como por exemplo senhas num´ericas ou alfanum´ericas atrav´es de teclados ou membranas conectadas ao Raspberry. Dessa
Wolber, David, E. a. (2014). App Inventor 2: Create Your Own Android Apps , O’Reilly Media. 2 edition. a
[ Anexo A - Algoritmo em Python % % % % %
Rotina Computacional Desenvolvida. ´lvares Autores: Gabriel Hugo A Pedro Henrique Galdino Silva Data: 13/07/2017 Vers~ ao: 1.0
#Importando bibliotecas necessarias import serial # biblioteca para usar a porta serial import difflib # biblioteca para comparar duas strings import RPi.GPIO as GPIO # biblioteca utilizada para os pinos import time #biblioteca para contagem do tempo de acionamento do rele import requests #biblioteca para acessar o banco de dados import json #manipular arquivos no formato json (banco de dados) import threading # biblioteca usada com o time para funcao import ast #biblioteca para converter string to list import datetime #biblioteca de data #Acessando o banco de dados def server(): #Lendo o banco de dados RFID data_rfid={"tag":"rfid"} url_rfid=requests.post(’http://iot-lab-access.appspot.com/getvalu e’, data_rfid) x_rfid = json.loads(url_rfid.text) y_rfid = json.loads(x_rfid[2]) lista = str(y_rfid) #Salvando o banco de dados RFID no raspberry arquivo_rfid="arquivo_rfid.text" file = open(arquivo_rfid,"w") file.write(lista) file.close() file = open(arquivo_rfid,"r") global rfid rfid=file.readline() file.close() global rfid1 rfid1=ast.literal_eval(rfid) #Lendo o banco de dados USUARIO data_usuario={"tag":"usuario"} url_usuario=requests.post(’http://iot-lab-access.appspot.com/getvalue’ , data_usuario) print url_usuario.text x_usuario = str(url_usuario.text) y_usuario = ast.literal_eval(x_usuario) lista = ast.literal_eval(y_usuario[2]) lista1=str(lista) #Salvando o banco de dados USUARIO no raspberry arquivo_usuario="arquivo_usuario.text" file = open(arquivo_usuario,"w") file.write(lista1) file.close() file = open(arquivo_usuario,"r") usuario=file.readline() file.close() global usuario1 usuario1=ast.literal_eval(usuario) #print usuario1 #print usuario1[2] threading.Timer(10, server).start() server()
#Definindo as configuracoes das GPIOs GPIO.setmode(GPIO.BOARD) GPIO.setup(12, GPIO.OUT) #Iniciando a comunicacaoo serial serial = serial.Serial("/dev/ttyUSB0", baudrate=9600) #Mesangem inicial print(’Aproxime a tag do leitor RFID’) code = ’’ #Contador utilziado para comparas os codigos das TAGs counter=0 #O while faz a leitura da porta serial quando ha presenca da TAG no sensor while True: data = serial.read() if data == ’\r’: counter = counter + 1 if counter == 1: code = code[:0] + else: code = code[:0] + code = code[:0] + code = code[:0] +
code[(1):] code[(1):] code[(1):] code[(1):]
print(code) #Parte do codigo utilizada para comparar strings --------------------------# cases=[(rfid,code)] # for a,b in cases: # print(’{} => {}’.format(a,b)) # for i,s in enumerate(difflib.ndiff(a, b)): # if s[0]==’ ’: continue # elif s[0]==’-’: # print(u’Delete "{}" from position {}’.format(s[-1],i)) # elif s[0]==’+’: # print(u’Add "{}" to position {}’.format(s[-1],i)) # print() #Fim da parte utilizada para comparar strings -----------------------------if code in rfid1: print(’Cartao liberado’) #Abre a fechadura GPIO.output(12,GPIO.HIGH) time.sleep(1) GPIO.output(12,GPIO.LOW) #Enviando Usuario, Data e Hora para o servidor #Salvando o usuario que acessou a porta posicao_usuario=rfid1.index(code) arquivo_hist_usuario="arquivo_hist_usuario.text" file_hist_usuario = open(arquivo_hist_usuario,"r") hist_usuario = file_hist_usuario.readline() file_hist_usuario.close() if hist_usuario == ’’: hist_usuario1=[usuario1[posicao_usuario]] hist_usuario=str(hist_usuario1) else:
hist_usuario1 = ast.literal_eval(hist_usuario) hist_usuario1.append(usuario1[posicao_usuario]) hist_usuario=str(hist_usuario1) file_hist_usuario = open(arquivo_hist_usuario,"w")
file_hist_usuario.write(hist_usuario) file_hist_usuario.close() data_hist={"tag":"hist_usuario","value":hist_usuario} r = requests.post(’http://iot-lab-access.appspot.com/storeavalue’,data_hist)
#Salvando a hora de acesso no banco de dados arquivo_hora="arquivo_hora.text" file_hora= open(arquivo_hora,"r") hora = file_hora.readline() file_hora.close() hour=datetime.datetime.now().strftime("%H:%M") if hora == ’’: hora1=[hour] horas=str(hora1) else:
hora1 = ast.literal_eval(hora) hora1.append(hour) horas=str(hora1) file_hora = open(arquivo_hora,"w") file_hora.write(horas) file_hora.close()
data_hora={"tag":"hora","value":horas} r = requests.post(’http://iot-lab-access.appspot.com/storeavalue’,data_hora)
#Salvando a data de acesso no banco de dados arquivo_data="arquivo_data.text" file_data= open(arquivo_data,"r") data = file_data.readline() file_data.close() date=datetime.datetime.now().strftime("%d-%m-%y") if data == ’’: data1=[date] datas=str(data1) else:
data1 = ast.literal_eval(data) data1.append(date) datas=str(data1) file_data = open(arquivo_data,"w") file_data.write(datas) file_data.close() data_data={"tag":"data","value":datas} r = requests.post(’http://iot-lab-access.appspot.com/storeavalue’,data_data)
else: print(’Acesso negado’) code = ’’ else: code = code + data #Fim do algoritmo
]
6
Anexo B - Lista de materiais
Tabela 1: Lista de Materiais Item Raspberry Pi B+ Cart˜ ao SD de 32G Rel´e 5V Fechadura eletrˆonica Kit RFID ID-12LA Resistor 1/8 W Transistor bipolar BC337 Opto acoplador PC817B Diodo 1N4148 Cooler 12 V Fonte 5V Fonte 12V
Quantidade 01 01 01 01 01 03 02 01 01 01 01 01 Total
Pre¸co R$ 140,00 R$ 89,00 R$ 3,90 R$ 139,00 R$ 357,00 R$ 0,24 R$ 0,22 R$ 0,30 R$ 0,07 R$ 20,00 R$ 34,00 R$ 20,00 R$ 800,00
Anexo C - Tutorias utilizados e n˜ ao citados no artigo https://www.raspberrypi.org/learning/getting-started-with-node-red/worksheet/ https://www.raspberrypi.org/learning/physical-computing-with-python/analogue/ https://www.raspberrypi.org/learning/python-web-server-with-flask/ https://www.raspberrypi.org/learning/networking-lessons/lesson-3/plan/ https://www.raspberrypi.org/learning/lamp-web-server-with-wordpress/worksheet/ https://www.raspberrypi.org/learning/demo-programs/worksheet/ https://www.youtube.com/watch?v=tZPWXnMdIRU https://raspberrypi.stackexchange.com/questions/37920/how-do-i-set-up-networking-wifi-static-ip-address/37921#37921 http://wiringpi.com/the-gpio-utility/pin-test/ https://www.raspberrypi.org/forums/viewtopic.php?f=37&t=147291 https://www.raspberrypi.org/documentation/remote-access/ssh/windows.md https://raspberrypi.stackexchange.com/questions/1303/do-ssh-failing-in-initial-setup http://ask.xmodulo.com/disable-desktop-gui-raspberry-pi.html http://cadernodelaboratorio.com.br/2015/06/10/inicializando-um-programa-automaticamente-no-raspberrypi/ http://wiki.sunfounder.cc/index.php?title=How_to_Use_an_RFID_RC522_on_Raspberry_Pi http://raspmer.blogspot.com.br/2015/07/how-to-use-rfid-rc522-on-raspbian.html https://www.raspberrypi.org/forums/viewtopic.php?f=37&t=147291 https://www.tutorialspoint.com/python/python_quick_guide.htm http://bradsrpi.blogspot.com.br/2013/01/rfid-with-innovations-id12-rfid-reader.html http://makezine.com/projects/tutorial-raspberry-pi-gpio-pins-and-python/ http://elinux.org/RPi_GPIO_Interface_Circuits https://sourceforge.net/p/raspberry-gpio-python/wiki/Outputs/ https://pypi.python.org/pypi/RPi.GPIO
https://www.youtube.com/watch?v=b6ZagKRnRdM https://www.youtube.com/watch?v=qawFgeJldAQ http://appinventor.mit.edu/explore/content/custom-tinywebdb-service.html https://www.raspberrypi.org/forums/viewtopic.php?f=32&t=24121&p=234826 http://www.instructables.com/id/Reading-JSON-With-Raspberry-Pi/ http://kio4.com/appinventori/8file_database.htm http://appinventor.pevest.com/?p=914 https://stackoverflow.com/questions/17309288/importerror-no-module-named-requests http://www.thegeekstuff.com/2013/06/python-list/?utm_source=feedly http://www.pythonforbeginners.com/basics/python-datetime-time-examples https://stackoverflow.com/questions/8600161/executing-periodic-actions-in-python https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=122220&p=824154 http://www.pythonforbeginners.com/requests/using-requests-in-python https://iot-lab-access.appspot.com/getvalue http://blog.evaldojunior.com.br/aulas/python/2009/02/08/curso-de-python-aula-12.html