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.
© Copyright 2024