detector de ladrão com laser

19
Só mais um projeto de detector de ladrão com laser , e algumas ideias...

Upload: cooler-freenode

Post on 27-Jun-2015

1.634 views

Category:

Documents


3 download

DESCRIPTION

fazendo seu proprio detector de ladrao com laser e afins, uso com opencv para shot da cam...

TRANSCRIPT

Page 1: detector de ladrão com laser

Só mais um projeto de detector de ladrão com laser , e algumas ideias...

Page 2: detector de ladrão com laser

Quem Sou ?

Antonio Costa aka “Cooler_” , desenvolvedor independente em C,Common Lisp,Perl,PHP... Trabalho como freelancer a 4 anos no meio de Web(e-commerce,web spiders...) e problemas em gerais para unix like, faço parte do grupo de estudo e pesquisa BugSec, sou um dos colaboradores e fundadores da e-zine “Cogumelo Binario”. Estudo microcontroladores(AVR e PIC) ,eletrônica em geral como hobby, também tento colaborar em projetos OpenSource.http://coolerlab.wordpress.com/

“TombPool”simples biblioteca em Linguagem C para trabalhar com piscina de conexões.http://code.google.com/p/tombpool/

“Hyde”Só mais um packet injector usando spoofinghttps://github.com/CoolerVoid/Hyde

“Cactoo CMS”Só mais um CMS em PHPhttp://code.google.com/p/cactoo/

“Beer”Biblioteca com funções diversas em C , para facilitar a vida do pessoal iniciantebem como automatizar tarefas em arquivos,strings,números etc...https://github.com/CoolerVoid/beer/blob/master/beer.c

“BugSec”Grupo que faço parte, no nosso google code colocamos alguns códigos e papers que escrevemos para estudo etc...quem faz parte: Victor Ramos Mello aka “m0nad”, ref: “http://m0nadlabs.wordpress.com/” Tiago Natel aka “IAK”, ref: “http://www.secplus.com.br/site/” Felipe Pena aka “sigsegv” ref: “http://felipe.ath.cx/” Eduardo Bellani aka “ebellani” ref: “https://github.com/ebellani” Sergio Renan “_mlk_” . ref “http://code.google.com/p/lwv/”http://code.google.com/p/bugsec/downloads/list

Page 3: detector de ladrão com laser

...The:empire:Strikes:Back....

Já a muito tempo tinha ideia de fazer algo com laser, em circunstâncias anteriores tive algo empírico com detector de ladrão, usando Arduino pro Mini e um PIR (detector de movimento), usava webcam usando api do OpenCV para assim que tiver movimento obter uma foto, logo é enviado como anexo para um determinado e-mail a foto, funcionou bem entretanto não como o esperado então em uma questão de aleatoriedade passava falsos alarmes, nem tudo é perfeito vejamos alguns Ids como snort por exemplo.

Com o passar do tempo, lendo livros da “Evil Genius” achei muito material interessante sobre eletrônica envolvendo segurança, alguns deles compartilhei no meu blog como o “detector de mentira”, algo bem simples para detectar batidas do coração e talvez julgar se é mentira ou não, analisando uma plotagem ou alguns inteiros, andando no meio dessa odisseia encontrei vários sistemas “pega ladrão” entre eles o que vamos estudar aqui sistema com “Laser”, devido a carência de material do mesmo em PT-BR, tive ideia de escrever este paper pois acho que seria a melhor forma de aprender é escrevendo...

Page 4: detector de ladrão com laser

Projeto antigo com Arduino com sensor de movimento

Page 5: detector de ladrão com laser

Por que Arduino ?

• OpenSource• Facilidade por conta da IDE• Podemos optar em usar

gcc-avr, programar em C,ASM... • prototipagem • Com Arduino podemos fazer gravação

em outros AVR como ATtiny...

Page 6: detector de ladrão com laser

www.arduino.cc

Page 7: detector de ladrão com laser

O que é Laser ? Um laser é um dispositivo que controla a maneira pela qual átomos energizados liberam fótons(energia luminosa).

Etimologia: Sua sigla de laser significa "Light Amplification by Stimulated Emission of Radiation" ou seja Amplificação da Luz por Emissão Estimulada de Radiação, Albert Einstein deu o primeiro passo, dizendo que a luz é formada por pacotes discretos e bem determinados de energia que hoje é rotulado como fótons,Mais tarde em 1960 Charles Townes registrou a patente do primeiro gerador de raios laser, em Washington.

Charles Townes e Arthur Schawlow

Page 8: detector de ladrão com laser

Luz do laser e da lanterna Emissão estimulada não ocorre numa lanterna comum, pois todos os seus átomos liberam seus fótons de forma aleatória. já no laser a emissão de fótons é organizada.

Qual laser trabalhar ? Lasers em geral são classificados em várias classes, temos estes que pessoal da SWAT usa em armas, usam para aumentar a probabilidade de acerto em um conflito armado, geralmente são da classe 3 ou seja "IIIa" que é o que vamos usar, conhecido como laser de díodo,única contra indicação é que se aponte em olhos pois pode causar danos embora tenha só 5mW, digamos ai com adição de elementos óticos pode causar danos, como adicionar uma lente de aumento etc...

Page 9: detector de ladrão com laser
Page 10: detector de ladrão com laser

Indo para Prática

Requerimentos:

2 Resistor de 10k , R$ 0,30 centavos 1 Fotocélula "sensor de luz" (photocell) R$ 2,00 reais 1 Arduino nano USD 20,00 dollar 1 Cabo para ftdi (para I/O) R$ 6 reais 1 Laser de 5mW R$ 3,50 1 Led qualquer cor R$ 0,15 centavos *alguns jumpers e breadboard

Page 11: detector de ladrão com laser

Melhorando a visualização

O LED não esta nesta foto, LED você adiciona no pino que quiser já que é algo opcional , lembrando que GND “negativo” é o fio verde, 5v “positivo” seria o fio vermelho, no caso o laranja seria o do PINO ”2”.

http://fritzing.org/

Page 12: detector de ladrão com laser

O que foi feito ? A fotocélula ao ser usada com resistor de 10k vai detectar luz, no caso podemos usar 2 pedaços de cano PVC ou lata, deixar o circuito numa lata com um furo mirando para a fotocélula, segunda lata o laser mirando para o buraco da primeira lata, se alguém passar pelo laser e o laser não chegar na fotocélula logo não mandara a luz, então o microcontrolador irá julgar uma ação, no caso eu mandei "1" via serial caso não tenha luz, nosso código em C ao detectar "1" irá ativar uma função usando OpenCV para tirar foto com webcam, logo seguido de um system() para uso do “mutt”(cliente de e-mail para unix like) para enviar foto com anexo para o e-mail destino...

Diagrama

Page 13: detector de ladrão com laser

Note na foto o sistema rodando, repare que o laser mira em sima da fotocélula, e quando isso ocorre acende um LED, obviamente você pode mudar isso,adicionar um buzzer para soar alarme caso o laser não alcance a fotocélula,talvez usar uma placa de GSM com seu SIM card e mandar um SMS por exemplo...

Page 14: detector de ladrão com laser

Código do Arduino

int photocellPin = 2; int RedLed = 3; int photocellReading;

void setup(void) { pinMode(RedLed,OUTPUT); Serial.begin(9600); }

void loop(void) { photocellReading = analogRead(photocellPin); // se entrada(fotons) maior que 900 é laser... então if( photocellReading>=900) { digitalWrite(RedLed,HIGH); delay(500); }else { // se o laser nao tiver apontando para fotocelula digitalWrite(RedLed,LOW); // manda 1 via serial assim ativa webcam etc... Serial.println("1"); } photocellReading = 1024 - photocellReading; delay(100); }

Page 15: detector de ladrão com laser

O Código em Linguagem C

Este código vai ser compilado e executado e vai ficar no seu computador em esculta, código ficou grande, então não vou mostrar tudo somente os pontos críticos...

baixe aqui !

bugsec.googlecode.com/files/ThiefGet_with_laser.c

Page 16: detector de ladrão com laser

Macro de DEBUG

Quase todo código que escrevo uso esta macro, uso para ajudar a depurar o código, evita que eu abra o GDB para tomar uma surra!

setar para 1 ativa debug#define BUGVIEW 1

#define DEBUG(x, s...) do { \ if (!BUGVIEW) { break; } \ time_t t = time(NULL); \ char *d = ctime(&t); \ fprintf(stderr, "[!] %.*s %s[%d] %s(): ", \ (int)strlen(d) - 1, d, __FILE__, \ __LINE__, __FUNCTION__); \ fprintf(stderr, x, ## s); \ } while (0);

Nos retorna tempo, nome do arquivo,linha e função.

Funções

Esta função abrimos a porta serial com a syscall open()e ajustamos o struct do “termios.h” para comunicação padrãoint serialboot(const char* serialport, int baud);

Função para uso da syscall read() no descriptor para pegar input... int serialread(int fd, char* buf, char until);

Esta função tira foto da webcam usando API do OpenCVvoid webcam(const char* file);

Page 17: detector de ladrão com laser

Parte lógica

// se receber "1" if(strcmp(buf,"1")>0) { //microsegundos do sleep usleep(500000); puts("MOVEMENT ONLINE"); puts(buf); counter++; OFF=0; } //numero de vezes que achou movimento if(counter==MOVES) { puts("cof cof thief in HOME"); // tira foto da webcam webcam("test.jpg"); // manda e-mail com anexo a webcam :-) ,poderia ser um execl() também... system(CMD); break; counter=0; }

Page 18: detector de ladrão com laser

Perguntas ???

Page 19: detector de ladrão com laser

Obrigado pela atenção

Onde podemos conversar ?

irc.freenode.net#cogubin

[email protected]

Thanks:m0nad,Iak,sigsegv,ebellani,_mlk_,

clandestine,eremitah,mentebinaria,kov,f117,syn_ackmarcelomf,zeppelin,muzgo,b4r0n,nibbles,voidpointer

enygmata,crash,SecMentor, __von,twi-john , utroz,sexpistol,_ioutros amigos...