Eletrônica Silveira
Olá, Seja Bem-Vindo ao Fórum Eletrônica Silveira!!!!
Para você poder ver os mais variados Projetos do nosso Fórum, você precisa fazer o cadastro!

Depois de se Cadastrar, não se esqueça de ler as regras do fórum!

https://eletronicasilveira.forumeiros.com/t3-regras-do-forum#3


Administrador do Fórum,
Rafael Silveira

Participe do fórum, é rápido e fácil

Eletrônica Silveira
Olá, Seja Bem-Vindo ao Fórum Eletrônica Silveira!!!!
Para você poder ver os mais variados Projetos do nosso Fórum, você precisa fazer o cadastro!

Depois de se Cadastrar, não se esqueça de ler as regras do fórum!

https://eletronicasilveira.forumeiros.com/t3-regras-do-forum#3


Administrador do Fórum,
Rafael Silveira
Eletrônica Silveira
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
HOMENAGEM

Na vida tudo passa tudo acontece mas alguém igual a você a gente jamais esquece

Controle de abertura de porta com o Arduíno 1-74


★ 22 de novembro de 1991

† 12 de março de 2016

Nosso eterno amigo, administrador e fundador deste fórum
Quem está conectado?
125 usuários online :: 0 registrados, 0 invisíveis e 125 visitantes :: 3 motores de busca

Nenhum

O recorde de usuários online foi de 362 em Sex 9 Abr 2021 - 22:11
Últimos assuntos
» Fonte Chaveada 2000W SG3525 & IR2110
Controle de abertura de porta com o Arduíno EmptyQua 27 Mar 2024 - 20:57 por sandy silva de oliveira

» >>>>>>> Sobre a criação de novos tópicos<<<<<<<<<<<<<<<
Controle de abertura de porta com o Arduíno EmptyDom 24 Mar 2024 - 16:10 por crisnich

» Defeito intermitente amplificador Ciclotron TIP5000
Controle de abertura de porta com o Arduíno EmptyQua 20 Mar 2024 - 9:13 por fastaveira

» Esquema Amplificador Audio Leader AL 5.0
Controle de abertura de porta com o Arduíno EmptyQua 20 Mar 2024 - 9:01 por fastaveira

» MK4000 - FONTE CHAVEADA FULL BRIDGE
Controle de abertura de porta com o Arduíno EmptyDom 17 Mar 2024 - 18:43 por sandy silva de oliveira

» amplificador class h tailandes
Controle de abertura de porta com o Arduíno EmptySex 15 Mar 2024 - 22:41 por mehuysal

» Amplificador Super Strong
Controle de abertura de porta com o Arduíno EmptyQui 14 Mar 2024 - 13:03 por Reginaldo Silva

» Amplificador Classe D UCD1500
Controle de abertura de porta com o Arduíno EmptyQua 13 Mar 2024 - 13:07 por Guille

»  NS450 - FONTE CHAVEADA PARTE 2
Controle de abertura de porta com o Arduíno EmptySeg 11 Mar 2024 - 6:55 por ffernand3s

» DETECTOR DE METAIS IDX-PRO
Controle de abertura de porta com o Arduíno EmptySex 1 Mar 2024 - 16:41 por Benyamin

» Amplificador Fonte Simples em teia de aranha
Controle de abertura de porta com o Arduíno EmptySex 1 Mar 2024 - 12:17 por Reginaldo Silva

» Manutenção Gradiente 366 / 266
Controle de abertura de porta com o Arduíno EmptyQui 29 Fev 2024 - 21:40 por tiaogaviao

» Criação pcb esquema phono cápsula ceramica
Controle de abertura de porta com o Arduíno EmptyQui 29 Fev 2024 - 16:58 por warley cesar

» DETECTOR DE METAIS MKII (PINPOINTER)
Controle de abertura de porta com o Arduíno EmptyQua 28 Fev 2024 - 19:09 por Benyamin

» Fonte chaveada compacta IR2153D - 10 x 10 cm
Controle de abertura de porta com o Arduíno EmptyTer 27 Fev 2024 - 22:02 por microbit

Top dos mais postadores
Rafael Silveira (7816)
Controle de abertura de porta com o Arduíno I_vote_lcapControle de abertura de porta com o Arduíno I_voting_barControle de abertura de porta com o Arduíno I_vote_rcap 
Caca Silva (6057)
Controle de abertura de porta com o Arduíno I_vote_lcapControle de abertura de porta com o Arduíno I_voting_barControle de abertura de porta com o Arduíno I_vote_rcap 
renatoscp (3891)
Controle de abertura de porta com o Arduíno I_vote_lcapControle de abertura de porta com o Arduíno I_voting_barControle de abertura de porta com o Arduíno I_vote_rcap 
CMeletronica (3234)
Controle de abertura de porta com o Arduíno I_vote_lcapControle de abertura de porta com o Arduíno I_voting_barControle de abertura de porta com o Arduíno I_vote_rcap 
michel chagas (2791)
Controle de abertura de porta com o Arduíno I_vote_lcapControle de abertura de porta com o Arduíno I_voting_barControle de abertura de porta com o Arduíno I_vote_rcap 
Railson (2119)
Controle de abertura de porta com o Arduíno I_vote_lcapControle de abertura de porta com o Arduíno I_voting_barControle de abertura de porta com o Arduíno I_vote_rcap 
alexsandro rodrigues de a (1835)
Controle de abertura de porta com o Arduíno I_vote_lcapControle de abertura de porta com o Arduíno I_voting_barControle de abertura de porta com o Arduíno I_vote_rcap 
naldo santos (1625)
Controle de abertura de porta com o Arduíno I_vote_lcapControle de abertura de porta com o Arduíno I_voting_barControle de abertura de porta com o Arduíno I_vote_rcap 
ablacon64 (1222)
Controle de abertura de porta com o Arduíno I_vote_lcapControle de abertura de porta com o Arduíno I_voting_barControle de abertura de porta com o Arduíno I_vote_rcap 
gilvantexas (1061)
Controle de abertura de porta com o Arduíno I_vote_lcapControle de abertura de porta com o Arduíno I_voting_barControle de abertura de porta com o Arduíno I_vote_rcap 

Medidor de Velocidade


Controle de abertura de porta com o Arduíno

Ir para baixo

Controle de abertura de porta com o Arduíno Empty Controle de abertura de porta com o Arduíno

Mensagem por Rafael Silveira Seg 31 Jan 2011 - 22:32

Nesta montagem é possível fazer um contador para monitorar quantas vezes uma determinada porta foi aberta, além de emitir um sinal sonoro avisando que a porta foi aberta.
Monitorar quantas vezes uma porta foi aberta, ou emitir um ruído sonoro quando uma pessoa abre uma gaveta ou geladeira, pode ser a necessidade de alguns leitores, além do prazer de fazer uma simples montagem utilizando um microcontrolador. O que apresentamos neste projeto é um contador de eventos que utiliza um LDR, o qual pode ser simplesmente substituído por outros tipos de sensores ou chaves.
Além disso, teremos a oportunidade de trabalhar com o Arduíno em conjunto com um display LCD de 2 linhas.
Utilizamos neste artigo o Tatuíno, versão da Tato do Arduíno, com o kit eletrônico fornecido pela Modelix, com um estojo com diversos componentes, fenolites, conectores e uma matriz de contatos. Há um kit fornecido pela Modelix que já vem com o Arduíno embutido.
Não mostraremos como se faz para instalar o compilador e como funciona o Arduíno, o que já foi apresentado em artigos anteriores, e vamos diretamente para a montagem do projeto. Para os leitores que desejam saber mais sobre o Arduíno, recomendo a leitura de artigos que se encontram neste site "Na onda do Arduíno" ou no site da própria equipe de desenvolvedores do Arduíno ([Tens de ter uma conta e sessão iniciada para poderes visualizar este link]


A lógica do funcionamento:
O sistema consiste em ligar o Arduíno, que ficará em loop até que o LDR entre em condução, neste momento o display que está exibindo “Área restrita” na primeira linha e “fechado 0” na segunda, emitirá um sinal sonoro pelo buzzer e exibirá “aberto 1” na segunda linha. A cada vez que o LDR conduzir, será emitido o sinal e será acrescido mais um no número de acesso. A reinicialização do processo, ou seja, a volta ao número “0” é feita pressionando-se o pino Reset do Arduíno.


O Display:
O display utilizado neste sistema é um exemplar de 2 linhas por 16 caracteres. Este tipo de display possui alguns pinos de contato externo, mas os dados são passados pelos pinos D0 a D7. Iremos utilizar os pinos D4 a D7, porém não precisaremos nos preocupar como e o que deveremos passar através destes pinos para apresentar os dados, isso porque na hora de compilarmos o código-fonte estaremos adicionando uma biblioteca chamada LiquidCrystal.h, que faz todo o trabalho de pegar a frase que digitamos ou as variáveis que desejamos apresentar no display e exibi-las.
Os pinos D4 a D7 estão conectados aos pinos 5 a 2 do Arduíno. Os pinos RW e o GND do display estão conectados ao pino GND do Arduíno, o pino +5V do display ao pino de +5V do Arduíno.
O pino V0 do display controla a luminosidade dos caracteres exibidos, por este motivo conectamos este pino ao potenciômetro que está ligao entre o +5V e o GND do Arduíno, e conforme giramos o potenciômetro temos maior ou menor nitidez do display.
Na figura 1 temos o esquema elétrico do projeto onde vemos as conexões entre o display e o Arduíno.


Figura 1 – Esquema elétrico:

Controle de abertura de porta com o Arduíno Mic0009_01

O LDR e o buzzer:
Na mesma figura 1 podemos observar que o LDR está conectado ao pino 8 do Arduíno, lembrando que através do código-fonte ele foi setado como Input, ou seja, irá receber um sinal, forçando o microcontrolador a entender que aquele pino será de entrada.
Porém o inverso deve ser feito com o buzzer, onde o pino 9 em que está conectado deverá ser setado como saída. Podemos dar dois tipos de saídas através da programação, podendo ser saída digital ou analógica. Na saída digital temos somente dois estados, alto e baixo, e na saída analógica temos 255 etapas de saídas. Para emitirmos um sinal agradável, vamos enviar para o Buzzer um sinal PWM formando uma frequência definida por código, por este motivo é bom utilizar os pinos 3, 5, 6, 9, 10 ou 11. Tanto no buzzer como no botão é bom colocar um resistor de 220 ohms para evitar picos.


O Código-Fonte:
No box 1 onde temos o código-fonte podemos observar alguma linhas já comentadas, mas para melhorar o entendimento, descrevo a seguir o passo-a-passo do programa, que tem o seu fluxograma apresentado na figura 2.


Figura 2 – Fluxograma do sistema:


Controle de abertura de porta com o Arduíno Mic0009_02

Na primeira linha (#include) inserimos a biblioteca LiquidCrystal.h, que já vem com o compilador do Arduíno, nesta biblioteca temos todas as funções de entrada e saída para a comunicação com o display, ficando para o desenvolvedor apenas chamar as suas funções e passar as variáveis, tais como os pinos de comunicação. Em nosso caso usamos os pinos 2, 3, 4, 5, 11 e 12.
Através do comando lcd.begin(caractere,linha) inicializamos e indicamos o formato do display, que em nosso caso é de 16 caracteres por 2 linhas, e no comando lcd.print(String) enviamos o texto para o display exibir. O comando lcd.setCursor(caractere,linha) indica onde o primeiro caractere deverá ser impresso, na primeira vez que enviamos a frase “Área restrita” não usamos a posição que gostaríamos em que ela fosse exibida, e por este motivo ela assume a posição zero na linha 0, lembrando que em programação é comum começarmos qualquer evento com 0 “zero”. Se observarmos na primeira linha que está dentro da função “loop”, veremos que o comando lcd.setCursor(caractere,linha) é chamado posicionando o cursor no primeiro caractere na segunda linha. Como o primeiro caractere é indicado por zero e a segunda linha indicada por um, temos o comando lcd.setCursor(0,1).
Nas quatro linhas abaixo da linha #include criamos as variáveis que nos ajudarão a manipular os pinos de entrada e saída, como é o caso da variável “buttonPin”, que habilitará o pino 8 como entrada na função pinMode(buttonPin, INPUT) para receber o sinal vindo do LDR, e da variável “sirene” que habilitará o pino 9 como saída para acionarmos o buzzer. A outra variável é o “contador”, que tem como função armazenar o número de vezes que a porta foi aberta, e finalmente a variável “auxiliar” que servirá de apoio e indicação do atual estado da porta, onde true indica que a função de adicionar e tocar o buzzer já foi feita.
Ainda dentro da função loop() temos a condição “if”, que analisa se o LDR está conduzindo através da função digitalRead(buttonPin). Se o LDR estiver realmente conduzindo, esta condição se torna verdadeira, acionando as linhas dentro da condição “if”.
Após esta primeira condição ser atendida, encontramos outra condição que verifica se a variável “auxiliar” é verdadeira ou falsa, se for verdadeira ela toca o buzzer e soma a variável contador, e no final ela modifica a própria variável “auxiliar” para falsa. O motivo desta variável é pelo fato de que o loop do microcontrolador será executado a cada milissegundo, o LDR irá conduzir de alguns milissegundos até dias, se a variável “auxiliar” não mudasse seu estado para falso as linhas dentro dessa condição iriam executar sempre, ou seja, esta variável serve para executar somente uma vez quando o LDR conduz. Depois que o LDR parou de conduzir a variável “auxiliar” volta ao estado True, mas ele não incremente a variável contador e nem aciona o buzzer porque a condição que analisar o estado do LDR não será atendida.
Depois de passar pela segunda condição, ou seja, LDR conduzindo e variável “auxiliar” sendo verdadeira, encontramos outra condição que é o “for (int i=0; i<=10; i++)”, e esta condição irá executar 10 vezes as linhas aninhadas a ele.
Dentro deste comando “for” temos o comando “analogWrite(sirene,50),” este comando tem como função enviar um sinal elétrico de forma analógica para o pino “sirene”, esta saída analógica está na faixa de 0 a 255, onde 255 é a corrente máxima e 0 a interrupção ela. Logo abaixo desta função temos um pequeno delay que deixará a saída do pino “sirene” em 50 por um tempo, até o momento em que a mesma função “analogWrite(sirene,0)” seja chamada novamente, porém como a saída analógica está setada em zero o sinal é interrompido. Este sinal fica interrompido por um outro delay de 20 milissegundos. É desta forma, alternando estes estados do pino “sirene”, que mudamos o tom e o tempo do buzzer.
No final da condição “if” pegamos a variável “contador” e adicionamos mais 1 a ela (contador++), e por fim enviamos ao display.

É fácil notar que todo o código apresentado se divide em três etapas, onde na primeira delas temos as inclusões das biblioteca e a criação das variáveis, na segunda temos a função “setup()” onde setamos os pinos como entrada e saída, e na terceira a função “loop()” onde o código escrito dentro dele ficará rodando infinitamente até algo o interromper.
Se não existisse a possibilidade de inserir a biblioteca LiquidCrystal.h no código, teríamos um código-fonte bem extenso, tratando as saídas passo a passo para o display, e isso é que torna o Arduíno uma ferramenta útil para simulações de projetos ou como o próprio projeto final.


Código-fonte:

#include <LiquidCrystal.h>
int buttonPin = 8;
int contador = 0;
int sirene = 9;
boolean auxiliar = false;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Indicamos os pinos que serão utilizados pelo LCD

void setup() {
lcd.begin(16, 2); // inicializa o display indicando quantidade de linhas e caracteres
lcd.print("Area restrita"); // escreve no display Area restrita
pinMode(buttonPin, INPUT); // Seta o pino do LDR
pinMode(sirene, OUTPUT); // Seta o pino do buzzer
}

void loop() {
if(digitalRead(buttonPin)) { // LDR está conduzindo?
lcd.setCursor(0, 1); // posiciona o cursor do display
lcd.print("Aberto ");
lcd.setCursor(8, 1);

if(auxiliar){ // a variável auxiliar é verdadeira?
for (int i=0; i<=10; i++) // repete as linhas entre {} 10 vezes
{
analogWrite(sirene, 50); // saída analógica no pino sirene
delay(70); // tempo de espera
analogWrite(sirene, 150);
delay(50);
analogWrite(sirene, 0);
}
contador++; // acrescenta mais um ao contador
auxiliar=false; // torna variável em false
}
} else {
auxiliar = true;
lcd.setCursor(0, 1);
lcd.print("Fechado ");
lcd.setCursor(8, 1);
}

lcd.print(contador); // exibe no display quantas vezes a porta abriu.
}



Instalando o sensor
Como foi dito no começo do artigo, é possível utilizar diversos tipos de sensores e chaves, por este motivo a instalação pode variar, em nosso caso iremos utilizar um LDR com um tubinho preto para filtrarmos a luz no batente fixo da porta, e um pequeno obstáculo para a luz, feito com uma pequena chapinha com uma fita isolante. Na figura 3, temos como pode ser montado o sensor.


Figura 3 – Instalação do LDR e do Bloqueio:


Controle de abertura de porta com o Arduíno Mic0009_03

Conclusão:
Todas as vezes que me vejo frente a um novo projeto, depois de esquematizá-lo, saio em busca de pequenos trechos já resolvidos por outros desenvolvedores e que podem ser implementados no projeto. Muitos, assim como eu, gostam de mostrar os resultados obtidos com o seu trabalho, e isso me ajuda bastante. Então conforme vou encontrando soluções, tanto na internet como em revistas, começo a copiar e colar esquemas e códigos, porém gosto de entender o funcionamento dos projetos encontrados, primeiro porque procuro melhorar e otimizar o código copiado, e segundo porque se o sistema apresentar algum problema, tenho meios de resolver. Por estes motivos resolvi apresentar este projeto básico, pois se para mim foi útil, num projeto maior também será proveitoso para outros.

_________________
Respeite as Regras do Fórum!


“O covarde nunca tenta, o fracassado nunca termina e o vencedor nunca desiste.”


Deus, obrigado por tudo.

Controle de abertura de porta com o Arduíno Vumete10


Rafael Silveira
Rafael Silveira
ADMINISTRADOR
ADMINISTRADOR

Mensagens : 7816
Data de inscrição : 26/01/2011
Idade : 32
Localização : Doutor Pedrinho - SC

http://http:/eletronicasilveira.forumeiros.com

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos