Beruflich Dokumente
Kultur Dokumente
de Física
Resumo
Este estudo apresenta um protótipo de chave elétrica controlado pelo minicomputador Raspberry Pi 3 contendo o
Raspbian como o sistema operacional instalado e os códigos fontes escritos na linguagem Python. Foram
realizados testes de confiabilidade neste protótipo e em todos eles o mesmo foi aprovado. A primeira etapa do
projeto foi finalizada com o desenvolvimento deste dispositivo, porém ainda passará por algumas otimizações
nas etapas posteriores. E espera-se que ao final das etapas previstas no projeto macro, seja disponibilizado ao
Centro de Estudos Superiores de Parintins um produto confiável e que possa ser usado nas dependências dessa
Instituição de Ensino Superior, em especial, no Laboratório de Ensino de Física e no Laboratório de Computação
Científica.
INTRODUÇÃO
1
Estes testes foram feitos comparando os dados de entrada pelo teclado com os dados
carregados do arquivo externo pelo Raspberry Pi 3, contendo 10 (dez) cadastros registrados
para serem carregados e verificou-se o carregamento do nome, id e senha para o programa.
Após verificação, os testes seguintes foram: a entrada de dados de forma incorreta e os sem
registro no arquivo externo.
1 MATERIAIS E MÉTODOS
1.1 RASPBERRY PI
O Raspberry Pi tem sua história descrita no livro de Upton & Halfacree (2017) com os
detalhes de como surgiu essa placa tão pequena, mas tão poderosa que nos faz submeter à
aquela programação que gerações passadas tiveram com o advento do computador.
Após o lançamento a demanda foi tão grande que empresa de computadores Raspberry
Pi foi a de crescimento mais rápido na História (UPTON & HALFACREE, 2017).
Oferecendo um computador barato e de fácil acesso para ser usado nas mais diversas
aplicações e auxilia no aprendizado dos interessados em tecnologia.
A versão usada para esse projeto é o Raspberry Pi 3, uma placa compacta projetada
para ser um minicomputador pessoal. De acordo com o Guia Raspberry Pi (2018), a versão 3
é equipada com um processador Broadcom BCM2837 64bit ARMv8 Cortex-A53 Quad-Core,
com velocidade de processamento de 1.2 GHz e memória de acesso rápido de 1GB.
A estrutura da placa é muito parecida com as versões anteriores, diferenciando com a
presença do Wi-Fi e Bluetooth fazendo com que não precise comprá-los posteriormente o que
nos leva a outras possibilidades. Um exemplo, pode-se utilizar nesse projeto a conexão Wi-Fi
para atualizar os cadastros dos usuários dos laboratórios sem precisar desligar ou retirar a
placa da porta.
A placa também possui 4 (quatro) conectores USB e 1 (um) Ethernet, como também
conector para display DSI (Display Serial Interface), câmera CSI (Camera Serial Interface),
slot para cartão microSD, saída de vídeo e áudio HDMI, micro USB para a fonte de
alimentação – ter o cuidado de não conectar o Raspberry em portas USB de computadores e
carregadores de celulares, devido à baixa corrente (normalmente 500 mA), a placa Raspberry
2
Pi 3 pode exigir 2,5 A para funcionar corretamente de acordo com o guia do usuário; e o
conector GPIO (General Purpose Input/Output - Entrada e Saída de Uso Geral) de 40 pinos
permite-nos conectar e controlar outros componentes.
Para começar o processo de instalação será necessário teclado, mouse, cartão microSD
e um computador com leitor de cartão SD. O próximo passo é formatar o cartão em FAT ou
FAT 32. Vá até o site oficial da fundação Raspberry Pi no endereço (www.raspberrypi.org)
procure pelo menu DOWNLOADS e clique na opção NOOBS e por fim escolha a opção
Noobs – Offline and network install, clicando em Download ZIP para baixar o arquivo
(Figura 1).
Segundo Upton & Halfacree (2017) é uma linguagem de alto nível do final da década
de 1980, desenvolvida por Guido Van Rossum no National Research Institute for
Mathematics and Computer Science, desde sua criação teve a preocupação em gerar códigos
legíveis para facilitar o entendimento e aprendizado sobre linguagem.
Ela chama atenção pela simplicidade, clareza e objetividade, podendo ser instalada nos
mais diversos tipos de sistemas operacionais sem a preocupação de gastos porque é um
software de licença livre, disponibilizado através do site oficial Python Fundation
(www.python.org).
5
O Menezes (2016) aborda um ponto interessante sobre essa linguagem onde ele diz
que um dos motivos para aprender a programação Python é obter os resultados em pouco
tempo; isso devido à grande disponibilidade nos fóruns de bibliotecas feitas por colaboradores
e que já foram testadas. Isso faz com que você não perca tempo criando muitas partes do
código e se concentre naquilo que realmente queira fazer.
A Python é completa e fascinante, por mais que ela pareça simples é muito forte e
pode ser usada nos mais diversos meios como o funcional com a criação de jogos em 2D e
3D, também é imperativa, orientada a objetos e de tipagem dinâmica. Por intermédio de
Menezes (2016), pode-se ter acesso a uma série de funções, exemplos e problemas que devem
ser usados no processo de aprendizado e, conforme com o sistema operacional que está sendo
usado, ele ensina como instalar a IDLE do Python (Ambiente de Desenvolvimento Integrado)
e como usar essa ferramenta.
Utilizou-se uma Fechadura Elétrica Modelo GM2. De acordo com o fabricante ela é
feita de material resistente, fácil instalação, destrava ao primeiro impulso elétrico e pode ser
alimentada em 12 ou 110 VCA (Tensão Corrente Alternada). Em caso, de 110 VCA usar
transformador de no mínimo 500mA e a saída de 0 mais 12 para ligar na bobina que fica
dentro da fechadura elétrica.
A função da fechadura é manter a porta trancada enquanto não recebe a ordem vinda
do Raspberry Pi 3 para destravar e permitir a entrada do usuário no Laboratório.
1.6 RELÉ
O relé usado nesse projeto é o modelo FRANGKE JQC-3F (T73) de 10A 125 VAC e a
bobina interna é alimentada com 5 VDC. Ele acompanha o kit Arduino do Laboratório de
Garagem, facilmente encontrado pela internet no site (www.labdegaragem.com).
Foi escolhido por ser compatível com as especificações do Raspberry Pi 3, assim
como no Arduino suas portas de saída para alimentação de componentes são de 3.3 V e 5V.
6
Ele possui 3 (três) pinos de entrada que são o VCC – Tensão Corrente Contínua, IN
(entrada) e GND (Graduated Neutral Density Filter - Filtro Graduado de Densidade Neutra)
respectivamente. O Primeiro pode ser alimentado por 3.3V ou 5V da GPIO, o segundo é que
permite controlar o acionamento e desligamento do relé e o último é do fio neutro. Na outra
ponta o relé tem mais três conectores sendo eles NA (Normalmente Aberto), C (corrente) e o
NF (Normalmente Fechado) respectivamente (Figura 2).
A ligação com o GPIO é simples, dá-se-a por meio de quatro fios o GND, o VCC, o
SDA (Serial Data) - pino que transfere e recebe os dados e o A
SCL (Serial Clock) -
temporizador entre os dispositivos, dando confiabilidade a comunicação pela SDA
(ARDUINO BR, 2018), (Figura 3).
Figura 3. (A) LCD 16x2. (B) Módulo I2C. Fonte: Ramon Lima
7
O módulo I2C soldado atrás do LCD permite que um chip converse com o outro,
muitos dispositivos usam o protocolo I2C, podendo assim conectar vários dispositivos. Isso é
possível porque cada módulo I2C possui um endereço exclusivo de identificação, facilmente
verificado pelo Terminal do Raspbian, após o módulo estiver conectado ao GPIO e
devidamente configurado como consta em Adafruit (2018), por meio do seguinte comando:
sudo i2cdetect - y 1
Arduino e Cia (2018) apresenta de forma resumida o processo de configuração,
diferenciado pela presença do código fonte para controle do LCD pelo I2C. Precisa -se
copiar o código fonte e colar na IDLE do Python, modificando a linha 22 ADDRESS =
0x27, pelo endereço exclusivo do módulo. Antes de salvar o arquivo é necessário criar
uma pasta em /home/pi, no caso desse projeto, o nome de I2C_LCD_driver. Dentro dela
deve salvar o arquivo como I2C_LCD_driver.py e os demais arquivos em Python
necessários para o funcionamento do projeto.
O teclado escolhido é facilmente encontrado pela internet por ser compatível com as
especificações de tensão do GPIO.
O modelo adotado é o 4x3 possui sete conectores para ligar a placa, a contagem dos
pinos é realizada da esquerda para direita, os quatro primeiros pinos correspondem as linhas e
os 3 últimos as colunas. Em cada pino das linhas, precisa-se colocar um resistor de 1k ohms
para funcionar em pull-up evitando flutuações e mantendo em alto (Figura 4).
A porta de madeira foi pensada e projetada para que pudéssemos ter noção de como o
projeto funcionaria na prática. E têm as seguintes medidas: 30 cm de largura por 50 cm de
altura.
9
2.1.2 Controle do Protótipo
É por meio do GPIO que consegue controlar os componentes e a contagem dos pinos é
realizada da direita para a esquerda. Na direita o primeiro pino é o +3v3 e na esquerda o
segundo pino é o +5v, o penúltimo pino é o 39 que corresponde ao GND (fio neutro) e o
último pino na esquerda é o SCLK/GPIO21.
Na programação é necessário indicar qual pino da placa receberá o pulso de entrada ou
saída informando o número correspondente do GPIO.
10
2.1.3 Diagrama sobre o funcionamento do protótipo
11
3. Controle interno do protótipo – comparação dos dados de entrada com os dados
armazenados. O usuário estando cadastrado enviar o pulso para o relé acionar a chave elétrica.
4. Liberação do acesso – destrava a porta permitindo a entrada do usuário, travando a porta
novamente, assim que for fechada.
Tabela 1 – Principal
12
return em “cadastros.txt” e atribuí-los em listas.
def conta_linhas_arq_ext():
arquivo = open("cadastros.txt","r")
n=0
for linha in arquivo.readlines():
n=n+1
arquivo.close()
return n
def salva_linhas_arq_ext():
arquivo = open("cadastros.txt","r")
for linha in arquivo.readlines():
Lae.append(linha)
arquivo.close()
def atribuir(var):
n=0
while n < NlinTemp:
if n > 0:
Nome.append(Lae[n][0:8])
Id.append(Lae[n][10:13])
Senha.append(Lae[n][15:])
else:
NomeTemp.append(Lae[n][0:8])
IdTemp.append(Lae[n][10:13])
SenhaTemp.append(Lae[n][15:])
n=n+1
Lae = []
NomeTemp = []
IdTemp = []
SenhaTemp = []
Rotina para criação das listas e
Nome = []
Id = [] chamada das funções criadas para o
Senha = [] código fonte.
NlinTemp = conta_linhas_arq_ext()
Nlin = NlinTemp - 1
salva_linhas_arq_ext()
atribuir(Lae)
13
while True:
lcdi2c.lcd_display_string("ID: ",1)
lcdi2c.backlight(0)
Id_ent = input("ID: ")
lcdi2c.lcd_display_string_pos(Id_ent,1,4)
lcdi2c.lcd_display_string("Senha: ",2)
Rotina para entrada de dados e
print("\nSenha: ")
Senha_ent = input("") mostrá-los no LCD por meio do I2C.
lcdi2c.lcd_display_string_pos("******",2,7)
time.sleep(tempo)
Id_ent_num = int(Id_ent)
Senha_ent_num = int(Senha_ent)
cLin = 0
if((Id_ent_num == int(Id[cLin])) and
(Senha_ent_num == int(Senha[cLin]))):
#Ativa o relé
acenderele(12)
lcdi2c.lcd_clear()
lcdi2c.lcd_display_string("Acesso
Permitido!",1)
lcdi2c.lcd_display_string("Oi!",2) Esta rotina compara os dados de
entrada com os dados carregados do arquivo
lcdi2c.lcd_display_string_pos(Nome[cLin],2,4)
“cadastros.txt”. Sendo os dados iguais, o relé
time.sleep(5)
é ativado e após um tempo ele é desativado e
#Desativa o relé o usuário acompanha as informações pelo
apagarele(12)
LCD.
lcdi2c.lcd_clear()
lcdi2c.lcd_display_string_pos("Porta
fechada",1,1)
#Aguarda segundo
time.sleep(tempo)
lcdi2c.lcd_clear()
cLin = cLin + 1
['*',0,'#']]
linha = [11,13,15,29]
coluna = [31,33,35]
for j in range(3):
GPIO.setup(coluna[j], GPIO.OUT)
GPIO.output(coluna[j], 1) Rotina para realizar a varredura das
teclas do teclado que foram
pressionadas.
for i in range(4):
GPIO.setup(linha[i], GPIO.IN, pull_up_down
= GPIO.PUD_UP)
15
while(True):
for j in range(3):
GPIO.output(coluna[j],0)
for i in range(4):
if GPIO.input(linha[i]) == 0:
time.sleep(tempo)
print (MATRIZ[i][j])
while(GPIO.input(linha[i]) == 0):
pass
GPIO.output(coluna[j],1)
16
monitor e teclado além de um LCD de 16x2 e um teclado de membrana para permitir a
entrada e visualização de informações ao sistema.
Como etapas posteriores do trabalho serão unificados os códigos fontes do teclado de
membrana com o código principal de controle, além de acondicionar o sistema eletrônico
composto pelo Raspberry Pi 3 + LCD + teclado de membrana em uma caixa de acrílico ou
metal para fixá-lo na porta; retirar o monitor e teclado de computador que estão conectados ao
minicomputador e adicionar um equipamento No-break por questões de segurança na falta de
energia elétrica da rede.
Por último, deixaremos o Raspberry Pi inicializando o código fonte automaticamente
deixando-o dedicado a atividade do controle de acessos. Para este procedimento será utilizado
o minicomputador Raspberry Pi zero por apresentar os itens necessários ao bom
funcionamento da chave elétrica e ter um custo menor que o minicomputador da versão inicial
utilizada neste trabalho.
CONCLUSÃO E PERSPECTIVAS
REFERÊNCIAS
ARDUINO E CIA. Como usar um display LCD I2C com Raspberry Pi. Disponível em:
<https://www.arduinoecia.com.br/2016/12/como-usar-display-lcd-i2c-raspberry-pi.html>.
Acesso em: 02 de março de 2018.
UPTON, Eben. Raspberry Pi guia do usuário / Eben Upton, Gareth Halfacree; traduzido por
João Tortello. - Rio de Janeiro: Alta Books, 2017. 288 p.: il.; 17 cm x 24 cm.
18