Sie sind auf Seite 1von 64

IESTP IDAT MECAT´

“AÑO DE LA LUCHA CONTRA LA CORRUPCIÓN E IMPUNIDAD”


INSTITUTO SUPERIOR TECNOLÓGICO IDAT

PROGRAMA DE TITULACION MECATRONICA INDUSTRIAL


PROYECTO: SISTEMA DE REALIDAD VIRTUAL APLICADO A

ROBÓTICA MÓVIL

Apellidos y Nombres Correo Electrónico Código


Flores Colquechagua, Kevin Erick. A1612068@idat.edu.pe A1612068
Paz Lopes, Ronald Luis A1514255@idat.edu.pe A1514255
Vega Porras, Juan José A1611942@idat.edu.pe A1611942
Zevallos Quintana, Frank Matius A1612553@idat.edu.pe A1612553

Docente Asesor: Mamani Huamán, Fredy.


Jefe Académico: Quillas Fiestas, Juan Carlos.

TRABAJO MONOGRÁFICO TEÓRICO – PRÁCTICO PARA OPTAR EL


TÍTULO PROFESIONAL TÉCNICO DE MECATRONICA INDUSTRIAL
LIMA – PERÚ
2019
IESTP IDAT MECAT´

DEDICATORIA
A nuestros maestros, por su paciencia,
bondad y generosidad, por iluminar nuestra
senda con la luz del conocimiento, por
enseñarnos a ser útiles a los demás.
A mis compañeros por la alegría compartida,
por su espíritu de solidaridad, por animarnos
constantemente hacia la culminación de
nuestra carrera.
A nuestras familias por creer en nosotros y
apoyarnos en nuestro crecimiento profesional
y personal.
IESTP IDAT MECAT´

AGRADECIMIENTO
A Dios.
A todas las personas que contribuyeron en el
desarrollo de este proyecto.
Al profesor PAUCARA PRADO,JHONATAN DAVID.
A las personas que en conjunto forman IDAT,
por brindarnos la oportunidad de adquirir
conocimientos y formaros profesionalmente.
IESTP IDAT MECAT´

PRÓLOGO

La idea para este proyecto surgió al ver una la aplicación con un visor de realidad virtual.
Dado el gran potencial que tiene dicha tecnología, se tuvo la idea de integrarlo en el
funcionamiento de un robot mobil asi cambiando la tradicional forma de visualización de
una cámara en la pc por un entorno virtual mostrado en un visor Oculus Rift haciendo
que resulte más atractiva y práctica. La herramienta elegida para dicha tarea fue el motor
de videojuegos Unity 3D. Las razones de utilizar este motor 3D fueron, principalmente, su
gran comunidad, la cual permite obtener mucha información a la hora de abordar ciertos
problemas, su compatibilidad con múltiples plataformas, o el hecho de que dispone de
una versión gratis, sin necesidad de obtener una licencia, con lo que se ahorra en costos.

Oculus Rift, sin embargo, es un dispositivo de gama media y relativo precio es un


obstáculo para muchos usuarios. Existe otras alternativa más económica, como
Cardboard pero se pierde inmersión en el mundo virtual.

La Realidad Virtual es un campo en expansión actualmente, donde aún puede innovarse,


y este es el principal motivo por el que surge este proyecto. Así mismo, muchas de la
ideas tuvieron que ser descartadas dada la enorme complejidad que suponían y el tiempo
necesario para llevarlas a cabo.
IESTP IDAT MECAT´

RESUMEN
El presente proyecto tiene como finalidad desarrollar un entorno de Realidad
virtual aplicado a un robot móvil capaz de transmitir en tiempo real el video de la
cámara y poder controlarlo por medio del oculus Rift.
IESTP IDAT MECAT´

ÍNDICE
TABLA DE CONTENIDO
IESTP IDAT MECAT´

CAPÍTULO 1

1. GENERALIDADES
La Realidad Virtual supera las barreras espaciotemporales y configura un
entorno en el que la información y la comunicación se nos muestran accesibles
desde perspectivas hasta ahora desconocidas. La realidad virtual permite la
generación de entornos de interacción que separen la necesidad de compartir
el espacio-tiempo, facilitando en este caso nuevos contextos de intercambio y
comunicación.

La realidad virtual inicialmente fue enfocado para el sector entretenimiento y


educación pero ahora se han desarrollados proyectos en muchos campos diversos
como en la industria , la medicina, la vivienda y la publicidad, empresas como
Google, Microsoft, Facebook, Sony, Samsung y otros han apostado por esta
tecnología e innovando y produciendo nuevos visores mas potentes cada año.
IESTP IDAT MECAT´

En esa década, varias empresas de videojuego empezaron a acercarse a esa


tecnología. En 1993, SEGA anunció unas gafas de realidad virtual que, por problemas
técnicos, nunca salió al mercado. Años más tarde, en 1995, Nintendo sacó a la venta
la Virtual Boy, una consola portátil que disponía de un HMD Sistema de realidad virtual
aplicada a robótica móvil - 13 - técnicamente muy limitado que acabó siendo un fracaso
en ventas. Durante esta época, la industria de los videojuegos experimentó un gran
crecimiento, siendo la principal impulsora en el desarrollo de entornos virtuales
realistas. Pese a eso, a nivel de hardware, la tecnología seguía siendo demasiado cara
y limitada
IESTP IDAT MECAT´

En el año 2012, la compañía Oculus VR inició un crowdfunding en la plataforma


Kickstarter en el que prometían la creación de sistema VR de venta al público publico
accesible llamado Oculus Rift. En 2014, la compañía fue comprada por Facebook

En el 2014 Google anunció su dispositivo de realidad aumentada “Google Glass” capaz


de mostrar información como si fuera un Smartphone y con la capacidad de comunicarse
con él mediante comandos de voz o movimientos. Ese mismo año lanzó a la venta las
“Google Cardboard” con estructura de cartón, que usa la pantalla de un Smartphone con
estereoscopia por software para el visionado y los sensores del dispositivo para
determinar la posición.
2015 , Samsung junto a Oculus sacarían el Samsung Gear VR una versión de más
calidad para dispositivos Samsung. Varias otras empresas han decidido apostar por sus
propios visores

Por el momento, Sony, con las PlayStation VR (PS VR), sigue siendo el rey de la realidad
virtual. "Desde que se lanzó PS VR en octubre de 2016, se han vendido más de 3 millones
de unidades en todo el mundo. En referencia al progreso cronológico de ventas, el primer
millón de PS VR vendidas se alcanzó en junio de 2017, mientras que los dos millones se
superaron en diciembre de ese mismo año. Es un producto que va avanzando
progresivamente, logrando encontrar su hueco en el mercado", afirman fuentes de Play-
Station.

Mientras Sony ha decidido enfocarse en el sector de los videojuegos, otras compañías


intentan explorar otras posibilidades de la realidad virtual.

Precisamente la apuesta por eliminar los cables y el uso de otros dispositivos ha sido la

estrategia escogida por Facebook en las renovadas Oculus Go. Gracias a la

colaboración con Xiaomi, acaba de poner a la venta su nuevo casco de realidad virtual

con el que jugar, disfrutar de contenidos e incluso ver Netflix como si estuvieras en un

salón al pie de una montaña.

Este tipo de tecnología también ha sido usada por HTC con las HTC Vibe Pro. La

compañía taiwanesa se ha convertido en uno de los principales fabricantes en este

sector y en sus últimas gafas ha optado por intentar evitar uno de los principales
IESTP IDAT MECAT´

problemas de la realidad virtual: la falta de calidad de imagen que muchas veces

produce mareos a los usuarios.

Microsoft, por su parte, ha optado por conquistar el mundo empresarial. Hololens, las

gafas de la compañía estadounidense, funcionan como un visor de realidad mixta,

"interactuando con hologramas que permiten visualizar y trabajar con contenido digital

como parte del mundo real de una manera más natural, a través de gestos y voz. Una

de las ventajas de Hololens es que no necesitan de ningún PC externo, ya que el propio

dispositivo cuenta con capacidad de computación para funcionar de forma autónoma",

explican desde la compañía.

1.1 Presentación del Problema

1.1.1 Planteamiento de Problema

En la actualidad se usa pc, laptop o Tablet para la visualización de imágenes


que se trasmiten de la cámara de un robot móvil, estos equipos normalmente
las pulgadas de las pantallas son pequeñas ya que requieren ser portables,
esto puede afectar el control del robot y tener una mala visualización de las
imágenes transmitidas, también por la ubicación de estas pantallas para que
visualicen, el usuario requiere una postura del cuerpo no adecuada y
perjudicial .
IESTP IDAT MECAT´

1.2 Justificación del Estudio


La utilización de la realidad virtual en un robot móvil nos dará opciones para un
mejor control del robot y visualización de los datos e imágenes transmitidas por
el, ya no estamos limitados a espacio y equipos de visualización pequeños.

La principal utilidad de nuestro robot móvil, con transmisión de video en tiempo real,
es la de exploración de ambientes peligrosos. De esta forma se pueden realizar
exploraciones o investigaciones en espacios en los que pueda haber riesgo o peligro
para humanos manteniendo la seguridad de las personas.

1.3 Antecedentes del Proyecto


En la Robotica se esta utilizando la realidad virtual para el controlar robot movil,
bipedo , drones y otros , estos cuentan con transmisión de video envolvente en tiempo
real para una mejor exploración de ambientes. De esta forma se pueden realizar
exploraciones o investigaciones en espacios en los que pueda haber riesgo o peligro
para humanos manteniendo la seguridad de las personas.

13.1 FLYBi Drone


está aquí para ofrecer una experiencia intuitiva que se adapta a través de unas gafas
de realidad virtual. El dron permite ser utilizado a través de un sistema VR totalmente
inmersivo, contando con la posibilidad de grabar y emitir en directo nuestras
sensaciones en linea mediante Streaning, lo que permite compartir tus experiencias
de primera mano
IESTP IDAT MECAT´

13.2 EACHINE VR-007 PRO

Los drones son uno de los campos tecnológicos más emocionantes que existen, con
más compañías que ingresan al mercado y nuevas innovaciones de aeronaves que
se piensan todos los días. La realidad virtual puede ser un segundo lugar cercano,
con auriculares de gama alta como Oculus Rift y HTC Vive que ocupan los titulares
internacionales con su potencial de vanguardia.

13.3 Rift Explorer (IRE)


El entusiasta de la tecnología y programador Jonas Lauener ha creado IRE, un robot
que se puede controlar mediante un casco de realidad virtual Oculus Rift.

Básicamente, la cabeza del robot se alimenta de la pantalla del Oculus Rift y todo el
autómata se controla a través de un controlador normal de videojuegos.

13.4 T-HR3 (Toyota Humanoid Robot 3)


Toyota ha anunciado su último robot humanoide llamado T-HR3 (Toyota Humanoid
Robot 3), que es su prototipo de tercera generación. Puede controlarlo usando
controles portátiles y VR.
IESTP IDAT MECAT´

13.5 Deutsche Telekom VR


Berlín, Alemania. 15 Mar, 2017. Un miembro del personal de Deutsche Telekom stand
muestra un robot controlado por dispositivos VR ConnectedWorld Bosch durante el
2017 en Berlín, capital de Alemania, el 15 de marzo de 2017.

13.6 Odyssey 6 Wheel Drive de Orión Robotics


Esta plataforma robótica posee amortiguación independiente en cada llanta
basada en un pequeño muelle. El chasis puede subir a casi cualquier lugar gracias
a potentes motores y ruedas con bandas de rodadura sobre neumáticos de goma, que
IESTP IDAT MECAT´

se adhieren firmemente a cualquier superficie y su plataforma principal posee


agujeros para la implementación de agujeros específicos.

Fig. 1.1 Robot Odyssey de 6 ruedas motrices


Fabricante: Orión Robotics (ORIONROB)

13.7 DAGU Wild Thumper 6WD Robot chassis set de Dagu


Plataforma robótica con ruedas de 12cm de diámetro. Su estructura esta hecha
de aluminio anodizado de 2mm de grosor, en el que se a realizado una matriz
de agujeros estándar de 4mm. Se especifica que el robot puede incluir motores
de 160rpm a 6VDC con engranajes reductores de metal con relación de 34:1,
75:1, e incluso mayores relaciones como 99:1 los cuales no están
recomendados por el fabricante. Su peso es de 2,7 kg y puede cargar 5kg
como máximo.

Fig. 1.2 Chassis todo terreno Dagu Wild tumper 6WD


Fabricante: Dagu
IESTP IDAT MECAT´

13.8 Robot prototipo de búsqueda y comunicación para ser usado luego de un


terremoto en el edificio de la CINT.
Proyecto que propone una solución en caso de situaciones de riesgo al diseñar e
implementar un robot prototipo de búsqueda y comunicación para el edificio de la
CINT para que en caso de desastres no se deba poner más vidas en riesgo y de esta
forma aportar a la sociedad. El dispositivo electrónico es controlado a través de una
aplicación con conexión remota y puede entrar por espacios pequeños o de
arquitecturas inestables para establecer comunicación con posibles víctimas
atrapadas dentro de las mismas. Para su desarrollo se basaron en tecnología
Raspberry PI 3 modelo b en conjunto con software libre.
Fuente: Universidad de Guayaquil.
Autores: Leslie Michelle Rodríguez Flores
Christian Guillermo Marín Molina

13.9 Robot de mapeo y exploración de minas subterráneas


Este robot es capaz de tener información del entorno de una mina a travez de
sensores. Su información se envia a un computador, mediante un enlace de
WI-FI para recrear el mapa en dos dimensiones de la mina y mostrar datos
importantes como temperatura humedad y gas metano y video en tiempo real
gracias a la cámara incorporada en el Robot.

Fig. 1.3 Vista lateral y posterior del robot.

Fuente: Universidad de Azuay.


Autor: Andrés Patricio Cabrera Flor.
IESTP IDAT MECAT´

CAPÍTULO 2

13 OBJETIVOS Y SOLUCIONES

13.6 Objetivos

13.6.1 Objetivos Generales


Implantar la tecnología VR para mejorar la visualización de las imágenes
transmitidas de la cámara de un robot movil y mejorando el control de
manejo de este..

13.6.2 Objetivos Específicos


 Diseñar una aplicación en Unity3d para el visor Oculus Rift para mejorar la
visualización de las imágenes transmitidas de la cámara de un robot móvil y
controlar el robot mediante el joystick del oculus Rift.
 Crear un entorno inmersivo para el usuario superando limitaciones físicas del
ambiente.
 Diseñar el sistema electrónico de un robot mecánico usando raspberry y
nodemcu.
 Realizar pruebas de funcionamiento necesarias para descartar errores y
aplicar las correcciones al problema.

13.7 Soluciones

13.7.1 Planteamiento de Soluciones


Se realizó estudios y la búsqueda de la información para poder plantear este
proyecto generando soluciones a los problemas de:
 Mejorar la captura de imagen y control de un robot movil.

 Dar una solución ergonómica para la visualización y control del robot


IESTP IDAT MECAT´

13.8 Técnicas de investigación


A través de estas se aplican distinta técnicas y procedimiento con el fin de lograr
la solución de problemas esenciales (en este caso el diseño y elaboración de
cualquier equipo electrónico), encontrar respuestas a preguntas y estudiar la
relación entre factores y acontecimientos

13.8.1 Técnica de Investigación Descriptiva


Las técnicas descriptivas utilizan los datos observados para realizar un resumen
de la información que contienen.
En resumen, la primera fase es la exploración en nuestro proyecto es la
observación del proceso de marcación de la forma tradicional para tomar nota de
los problemas o dificultades y peligros que existen y en la segunda fase la
descripción se describen los posibles errores posibles de corregir a través del
proceso funcional para luego ver el error que podemos corregir con nuestro
sistema que se va a plantear. Estas dos fases preparan la información para las
técnicas inferenciales y construcción de modelos.
Dependiendo del tipo de información que tengamos aplicaremos unas técnicas u
otras.
IESTP IDAT MECAT´

13.9 Planificación de Tiempo y Actividades del Proyecto


IESTP IDAT MECAT´

CAPÍTULO 3

14 MARCO TEÓRICO
En el presente capítulo se presentará los conceptos básicos de los diferentes
elementos que se usaran en el desarrollo del proyecto, con el fin de tener la
información y los conocimientos necesarios para realizar el diseño e
implementación de sistema un sistema de seguridad.

Mapa conceptual de los materiales del proyecto


IESTP IDAT MECAT´

14.6 Marco Conceptual

14.6.1 NodeMCU
Es una tarjeta especialmente orientada al internet de las costas (IOT). Está
basado en el SOC (System on Chip) ESP8266, un chip altamente integrado,
integra un potente procesador con arquitectura de 32 bits. Es usado en
nuestro proyecto para procesar los datos y poder realizar acciones.
Características:
 Voltaje de Alimentación (USB): 5V DC.
 Voltaje de Entradas/Salidas: 3.3V DC.
 SOC: ESP8266 (Módulo ESP-12).
 CPU: Tensilica Xtensa LX3 (32 bit).
 Frecuencia de Reloj: 80MHz/160MHz.
 Instrucción RAM: 32KB.
 Memoria Flash Externa: 4MB.
 Pines Digitales GPIO: 17 (pueden configurarse como PWM a 3.3V).
 Pines Analógicos ADC: 1 (0-1V).
 UART: 2
 Chip USB-Serial: CP2102.
 Antena en PCB.
 WI-FI Direct (P2P), soft-AP.
 Stak de protocolo TCP/IP integrado.
 PLLs, reguladores, DCXO y manejo de poder integrados
 Potencia de salida de +19.5dBm en modo 802.11b.
 Corriente de fuga menor a 10uA.
IESTP IDAT MECAT´

Fig. 3.1 NodeMCU ESP8266.

Fig. 3.2 Pines del ESP8266.


IESTP IDAT MECAT´

14.6.2 Mini PC
En la mini PC estará una aplicación realizado en python que controla los
demás dispositivos mediante comunicación sockets, la aplicación realizada
en python se encargara de detectar movimiento y enviar una notificación a
celular, también le llegara un correo a su gmail donde le llegara una foto del
intruso.

Fig. 3.3 Mini PC Gigabyte i5.

Características técnicas:
 Marca: Gigabyte
 Línea: Brix
 Modelo: BSI5HA-6200
 Procesador: Intel Core i5
 Memoria RAM: 4GB
 Capacidad de almacenamiento: 32GB
 Conectividad: USB 3.1
 Puertos de video: HDMI – Mini DisplayPort – RJ45
IESTP IDAT MECAT´

14.6.3 Digoo cámara wifi


Tecnología moderna la grabación se realiza las 24 horas en 960 P, incluida la
función de visión nocturna. Esto es posible gracias a una conexión de alimentación
en lugar de baterías. La cámara no se puede usar con Windows, la monitorización
del movimiento no es suficiente para la aplicación, para Android y iOS.
Funciona en la noche melancólica Perfectamente: 10 LED infrarrojos ven todo,
incluso en la oscuridad. ¡Y eso hasta un rango de 10 m! Completamente discreto:
para que tenga todo a la vista, sin visitas nocturnas a través de un LED brillante.
Función: Cámara de vigilancia para el hogar con detector de movimiento, altavoz,
micrófono y función de visión nocturna. También es ideal como vigilabebés y para
controlar mascotas, apartamentos, locales comerciales y personas necesitadas
de atención.
Inicio de grabación manualmente: controlado por tiempo o por detección de
movimiento, detección de movimiento para grabación automática
Práctico: tan pronto como detecta un movimiento, la cámara comienza a grabar.
Gran angular con 115 ° y audio bidireccional (Hablando en casa y escuchando lo
que sucedió allí). Gracias al micrófono y a los altavoces, también hay comandos
disponibles para asustar a los ladrones o calmar al perro.

Fig. 3.6 Digoo cámara wifi.


IESTP IDAT MECAT´

Características técnicas:

 Fuente de alimentación: DC 5V/1A+


 Consumo de energía: 3W MAX
 Temperatura de operación: -10°C~+60°C RH95% Máx
 Temperatura de almacenamiento: -0°C~+90°C RH95% Máx
 Luz infrarroja: 10Pcs IR LED
 Distancia de IR: 10M
 Memoria: Soporta ranura para tarjeta Micro TF (máx A64GB)
Almacenamiento local
 Onvif: Soporta Onvif, Auto encender el puerto Onvif.
 Protocolos de red: TCP/IP, UDP, DNS/DDNS, SMTP, UPNP, DHCP,
HTTP, P2P, etc Soporte de seguridad para WFA WPA/WPA2
personal, WPS2.0 WAPI.
 Sistema soportado: IOS, Android, PC Windows, Tableta etc.
 Frecuencia de cuadros: 25Fps +- Ajuste de internet ajustablemente.
 Imagen: HD 9600P, 1.300.000 pixeles compresión de H.264.

Fig. 3.7 Pines del módulo NRF24L01.


IESTP IDAT MECAT´

CAPÍTULO 4

15 MEMORIA DESCRIPTIVA

15.6 Introducción
En este capítulo tenemos como finalidad de explicar el uso correcto del sistema
de “Sistema de vigilancia remota” para que este no genere inconvenientes.
Explicar el sistema de manera técnica para su posterior implementación
tomando en cuenta las normas de seguridad.

15.7 Descripción General del Proyecto


El presente proyecto tiene como principio de funcionamiento un sistema
diseñado para ser usado en las casas para controlar el ingreso salida de
personas.
la cual consiste en poder realizar la marcación en los paraderos de manera
automática sin la necesidad de bajar del bus, de esta manera siendo un sistema
que brinda seguridad en cuanto a los accidentes de transito que se pueden
generar al momento de la marcación, a parte de ello en el bus, a través de una
señal inalámbrica emitida desde el marcador se podrá visualizar la hora en la
cual el bus paso por dicho paradero quedando registrado en un modulo de
almacenamiento para su posterior entrega al final de la ruta, en la pantalla se
podrá ver la hora de partida, la hora en que se hizo las marcaciones en dichos
paraderos y la hora de llegada en el terminal final.
En la implementación de nuestro proyecto contara con:
 1 terminal de partida (paradero inicial).
 1 terminal de llegada (paradero final).
 2 estaciones de marcación (paraderos de marcación de frecuencia)
 2 módulos para bus receptores (sistema dentro del bus).
De esta manera en los paraderos la frecuencia de paso de los buses de una
ruta dada, pasaran de manera regular gracias a este sistema, generando mas
comodidad al usuario y seguridad al conductor y cobrador mejorando la
puntualidad en las rutas.

15.8 Diagrama Pictórico


IESTP IDAT MECAT´

Fig. 4.1 Diseño Pictórico del Sistema.


IESTP IDAT MECAT´

Fig. 4.2 Diseño Pictórico del funcionamiento del Sistema


IESTP IDAT MECAT´

MÓDULOS PARA BUSES RECEPTORES/TRANSMISORES


Item Materiales Caracteristicas Cantidad Descripción
- 28 pines tipo DIP.
Encargado de procesar la data que
- Memoria flash 32KB.
Microcontrolador recibe a través del NRF24L01 y el
1 - Memoria RAM 2KB. 2
Atmega328P teclado para mostrarlo en la
- EEPROM 1KB.
pantalla LCD.
- Frecuencia max. 20 MHz.
- Funcion reloj-calendario.
- Comunicación I2C. Mantiene la hora y fecha en el bus
2 Modulo RTC DS1307 2
- Bateria de respaldo. a la hora de la marcación.
- Volt. Alimentación 4.5 - 5.5 V.

- Trabaja en la banda libre de 2.4GHz.


Recepciona la señal que envia la
- Voltaje de alimentación 1.9 - 3.6 V.
3 Módulo NRF24L01 2 estación de marcación para que
- Nivel de salida +7dB.
sea procesado por el controlador.
- Alcance max. 100m (abierto).

- Interfaz compatible de 4 u 8 bits.


Muestra las marcaciones en los
- 4 filas por 20 columnas.
4 Display LCD 4x20 2 paraderos, hora de partida y
- Voltaje de operación 5V.
llegada.
- 16 Pines.
- Voltaje de alimentación 5 V.
Encargado de reducir la cantidad de
5 Módulo I2C - Ajuste de contraste. 2
pines del LCD 4x20.
- Jumper backlight.
- Tipo menbrana.
Dara las opciones o menu para
- Voltaje maximo de operación 24 V.
6 Teclado matricial 4x4 2 marcar las cuales se procesara para
- Mayor resistencia al agua y polvo.
mostrase en el LCD.
- Temperatura de operación 0 a 50 °C.
- Voltaje de entrada de 4.0 - 40 V.
- Voltaje de salida de 1.5 - 37 V.
Regulador de voltaje Regular el voltaje de la bateria del
7 - Corriente de salida 2 A. 2
LM2596 bus ya que esta es de 12 V.
- Rango del voltimetro de 0 - 40 V.
- Error +/- 0.1 V.

MÓDULOS PARA ESTACIÓN DE MARCACIÓN


Item Materiales Caracteristicas Cantidad Descripción
- 28 pines tipo DIP.
Encargado de procesar la data que
- Memoria flash 32KB.
Microcontrolador recibe a través del NRF24L01 y el
1 - Memoria RAM 2KB. 2
Atmega328P teclado para mostrarlo en la
- EEPROM 1KB.
pantalla LCD.
- Frecuencia max. 20 MHz.
- Trabaja en la banda libre de 2.4GHz.
- Voltaje de alimentación 1.9 - 3.6 V. Recepciona la señal que envia la
3 Módulo NRF24L01 2
- Nivel de salida +7dB. estación de marcación para que
- Alcance max. 100m (abierto). sea procesador por el PIC 18F2550.
- Voltaje de entrada de 4.0 - 40 V.
- Voltaje de salida de 1.5 - 37 V.
Regulador de voltaje Regular el voltaje de la bateria del
7 - Corriente de salida 2 A. 2
LM2596 bus ya que esta es de 12 V.
- Rango del voltimetro de 0 - 40 V.
- Error +/- 0.1 V.
IESTP IDAT MECAT´

15.9 Diseño de Maqueta

Fig. 4.2 Diseño del Bus Receptor.

Fig. 4.3 Diseño de la Estación de Marcación.


IESTP IDAT MECAT´

15.10 Costos
MÓDULOS PARA BUSES RECEPTORES/TRANSMISORES
Costo Costo
Item Materiales Caracteristicas Cantidad Descripción Imagen Referencial
Unitario Total
- 28 pines tipo DIP.
Encargado de procesar la data que
- Memoria flash 32KB.
Microcontrolador recibe a través del NRF24L01 y el
1 - Memoria RAM 2KB. 2 S/. 25.00 S/. 50.00
Atmega328P teclado para mostrarlo en la
- EEPROM 1KB.
pantalla LCD.
- Frecuencia max. 20 MHz.
- Funcion reloj-calendario.
- Comunicación I2C. Mantiene la hora y fecha en el bus
2 Modulo RTC DS1307 2 S/. 15.00 S/. 30.00
- Bateria de respaldo. a la hora de la marcación.
- Volt. Alimentación 4.5 - 5.5 V.

- Trabaja en la banda libre de 2.4GHz.


Recepciona la señal que envia la
- Voltaje de alimentación 1.9 - 3.6 V.
3 Módulo NRF24L01 2 estación de marcación para que S/. 18.00 S/. 36.00
- Nivel de salida +7dB.
sea procesado por el controlador.
- Alcance max. 100m (abierto).

- Interfaz compatible de 4 u 8 bits.


Muestra las marcaciones en los
- 4 filas por 20 columnas.
4 Display LCD 4x20 2 paraderos, hora de partida y S/. 35.00 S/. 70.00
- Voltaje de operación 5V.
llegada.
- 16 Pines.
- Voltaje de alimentación 5 V.
Encargado de reducir la cantidad de
5 Módulo I2C - Ajuste de contraste. 2 S/. 12.00 S/. 24.00
pines del LCD 4x20.
- Jumper backlight.
- Tipo menbrana.
Dara las opciones o menu para
- Voltaje maximo de operación 24 V.
6 Teclado matricial 4x4 2 marcar las cuales se procesara para S/. 8.00 S/. 16.00
- Mayor resistencia al agua y polvo.
mostrase en el LCD.
- Temperatura de operación 0 a 50 °C.
- Voltaje de entrada de 4.0 - 40 V.
- Voltaje de salida de 1.5 - 37 V.
Regulador de voltaje Regular el voltaje de la bateria del
7 - Corriente de salida 2 A. 2 S/. 15.00 S/. 30.00
LM2596 bus ya que esta es de 12 V.
- Rango del voltimetro de 0 - 40 V.
- Error +/- 0.1 V.
Total S/. 256.00

IGV 18% S/. 46.08

Total a Pagar S/. 302.08

MÓDULOS PARA ESTACIÓN DE MARCACIÓN


Costo Costo
Item Materiales Caracteristicas Cantidad Descripción Imagen Referencial
Unitario Total
- 28 pines tipo DIP.
Encargado de procesar la data que
- Memoria flash 32KB.
Microcontrolador recibe a través del NRF24L01 y el
1 - Memoria RAM 2KB. 2 S/. 25.00 S/. 50.00
Atmega328P teclado para mostrarlo en la
- EEPROM 1KB.
pantalla LCD.
- Frecuencia max. 20 MHz.
- Trabaja en la banda libre de 2.4GHz.
- Voltaje de alimentación 1.9 - 3.6 V. Recepciona la señal que envia la
3 Módulo NRF24L01 2 S/. 18.00 S/. 36.00
- Nivel de salida +7dB. estación de marcación para que
- Alcance max. 100m (abierto). sea procesador por el PIC 18F2550.
- Voltaje de entrada de 4.0 - 40 V.
- Voltaje de salida de 1.5 - 37 V.
Regulador de voltaje Regular el voltaje de la bateria del
7 - Corriente de salida 2 A. 2 S/. 15.00 S/. 30.00
LM2596 bus ya que esta es de 12 V.
- Rango del voltimetro de 0 - 40 V.
- Error +/- 0.1 V.
Total S/. 116.00

IGV 18% S/. 20.88

Total a Pagar S/. 136.88

COSTO DE MAQUETA Y SERVICIOS


Costo Costo
Item Materiales Caracteristicas Cantidad
Unitario Total
1 Celtex 120 x 120 1 S/. 60.00 S/. 60.00
2 Pintura Azul Spray 1 S/. 15.00 S/. 15.00
3 Impreso de tarjeta 6 x 8 cm 6 S/. 30.00 S/. 180.00
Total S/. 255.00

IGV 18% S/. 45.90

Total a Pagar S/. 300.90

Costo total del proyecto: S/. 738.00


IESTP IDAT MECAT´

CAPÍTULO 5

16 OPERACIÓN Y MANTENIMIENTO
En el presente capitulo se presentará los conceptos de manejo del sistema u
operación y el mantenimiento preventivo y correctivo.

16.6 Gestión de Mantenimiento


El mantenimiento es una gestión logística que consiste en la realización de una
serie de acciones, destinadas a conservar el material, equipo, construcciones,
sistemas electrónicos, etc. En condiciones de prestar servicios para establecer
condiciones de utilización.
Los tipos de mantenimiento que se realiza en cada empresa, local e industria,
para realizar las diversas actividades que fueran necesario de acuerdo a este
en el almacenamiento son:
 Mantenimiento preventivo.
 Mantenimiento correctivo.
Cualquier gestión que se realice en mantenimiento se basa en asegurar la
confiabilidad en los equipos y maquinas de una manera sistemática, segura, y
al menor costo posible, teniendo como objetivos:
 Contar con equipos en optimas condiciones en todo momento, para
asegurar la disponibilidad del sistema en todo su rango de
performance.
 Lograr con el mínimo costo posible el mayor tiempo de servicio del
equipo.

16.7 Definición de Mantenimiento


En toda acción cuyo propósito es mantener a un equipo o sistema en sus
condiciones normales de operación o de restitución de sus condiciones
específicas de funcionamiento. La función mantenimiento debe expresarse
como un sistema organizado, que permita el mejor aprovechamiento del medio
productivo.
Las operaciones de mantenimiento tienen un lugar frente a la constante
amenaza que implica la ocurrencia de una falla o error de un sistema, o equipo.
Existe además una necesidad de optimizar el rendimiento de las unidades y
IESTP IDAT MECAT´

componentes industriales (mecánicos, eléctricos, electrónicos) de los procesos


dentro de las instalaciones de una planta industrial o pequeña empresa.

16.8 Método de Implementación de Gestión e Mantenimiento

Fig. 5.1 Implementación de Gestión de Mantenimiento.

16.9 Mantenimiento Preventivo


Consiste en determinar en todo instante la condición técnica (mecánica y
eléctrica) real de la máquina examinada, mientras esta se encuentre en pleno
funcionamiento, para ellos se hace uso de un programa sistemático de
IESTP IDAT MECAT´

mediciones de los parámetros más importantes del equipo.


El sustento tecnológico de este mantenimiento consiste en aplicaciones de
algoritmos matemáticos agregados a las operaciones de diagnóstico, que
juntos pueden brindar información referente a las condiciones del equipo.

16.9.1 Procedimiento de Mantenimiento Preventivo


El mantenimiento preventivo puede realizarse de 3 formas:
 Revisando las instalaciones con intervalos de tiempo iguales entre
revisiones, desmontando los componentes objeto de revisión antes
de que fallen y reponiéndose a tiempo cero.
 Revisando las instalaciones periódicamente y según su estado a
efectuar sustitución si exceden sus límites de operación. Es apropiado
cuando se trata de componentes eléctricos, electrónicos y en los
instrumentos de control.
 Desmontando los componentes para ser examinados y sustituyendo
los que están en deficientes condiciones. Es adecuado en sistemas
complejos electrónicos y en equipos donde resulta complicado
predecir sus fallos.

16.9.2 Procedimiento de Causas Externas


 Inicializaremos diciendo que este tipo de mantenimiento primero se
desarrolla observando que el chasis del equipo no esté dañado.
 Antes de encenderlo verifique usualmente los estados físicos de cada
componente externo, ya sea el cordón de alimentación, el interruptor,
la pantalla LCD, etc.
 Luego de la inspección procederemos a verificar el buen
funcionamiento de nuestro equipo cuando este en “ON” (encendido).

16.9.3 Procedimientos de Causas Internas


 Se procede desmontar el equipo para hacerle una revisión interna, en
primer lugar, debe hacerse el desmontaje del equipo, luego se quitará
el polvo de la estructura interior, este paso se hace por medio de una
brocha no muy grande pero que tenga cerdas muy suaves y delgadas.
 Después de haber quitado el polvo, verifique si hay alguno de sus
IESTP IDAT MECAT´

componentes o dispositivo electrónico podría fallar. Si no se tiene


daños se procede a realizar las mediciones de verificación.
 También procedemos a verificar la placa y esto se hará por ambos
lados, esto se hace con el objetivo de evitar la corrosión.
 Luego de haber culminado estos pasos procederemos a cerrar el
equipo con sus respectivos tornillos y de esta manera dejarlo listo para
su respectivo uso.

16.9.4 Herramientas, Instrumentos y Materiales


Son los que nos van a ayudar a realizar con más facilidad y precisión el
trabajo, casi siempre se realiza para un mantenimiento externo e interno. Los
materiales usados son los siguientes:
 Destornilladores, es una herramienta con el mango de goma aislante
de corriente eléctrica y una punta de acero que puede ser de tipo
plano, estrella, Thor o dado.

Fig. 5.2 Set de Destornilladores.


 Alicate, pinza de acero forjado cuyas medidas más comunes son de
6”, 7”, 8”, se utiliza para sujetar doblar o cortar pequeños artículos en
situaciones en las que pueden ser inconvenientes o peligrosos valerse
de las manos.
IESTP IDAT MECAT´

Fig. 5.3 Set de alicates.

 Llaves de boca fija, herramientas manuales destinadas a ejercer el


esfuerzo de torsión necesario para apretar o aflojar tornillos que
posean la cabeza que corresponde con la boca de la llave.

Fig. 5.4 Set de Llaves Boca Fija.

 Cautín, para poder tener una buena soldadura es necesario tener en


cuenta la potencia, lo ideal es tener un cautín de 30 W a 60 W. Trabaja
normalmente con 220 V. El cautín llega almacenar en su punta una
temperatura de hasta 450°C lo necesario para fundir el estaño.
IESTP IDAT MECAT´

Fig. 5.5 Cautín de 30W – Goot.

 Porta cautín, son utilizados para sostener el cautín durante y después


de su uso.

Fig. 5.6 Soporte de Cautín.

 Succionador de soldadura, tiene una boquilla resistente al calor. Se


usa para succionar la soldadura fundida y retira del circuito impreso.
IESTP IDAT MECAT´

Fig. 5.7 Succionador de Soldadura.

 Multímetro digital, son los más modernos cuyos rangos son capaces
de medir valores de temperatura, resistencia, voltajes grandes y
corrientes, con mayor precisión que los análogos pues cuentan con
una pantalla digital en la que se puede visualizar el valor medido.

Fig. 5.8 Multímetro Digital Sanwa.

 Alcohol isopropílico, se hará uso en la limpieza de los componentes,


ya que es de rápida evaporación.
IESTP IDAT MECAT´

Fig. 5.9 Alcohol Isopropílico.

 Bencina, Es un producto químico que se usara en la limpieza interna


y externa del equipo como los contactos para mantenerlos limpios y
no afecte al equipo.

Fig. 5.10 Bencina Rectificada.


 Soldadura, la soldadura con estaño consiste en unir dos fragmentos
de metal con el fin de procurar una continuidad eléctrica. Se
recomienda el diámetro de 0.2 para soldadura fina y el diámetro 0.5
IESTP IDAT MECAT´

para soldadura gruesa.

Fig. 5.11 Soldadura de estaño.

 Viruta, sirve para limpiar la punta de nuestro cautín. Más conocido


como pasta o termo pasta.

Fig. 5.12 Viruta Limpia Cautín.

 Pasta de soldar, empleara junto con el cautín y el estaño.


IESTP IDAT MECAT´

Fig. 5.13 Pasta de Soldar Lötfett.

 Lupa, usara para poder realizar la inspección de la tarjeta electrónica.

Fig. 5.14 Lupa.

 Pinza antiestática (TS15), Diseñada para poder manipular


componentes electrónicos dentro de la tarjeta en lugares de espacio
reducido.
IESTP IDAT MECAT´

Fig. 5.14 Pinza Antiestática TS-15.

 Pulsera antiestática, evitara que la manipulación con las manos


genere estática a los componentes electrónicos y que estos sean
alterados.

Fig. 5.15 Pulsera Antiestática.

 Aspiradora de mano, para la limpieza de polvo de la tarjeta


electrónica.
IESTP IDAT MECAT´

Fig. 5.16 Aspiradora de Mano.

 Brocha, se utilizará para la limpieza de polvo de las tarjetas


electrónicas.

Fig. 5.17 Brocha.


IESTP IDAT MECAT´

16.9.5 Cronograma de Mantenimiento

CRONOGRAMA DE MANTENIMIENTO PREVENTIVO

VISITAS COMPONENTE ANÁLISIS

Se deberá limpiar todo el


Limpieza de las estaciones de
2 semanas sistema para alargar la
marcación.
vida útil del componente

Se deberá limpiar para el


Limpieza de las PCs de los
2 semanas buen funcionamiento de
terminales.
estas.

Se deberá limpiar todo el


Limpieza de las estaciones de
2 semanas sistema para alargar la
bus receptor.
vida útil del componente.

Limpieza y revisión de las Se deberá limpiar y


fuentes de regulación de verificar para alargar la
1 mes
voltaje. vida útil del componente.

Mantenimiento de software en Para optimizar su


1 mes
las PCs de los terminales. funcionamiento.

Para optimizar su
Limpieza y revisión de tarjeta
2 meses funcionamiento y prevenir
electrónica del sistema.
el desgaste por corrosión.

Para optimizar los


Mantenimiento del software de recursos de software,
6 meses
las estaciones de marcación. comprobando su buen
funcionamiento

Para optimizar los


Mantenimiento del software de recursos de software,
6 meses
las estaciones de bus receptor. comprobando su buen
funcionamiento.
IESTP IDAT MECAT´

16.10 Mantenimiento Correctivo


Son las actividades orientadas hacia la restitución de las características de
funcionamiento del equipo o sistema después de ocurrida las falla. Por lo
general estas fallas acarrean retrasos en la productividad y por consecuencia
pérdidas para la empresa en general.
Los costos de mantenimiento correctivo son aquellos originados cuando el
equipo falla o no puede ser operado a un costo razonable: estos incluyen
también el tiempo de producción perdido, el costo de reparación en sí y en
algunos casos el costo de reembolso de equipos, los cuales con mejores
mantenimientos pudiesen haberse salvado.

Fig. 5.18 Mantenimiento Correctivo.

16.10.1 Tipos de Mantenimiento Correctivo

Mantenimiento Rutinario
Este es el mantenimiento que se debe hacer cada cierto tiempo para
garantizar el buen funcionamiento del equipo, por lo general consiste en
limpieza que se debe realiza con la finalidad primordial de conservar y evitar
los efectos nocivos del medio ambiente.
IESTP IDAT MECAT´

Mantenimiento de Emergencia
Es aquel mantenimiento que implica efectuar algunas modificaciones y
correcciones de ciertos componentes es decir entra a tallar la reparación del
equipo con el objetivo de regresar a su forma de trabajo normal, mejorando
de ante mano su vida útil.
Este tipo de mantenimiento se otorga en algunas instancias cuando ocurre
alguna falla que impide un funcionamiento total o parcial de la fuente de
alimentación, este tipo de mantenimiento debe ser efectuado por personas
que tengan conocimientos en electrónica y tengan dominio de ciertos
equipos (multímetro, osciloscopio, etc.).
La ventaja del mantenimiento es que corrige fallas en el equipo volviendo ser
operativo y seguir prestando servicios para el fin que h sido creado, la
desventaja porque el instrumento no siempre logra eficiencia al 100%.
En este tipo de mantenimiento se tendrá mucho énfasis en la detención de
la falla y en el reemplazo de ciertos dispositivos los que requiere mucho
cuidado desde su elección hasta su compra o verificación de un posible
reemplazo.

16.10.2 Procedimiento de Mantenimiento Correctivo


Implica efectuar algunas modificaciones y correcciones de ciertos tipos de
componentes, que incluyen las siguientes normas:
1. Exámenes visuales y minuciosos, sobre todo en las partes más sensibles
y de fácil des-calibración.
2. Exámenes de tacto, para localizar las zonas donde se realizará una mayor
disposición de calor, donde es obvio que un componente esta alterado.
3. Examen del olfato, se descarta cualquier tipo de desperfecto que haya
sufrido recalentamiento y posteriormente su quemadura.
4. En este tipo de mantenimiento se realiza un informe más detallado del
desperfecto funcionamiento del equipo, especificando la etapa que ha
sido evaluada.
5. Se tomará nota de las fichas técnicas, lo transcurrido y se evitará el equipo
en tiempos cortos con el fin de verificar la corrección ha sido efectiva.
IESTP IDAT MECAT´

16.10.3 Hoja de Mantenimiento

REPORTE DE MANTENIMIENTO CORRECTIVO


Especialidad: Electrónico N°: 001
Tipo de mantenimiento Trabajo a realizarse
Preventivo:

Correctivo:

Otros:

Ejecución Personal

Limpieza:

Medición:

Materiales a utilizar cantidad Repuestos Cantidad

OBSERVACIONES

-------------------------------------- ------------------------------------
Técnico de soporte de área Jefe de área
IESTP IDAT MECAT´

CAPÍTULO 6

17 CONCLUSIONES Y RECOMENDACIONES

17.6 Conclusiones
 El equipo de marcación diseñado satisface los requerimientos
específicos del cliente, que verifico personalmente que se cumpla
todo lo estipulado en el protocolo de pruebas.

17.7 Recomendaciones

17.7.1 Objetivos Generales


 Diseñar, interpretar e implementar un sistema automático de
marcación de frecuencia para buses de transporte urbano.

17.7.2 Objetivos Específicos


 Implementar un sistema inalámbrico de radiofrecuencia de marcación.
 Adquirir destreza en el diseño y elaboración de circuitos poniendo en
práctica lo aprendido en la carrera de Electrónica Industrial.
 Investigar e interpretar sistemas de comunicación inalámbrica.
Cumplir con los estándares de calidad para la fabricación
IESTP IDAT MECAT´

CODIGO ARDUINO
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>

//SSID of your network


char ssid[] = "ENTEL HOGAR";
char pass[] = "2TJRHTAHQLB";

int keyIndex = 0;

unsigned int localPort = 4001;


char packetBuffer[255]; //buffer to hold incoming packet
char ReplyBuffer[] = ""; // a string to send back
int pwm1=0;
int pwm2=0;

WiFiUDP Udp;

#define ENA_DER 16
#define PWM_DER 5
#define INA_DER 0
#define INB_DER 4

#define ENA_IZQ 2
#define PWM_IZQ 14
#define INA_IZQ 13
#define INB_IZQ 12

int pwmMax=1020;
int yRan=50;
int xRan=400;
boolean booMov=false;
int velAct=0;
IESTP IDAT MECAT´

void setup()
{
IPAddress ip(192, 168, 8, 155);
IPAddress gateway(192, 168, 8, 1);
IPAddress subnet(255, 255, 255, 0);

IPAddress DNS(0, 0, 0, 0);


Serial.begin(115200);
WiFi.config(ip, gateway, subnet, DNS);
delay(100);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, pass);
Serial.print("Connecting");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(200);
}
while (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.println();
Serial.println("Fail connecting");
delay(5000);
ESP.restart();
}
Serial.print(" OK ");
Serial.print("Module IP: ");
Serial.println(WiFi.localIP());
printWifiStatus();
// if you get a connection, report back via serial:
Udp.begin(localPort);
pinMode(ENA_IZQ,OUTPUT);
pinMode(PWM_IZQ,OUTPUT);
pinMode(INA_IZQ,OUTPUT);
pinMode(INB_IZQ,OUTPUT);
IESTP IDAT MECAT´

pinMode(ENA_DER,OUTPUT);
pinMode(PWM_DER,OUTPUT);
pinMode(INA_DER,OUTPUT);
pinMode(INB_DER,OUTPUT);
analogWrite(PWM_IZQ, 0);
analogWrite(PWM_DER, 0);

digitalWrite(ENA_DER, HIGH);
digitalWrite(ENA_IZQ, HIGH);
}

String getValue(String data, char separator, int index)


{
int found = 0;
int strIndex[] = {0, -1};
int maxIndex = data.length()-1;

for(int i=0; i<=maxIndex && found<=index; i++){


if(data.charAt(i)==separator || i==maxIndex){
found++;
strIndex[0] = strIndex[1]+1;
strIndex[1] = (i == maxIndex) ? i+1 : i;
}
}

return found>index ? data.substring(strIndex[0], strIndex[1]) : "";


}

void turnMotor(int inAiz, int inBiz, int inAder, int inBder){


digitalWrite(INA_IZQ, inAiz);
digitalWrite(INB_IZQ, inBiz);
digitalWrite(INA_DER, inAder);
digitalWrite(INB_DER, inBder);
IESTP IDAT MECAT´

void loop () {

int packetSize = Udp.parsePacket();


if (packetSize) { ;
IPAddress remoteIp = Udp.remoteIP();
int len = Udp.read(packetBuffer, 255);
if (len > 0) {
packetBuffer[len] = 0;
}
int dato = String(packetBuffer).toInt();
int datox = getValue(packetBuffer,'/',0).toInt();
int datoy = getValue(packetBuffer,'/',1).toInt();
int datob = getValue(packetBuffer,'/',2).toInt();
//Serial.println(datob);

////////////////// defrente /////////////


if(datoy>yRan && (datob == 0) ){ // "Y" <50 , 970>
Serial.println("datoy:");
Serial.println(datoy);
turnMotor(0,1,0,1) ;

if(datox>xRan) {
Serial.println("defrente dobla derecha datox:");
Serial.println(datox);
analogWrite(PWM_DER, (1.2)*datoy);
analogWrite(PWM_IZQ, 0 );

if(datox<xRan && datox>-xRan-50){


booMov=true;
IESTP IDAT MECAT´

velAct=datoy;
Serial.println("defrente recto datox:");
Serial.println(datox);
analogWrite(PWM_DER, datoy);
analogWrite(PWM_IZQ, datoy);
}

if(datox<(-xRan)){
Serial.println("defrente dobla izquierda datox:");
Serial.println(datox);
analogWrite(PWM_DER, 0);
analogWrite(PWM_IZQ, (1.2)*abs(datoy));

}
}

////////////////// retroceso /////////////

if(datoy<-yRan && (datob == 0)){ //"Y" <-50 , -970>


Serial.println("datoy:");
Serial.println(datoy);
turnMotor(1,0,1,0) ;

if(datox>xRan){

Serial.println("retrocedo dobla derecha datox:");


Serial.println(datox);
analogWrite(PWM_DER, abs(datoy));
analogWrite(PWM_IZQ, datox);

}
IESTP IDAT MECAT´

if(datox<xRan && datox>-xRan-50){


booMov=true;
Serial.println("retroceso recto datox:");
Serial.println(datox);

analogWrite(PWM_IZQ, abs(datoy));
analogWrite(PWM_DER, abs(datoy));
}

if(datox<-xRan){

Serial.println("retroceso dobla izquierda datox:");


Serial.println(datox);
analogWrite(PWM_IZQ, abs(datox));
analogWrite(PWM_DER, abs(datoy));

}
}
if(datoy<=50 and datoy>=-50){
booMov=false;
//Serial.println("detenido");
turnMotor(0,0,0,0) ;
analogWrite(PWM_IZQ, 0);
analogWrite(PWM_DER, 0);
}

if(datob==1){
//girar sobre su eje
if(datox>xRan ){
turnMotor(0,1,1,0);

Serial.println("detenido dobla derecha datox:");


Serial.println(datox);
analogWrite(PWM_DER, (1.2)*datox);
IESTP IDAT MECAT´

analogWrite(PWM_IZQ, (1.2)*datox);

}
if(datox<xRan && datox>(-xRan-50)){
booMov=true;
Serial.println("detenido");
Serial.println(datox);
analogWrite(PWM_IZQ, 0);
analogWrite(PWM_DER, 0);
}

if(datox<(-xRan-50) ){
turnMotor(1,0,0,1);
Serial.println("detenido dobla izquierda datox:");
Serial.println(datox);
analogWrite(PWM_IZQ, (1.2)*abs(datox));
analogWrite(PWM_DER, (1.2)*abs(datox));

// send a reply, to the IP address and port that sent the packet
Udp.beginPacket(Udp.remoteIP(), 4001);
Udp.write(ReplyBuffer);
Udp.endPacket();

void printWifiStatus() {
// print the SSID of the network you're attached to:
IESTP IDAT MECAT´

Serial.print("SSID: ");
Serial.println(WiFi.SSID());

// print your WiFi shield's IP address:


IPAddress ip = WiFi.localIP();
Serial.print("IP Address: ");
Serial.println(ip);

// print the received signal strength:


long rssi = WiFi.RSSI();
Serial.print("signal strength (RSSI):");
Serial.print(rssi);
Serial.println(" dBm");
}

CODIGO UNITY
TRANSMISION DE VIDEO
MjpegProcessor.cs
using UnityEngine;
using System.Collections;
using System;
using System.Text;
using System.Net;
using System.IO;
using System.Threading;
using System.Drawing;

public class MjpegProcessor {

public Bitmap bitmap { get; set; }


private readonly byte[] JpegHeader = new byte[] { 0xff, 0xd8 };
private int _chunkSize = 1024*4;
private bool _streamActive;
public byte[] CurrentFrame { get; private set; }
private SynchronizationContext _context;
public byte[] latestFrame = null;
private bool responseReceived = false;

public event EventHandler<FrameReadyEventArgs> FrameReady;


IESTP IDAT MECAT´

public event EventHandler<ErrorEventArgs> Error;

public MjpegProcessor(int chunkSize = 4 * 1024)


{
_context = SynchronizationContext.Current;
_chunkSize = chunkSize;
}

public void ParseStream(Uri uri)


{
ParseStream(uri, null, null);
}

public void ParseStream(Uri uri, string username, string password)


{
Debug.Log(" Stream " + uri.ToString());
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
if (!string.IsNullOrEmpty(username) ||
!string.IsNullOrEmpty(password))
request.Credentials = new NetworkCredential(username,
password);
request.BeginGetResponse(OnGetResponse, request);
}

public void StopStream()


{
_streamActive = false;
}
public static int FindBytes(byte[] buff, byte[] search)
{

for (int start = 0; start < buff.Length - search.Length; start++)


{
if (buff[start] == search[0])
{
int next;
for (next = 1; next < search.Length; next++)
{
if (buff[start + next] != search[next])
break;
}

if (next == search.Length)
return start;
}
}

return -1;
IESTP IDAT MECAT´

}
public static int FindBytesInReverse(byte[] buff, byte[] search)
{

for (int start = buff.Length - search.Length - 1; start > 0;


start--)
{
if (buff[start] == search[0])
{
int next;

for (next = 1; next < search.Length; next++)


{
if (buff[start + next] != search[next])
break;
}

if (next == search.Length)
return start;
}
}
return -1;
}

private void OnGetResponse(IAsyncResult asyncResult)


{
responseReceived = true;
Debug.Log("OnGetResponse");
byte[] imageBuffer = new byte[1024 * 1024];

Debug.Log("Starting request");
HttpWebRequest req = (HttpWebRequest)asyncResult.AsyncState;

try
{

HttpWebResponse resp =
(HttpWebResponse)req.EndGetResponse(asyncResult);
string contentType = resp.Headers["Content-Type"];
if (!string.IsNullOrEmpty(contentType) &&
!contentType.Contains("="))
{
throw new Exception("Invalid content-type header. The
camera is likely not returning a proper MJPEG stream.");
}

string boundary = resp.Headers["Content-


Type"].Split('=')[1].Replace("\"", "");
IESTP IDAT MECAT´

byte[] boundaryBytes =
Encoding.UTF8.GetBytes(boundary.StartsWith("--") ? boundary : "--" +
boundary);

Stream s = resp.GetResponseStream();
BinaryReader br = new BinaryReader(s);

_streamActive = true;
byte[] buff = br.ReadBytes(_chunkSize);

while (_streamActive)
{
int imageStart = FindBytes(buff, JpegHeader);//
buff.Find(JpegHeader);

if (imageStart != -1)
{
int size = buff.Length - imageStart;
Array.Copy(buff, imageStart, imageBuffer, 0, size);

while (true)
{
buff = br.ReadBytes(_chunkSize);
int imageEnd = FindBytes(buff, boundaryBytes);
if (imageEnd != -1)
{
Array.Copy(buff, 0, imageBuffer, size,
imageEnd);
size += imageEnd;

byte[] frame = new byte[size];


Array.Copy(imageBuffer, 0, frame, 0, size);
CurrentFrame = frame;

if (FrameReady != null)
FrameReady(this, new
FrameReadyEventArgs());
Array.Copy(buff, imageEnd, buff, 0,
buff.Length - imageEnd);

byte[] temp = br.ReadBytes(imageEnd);

Array.Copy(temp, 0, buff, buff.Length -


imageEnd, temp.Length);
break;
}

Array.Copy(buff, 0, imageBuffer, size,


buff.Length);
IESTP IDAT MECAT´

size += buff.Length;

if (!_streamActive)
{
resp.Close();
break;
}
}
}
}
resp.Close();
}
catch (Exception ex)
{
if (Error != null)
_context.Post(delegate { Error(this, new ErrorEventArgs()
{ Message = ex.Message }); }, null);

return;
}
}
}

public class FrameReadyEventArgs : EventArgs


{

public sealed class ErrorEventArgs : EventArgs

{
public string Message { get; set; }
public int ErrorCode { get; set; }
}

MjpegTexture.cs

using UnityEngine;
using System;

using UnityEngine.UI;

/// <summary>

/// </summary>
public class MjpegTexture : MonoBehaviour
IESTP IDAT MECAT´

{
/// <param name="streamAddress">

/// </param>
[Tooltip("Set this to be the network address of the mjpg stream. ")]
public string streamAddress;

/// <summary>

/// </summary>
[Tooltip("Show fps (OnGUI).")]
public bool showFps = true;

/// <summary>

/// </summary>
[Tooltip("Chunk size for stream processor in kilobytes.")]
public int chunkSize = 4;

Texture2D tex;

const int initWidth = 2;


const int initHeight = 2;

bool updateFrame = false;

MjpegProcessor mjpeg;

float deltaTime = 0.0f;


float mjpegDeltaTime = 0.0f;

public void Start()


{
mjpeg = new MjpegProcessor(chunkSize * 1024);
mjpeg.FrameReady += OnMjpegFrameReady;
mjpeg.Error += OnMjpegError;
Uri mjpegAddress = new Uri(streamAddress);
mjpeg.ParseStream(mjpegAddress);
tex = new Texture2D(initWidth, initHeight,
TextureFormat.PVRTC_RGBA4, false);
}
private void OnMjpegFrameReady(object sender, FrameReadyEventArgs e)
{
updateFrame = true;
}
IESTP IDAT MECAT´

void OnMjpegError(object sender, ErrorEventArgs e)


{
Debug.Log("Error MJPEG.");
}

void Update()
{
deltaTime += Time.deltaTime;

if (updateFrame)
{
tex.LoadImage(mjpeg.CurrentFrame);
// tex.Apply();
GetComponent<Renderer>().material.mainTexture = tex;
updateFrame = false;

mjpegDeltaTime += (deltaTime - mjpegDeltaTime) * 0.2f;

deltaTime = 0.0f;
}
}

void DrawFps()
{
int w = Screen.width, h = Screen.height;

GUIStyle style = new GUIStyle();

Rect rect = new Rect(20, 20 + (h * 4 / 100 + 10), w, h * 2 / 100);


style.alignment = TextAnchor.UpperLeft;
style.fontSize = h * 4 / 100;
style.normal.textColor = new Color(255, 255, 255, 255);
float msec = mjpegDeltaTime * 1000.0f;
float fps = 1.0f / mjpegDeltaTime;
string text = string.Format("MJPEG: {0:0.0} ms ({1:0.} fps)",
msec, fps);
GUI.Label(rect, text, style);
}

void OnGUI()
{
if (showFps) DrawFps();
}

void OnDestroy()
{
mjpeg.StopStream();
}
}
IESTP IDAT MECAT´

SocketsControl.cs

using System;
using System.Collections;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using UnityEngine;
using UnityEngine;

using Debug = UnityEngine.Debug;


public class SocketsControl : MonoBehaviour {

Thread m_Thread;
UdpClient m_Client;
int pwmMax=1020;

int bIndexRight;

void Start()
{
m_Thread = new Thread(new ThreadStart(ReceiveData));
m_Thread.IsBackground = true;
m_Thread.Start();
}

private void Update()


{
udpSend();

void ReceiveData()
{

try
{

m_Client = new UdpClient(4001);


m_Client.EnableBroadcast = true;
while (true)
{

IPEndPoint hostIP = new IPEndPoint(IPAddress.Any, 0);


byte[] data = m_Client.Receive(ref hostIP);
string returnData = Encoding.ASCII.GetString(data);
IESTP IDAT MECAT´

Debug.Log(returnData);
}
}
catch (Exception e)
{
Debug.Log(e);

OnApplicationQuit();
}
}

private void OnApplicationQuit()


{
if (m_Thread != null)
{
m_Thread.Abort();
}

if (m_Client != null)
{
m_Client.Close();
}
}
void udpSend()
{
var IP = IPAddress.Parse("192.168.8.155");

int port = 4001;

var udpClient1 = new Socket(AddressFamily.InterNetwork,


SocketType.Dgram, ProtocolType.Udp);
var sendEndPoint = new IPEndPoint(IP, port);

try
{

Vector2 primaryAxis
=OVRInput.Get(OVRInput.Axis2D.PrimaryThumbstick,
OVRInput.Controller.RTouch);
// Vector2 secundaryAxis
=OVRInput.Get(OVRInput.Axis2D.PrimaryThumbstick,
OVRInput.Controller.LTouch);

if(OVRInput.GetDown(OVRInput.Button.PrimaryIndexTrigger,
OVRInput.Controller.RTouch)){
bIndexRight=1;
IESTP IDAT MECAT´

if(OVRInput.GetUp(OVRInput.Button.PrimaryIndexTrigger,
OVRInput.Controller.RTouch)){
bIndexRight=0;
}

float pwmyR= Mathf.Round(pwmMax*primaryAxis.y);


float pwmxR= Mathf.Round(pwmMax*primaryAxis.x);

string msnR =
pwmxR.ToString()+"/"+pwmyR.ToString()+"/"+bIndexRight;
Debug.Log(msnR);

byte[] sendBytes = Encoding.ASCII.GetBytes(msnR);


udpClient1.SendTo(sendBytes, sendEndPoint);

}
catch (Exception e)
{
Debug.Log(e.ToString());
}

}
}

Das könnte Ihnen auch gefallen