INSTITUTO TECNOLÓGICO DE SAN LUIS POTOSÍ
RESIDENCIA PROFESIONAL
Nombre de la empresa COMISIÓN FEDERAL DE ELECTRICIDAD
CFE NOMBRE DEL PROYECTO
R2D2 NOMBRE DEL RESIDENTE: Misael Araujo Piña NOMBRE DEL RESIDENTE: Luis Fernando Sánchez Martínez CARRERA: Ingeniería en Mecatrónica.
SOLEDAD DE GRACIANO SANCHEZ, S.L.P., A 21 DE JULIO DEL 2021
® Instituto tecnológicos de San Luis Potosí. 2021 Reservados todos los derechos de reproducción.
1
PREFACIO
Permanencia, perseverancia y persistencia a pesar de todos los obstáculos, desalientos e imposibilidades: Es esto, que en todas las cosas se distingue el alma fuerte de la débil. Thomas Carlyle. Acepta los desafíos para que puedas sentir la euforia de la victoria. George S. Patton. Un tropiezo, una caída, una derrota no es nada del otro mundo. Los verdaderos hombres tienen la existencia repleta de fracasos, pero de todos y cada uno de ellos ha sabido levantarse, sacudirse el polvo, poner un pie delante del otro y seguir caminando. Continuar con la vida ya es un éxito en sí mismo, así que felicítate de seguir en la lucha. Ánimo, seguro que algo bello te espera en el futuro
2
Resumen:
Este documento pretende explicar el funcionamiento y detallar la programación realizada al robot R2D2 delegada por el Ing. Víctor Manuel Campos Villanueva. Dicha optimización consto de retirar el hardware y software instalado, dichas funciones se limitaban a comandos de voz y movimientos programados sin salirse del paradigma del programador. El reto consistió en la integración como sustitución tanto de hardware como de software, dentro del apartado de hardware se integraría 2 puentes h para el control de sentido de los motores, 1 cámara con alta resolución, 1 tarjeta ESP8266 para el control del sistema, 1 bocina multifunciones para el apartado de entretenimiento y batería 18650 litio para un alto rendimiento ala hora de su funcionamiento. Dentro del apartado de software integrar todo en 1 sistema o aplicación para sistemas operativos Android dejando la aplicación sea por wifi tanto el control del robot como el monitoreo de la cámara.
3
1
INTRODUCCIÓN ______________________________________________________ 5 1.1.1 Lugar donde se realizará el proyecto: _____________________________________________ 5 1.1.2 Información sobre la empresa, organismo o dependencia para la que se desarrollara el proyecto: __________________________________________________________________________ 5
2
CAPÍTULO I: 2.1
EL OBJETO DE LA INVESTIGACIÓN ____________________________ 6
EL TEMA DE INVESTIGACIÓN ______________________________________________ 7
2.1.1 PLANTEAMIENTO DE PROBLEMA ________________________________________________ 2.1.2 OBJETIVO ___________________________________________________________________ 2.1.2.1 OBJETIVOS ESPECÍFICOS __________________________________________________ 2.1.3 JUSTIFICACION _______________________________________________________________ 2.1.4 ALCANCES __________________________________________________________________ 2.1.5 LIMITACIONES _______________________________________________________________
2.2
Marco de referencia. ____________________________________________________ 8
2.3
Recursos necesarios _____________________________________________________ 8
2.3.1 2.3.2 2.3.3
3
Arduino.cc __________________________________________________________________ 8 ESP8266 ____________________________________________________________________ 9 Pasos para IDE de Arduino reconozca ESP8266 como una tarjeta _________________ 12
CAPÍTULO: II 3.1 3.1.1 3.1.2
4
7 7 7 7 7 8
PROGRAMACIÓN DEL DISPOSITIVO Y FUNCIONAMIENTO. _____ 16
DESARROLLO _________________________________________________________ 17 Programación ESP8266 _______________________________________________________ 17 Pasos para obtener la IP del ESP8266 ____________________________________________ 21
CAPÍTULO III:
Conclusión, bibliografía y anexos. _________________________ 25
4.1
Conclusión: ___________________________________________________________ 26
4.2
BIBLIOGRAFÍA _________________________________________________________ 27
4.3
Anexos ______________________________________________________________ 27
4
1 INTRODUCCIÓN En suma, la importancia de la realización de este proyecto radica en que permite, en primera instancia, analizar las necesidades y demandas de los trabajadores de CFE, respecto a los equipos y las lógicas MCAD A su vez, de forma indirecta, constituye un importante medio para evaluar el correcto funcionamiento de los equipos, con la finalidad de establecer propuestas de mejoramiento para brindar soluciones a algunas fallas presentes. Este proyecto consta de cuatro capítulos, a saber: Capítulo I: El objeto de la investigación, se establece la instalación de los recursos necesarios para el correcto funcionamiento de las aplicaciones que se requieren para programar el equipo. Capítulo II: programación del dispositivo y funcionamiento. Capítulo III: Conclusión, bibliografía y anexos.
1.1.1 Lugar donde se realizará el proyecto: Joaquín Pardave 216, Jardines del Estadio, 78280 San Luis, S.L.P. 1.1.2 Información sobre la empresa, organismo o dependencia para la que se desarrollara el proyecto: La Comisión Federal de Electricidad es una empresa pública sin fines de lucro, de carácter social, que ofrece el servicio público de energía eléctrica, servicio fundamental para el desarrollo de una nación.
5
2 CAPÍTULO I: EL OBJETO DE LA INVESTIGACIÓN
6
2.1
EL TEMA DE INVESTIGACIÓN
2.1.1 PLANTEAMIENTO DE PROBLEMA Crear una aplicación Android para la automatización de un robot R2D2 y obtener los recursos y materiales óptimos dando el mejor costo beneficio para ambas partes. Dejando un proyecto funcional y fácil de modificar en caso de expansión de recursos de entretenimiento.
2.1.2 OBJETIVO • Automatizar un robot.
2.1.2.1 OBJETIVOS ESPECÍFICOS • Crear una apk(app Android). •
Modificar el robot para la adaptación de elementos del proyecto.
•
Conseguir una cámara con las mejores prestaciones.
•
Crear un manual de programación.
2.1.3 JUSTIFICACION El proyecto propone ciertas actividades dinámicas que buscas la mejor forma para obtener progreso en el paradigma de control para una mejora en su funcionamiento. Así como dar soluciones algunos componentes dentro del equipo R2D2, reutilizado en el caso de algunos componentes los cuales son de carácter aprovechable para sus nuevas funcionalidades.
2.1.4 ALCANCES ✓ Conocer a fondo la programación orientada objetos. ✓ Lograr obtener áreas de oportunidades para seguir mejorando.
7
2.1.5 LIMITACIONES ✓ Época de planeación en plena contingencia por CoVid-19. ✓ Como parte del proceso se cuenta con un equipo del cual no existe tanta información como uno desearía.
2.2
Marco de referencia.
2.3
Recursos necesarios
2.3.1 Arduino.cc Arduino es una plataforma de creación de electrónica de código abierto, la cual está basada en hardware y software libre, flexible y fácil de utilizar para los creadores y desarrolladores(Figura 1.0). Esta plataforma permite crear diferentes tipos de microordenadores de una sola placa a los que la comunidad de creadores puede darles diferentes tipos de uso.
FIGURA 1.0 interface Arduino cc
Para poder entender este concepto, primero vas a tener que entender los conceptos de hardware libre y el software libre. El hardware libre son los dispositivos cuyas
8
especificaciones y diagramas son de acceso público, de manera que cualquiera
puede replicarlos. Esto quiere decir que Arduino ofrece las bases para que cualquier otra persona o empresa pueda crear sus propias placas, pudiendo ser diferentes entre ellas pero igualmente funcionales al partir de la misma base. El software libre son los programas informáticos cuyo código es accesible por cualquiera para que quien quiera pueda utilizarlo y modificarlo. Arduino ofrece la plataforma Arduino IDE (Entorno de Desarrollo Integrado), que es un entorno de programación con el que cualquiera puede crear aplicaciones para las placas Arduino, de manera que se les puede dar todo tipo de utilidades. El proyecto nació en 2003, cuando varios estudiantes del Instituto de Diseño Interactivo de Ivrea, Italia, con el fin de facilitar el acceso y uso de la electrónico y programación. Lo hicieron para que los estudiantes de electrónica tuviesen una alternativa más económica a las populares BASIC Stamp, unas placas que por aquel entonces valían más de cien dólares, y que no todos se podían permitir. El resultado fue Arduino, una placa con todos los elementos necesarios para conectar periféricos a las entradas y salidas de un microcontrolador, y que puede ser programada tanto en Windows como macOS y GNU/Linux. Un proyecto que promueve la filosofía 'learning by doing', que viene a querer decir que la mejor manera de aprender es cacharreando. Como hemos dicho es la web original de Arduino y la que conocen bien todos los que han trabajado con Arduino. Los elementos más importantes de esta web son: •
Download: https://www.arduino.cc/en/Main/Software donde
se
puede
descargar la última versión del software de desarrollo de Arduino para cualquier SO, así como las versiones anteriores, código fuente, preview de las próximas versiones y otro software relacionado. 2.3.2 ESP8266 Los usuarios que estén familiarizados con Arduino estarán al tanto de lo que este tipo de plataforma puede llegar a ofrecer. Al igual que ocurre con Raspberry
9
Pi, Arduino va construyendo su propio ecosistema, pero que a su vez potencia el
uso de sus diseños en ámbitos más específicos. Por ello, hoy hablaremos del ESP8266((FIGURA 1.1), un módulo que ha conseguido impulsar la plataforma. El impulso actual de Arduino se debe en parte a la llegada del ESP8266
FIGURA 1.1 tarjeta esp8266
Puede que algunos no estén al tanto de lo que es a día de hoy Arduino y cómo está transformando el mundo de la electrónica de consumo para usuarios tanto noveles como avanzados. Arduino es una empresa que se dedica al desarrollo de software y hardware libre, donde tiene una comunidad internacional que impulsa muchos modelos de placas para electrónica. El propósito es el de acercar el mundo de la electrónica al usuario común y a ciertas empresas que estén interesadas en este tipo de plataformas. Todo se comercializa en base a lo que conocemos como DIY o Do It Yourself, por lo tanto, comparte la esencia de Raspberry Pi, pero de forma mucho más libre y sobre todo avanzada, escalando muchos más niveles y siendo más abierta en cuanto a la electrónica.
10
FIGURA 1.2 placa esp8266 mcu
Como toda plataforma, tuvo un inicio algo discreto, que mediante nuevas aportaciones en cuanto a placas y diversos controladores, ha ido adquiriendo más fama y generando más expectación. Como pasó en Raspberry Pi, un chip logró aumentar la demanda de placas y su expansión en el mercado. Dicho chip fue el ESP8266(FIGURA 1.2),un módulo para Arduino de bajo costo que permite la conexión Wi-Fi de la placa en cuestión con la red. Esto permitió que todos los proyectos que hasta ahora requerían conexión física pudiesen trabajar a distancia, controlar desde una puerta de garaje, hasta una alarma casera o construir un controlador LED. Para lograrlo, otro componente principal que entra en juego es el transistor 2N2222, el cual junto con el ESP8266 y una placa Arduino, pueden lograr auténticas maravillas. ESP8266 un chip Wi-Fi que puede overclockearse(FIGURA 1.3)
FIGURA 1.3 disposición de la tarjeta esp8266
11
Este microcontrolador tiene una serie de características clave que lo hacen tan atractivo como asequible. Y es que partimos de una CPU RISC de 32 bits fabricada por Tensilica dentro del modelo Xtensa LX106, el cual trabaja a 80 MHz. Lo curioso de este chip es que es capaz de soportar overclock, tanto en su CPU como en su memoria flash, lo que consigue impulsar su rendimiento hasta los 160 MHz en su procesador y entre los 40 y 80 MHz en su memoria flash. Tiene una Caché de instrucciones de 64 KB y una de datos de 96 KB, capacidad externa de memoria QSPI que puede llegar hasta los 16 MB, soporte para IEEE 802.11 b/g/n , TR switch, balun, LNA, soporte para WEP y WPA/WPA2. Los métodos de entrada se reducen a una conexión de 16 pines GPIO, algo muy común en los días que corren y que le otorga mayor flexibilidad. Aparte, tiene soporte para UART, SPI e I2C, donde trabaja a un voltaje entre 3V y 3,6V con una intensidad de 80mA. 2.3.3
Pasos para IDE de Arduino reconozca ESP8266 como una tarjeta
Debemos tener ya instalado nuestro Arduino IDE con versión 1.6.4 o superior. Seguidamente vamos a archivo>Preferencias y en la casilla “Gestor de URLs Adicionales de Tarjetas”(FIGURA 1.4) agregamos: http://arduino.esp8266.com/stable/package_esp8266com_index.json
12
FIGURA 1.4 preferencias(IDE Arduino)
Preferencias IDE Arduino, ESP8266 Seguidamente vamos a Herramientas>placa: … >Gestor de Tarjetas(FIGURA 1.5)
FIGURA 1.5 Gestor de tarjetas(IDE Arduino)
Y buscamos en la lista “esp8266 by ESP8266 Community“, lo seleccionamos e instalamos Gestor de tarjetas- esp8266
13
La instalación va a demorar un poco, al finalizar, el ítem del ESP8266 les debe marcar como instalado. Ahora en herramientas>placas, deben de estar las nuevas placas instaladas. tarjetas ESP8266(FIGURA 1.6)
FIGURA 1.6 tarjeta a seleccionar
En la figura (FIGURA 1.6) se muestra la tarjeta que debemos seleccionar para poder programar nuestro proyecto.
14
15
3 CAPÍTULO: II PROGRAMACIÓN DEL DISPOSITIVO Y FUNCIONAMIENTO.
16
3.1
DESARROLLO
Partiremos de los parámetros más comunes a modificar dentro de la programación desarrollada en lenguaje c dentro de la IDE de Arduino explicando el funcionamiento de la programación así el cómo subir la programación y obtener parámetros necesarios para el correcto funcionamiento de la app de Android llamada R2-D2.
3.1.1 Programación ESP8266 #include WiFiClient client; WiFiServer server(80); /* WIFI settings */ const char* ssid = "HUAWEI Y8s"; //WIFI SSID nombre de la red wifi const char* password = "hola1234"; //WIFI PASSWORD /* data received from application */ String data =""; /* define L298N or L293D motor control pins */ int IZQ1 = 16; //D0 int IZQ2 = 5; //D1 int DER1 = 4; //D2 int DER2 = 0; //D3 int CEN1 = 2; //D4 int CEN2 = 14; //D5 int LED = 12; //D6 boolean Bool1; void setup() { /* inicializamos las salidas que utilizaremos */ pinMode(IZQ1, OUTPUT); pinMode(IZQ2, OUTPUT);
pinMode(DER2, OUTPUT);
17
pinMode(DER1, OUTPUT);
pinMode(CEN1, OUTPUT); pinMode(CEN2, OUTPUT); pinMode(LED, OUTPUT); digitalWrite(IZQ1,LOW); digitalWrite(IZQ2,LOW); digitalWrite(DER1,LOW); digitalWrite(DER2,LOW); digitalWrite(CEN1,LOW); digitalWrite(CEN2,LOW); digitalWrite(LED,LOW); boolean Bool1 = false; /* empezamos la comunicación con los servidores */ Serial.begin(115200); connectWiFi(); server.begin(); } void loop() { /* If the server available, run the "checkClient" function */ client = server.available(); if (!client) return; data = checkClient (); Serial.print(data); /************************ *************************/
Run
function
according
to
incoming
data
from
application
if (data == "ADELANTE") { digitalWrite(IZQ1,HIGH); digitalWrite(IZQ2,LOW); digitalWrite(DER1,LOW); digitalWrite(DER2,HIGH);
else if (data == "ATRAS")
18
}
{ digitalWrite(IZQ1,LOW); digitalWrite(IZQ2,HIGH); digitalWrite(DER1,HIGH); digitalWrite(DER2,LOW); } else if (data == "IZQUIERDA") { digitalWrite(IZQ1,HIGH); digitalWrite(IZQ2,LOW); digitalWrite(DER1,LOW); digitalWrite(DER2,LOW); } else if (data == "DERECHA") { digitalWrite(IZQ1,LOW); digitalWrite(IZQ2,LOW); digitalWrite(DER1,LOW); digitalWrite(DER2,HIGH); } else if (data == "CDERECHA") { digitalWrite(CEN1,HIGH); digitalWrite(CEN2,LOW); } else if (data == "CIZQUIERDA") { digitalWrite(CEN1,LOW); digitalWrite(CEN2,HIGH); } else if (data == "LED1")
Bool1 =! Bool1;
19
{
digitalWrite(LED,Bool1); } else if (data == "STOP") { digitalWrite(IZQ1,LOW); digitalWrite(IZQ2,LOW); digitalWrite(DER1,LOW); digitalWrite(DER2,LOW); digitalWrite(CEN1,LOW); digitalWrite(CEN2,LOW); } } void connectWiFi() { Serial.println("Connecting to WIFI"); WiFi.begin(ssid, password); while ((!(WiFi.status() == WL_CONNECTED))) { delay(300); Serial.print(".."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("NodeMCU Local IP is : "); Serial.print((WiFi.localIP())); } /********************************** RECEIVE ******************************************/
DATA
FROM
the
APP
String checkClient (void) { while(!client.available()) delay(1); String request = client.readStringUntil('\r');
request.remove(request.length()-9,9);
20
request.remove(0, 5);
return request; } Los parámetros mas importantes a modificar están remarcados en color azul
3.1.2 Pasos para obtener la IP del ESP8266 Primer paso es abrir el robot por la parte trasera conectar el cable de datos al esp8266 y ala computadora tomando en cuenta que debemos tener ya preinstalado el IDE de Arduino y las tarjetas esp8266. Una vez conectada el robot ala computadora debemos asegurarnos que esta seleccionado el puerto como lo muestra en la FIGURA 1.7
FIGURA 1.7 selección de puerto
Ahora comprobamos que la placa seleccionada es la correcta es este caso la placa que debemos seleccionar se llama nodeMCU1.0(ESP-12EMODULE) (FIGURA 1.8) debemos entrar a la opción de herramienta>> placa>> y buscas en este apartado la placa si ya esta seleccionado solo confirmamos y seguimos con el siguiente paso.
21
FIGURA 1.8 tarjeta a seleccionar
Comprobamos que el nombre de la red wifi ala que nos conectaremos este correcto asi como su contraseña estos apartados se muestras en el encabezado de la programación como se muestra en la figura 1.9
FIGURA 1.9 configuración de la red
Damos clic en la flecha remarcada en color rojo mostrada en la FIGURA 1.9 comenzara el proceso de carga una vez la carga este completo este nos mostrara un mensaje de “subido”. Ahora pasamos abrir el puerto serial ubicado en la parte derecha superior como se ve en la figura 1.10
22
FIGURA 1.10 monitor serial
Abrimos muy posible nos aparezca en blanco como se muestra en la figura 1.10 aquí debemos irnos al esp8266 y presionar el botón de RST aquí recordemos que la velocidad del puerto serial debe estar en 115200 baudios como se muestra en la figura 1.10. una vez al presionar RST en la tarjeta ESP8266 el monitor serial nos arrojará la IP por cual se conectará en la red. Como se muestra en la FIGURA 1.11
FIGURA 1.11 IP DHCP ESP8266
Esta ip es la que colocaremos dentro de la aplicación desarrollada para Android como se muestra en la figura 1.12
23
FIGURA 1.12 aplicación R2-D2
24
4 CAPÍTULO III: Conclusión, bibliografía y anexos.
25
4.1
Conclusión:
Las soluciones que brindan los programas de proyectos dados por CFE para la solución de problemáticas radican en el buen sentido común de lo que se proyectó y se está proyectando para satisfacer las necesidades de la población.
Para cualquier aclaración en la parte de anexos puede encontrar nuestro número de contacto para aclaración de cualquier duda.
26
4.2
BIBLIOGRAFÍA
[1] Manual de Programación en c. José Manuel Ruiz Gutiérrez. [2] Funcionamiento de los Inversores Puente H. Nicolás Muñoz-Galeano. [3] App inventor Raúl C. [4] Sitios Web Consultados:
https://www.arduino.cc https://www.amazon.com https://www.espressif.com
4.3
Anexos
Contacto: Misael araujo Piña Correo:
[email protected] Cel: 441337384
Luis Fernando Sánchez Martínez Cel: 4446644076
27