Meu primeiro projeto newbie com arduino é basicamente um sensor de movimento primitivo, apartir de um sensor de ultrasom hc-sr04 eu consido definir se alguém entrou no meu localhost e então eu integrei o arduino num Raspberry Pi 1 e conseguir ler os dados da porta /dev/ttyACM0 e com base nisso eu consigo disparar emails para meu email pessoal.
Caso você não saiba o que é arduino talvez encontre informação mais útil
aqui
Esquema
Abaixo segue o esquema eletronico do projeto:
Só por nota, o desenho acima não representa o projeto real pois o sensor é de 3 pinos e não é o mesmo que eu utilizei devido à plataforma de criar o esquema não ter o mesmo modelo.
Arduino Code
Segue o código do carregado no microcontrolador:
//Carrega a biblioteca do sensor ultrassonico
#include
//Define os pinos para o trigger e echo
#define pino_trigger 9
#define pino_echo 8
//Inicializa o sensor nos pinos definidos acima
Ultrasonic ultrasonic(pino_trigger, pino_echo);
void setup()
{
Serial.begin(9600);
pinMode (13,OUTPUT);
}
void loop()
{
float cmMsec;
long microsec = ultrasonic.timing();
cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);
if (cmMsec <= 80){
digitalWrite(13,HIGH);
Serial.print("Move:");
Serial.println(cmMsec);
delay(40000);
}
else{
digitalWrite(13, LOW);
}
delay(250);
}
O lance é o seguinte, vou interceptar todos os dados que vierem pela “serial” atráves do Serial.print* e no raspberry vou poder tratar as informações etc.
Raspberry Pi 1 Code
Para disparar os emails eu vou utilizar o mutt, um programa simples capaz de logar e disparar emails a partir de uma conta já existente em algum servidor de imap.
$ sudo apt-get install mutt
Então você precisa criar um arquivo no diretório home do usuário que irá rodar o comando qual vai conter as configurações da conta de email:
$ vim ~/.muttrc
Segue exemplo de configuração do ~/.muttrc
set imap_user = "username"
set imap_pass = 'password'
set smtp_url = 'smtp://username@smtp.gmail.com:587'
set smtp_pass = 'again password'
set from = "mail from who"
set realname = " set realname here"
set ssl_force_tls = yes
set ssl_starttls=yes
set certificate_file=~/.mutt/certificates
Beleza, agora vamos ao shellscript que vai fazer o processo de encaminhar os emails.
#!/bin/bash
function send(){
echo "Intruder Detected at: $(date) -:> Distance $1" | mutt -s "Root Intruder Detected "
}
stty -F $1 raw
stty -F $1 -echo
while read -rs -n 1 c && [[ $c != 'q' ]]
do
if [ $(echo $c | wc -c ) -eq 0 ];then
echo "[!] Breaking"
break
elif [ $c != 'r' ];then
string=$string+$c
else
move=$( echo $string | tr -d '+')
send $move &
echo $move
string=''
fi
done < $1
Repare que o script deve ser executado da seguinte forma:
$ ./handler.sh /dev/ttyACM0
Onde /dev/ttyACM0 é a conexão do arduino com o sistema, você pode verificar em qual ele se conectou atráves do comando dmesg
Vou colocar esse projeto no git porquê sei lá, porquê não né, então caso alguém esteja lendo, por favor verifique o git pois pode ser que eu atualizei lá e esqueci de atualizar o blog.
EOF
Site que usei pra fazer o desenho da protoboard.
https://stackoverflow.com/questions/28763863/shell-script-to-write-and-read-data-from-serial-communication
