Proyecto Autoestudio Circuitos Lógicos II
Aplicación de la cámara OV7670
Nicolás Cuadros Patarroyo Steven Roldan Guerrero
Institución Universitaria Politécnico Grancolombiano Institución Universitaria Politécnico Grancolombiano
Facultad de ingeniería y ciencias básicas Facultad de ingeniería y ciencias básicas
Bogotá D.C, Colombia Bogotá D.C, Colombia
nicuadros@[Link] ysroldan@[Link]
Abstract— This document contains the implementation of the
Project of the logics circuits II class, of the politécnico
grancolombiano, in this Project OV7670 module is use and the Para el proyecto se escogió la comunicación en paralelo
final goal is capture an image porque es mucho más rápida a comparación de la comunicación
en serie, y esto facilitará el procesamiento de las imágenes que
Keywords: Arduino, comunicación en paralelo, imágenes grabará la cámara.
panorámicas, programación, OV7670, I2C.
I. INTRODUCCIÓN
Este documento es una breve investigación documental B. Arduino
sobre el proyecto de aula de la clase de circuitos lógicos II de la Arduino es un conjunto de componentes electrónicos, los
Institución Universitaria Politécnico Grancolombiano, en este cuales pueden ser programados y pueden funcionar como
se puede apreciar los primeros avances que se dan al trabajar sensores, entradas, salidas, interruptores entre otros. Existen
con el bus 𝐼2𝐶 con el objetivo de hacer funcionar la cámara varios tipos de arduinos, en este proyecto se utilizará el
OV7670. El proyecto tiene la intención de lograr obtener Arduino UNO, ya que se ha utilizado en proyectos pasados y
fotografías panorámicas con 2 o 3 cámaras configuradas por es uno de los más fáciles de usar.
separado. El mayor reto del proyecto es comunicar C. C++
correctamente las cámaras y lograr obtener una imagen sólida Es un lenguaje de programación, orientado a objetos,
con la OV7670. creado hace 34 años. Particularmente se menciona porque con
II. MARCO TEÓRICO este lenguaje se programa Arduino.
A. Comunicación en paralelo y comunicación serial C. Comunicación I2C
La comunicación en paralelo es aquella que permite Es uno de los módulos de trabajo del módulo SSP (Puerto
transmitir datos serialmente, es decir, se transmiten los bits en Serial Síncrono) del microcontrolador PIC, en la comunicación
una sola acción. A diferencia de la comunicación serial en la que I2C se usa un bus compuesto por dos hilos a los que se conectan
los bits son transmitidos secuencialmente. los dispositivos que se pueden comunicar por el protocolo I2C,
uno de estos se encarga de enviar la señal de reloj, mientras que
Ambos tipos de comunicación tienen ventajas y desventajas,
el otro se encarga de enviar o recibir los datos. Con esta idea en
como se puede evidenciar en la tabla I.
mente, se habla de conectar dos o más dispositivos, cuando esto
Tabla I sucede, se otorgan roles (maestro- esclavo) a cada una de las
partes conectadas, tan solo uno de los dispositivos en
Desventajas Ventajas comunicación por I2R será llamado maestro, este estará
Es más lenta ya Se utiliza menos encargado de controlar el pulso de reloj y de indicar quien hace
que se envía un cable, por lo tanto de emisor y quien, de receptor, el rol de maestro se puede
solo bit a la vez. se reduce el costo. transferir a un esclavo, haciendo de este el nuevo maestro y
Serial Se requiere de un convirtiendo al anterior maestro en un esclavo.
protocolo de
transmisión. En la siguiente imagen se puede observar cómo podría verse
Desventajas la conexión de un circuito por I2R en donde CDA es el bus que
Ventajas
se conecta al puerto serial y SCL es el control del pulso de reloj:
Es más costosa Los datos que se
Está limitada a quieren transmitir
Paralelo
cortas distancias no necesitan un
de transmisión tratamiento previo
grupo de japoneses inventaron un máquina llama Prodigy,
la cual mejoró drásticamente el tiempo de espera para procesar
datos y problemas. Consistió en una máquina diseñada para
procesar los datos en forma paralela, conectaba 512
procesadores con 8 bits, una matriz de 8 por 3, y usaba dos tipos
de arreglos. Prodigy procesa los datos de forma paralela, sin
embargo, se utilizan canales de comunicación serial en
En la comunicación por I2C, se usan dos líneas para transmitir algunas partes de la máquina. Prodigy mejoró el tiempo de
información (CDA - SCL) y las líneas que alimentan el circuito. En procesamiento, y redujo la colisión de datos, a pesar de todas
Arduino es usual encontrarse con diferentes dispositivos que se de procesamiento de los datos; logrando resolver más
comunican entre sí por medio de I2C. problemas en menor tiempo. Por ejemplo, en la década de
los 90s un estas mejoras, sigue siendo una máquina enorme
D. Cámara OV7670: con muchos componentes que requieren de cuidado y
mantenimiento constante, una desventaja común de la
Este módulo de cámara se caracteriza por ser de bajo costo y
comunicación en paralelo.
también por tener una amplia gama de funcionalidades siendo
un dispositivo tan pequeño, con el que se pueden llevar a cabo Otra aplicación del procesamiento en paralelo es la
la captura de diversos tipos de imágenes con una resolución de resolución de problemas, ya que este tipo de procesamiento
calidad. La OV7670 cuenta con un sensor de imagen CMOS puede conectar varios microprocesadores al mismos tiempo y
VGA 0V7670, que puede llegar a máximo de 30fps (cuadros hacer que se comuniquen entre sí para obtener respuestas a
por segundo) por captura de imagen a una resolución de problemas que están dentro del problema original, de esta
640x480 pixeles (0.3M Px). Es un sistema de chip y por ello es forma se obtiene la respuesta final para el problema inicial. El
capaz de procesar imágenes tales como: control de exposición, procesamiento en paralelo ha sido de gran importancia para
gamma balance de blancos, saturación de color control de tonos; el desarrollo de la computación, tanto así que, se propuso la
todos los anteriores son configurables mediante la interface creación de compiladores de lenguaje de programación
SCCB (Bus de Control de Cámara Serial). También el sensor orientados solamente al procesamiento en paralelo.[Geoffrey
incluye filtros de eliminación de ruido eléctrico. C.]
2. Ahora
CARACTERISTICAS Gracias a los nuevos avances tecnológicos que cada día logran
los científicos, ingenieros, y todas las personas vinculadas al
• Voltaje de operación: 3.3V DC
mundo de la tecnología se puede contar con nuevas máquinas y
• Consumo de energía:
nuevos procesos en el campo de las telecomunicaciones, que
60Mw/15fpsVGAYUV permiten tener acceso a un nuevo mundo de comunicación
• Corriente Sleep: <20μA tecnológica en el cual se eliminan barreras y se alcanzan nuevas
• Cámara: OV7670 metas nunca antes logradas.
• Transmisión de datos en paralelo: 8 bits
• Lente óptico: 1/16” La comunicación en paralelo a resultado muy
• Angulo de visión: 25° provechosa en todos los medios, puesto a que en la última
• Resolución: 640x480 VGA década más que nunca, la globalización ha tomado las riendas
• Sensibilidad: 1.3V/(lux-sec) de la industria, donde la demanda de transferencia de datos,
• Lente de alta calidad: F1.8/6mm procesamiento de información, de imagen, y video entre otras,
• Máximo refresco de cuadro: 30fpsVGA se ha convertido en una necesidad que se debe suplir. ahí es
donde se implementan procesos como la comunicación en
• Necesita una frecuencia de 8M Hz
paralelo entre dos o múltiples dispositivos de modo que se logra
optimizar el rendimiento y la calidad en la operación de las
ESTADO DEL ARTE computadoras y máquinas que se encuentran en la tarea de
1. Antes recibir e intercambiar información con otras, de modo que el
La comunicación en paralelo al igual que la comunicación trabajo sea distribuido entre cada uno de los componentes
en serie han revolucionado el mundo de los ordenadores, y activos en un sistema en paralelo brindándole la oportunidad a
por consiguiente el mundo entero. Dependiendo de la cada uno de interactuar, editar , suministrar información, o
necesidad, el ser humano siempre ha buscado mejorar sus procesar datos a la vez para complementarse y aumentar su
invenciones para disminuir tiempo, costos, esfuerzo, entre rendimiento.
otros. En el caso del procesamiento de datos, se han creado En la actualidad, por ejemplo, en el campo médico se
máquinas con el fin de mejorar la comunicación y el tiempo requiere solucionar problemas de sobrecarga de datos médicos
y falta de aplicaciones telemedicales en tiempo real; La un sistema, como la resolución de imagen, la velocidad de
sobrecarga de datos y desorganización al momento de trabajar transferencia de datos, mayor capacidad de almacenamiento,
con imágenes y archivos se ha convertido en un desafío para los entre otras.
sistemas actuales de imágenes médicas en los últimos años. una
de las razones es que actualmente se producen decenas de
imágenes en alta calidad para miles de pacientes cada día, y ya
que las aplicaciones médicas tienden a trabajar compartiendo
estos datos en línea, interactúan y participan en tiempo real en
actividades colaborativas, requieren transmitir datos médicos lo Fig [Link] from the top of Lookout Mountain,
más rápido posible; para dar una solución. Tennessee, Albumen prints, February, [Link] de
una imagen panorámica antigua
Se espera encontrar unos años más adelante, en el
mercado, y entidades públicas, y privadas mayor cantidad de
sistemas en paralelo cumpliendo funciones de vigilancia,
entretenimiento, aprendizaje, control, etc… que permitan el
máximo aprovechamiento de recursos desarrollados para
optimizar el flujo de datos en una red compartida, de modo que
aumente la calidad con la que se trabajan diferentes campos que
están al servicio de la comunidad y del sector productivo, tales
como el ejemplo que se mencionaba anteriormente en cuanto a
los médicos, gracias a la implementación del paralelismo logran
mejorar un sistema de comunicación con el cual ahora se pueden
comunicar en tiempo real, y tienen la capacidad de almacenar y
disponer de todos los datos con los que cuentan sobre cada uno
Fig 1. TAC de una pancreatitis crónica, ejemplo de imagen de los cientos o miles de pacientes que manejan.
médica. Particularmente en el proyecto de auto estudio, una mejora es la
resolución de la imagen que se obtiene con la cámara de 360°,
ya que las cámaras que existen actualmente tiene una resolución
Como primera medida se pensó en usar un sistema de de imagen muy baja, y las que logran una imagen decente son
compresión y descompresión de datos, pero dado que se muy costosas.
debían manipular los datos para hacerlos menos pesados al
momento de enviar, y para leerlos se tiene que convertir a su
forma natural, se llega a la conclusión de que este método no
resulta eficiente en cuanto a la velocidad al momento de
ejecutarse, para solucionar este problema se implementa un
enfoque que usa una combinación de paralelismo y
compresión que permite mejorar el tiempo de transmisión de
datos utilizando un par de interfaces para obviar cualquier
cambio en los sistemas médicos actuales.
3. Futuro Fig 3. Full-spherical 360°x180° video. Ejemplo de
Se puede esperar en un futuro no muy lejano donde imagen tomada con una cámara de 360°.
los sistemas tecnológicos que se implementan en la
comunicación en paralelo entre diferentes dispositivos, se CAMARA OV7670
pueda manejar de manera más fluida, nuevos sistemas que 1. Nuestra idea de aplicación:
permitan a los usuarios trabajar unos con otros Para el proyecto de autoestudio de circuitos lógicos 2 se va a
simultáneamente e interactuar en tiempo real con total control trabajar comunicación en paralelo mediante I2C con el objetivo
sobre la información, almacenamiento, velocidad, y capacidad de crear una imagen ampliada o panorámica usando por lo
de resolución de imágenes, y video a partir de nuevos métodos menos dos cámaras OV7670, y de este modo cumplir con uno
desarrollados con el fin de aprovechar las oportunidades de los requerimientos de la entrega, que indica trabajar por
generadas a partir del paralelismo. Dado que el flujo de medio del puerto serial enviando y recibiendo datos a diferentes
información en paralelo permite aumentar las capacidades de placas de Arduino (Sólo se usarán placas de Arduino uno) de
modo que nuestra meta será obtener una imagen panorámica de
buena calidad compuesta por la unión de imágenes capturadas
por al menos dos cámaras OV7670 que cumplirán el rol de
“esclavo” y enviadas a un servidor “maestro” encargado de
procesarlas para generar la imagen final (una imagen
panorámica).
Para cumplir con las metas propuestas se debe trabajar en
equipos, y así desarrollar por secciones las diferentes partes del
proyecto, los alumnos del curso que harán equipo con los
autores del presente informe, son Carlos Augusto Tunjano
Gutiérrez y Miguel Ángel Montañez Pinto, con su colaboración
se empieza a analizar cómo se pueden hacer funcionar las dos
cámaras que serán usadas.
Fig 5. Mapa de conexión entre una OV7670 y Arduino Uno.
Como se menciona anteriormente, la falta del decodificador
hace que sea un poco dispendioso el tema de conexión y de
disponibilidad de pines en la placa de Arduino, pero por medio
de este diagrama o de mapa de cableado se ha logrado conectar
la cámara al Arduino con la intervención de una protoboard.
Fig 4. Cámara 0V7670
2. Probando la cámara:
Investigando sobre cuál es la manera en que trabaja la
cámara, se halló un dato que indica que el trabajo con esta será
un poco dispendioso; la ov7670 no cuenta con un decodificador
incorporado, dado esto hay que plantear un método que permita
usar optimizar las conexiones que se implementarán al
momento de conectar el hardware, no es eficiente usar los pocos
pines de la placa de Arduino con los que se pueden contar y
tampoco se puede exceder la carga de procesamiento de la placa. Fig 6. Conexión de la cámara y Arduino en la protoboard.
Para poder empezar a trabajar con el dispositivo encargado En cuanto a la programación fue un poco más
de capturar las imágenes, hay que investigar e indagar sobre su complicado que eso, ya que para poder poner en marcha a la
estructura interna para poder comprender có mo empezar a cámara hay que seguir ciertos pasos que no van a cambiar, de
cablear el montaje en la protoboard, para esto usamos el modo que se pudo seguir la guía de un programa ya realizado
datasheet de la OV7670 y con este tener una guía de cómo llevar con este fin, dado que el objetivo de esta entrega es aprender
a cabo las conexiones. sobre las cámaras que se van a implementar para el proyecto de
autoestudio, se usaron programas hallados en la red aunque no
se trabajó directamente con la programación en Arduino sino
que se implementó un pequeño programa en java (y se
experimentaron formas de implementar cámara en Arduino) que
cumple el propósito de activar la cámara y con esta ya activa se
ha logrado tomar la primer fotografía, aunque por una razón que
aún no es suficientemente clara, la foto solo se ha logrado
obtener en escala de grises.
[5] Rouzbeh, M. Sergio, C. Neil, A. ”A Parallel Method to Improve
Medical Image Transmission”.March,09,2017[Online].Available:
[Link]
ewer/pdfviewer?sid=00a4d16a-a31f-486c-b403-
35ffaa8bbf9e%40sessionmgr104&vid=48&hid=115 [6] Rosalie, Y.
“Embrace in Progress”. March,09,2017. [Online]. Available:
[Link]
569&CFID=737203778&CFTOKEN=59731826
[7] “What is Arduino’”.March,10,2017.[Online].Available:
[Link]
[8] “Transmisión Serial Y Paralelo”.March,10,2017.[Online]. Available:
[Link] [9]
George F. Longstreth.”TAC de una pancreatitis
cronica”.March,11,2017.[Online].Available:[Link]
m/imagenes-de-salud/[Link] [10] George, N. “History of Panoramic
Photography”.March,11,2017.[Online].Available:
[Link]
Fig 7. Fotografía capturada por la OV7670 a escala de grises.
El programa de adquisición usado funciona interpretando los
bits capturados por la cámara y, luego de un procesamiento
interno, decodifica estos bits para componer una imagen
completa en escala de grises, la cual se almacena en una ruta
local del equipo.
CONCLUSIONES
A partir de la breve investigación se puede concluir que la
comunicación en paralelo facilitara el desarrollo del proyecto de
autoestudio, sin embargo, hay muchas otras competencias que
se lograran aprender y fortalecer, como el trabajo en equipo, la
innovación, el entendimiento de cómo funciona un sistema
electrónico y la forma en la que se comunican sus componentes.
En cuanto a la siguiente y última etapa del proyecto, se deben
hacer ajustes más enfocados en la pror
REFERENCIAS
[1] Geoffrey C. Fox, Sanjay Ranka, Michael Scott, Allen D. Malony, Jim
Browne.”Common Runtime Support for High-Performance Parallel
Languages”,March,09,2017.[Online].Available:[Link]
.edu/u/scott/papers/1993_SC.pdf
[2] Dennis A. “Parallel Processing Implications for Management
Scientists”,March,09,2017.[Online].Available:[Link]
[Link]/ehost/pdfviewer/pdfviewer?sid=00a
4d16a-a31f-486c-b403-
35ffaa8bbf9e%40sessionmgr104&vid=32&hid=115 [3] Noboru, T.
Sanado, N. Takashi, S. Shigeru, O. “Implementation of the
Prodigy Parallel AI Machine and Performance Evaluation of
Communication”.March,10,2017.[Online].Available:[Link]
[Link]/ehost/pdfviewer/pdfviewer?sid
=00a4d16a-a31f-486c-b403-
35ffaa8bbf9e%40sessionmgr104&vid=38&hid=115
[4] Johannes,K. ”360°Video Stabilization”. March,11,2017. [Online].
Available:
[Link]
405&CFID=737203778&CFTOKEN=59731826