Arduino notificando a chegada de novos emails

Na dica de hoje vou mostrar como fazer um GMAIL Notifier (Notificador de emails do GMAIL) usando hardware e software. Ao invés do programa notificar a chegada de um novo email vou utilizar um arduino para fazer isso! Legal não? Pois bem, para voce poder criar um prototipo como esse voce irá precisar de:

1 – Arduino
2 – Leds de cores diferentes
3 – Um buzzer 8Ω (Esse item não é de total necessidade).

Você precisa conhecer um pouco sobre programação Python e sobre o modulo FeedParser. Informações podem ser encontradas aqui mesmo no blog na categoria Python. Clique Aqui para ver como é feita a instalação do modulo FeedParser e algumas referencias

O prototipo final é demonstrado pelo diagrama abaixo:

Simples assim. Vamos a uma rápida explicação:

O script em python ira verificar sua caixa de entrada do gmail, caso haja algum email novo ou não lido o script enviará um sinal através da porta serial para o arduino que irá reconhecer o sinal e então acenderá um led da cor verde indicando emails novos e ainda tocara um som para alertar o usuário caso este não esteja na frente do computador. Se não existir emails novos um led vermelho será aceso.

Vamos iniciar com o script em python: Observe o campo Usuário e Senha no código e informe seu usuário e senha do GMAIL

# Autor: Fernando Krein Pinheiro
# Data: 05/12/2011
# Linguagem: Python
# ========= IMPORTANTE ===========
# O codigo esta livre para usar,
# citar e compartilhar desde que
# mantida sua fonte e seu autor.
# Obrigado.

#!/usr/bin/python
# -*- coding: cp1252 -*-

import feedparser
import time
import sys
import serial

porta = '/dev/ttyUSB0'
baud_rate = 9600

#############################################################################
def escrever_porta(SINAL):

   try:

       Obj_porta = serial.Serial(porta, baud_rate)
       Obj_porta.write(SINAL)
       Obj_porta.close()

   except serial.SerialException:
       print"ERRO: Verifique se ha algum dispositivo conectado na porta!"

#############################################################################
def verifica_email(tempo):

    Usuario="SEU-LOGIN-DO-GMAIL"
    Senha="SUA-SENHA-DO-GMAIL"
    URL="https://"
    ServidorMail="mail.google.com"
    Caminho="/gmail/feed/atom"

    if tempo == 0:
        qtd_emails = int(feedparser.parse(URL + Usuario + ":" + Senha + "@" +
	ServidorMail + Caminho)["feed"]["fullcount"])

	if qtd_emails > 0:
    	    print "Parabens: Voce tem" ,qtd_emails, "emails na caixa de entrada!"
   	    SINAL = 's'
    	    escrever_porta(SINAL)
        else:
    	    print "Ops: Nenhum email na caixa de entrada!"
            SINAL = 'n'
    	    escrever_porta(SINAL)

    else:

        while True:
	    qtd_emails = int(feedparser.parse(URL + Usuario + ":" + Senha + "@" +
	    ServidorMail + Caminho)["feed"]["fullcount"])

	    if qtd_emails > 0:
                print "Parabens: Voce tem" ,qtd_emails, "emails na caixa de entrada!"
                SINAL = 's'
                escrever_porta(SINAL)
	    else:
    		print "Ops: Nenhum email na caixa de entrada!"
    		SINAL = 'n'
    		escrever_porta(SINAL)
    		time.sleep(tempo)

#############################################################################

if __name__=='__main__':

    print"==========================================="
    print"=====      Notificador do gmail       ====="
    print"==========================================="
    print"===== 1 - Verificar emails agora?     ====="
    print"===== 2 - Verificar email por tempo?  ====="
    print"===== 3 - Sair                        ====="
    print"==========================================="
    opcao = int (raw_input("Digite a Opcao: "))
    tempo = 0
    if opcao == 1:
        verifica_email(tempo)

    elif opcao == 2:
        tempo = int(raw_input("Digite o tempo de intervalo a cada verificacao (tempo em segundos)"))
        verifica_email(tempo)

    elif opcao == 3:
        sys.exit()

    else:
        print"Valor invalido"
#############################################################################

Agora passamos para o script do arduino:

/*
# Autor: Fernando Krein Pinheiro
# Data: 05/12/2011
# Linguagem: C
# ========= IMPORTANTE ===========
# O codigo esta livre para usar,
# citar e compartilhar desde que
# mantida sua fonte e seu autor.
# Obrigado.
*/

#define nota 1000
int LED_VERMELHO = 10;
int LED_VERDE =  11;
int BUZZER = 12;

char NOVO_EMAIL = 's';
char SEM_EMAIL = 'n';

void setup()
{
  Serial.begin(9600);
  pinMode(LED_VERDE, OUTPUT);
  pinMode(LED_VERMELHO, OUTPUT);
  pinMode(BUZZER, OUTPUT);
}

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

  if(SINAL == NOVO_EMAIL)
  {
    digitalWrite(LED_VERDE, HIGH);
    Alerta(BUZZER, nota, 300);
    digitalWrite(LED_VERMELHO, LOW);

  }
  else
      if(SINAL == SEM_EMAIL)
      {
          digitalWrite(LED_VERMELHO, HIGH);
          digitalWrite(LED_VERDE, LOW);
      }
}

void Alerta (unsigned char BUZZER, int frequencia, long tempoMilisegundos)
{
    int Contador, x=0;
    long pausa = (long)(1000000/frequencia);
    long loopT = (long)((tempoMilisegundos*1000)/(pausa*2));
    while(x<3)
    {
    	for (Contador=0;Contador<loopT;Contador++)
    	{
        	digitalWrite(BUZZER,HIGH);
        	delayMicroseconds(pausa);
        	digitalWrite(BUZZER,LOW);
        	delayMicroseconds(pausa);
    	}
		delay(100);
      		x++;
    }
}

Esquema de hardware do arduino:

Agora basta testa-lo e modificar da forma que quiser!

Por hoje é só pessoal! 🙂
Espero que tenham gostado da dica!  Para fazer download do projeto basta clicar AQUI!

Anúncios
por ferpinheiro Postado em Arduino

3 comentários em “Arduino notificando a chegada de novos emails

  1. Eu gostaria de saber se tem alguma postagem nova em um site.
    Ex: da receita federal,
    eu entro com o codigo do processo e o programa me avisa se tem alguma postagem nova referente aquele processo.

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