Escolar Documentos
Profissional Documentos
Cultura Documentos
MINISTÉRIO DA EDUCAÇÃO
INSTITUTO DE TELECOMUNICAÇÕES
Luanda
1
MARÇO 2021
2
[Álvaro Sóstenes Bernardo Muondo, Nº 12212]
___________________________
Luanda
MARÇO 2021
3
FOLHA DE APROVAÇÃO
Presidente do Júri:
__________________________________________________________
1ºPresidente. Vogal:
__________________________________________________________
2ºPresidente. Vogal:
__________________________________________________________
4
Agradecimentos
5
Resumo
6
Lista de Abreviaturas e Siglas
IR InfraRed
7
Índice de Figuras e tabelas
8
Sumário
1. Introdução ................................................................................................................................... 10
1.1. Problemática ........................................................................................................................... 10
1.2. Justificativa .............................................................................................................................. 10
1.3. Metodologia ............................................................................................................................ 10
1.4. Objectivos................................................................................................................................ 11
1.4.1. Objectivo geral ................................................................................................................ 11
1.4.2. Objectivos específicos ..................................................................................................... 11
2. Definições e conceitos................................................................................................................. 12
2.1. Sensores .............................................................................................................................. 12
2.1.1. Sensor de Distância Ultrassónico HC-SR04 ................................................................ 12
2.1.2. Sensor de Obstáculo Infravermelho IR ...................................................................... 13
2.1.3 Sensor de Temperatura GY-906 ........................................................................................ 13
2.2. Módulo RFID MFRC522................................................................................................... 14
2.3. Arduíno ................................................................................................................................ 15
2.3.1. Linguagem de programação para Arduíno. ............................................................... 15
3. Estudo de Caso ............................................................................................................................ 16
3.1. Diagrama de bloco .................................................................................................................. 16
3.2. Resultados e Discussões .......................................................................................................... 17
4. Conclusão .................................................................................................................................... 20
5. Referências bibliográficas ........................................................................................................... 21
5.1. Código fonte do Arduíno ..................................................................................................... 22
9
1. Introdução
1.1.Problemática
1.2.Justificativa
1.3. Metodologia
Na primeira parte, começamos por fazer uma visita de campo em algumas instituições para
averiguar como é que as medidas de segurança são implementadas.
10
Na terceira parte, efetuamos a aquisição de todos os materiais necessários como o Arduino e
sensores, verificando o seu funcionamento limitações, capacidade de interação entre todos os
equipamentos e definindo o melhor método para tal.
Por último são feitas algumas análises a respeito da operação do sistema, bem como a
discussão de erros no projeto e alterações futuras.
1.4.Objectivos
11
2. Definições e conceitos
Nas aplicações de controlo de acesso é interessante agregar o uso da tecnologia RFID, visto
que é necessário comprovarmos a identidade do individuo em causa para que seja ou não
possível atribuir acesso ao mesmo e essa tecnologia tem a capacidade de armazenar
informações.
2.1.Sensores
Sensores são dispositivos que servem para informar um circuito electrónico a respeito de um
evento que ocorra externamente, sobre o qual ele deve actuar, ou partir do qual ele deve
comandar uma determinada acção. Esses dispositivos são sensíveis a alguma forma de energia
do ambiente que pode ser luminosa, térmica e cinética.
12
2.1.2. Sensor de Obstáculo Infravermelho IR
13
O módulo tem 3 modos básicos de operação. Pode comunicar a temperatura ou ter ajustes
configurados através do I2C. Pode comunicar a temperatura continuamente através do PWM
em que o ciclo de trabalho do sinal representa a temperatura. Pode atuar como uma chave
térmica que é alternada à uma temperatura pré-programada como em um termostato.
O Módulo RFID MFRC522 contem o CI de mesmo nome (MFRC522) em sua placa, para
estabelecer comunicação numa frequência de 13,56 MHz, permitindo a leitura e escrita sem
contato em cartões que seguem o padrão MIFARE.
14
2.3. Arduíno
O Arduíno é uma plataforma open source; seu projeto foi criado na Itália em 2005, possui um
hardware e software de fácil utilização, onde sua programação é feita por entradas e saídas, e
componentes externos chamados de Shields conectados a placa que criam extensões
possibilitando diversas aplicações desde a movimentação de um motor servo utilizado na
robótica até os sensores de temperatura, sua a conexão é feita pela porta USB que permiti
interagir com o computador (MARGOLIS, 2011).
Figura 5 - Arduíno
15
3. Estudo de Caso
3.1.Diagrama de bloco
Figura 6 - Diagrama de bloco de um sistema de Higienização das mãos com controlo de acesso
O Arduino começa por processar os sinais provenientes dos sensores e os módulos. Começa
processando o sinal do sensor de distância Ultrassónico para verificar a passagem ou não de
pessoas na entrada, caso sim aciona um alerta e apresenta num LCD uma informação para que
a pessoa meça a sua temperatura.
16
Após a leitura da temperatura, caso a mesma seja inferior a 37,5ºC habilita o módulo leitor
RFID e apresenta a informação no LCD para fazer a leitura do cartão com a mesma tecnologia.
Caso não aciona um alerta, desabilita o Leitor RFID e no LCD apresenta a informação de que
a passagem foi negada.
Consequentemente O Arduino verifica os dados do cartão ou Tag RFID passados pelo leitor,
utilizando o ID do mesmo como referência vinculativa para acessar a base de dados utilizando
uma Interface que apresenta a informação do Cartão lido.
Caso o cartão esteja registado na base de dados e uma vez que o leitor de cartões só é habilitado
quando a temperatura lida é aceitável, o Arduino envia uma informação para o primeiro Servo
motor usado como cancela e libera a passagem.
Finalmente o Arduino vai aguardar a informação do Segundo Leitor RFID que vai verificar
se a pessoa fez a higienização, ou seja, se cumpriu todos os requisitos na entrada e activou a
bomba. Caso sim o Arduino envia a informação para o segundo Servo motor e disponibiliza
a passagem. Caso não, antes verifica a causa do impedimento. Se a pessoa não activou a
bomba e tentou passar sem higienizar as mãos apresenta no LCD a informação que antes deve
higienizar as mãos. Caso a pessoa não cumpriu os requisitos da entrada e tenta passar o cartão
pelo segundo leitor para obter acesso informa pelo LCD que a pessoa deve cumprir com os
requisitos da entrada primeiro.
3.2.Resultados e Discussões
17
Figura 7 - Circuito electrónico do sistema de Higienização das mãos com controlo de acesso
Usamos também o Sensor de temperatura GY-906 por ser um módulo leitor preciso por ter
um conversor de 17 bits e um processador de sinal e não precisar de contacto para fazer a
leitura da temperatura visto que utiliza a luz Infravermelha no processo possibilitando a leitura
dentro de uma faixa de -70 a 382,2 ºC transformando essa informação Analógica em Digital
para ser processada pelo Arduino.
Durante os testes tivemos sucesso nos testes com o GY-906 medindo a temperatura corporal
utilizamos também um segundo termómetro digital para comprovar a veracidade da leitura, e
quando a leitura é superior a recomendada o sistema impede a passagem.
O Sensor de obstáculos tem uma eficácia reduzida por depender em parte da luminosidade do
ambiente. Visto que o objecto ou parte corporal que deve obstruir a luz infravermelha é a mão
18
e não se notou nenhuma dificuldade nesse quesito e cumprir com a necessidade continuamos
com o sensor nessa etapa.
19
4. Conclusão
Tivemos também êxito na parte de controlo de acesso aos alunos na instituição com o uso da
tecnologia RFID que pode na prática reduzir o custo da emissão dos cartões estudantis.
20
5. Referências bibliográficas
http://blog.moduloeletronica.com.br/cartoes-rfid-e-o-modulo-mfrc522/
https://blogmasterwalkershop.com.br/arduino/como-usar-com-arduino-kit-rfid-mfrc522
https://github.com/miguelbalboa/rfid/tree/master/doc/fritzing
https://multilogica-shop.com/modulo-sensor-de-temperatura-infravermelho-gy-906-mlx90614
https://www.casadarobotica.com/sensor-de-obstaculo-reflexivo-infravermelho-ir-arduino-pic
https://www.electrofun.pt/sensores-arduino/sensor-distancia-hc-sr04
http://suadica.com/dica.php?d=446&t=criando-caracteres-para-lcd
https://blog.eletrogate.com/guia-completo-do-display-lcd-arduino/
https://www.filipeflop.com/blog/controlando-um-lcd-16x2-com-arduino/
file:///C:/Program%20Files%20(x86)/Arduino/reference/www.arduino.cc/en/Serial/Write.html
file:///C:/Program%20Files%20(x86)/Arduino/reference/www.arduino.cc/en/Reference/SerialEvent.
html
21
Anexos
#include <Servo.h>
#include <SPI.h>
#include <MFRC522.h>
#define led 13
#define SERVO 14
#define SERVO1 15
#define Bomba 17
MFRC522::MIFARE_Key key;
byte nuidPICC[4];
constexpr uint8_t RST_PIN = 5;
constexpr uint8_t SS_1_PIN = 53;
constexpr uint8_t SS_2_PIN = 49 ;
constexpr uint8_t NR_OF_READERS = 2;
byte ssPins[] = {SS_1_PIN, SS_2_PIN};
22
MFRC522 mfrc522[NR_OF_READERS];
int readsuccess;
byte readcard[4];
char str[32] = "";
String StrUID;
int value;
23
//const int pinoSensor = 9;
};
void setup() {
24
lcd.createChar(0,c);
lcd.createChar(1,a);
lcd.begin(16, 2); // inicialização do LCD com 16 colunas e 2 linhas
Serial.begin(9600); // inicialização da
therm.begin(); //Inicializa sensor de temperatura infravermelho
therm.setUnit(TEMP_C); //Seleciona temperatura em Celsius
pinMode(Led,OUTPUT);
pinMode(Buzzer,OUTPUT);
pinMode(Bomba, OUTPUT);
pinMode(trigPin, OUTPUT); //
pinMode(echoPin, INPUT); //
pinMode(PinoIR, INPUT);
pinMode(pinIRI, INPUT);
//===== Servo
s.attach(SERVO);
s1.attach(SERVO1);
s.write(220);
s1.write(220);
pinMode(led, OUTPUT);
lcd.print("Bem Vindo ao ITEL");
digitalWrite(Led,0); digitalWrite(Buzzer,0); delay(100);
25
digitalWrite(Led,1); digitalWrite(Buzzer,1); delay(250);
digitalWrite(Led,0); digitalWrite(Buzzer,0); delay(100);
digitalWrite(Led,1); digitalWrite(Buzzer,1); delay(250);
digitalWrite(Led,0); digitalWrite(Buzzer,0); delay(100);
digitalWrite(Led,1); digitalWrite(Buzzer,1); delay(750);
digitalWrite(Led,0); digitalWrite(Buzzer,0); delay(100);
efeito=1;
t=0;
}
void loop() {
bool estadoIRI = digitalRead(pinIRI);
estado=0;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
unsigned long duracao = pulseIn(echoPin, HIGH);
int distancia = duracao / 58;
// Serial.print("Distancia em CM: ");
//Serial.println(distancia);
// delay(150);
if(efeito == 1){
lcd.scrollDisplayLeft();
delay(150);
}
if(efeito == 2){
lcd.scrollDisplayLeft();
delay(150);
}
26
if (therm.read()){
//.print("Objecto: " + String(therm.object(), 2));
//.write('°'); // Símbolo Graus
// .println("C");
}
27
efeito = 1;
lcd.clear();
lcd.print("Por Favor Me");
lcd.write(byte(0)); //caracter ç
lcd.print("a a sua Temperatura");
delay(500);
}
if (!estadoIRI){
if (x>0){
//Serial.println("1");
delay(500);
ni=i;
ir=ir-2;
digitalWrite(Bomba,HIGH);
delay(3000);
digitalWrite(Bomba,LOW);
delay(2000);
if(ir<=0){
ir=0;
}
}
if (x<=0){
lcd.clear();
lcd.print("Verifique os dados na entrada");
efeito=1;
}
if(digitalRead(PinoIR) == 0){
delay(1000);
estado=0;
efeito = 0;
28
lcd.clear(); lcd.print("Medindo. "); delay(700);
lcd.clear(); lcd.print("Medindo . "); delay(700);
lcd.clear(); lcd.print("Medindo ."); delay(850);
estado = 2;
if(estado == 2) {
efeito = 0;
lcd.clear();
lcd.print("Temp: " + String(therm.object(), 2));
lcd.print("oC");
delay(50);
lcd.clear();
lcd.print("Temp: " + String(therm.object(), 2));
lcd.print("oC");
delay(50);
lcd.clear();
lcd.print("Temp: " + String(therm.object(), 2));
lcd.print("oC");
delay(1000);
if ((therm.object(), 2) < 37){
t=1;
z=z+1;}
if(estado==4){
lcd.clear();
lcd.print("Bem Vindo ao ITEL");
efeito=1;
}
if(t==1){
29
digitalWrite(Led,1);
digitalWrite(Buzzer,1);
delay(350); digitalWrite(Led,0);
digitalWrite(Buzzer,0);
delay(150);
digitalWrite(Led,1); //
digitalWrite(Buzzer,1);
delay(350); digitalWrite(Led,0);
digitalWrite(Buzzer,0);
delay(150);
lcd.clear();
lcd.print("Passe o Seu Cart");
lcd.write(byte(1)); // Caracter ã
lcd.print("o Pelo Leitor");
efeito = 1;
estado=0;
}
if(t==2){
digitalWrite(Led,1);
digitalWrite(Buzzer,1);
delay(350); digitalWrite(Led,0);
digitalWrite(Buzzer,0);
delay(150);
digitalWrite(Led,1);
digitalWrite(Buzzer,1);
delay(350); digitalWrite(Led,0);
digitalWrite(Buzzer,0);
lcd.clear();
lcd.print("Passagem n");
lcd.write(byte(1)); // Caracter ã
lcd.print("o ");
lcd.setCursor(1,1);
lcd.print("permitida");
30
efeito = 1;
delay(3000);
lcd.clear();
lcd.print("Bem Vindo ao ITEL");
efeito=2;
estado=4;
}
}
//=============== RFID
if (mfrc522[reader].PICC_IsNewCardPresent() &&
mfrc522[reader].PICC_ReadCardSerial()) {
if(reader==1){
pe=i-ir;
if(pe>0){
limp=true;
}
if(pe<=0){
limp=false;
}
if(limp==false){
lcd.clear();
lcd.print("Higienize as m");
lcd.write(byte(1)); // Caracter ã
lcd.print("os");
efeito=1;
31
}
if (x<=0){
lcd.clear();
lcd.print("Verifique os dados na entrada");
Serial.println("Verifique os dados na entrada");
efeito=1;
}
if(limp==true){
i=i-1;
x=x-1;
if(x<0){
x=0;
}
ni=i;
lcd.clear();
lcd.print("Bem Vindo ao ITEL");
efeito=2;
s1.write(90);
delay(3000);
s1.write(220);
delay(10);
Serial.println("Bem vindo");
estado=4;
}
delay(50);
}
if(i>3){
efeito=2;
lcd.clear();
lcd.print("Muitas pessoas");
}
32
if(i<0){
efeito=2;
lcd.clear();
lcd.print("Por favor Higienize as m");
lcd.write(byte(1)); // Caracter ã
lcd.print("os");
i=0;
}
MFRC522::PICC_Type piccType =
mfrc522[reader].PICC_GetType(mfrc522[reader].uid.sak);
if (mfrc522[reader].uid.uidByte[0] != nuidPICC[0] ||
mfrc522[reader].uid.uidByte[1] != nuidPICC[1] ||
mfrc522[reader].uid.uidByte[2] != nuidPICC[2] ||
mfrc522[reader].uid.uidByte[3] != nuidPICC[3] ) {
//Serial.println(F("Novo Cartão detectado"));
n=1;
if(reader==0){
i=i+n;
}
33
// Store NUID into nuidPICC array
for (byte i = 0; i < 4; i++) {
if(z>0){
nuidPICC[i] = mfrc522[reader].uid.uidByte[i];
n=1;
}
}
printHex(mfrc522[reader].uid.uidByte, mfrc522[reader].uid.size);
Serial.println();
}
else {
Serial.println(F("Cartão já lido"));
n=0;
}
// Halt PICC
mfrc522[reader].PICC_HaltA();
if(Serial.available()>0)
{
delay(5);
while(Serial.available()>0)
34
{
value=Serial.read();
if(value=='1'){
if(z>0){
ni=i;
pe=i;
ir=ir+2;
x=x+1;
delay(50);
lcd.clear();
lcd.print("Higienize as m");
lcd.write(byte(1)); // Caracter ã
lcd.print("os");
efeito=1;
digitalWrite(led,1);
s.write(90);
delay(3000);
s.write(220);
delay(10);
digitalWrite(led,0);
estado=0;
estado=4;
z=z-1;
if(z<0){
z=0;
}
delay(1000);
}
if (z<=0){
lcd.clear();
lcd.print("Necessita medir a temperatura antes");
efeito = 1;
Serial.println("Necessita medir a temperatura antes");
}
35
}
if(value=='3'){
Serial.print("i="); Serial.print(i);
Serial.print(" | ir="); Serial.print(ir);
Serial.print(" | p="); Serial.print(pe);
Serial.print(" | n="); Serial.println(ni);
Serial.print(" | z="); Serial.println(z);
Serial.print(" | x="); Serial.println(x);
}
}
}
delay(500);
if(readsuccess){
Serial.print(StrUID);
delay(1000);
}
36