Sistema de segurança pela internet usando Arduino

Seguindo a mesma linha do tutorial passado onde demonstrei como ligar leds através da internet, pensei em um projeto usando servo motores. O resultado foi um sistema de segurança, ou melhor, uma trava de segurança para porta ou portões onde o usuário tem a possibilidade de travar ou destravar a mesma através da internet usando uma combinação de números ou caracteres.

Os requisitos para esse projeto são:

– Uma placa Arduino
– Dois leds.
– Um Servo Motor.
– Dois resistores de 1000 Ω (Ohm)

Precisamos ainda ter instalado o Apache e PHP no Ubuntu 10.10
Esse projeto vale para utilizadores do Linux quanto para usuários de Windows XP, Vista ou Seven, basta modificar apenas a porta serial no código PHP para a comunicação com arduino.

Vamos a pagina HTML.
Essa pagina consiste em um campo texto para digitar os caracteres correspondentes a senha, um botão para envia-la para a pagina PHP e outro botão para bloquear.

<html>
<head>
<meta http-equiv="Content-Language" content="pt-br">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Sistema de Segurança utilizando</title>
</head>
<body>
<div align="center">

   <table border="0" width="23%" cellpadding="0">
	<tr>
	<td bgcolor="#000000">
        <p align="center">&nbsp;</p>
	<p align="center"><b><font face="Arial" color="#FF3300">Sistema de
	Seguranca utilizando Arduino e PHP</font></b></p>
	<p align="center">&nbsp;</td>
	</tr><tr><td>
	<p align="center">&nbsp;</td>
	</tr><tr><td>
		<p align="center"><font face="Arial">Informe a combinacao certa para
		liberar o acesso</font></td></tr><tr>
		<td>&nbsp;</td></tr><tr><td>

<!---------------METODO POST DA CAIXA DE TEXTO---------------->

	<form method="POST" action="seguranca.php">
	    <p align="center"><input type="text" name="txtSenha" size="35"><br>
	    <input type="submit" value="Desbloquear" name="acesso"></p>
	</form>
<!------------------------------------------------------------>
	</td></tr><tr><td>

	<form method="POST" action="seguranca.php">
	    <input type="hidden" value="2" name="txtSenha">
	    <p align="center"><input type="submit" value="Bloquear" name="acesso"><br>
	    </p>
	</form>
<!------------------------------------------------------------>
        </td></tr><tr><td>
	<p align="center">&nbsp;</td>
	</tr><tr><td>
	<p align="center"><font face="Arial" size="2">
	<a href="http://www.ferpinheiro.wordpress.com">
	www.ferpinheiro.wordpress.com</a></font></td>
	</tr><tr><td>&nbsp;</td></tr><tr>
	<td bgcolor="#000000">&nbsp;</td></tr>
	</table>
</div>
</body>
</html>

Copie o código, cole em um arquivo e salve com o nome de index.html

E voce deverá ver uma página como essa:

Código PHP.
O valor do campo texto será passado ao PHP através do metodo _POST, então será comparado a uma constante chamada SENHA_DESBLOQUEIO a qual conterá o valor 123456. Nesse caso o sistema será liberado somente se o usuário informar a senha que corresponda ao valor da constante. O sistema deverá emitir avisos caso a senha esteja incorreta e/ou correta. Caso o usuário tenha desbloqueado e então queira bloquear novamente será passado através de um campo “hidden” do HTML o valor 2 que corresponde a um valor para bloquear o sistema.

/*********************************
Autor: Fernando Krein Pinheiro
Data: 21/08/2011
Linguagem: PHP
========= IMPORTANTE ===========
O código esta livre para usar,
citar e compartilhar desde que
mantida sua fonte e seu autor.
Obrigado.
********************************/
<?php

	define('SENHA_DESBLOQUEIO', 123456);
	define('SENHA_CORRETA', 1);
	define('BLOQUEAR', 2);

	$senha = $_POST['txtSenha'];
	$contador = 3;

	if($senha == SENHA_DESBLOQUEIO)
	{
		//No windows basta mudar a porta.
	        //$porta = fopen("COM3", "w");
		$porta = fopen("/dev/ttyUSB0","w");
		if(!$porta)
		{
			echo "ERRO: A porta serial nao pode ser aberta!
			      Verifique as permissoes da porta";
		}
		else
			fwrite($porta,SENHA_CORRETA);
			echo "O sistema foi destravado
			      e o acesso foi permitido";
        fclose($porta);
	}
	else
		echo "ERRO: Senha INCORRETA";

	if($senha == BLOQUEAR)
	{
		$porta = fopen("/dev/ttyUSB0","w");
		if(!$porta)
		{
			echo "ERRO: A porta serial nao pode ser aberta!
			      Verifique as permissoes da porta";
		}
		else
			fwrite($porta,BLOQUEAR);

	}
	fclose($porta);

?>

Copie o código, cole em um arquivo e salve com o nome seguranca.php

Código Arduino.
Nesse código vamos ler as entradas da porta serial. Caso seja passado o valor da constante SENHA_CORRETA, então o acesso será permitindo. Nesse momento o led vermelho que estava aceso ficara apagado e o verde acenderá. E o servo motor fará um giro de 90 graus liberando a porta, caso contrario, ou seja, se o botão “Bloquear” for pressionado o valor da constante BLOQUEAR que é 2 será passado para a serial e o sistema será bloqueado.

/*********************************
Autor: Fernando Krein Pinheiro
Data: 21/08/2011
Linguagem: C (Wiring)
========= IMPORTANTE ===========
O código esta livre para usar,
citar e compartilhar desde que
mantida sua fonte e seu autor.
Obrigado.
********************************/
#include <Servo.h>
#define VERMELHO 2
#define VERDE 4

Servo objeto_Servo ;

void setup()
{

  Serial.begin(9600);

  objeto_Servo.attach(10);
  objeto_Servo.write(0);
  pinMode(VERMELHO, OUTPUT);
  pinMode(VERDE, OUTPUT);
  digitalWrite(VERMELHO, HIGH);
  digitalWrite(VERDE, LOW);

}

void loop()
{
  char senha;
  senha = Serial.read();

  if(senha == '1')
  {
     desbloqueia_Sistema();
  }
  else
  if(senha == '2')
  {
    bloqueia_sistema();
  }

}
void desbloqueia_Sistema()
{

    Serial.println("Sistema Desbloqueado");
    digitalWrite(VERMELHO, LOW);
    digitalWrite(VERDE, HIGH);
    objeto_Servo.write(90);
}
void bloqueia_sistema()
{
   Serial.println("Sistema Bloqueado");
    digitalWrite(VERMELHO, HIGH);
    digitalWrite(VERDE, LOW);
    objeto_Servo.write(0);

}

Completada a primeira parte daremos inicio a montagem do circuito com arduino. Veja o esquema abaixo:

Faça o upload do código para o Arduino.
Copie o código HTML e o PHP para o diretorio: var/www para isso use o comando: cp index.html seguranca.php /var/www
De as permissões necessárias para execução, use o comando: chmod 755 index.html seguranca.php

Vamos dar a permissão de leitura e escrita na porta serial, use o comando: chmod a+rw /dev/ttyUSB0

Agora vamos aos testes. Acesse seu http://localhost e digite a senha para desbloquear a trava de segurança (servo motor). Faça os teste necessário para verificar se tudo funciona como deveria, insira algumas senhas erradas, outras certas e veja o que acontece!!!

Veja o vídeo de demonstração:

Dessa vez vou ficar devendo a maquete, assim que tiver um tempo faço e mostro como ficou.

Download do Projeto (Inclui códigos, esquema de hardware e imagens).

Qualquer dúvida use o formulário de perguntas do blog ou mande email!!
Até a próxima…

Anúncios
por ferpinheiro Postado em Arduino

6 comentários em “Sistema de segurança pela internet usando Arduino

  1. Ótimo artigo!
    Mas no caso esse servo ficaria onde? Na fechadura da porta?
    O que poderia fazer?
    Agradecimentos!

  2. oiii tem como me passar os links porque nao acheii direito de poder me passar a do Apache e PHP no Ubuntu 10.10 tem como me passar os links pra dowloads ?

  3. olha so tem como pegar essa pagina da web e por exemplo botar no meu celular e pelo celular controlar tipo ligar o servo motor pelo celular usando isso tem como ?

    • Pode sim. Desde que você tenha uma página hospedada na web com registro de dominio e com uma configuração prórpia para o mesmo.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s