UNIVERSIDAD TECNOLÓGICA DE HONDURAS PRESENTADO POR: EDLIN SORTO N° CUENTA: 200920510007 ASIGNATURA: Inteligencia artificial CATEDRÁTICO: Master Norman Alberto Cubilla Rivera TEMA: ➢ Manual FECHA: 16 de Julio de 2019 Índice Introducción .................................................................................................................................. 1 Lenguajes a utilizar ........................................................................................................................ 2 Paso 1 ........................................................................................................................................ 2 Paso 2 ........................................................................................................................................ 3 Paso 3 ........................................................................................................................................ 3 Xrdp: Instalación en máquina remota....................................................................................... 3 Xrdp: Inicio y parada del servicio .............................................................................................. 3 Remmina: Instalar un cliente en la máquina local .................................................................... 3 ¿Qué es PHP5? .............................................................................................................................. 4 ¿Qué es Apache2? ......................................................................................................................... 4 ¿Para qué sirve esta herramienta? ............................................................................................... 8 Herramientas a utilizar .................................................................................................................. 8 Sensor PiR .................................................................................................................................. 8 Análisis del archivo Alarma.py ................................................................................................ 10 Código de la excepción:........................................................................................................... 10 Python alarma2.py .................................................................................................................. 11 Introducción Hola muy buenas noches, a continuación, vamos a realizar el informe aprendido de la clase de inteligencia artificial podemos realizar un manual técnico de los pasos a realizar para: Vamos a incorporar el conocimiento de programación basada en python que nos va a permitir manipular un sensor bit que es un sentor de proximidad cuando este detecte la presencia o el movimiento entonces automáticamente se va a ejecutar un script que va a tomar una serie de fotos se a programar de tal manera que se envía a un correo electrónico que nosotros podemos consultar desde nuestra table o móvil o la PC que nos permita conectar a internet la idea es que nos permita la presencia informando un poquito la inseguridad, es un proyecto que podemos tener en nuestros hogares como por ejemplo personas intrusas que probablemente nos diga si hay un ladrón o que hay alguien que quiera entrar a nuestra casa o empresa o local etc.. 1 Lenguajes a utilizar ➢ PHP ➢ Python ➢ HTML Lo primero que vamos a hacer es entrar a nuestra red raspberry pi, a la cual nosotros tenemos una cámara y un sensor bit en el cuerpo 17 en el GPIO 17 allí tenemos conectados nuestro proyecto para poder iniciar Vamos a iniciar a nuestra raspberry vamos a iniciar de una conexión remota es la 9.9.2.87 para poder ingresar, en este caso ha modificado el archivo interfaz de nuestra placa electrónica y le colocado que obtenga un IP automáticamente con el propósito que tanto el cliente en este caso la maquina Windows como la placa raspberry pi tengan acceso a internet. Hay varias herramientas en la internet y la de nosotros se llama ¨IP ESCANER¨ nos pide el usuario que en este caso es PI y la contraseña es raspberry Estamos conectados en el puerto GPIO 17, luego nos vamos a conectar a Google Chrome, el sensor U tiene tres patitas la primera es tierra hay que conectar la placa GPIO en tierra luego está la patita lógica allí vamos a conectarnos directamente al GPIO y la otra es corrientes en este caso lo hemos contado a la que tiene corriente, más adelante nuestro programa de python va a detectar y en base a esa detección va a tomar la fotografías puede encender un foco etc ustedes lo pueden modificar según sus necesidades Paso 1 Nos dirigimos a las configuraciones de red y en esta parte buscamos la opción en donde podamos colocar la IP de nuestra Rasperry, para poder hacer esto ingresamos a los protocolos TCP/IP de nuestra PC 2 Paso 2 Al terminar esto verificamos la IP haciendo Ping 10.56.48.124 -t. Dependiendo cual sea la IP en nuestro caso. Paso 3 Nuestro siguiente paso seria instalar paquetes muy importantes para poder utilizar nuestra aplicación. #sudo apt-get install xrdp Xrdp es una implementación de código abierto de RDP (Remote Desktop Protocol), el protocolo utilizado por los Servicios de Terminal para la conectividad nativa del escritorio Xrdp: Instalación en máquina remota <br />$ sudo apt-get install xrdp<br /> Xrdp: Inicio y parada del servicio <br />$ sudo service xrdp [start|stop|restart]<br /> Remmina: Instalar un cliente en la máquina local es un cliente escritorio remoto escrito en GTK, que pretender ser útil para los administradores de sistemas y los viajeros, que necesiten trabajar mucho con otros equipos remotos. Remmina soporta protocolos de red múltiples en un interfaz integrado. Actualmente soporta RDP, VNC, XDMCP y SSH. <br />$ sudo apt-cache search remmina<br />remmina - remote desktop client for GNOME desktop environment<br />$ sudo apt-get install remmina<br /> 3 ¿Qué es PHP5? Este paquete proporciona el módulo PHP5 para el servidor web Apache 2 (como se encuentra en el paquete apache2-mpm-prefork). Tenga en cuenta que este paquete SOLO funciona con el MPM prefork de Apache, ya que no está compilado para subprocesos. #sudo apt-get install apache2 ¿Qué es Apache2? software de código libre que se instala normalmente en conjunto para habilitar un servidor para alojar sitios y aplicaciones web dinámicas. Este término en realidad es un acrónimo que representa un sistema operativo Linux con un servior Apache. Los datos del sitio son almacenados en base de datos MySQL y el contenido dinámico es procesado con PHP. $ sudo apt -get update $ sudo apt -get install apache2 El siguiente paso sería acceder al sistema de nuestra Rasperry como super usuario utilizando el comando: SUDO SU El servidor web que instalamos posee unos archivos, lo que necesitamos para verificar los estados del GPO. Vamos a monitorear mediante un gestor web webIOPi. que permite visualizar una entrada una salida, visualizar cuales son los pines denominados para tierra o parte eléctrica, y toda la distribución, los 26 pines Rasperry b+ y 42 para una Rasperry 2 o 3. Para instalar el webIOPi 0.7.0: 4 Cd opt cd / opt ls: para listar los archivos Se descarga de forma gz y nos toca desempaquetar. Luego cd webIOPi-0.7.0 ls: para listar los archivos ./setup.sh Luego dentro de la carpeta hay un archivo que nos va a tocar ejecutar, es muy importante tener internet en nuestra Rasperry y lo hacemos mediante Chrome con el puerto 8000 que es con el que se ingresa. Una vez en el navegador ingresamos a: GPIO HEADER: y nos muestra lo que es todo el encabezado de nuestra página con sus pines con sus estados. Seguidamente nos mostrara la siguiente interface: 5 Crearemos una carpeta mediante consola usamos el comando 'mkdir (nombre de carpeta)', debemos verificar que nos localizamos en la dirección '/var/www' al momento de hacer dicha carpeta, de lo contrario podemos tener ciertos problemas en un futuro. Después crear la carpeta debemos asignar y declarar ciertos permisos a la carpeta, ya que nosotros vamos a insertar los archivos que descargamos, al ser archivos externos, puede que no nos permita hacer ciertas acciones de pegar los archivos, para asignar estos permisos, lo hacemos con el comando 'chmod -R 777 (Y el nombre de la carpeta que acaban de crear)'. Nuestro siguiente paso va a ser configurar al usuario que utilizara nuestro servidor web, dicho perfil de usuario se llama 'www-data' debemos ejecutar en consola el comando 'visudo', ya que el perfil que acabamos de mencionar no cuenta con todos los permisos para poder personalizar algunos documentos. Entonces, para ello, debemos escribir lo siguiente: 'www-data ALL=(ALL) NOPASSWD: ALL' 6 Abrimos el documento prueba.php y vamos a ver un archivo en donde estará el llamado de los procesos a ejecutarse para que nuestro proyecto funcione, tenemos los combos en donde vamos a encender, entonces mandamos a llamar los script de cada uno utilizando un if simple y agregándolo de la siguiente manera: exec("sudo Python /var/www/app/encender1.py") y así vamos a ir agregando sucesivamente y al final apagamos el foco exec(" /./var/www/foco1.sh") y después usamos el header("location:inicio.html") para retornar al momento de ejecutar el programa. Ahora procederemos al manual técnico para poder configurar lo que son los sensores en nuestro proyecto. 7 Primeramente, accedemos a nuestra Rasperry remotamente, es importante establecer la Ip solo que en este caso vamos a utilizar una herramienta llamada Advanced IP Scanner. ¿Para qué sirve esta herramienta? El programa escanea todos los dispositivos de red, le da acceso a las carpetas compartidas y a los servidores FTP, le proporciona control remoto de las computadoras (mediante RDP y Radmin) e incluso puede apagar las computadoras de manera remota. Presionamos en función de Explorar para poder ver dispositivos conectados a la misma red y así podemos ver la Ip con la cual vamos a conectarnos remotamente. Herramientas a utilizar Sensor PiR Su componente principal son los sensores piroeléctricos. Se trata de un componente electrónico diseñado para detectar cambios en la radiación infrarroja recibida. Vamos a utilizar el GPIO 17 y mandarle lo que son 5 voltios, accedemos a la Ip para poder ver lo que son la disponibilidad de las GPIO de nuestra placa y ver si podemos usar nuestro sensor PiR. Sí ingresamos y vemos que sale en color negro significa que por defecto esta apagado. Ingresamos como super usuario usando: SUDO SU. 8 Accedemos a la carpeta de proyecto y vamos a ver archivos con el nombre de ➢ Alarm2.py ➢ correo.sh ➢ apagar_alarma2.py ➢ foto.sh. Ingresamos a documento de Alarm2.py utilizando el comando PICO que es para poder editar, vamos a observar librerías como: import subprocess import time import pygame import RPI.GPIO as GPIO Para poder utilizar lo que es el valor lógico de PIN 17 del GPIO, utilizaremos la siguiente línea de código GPIO_PIR=17 y configuramos este pin como Pin de entrada GPIO.SETUP(GPIO_PIR, GPIO.IN) Lo utilizaremos de esta manera ya que al momento que el sensor detecte movimiento este lo va a agregar como 1 Lógico y se captura como entrada. Al terminar de realizar esto guardamos los cambios dentro del documento presionando Ctrl+O. Después ingresamos a nuestro documento de foto.sh, utilizando el comando pico foto.sh ahí podemos observar el siguiente código el cual nos permite guardar las imágenes al momento que el sensor se activa. 9 Al verificar que todo esté bien configurado nos dirigimos a la parte de Alarm2.py para así poder ver la parte en que hacemos el llamado del process de tomar foto utilizando el método subprocess. call () y a través de esto hacemos el llamado del documento en donde tenemos la foto.sh Análisis del archivo Alarma.py Subprocess: es una las nuevas librerías que estamos explorando, esta nos permite ejecutar programa. Time: librería de tiempo Pygame: esta librería que nos permite incorporar audios o videos a nuestros programas. Rpi.GPIO as GPIO: con esta librería controlamos los GPIO y se le coloca un alias. While True: mientras algo sea verdadero se puede realizar cierta acción con otros comandos que es lo que se está haciendo en el código proporcionado por el ingeniero. Para ejecutar un programa o mejor dicho un subprograma lo hacemos con el siguiente código: Subprocess.call("/./home/pi/proyecto/foto.sh") dentro de las comillas siempre pondremos la ruta del programa que queramos ejecutar, es decir, primero tenemos que estar seguros de la ubicación de dicho archivo para mandarlo a ejecutar a través de código. Otra de las nuevas implementaciones de código que noté es que empezamos a utilizar las excepciones en este archivo. Código de la excepción: Try: Except KeyboardInterrupt: - Donde los dos puntos significan entonces. Este bloque try será interrumpido por teclado. Cualquier tecla que presionemos interrumpirá la ejecución. 10 Se utilizaron las banderas status0 y status1 para validar por medio de IFs y Whiles el estado del GPIO17 y así mismo capturar el valor que este genera cuando el sensor detecta radiación infrarroja de un objeto o persona. El valor que se genera es el de un 1 lógico. GPIO.cleanup () – comando para limpiar los pines y poner su valor por defecto. Vamos a ejecutar el programa seria de la siguiente manera: Python alarma2.py al ejecutarlo nos va a mostrar un mensaje listo, mientras el sensor no detecte movimiento el GPIO va a salir 0, pero ya cuando lo detecte nos mostrara el mensaje de Se ha detectado movimiento y se va a tomar las fotos, después nos dirigimos a la carpeta proyecto para poder ver las fotos que se han tomado. Es importante antes de conectar la cámara ejecutar un comando que se llama raspi-config que en el menú nos mostrara una opción habilitar cámara ENABLE CAMERA y en este habilitamos el soporte para Rasperry camera y habilitamos la conexión serial y reiniciamos para poder habilitar los cambios y así nos va a funcionar nuestro proyecto. 11