Download En el tutorial de hoy vamos a hacer que el sensor de

Document related concepts
no text concepts found
Transcript
En el tutorial de hoy vamos a hacer que el sensor de ultrasonido (HC-SR04) conectado a la tarjeta
UDOO nos detecte cualquier cosa que se acerque. Cuando detecte algo, nos enviará un correo
electrónico usando el SMTP de Google.
¿Qué es SMTP?
El SMTP es un Protocolo para la transferencia simple de correo electrónico. Librería de smtp de
Python http://docs.python.org/2/library/smtplib.html
¿Tarjeta UDOO?
La nueva minicomputadora combina el poder de Arduino y de la Raspberry Pi, pero con una potencia
cuatro veces mayor. Se busca que sirva para crear prototipos rápidos de proyectos que contengan
hardware y software. UDOO tiene dos procesadores en una tarjeta de 11 x 8.5 cms. Usa un
procesador Freescale de 1GHz, ARM i.MX6, con dos o cuatro núcleos, que puede correr Linux o
Android, además del ARM SAM3X, que usa la tarjeta Arduino Due.
Arduino
Para este proyecto la conexión del sensor (HC-SR04) es muy sencillo y la programación muy corta
El código a continuación esta comentado para su entendimiento.
#define trigPin 8 //Definimos Trigger pin
#define echoPin 7 //Definimos Echo pin
int rangoMaximo = 40; //Rango máximo necesitado
int rangoMinimo = 0; //Rango mínimo necesitado
int duracion, distancia;
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
digitalWrite(trigPin, HIGH); //El siguiente ciclo trigPin / echoPin
delayMicroseconds(1000); //se utiliza para determinar la distancia del
digitalWrite(trigPin, LOW); //objeto más cercano haciendo rebotar ondas sonoras fuera de ella
duracion = pulseIn(echoPin, HIGH); //Determina la duración
distancia = (duracion/2) / 29.1; //Calcula la distancia en cm
if (distancia >= rangoMaximo || distancia <= rangoMinimo){
Serial.println("La casa está segura."); //Envía a la computadora por el puerto serial el mensaje: 'La casa está segura.'
} else {
Serial.println("Hay un intruso en la casa."); //Envía a la computadora por el puerto serial el mensaje: 'Hay un intruso en la
casa.'
}
delay(500); // Hace un retardo de 0.5 segundos antes de la próxima lectura.
}
Python
En este caso el código Python nos servirá para poder hacer la lectura de los que nos envié el
sensor. Por default una vez que tienes el sistema Linux cagado en la UDOO esta trae instalado
Python solo hace falta agregar una librería de Python:
Sudo apt-get install Python-serial
Ahora este es el código que necesitas para el envió de correo.
-*- encoding: utf-8 -*import serial
import time
import smtplib
USUARIO_GMAIL = '[email protected]'
CONTRASENA_GMAIL = 'micontraseña'
DESTINATARIO = '[email protected]'
REMITENTE = '[email protected]'
ASUNTO = ' ¡ Hay un intruso en su hogar. ! '
MENSAJE = ' ¡ Su sensor de seguridad ha detectado movimiento en su casa. ! '
arduino = serial.Serial('COM4', 9600, timeout = 3.0) #E
def enviar_correo_electronico():
print("Envíando e-mail")
smtpserver = smtplib.SMTP("smtp.gmail.com",587) #Definimos el objeto 'smtpserver' con smptlib.SMTP, SMTP("",)
Administra la conexión SMTP
smtpserver.ehlo() #Este método prepara envíar un correo electrónico
smtpserver.starttls() #Pone la conexión con el servidor SMTP en el modo de TLS.
smtpserver.ehlo()
smtpserver.login(USUARIO_GMAIL, CONTRASENA_GMAIL) #Iniciamos sesion en el SMTP server de Google
header = 'To: ' + DESTINATARIO + '\n' #Construimos el 'HEADER' para envíar el correo electrónico
header += 'From: ' + REMITENTE + '\n'
header += 'Subject: ' + ASUNTO + '\n'
print header
msg = header + '\n' + MENSAJE + ' \n\n' #Concatenamos el'HEADER' y el 'MENSAJE' del correo electrónico
smtpserver.sendmail(REMITENTE, DESTINATARIO, msg) #Envíamos el correo electrónico
smtpserver.close()
while True:
lineaLeida = arduino.readline() #Guardo una línea leída desde el puerto serial
print(lineaLeida) #Imprime la variable mensaje
if lineaLeida[0] == 'H' : #Si la línea contiene a 'H' envía un correo electrónico
enviar_correo_electronico() #Envío un correo electrónico
time.sleep(0.5) #Suspende la ejecución por 0.5 segundos
# EOF
Para ejecutar el código solo hace falta la siguiente instrucción. (envio_de_correo.py es el nombre
del programa, puede ser llamado como guste)
Python envio_de_correo.py
Al final si todo salió bien este sería el resultado.