
PROYECTO CON CÁMARA ARDUCAM

DESCRIPCIÓN Y OBJETIVO DEL ESTUDIO
Este proyecto consiste en la configuración e integración de una cámara ARDUCAM con una placa Arduino, siguiendo el procedimiento mostrado en el video de referencia. El objetivo principal es comprender el funcionamiento de este tipo de cámaras y aprender a establecer la comunicación entre la cámara y el microcontrolador mediante los protocolos SPI e I2C.
Durante el desarrollo del proyecto se realiza la instalación y configuración de las librerías necesarias en el entorno Arduino IDE, así como diferentes pruebas de captura y transmisión de imágenes para verificar el correcto funcionamiento del sistema.
Además, este proyecto permite adquirir conocimientos básicos sobre visión artificial, sistemas embebidos y procesamiento de imágenes, proporcionando una base práctica para futuras aplicaciones en robótica, automatización e Internet de las Cosas (IoT).
MATERIALES
- 1 placa Arduino UNO (o compatible).
- 1 cámara ARDUCAM.
- 1 cable USB para conectar Arduino al ordenador.
- 6 cables Dupont macho-hembra (aproximadamente, dependiendo de la conexión utilizada).
- 1 ordenador con Arduino IDE instalado.
- 1 protoboard (opcional).
- 1 conjunto de librerías oficiales de ARDUCAM instaladas en Arduino IDE.
- 1 fuente de alimentación USB (si no se alimenta directamente desde el ordenador).
FUNCIONAMIENTO
El funcionamiento del proyecto comienza con la conexión de la cámara ARDUCAM a la placa Arduino mediante los pines de comunicación SPI e I2C. Una vez realizadas las conexiones físicas, se instala y configura el entorno Arduino IDE junto con las librerías necesarias para que el sistema pueda reconocer correctamente la cámara. Después, se carga un programa de prueba que permite inicializar el módulo y establecer la comunicación entre ambos dispositivos. Finalmente, la cámara realiza la captura de imágenes y transmite la información al ordenador a través de la comunicación serie, permitiendo comprobar que el sistema funciona correctamente.
DESARROLLO DEL PROYECTO
El desarrollo del proyecto se realiza siguiendo una serie de pasos organizados. En primer lugar, se recopilan todos los materiales necesarios y se realizan las conexiones entre la cámara ARDUCAM y la placa Arduino. A continuación, se instala el software Arduino IDE y las librerías oficiales de ARDUCAM para poder programar el dispositivo. Posteriormente, se configura el modelo de cámara correspondiente dentro del código y se carga un programa de ejemplo proporcionado por la librería. Una vez cargado el programa, se realizan pruebas de funcionamiento para verificar que la cámara puede capturar y enviar imágenes correctamente. Finalmente, se comprueba la estabilidad del sistema y se realizan ajustes en caso de errores de comunicación o configuración.
APLICACIONES
Este proyecto tiene diferentes aplicaciones dentro del ámbito tecnológico y educativo. Puede utilizarse en sistemas de robótica para incorporar visión artificial y reconocimiento de objetos. También es aplicable en proyectos de vigilancia y monitorización mediante captura de imágenes en tiempo real. Además, puede emplearse en sistemas de automatización e Internet de las Cosas (IoT), donde la cámara permite obtener información visual del entorno. Por último, este tipo de proyectos sirve como base de aprendizaje para futuros desarrollos relacionados con procesamiento de imágenes, inteligencia artificial y sistemas embebidos.
CÓDIGO
// ArduCAM Mini 5MP Plus (OV5642) – UNA CÁMARA
// CS = 7
// Compatible con ArduCAM Host
#include <Wire.h>
#include <ArduCAM.h>
#include <SPI.h>
#include “memorysaver.h”
// Solo OV5642 activo en memorysaver.h
#if !(defined (OV5642_MINI_5MP_PLUS))
#error “Activa OV5642_MINI_5MP_PLUS en memorysaver.h”
#endif
#define FRAMES_NUM 0x00
// SOLO UNA CÁMARA
const int CS1 = 7;
bool cam1 = true;
bool is_header = false;
byte flag[5] = {0xFF, 0xAA, 0x01, 0xFF, 0x55};
ArduCAM myCAM1(OV5642, CS1);
void setup() {
uint8_t vid, pid;
uint8_t temp;
Wire.begin();
Serial.begin(921600);
Serial.println(F(“ACK CMD ArduCAM Start! END”));
pinMode(CS1, OUTPUT);
digitalWrite(CS1, HIGH);
SPI.begin();
// Reset cámara
myCAM1.write_reg(0x07, 0x80);
delay(100);
myCAM1.write_reg(0x07, 0x00);
delay(100);
// Test SPI
while (1) {
myCAM1.write_reg(ARDUCHIP_TEST1, 0x55);
temp = myCAM1.read_reg(ARDUCHIP_TEST1);
if (temp != 0x55) {
Serial.println(F(“ACK CMD SPI ERROR END”));
delay(1000);
} else {
Serial.println(F(“ACK CMD SPI OK END”));
break;
}
}
// Detectar cámara
while (1) {
myCAM1.rdSensorReg16_8(OV5642_CHIPID_HIGH, &vid);
myCAM1.rdSensorReg16_8(OV5642_CHIPID_LOW, &pid);
if ((vid != 0x56) || (pid != 0x42)) {
Serial.println(F(“ACK CMD NO OV5642 END”));
delay(1000);
} else {
Serial.println(F(“ACK CMD OV5642 DETECTED END”));
break;
}
}
myCAM1.set_format(JPEG);
myCAM1.InitCAM();
myCAM1.write_reg(ARDUCHIP_TIM, VSYNC_LEVEL_MASK);
myCAM1.write_reg(ARDUCHIP_FRAMES, FRAMES_NUM);
myCAM1.clear_fifo_flag();
myCAM1.OV5642_set_JPEG_size(OV5642_320x240);
delay(1000);
Serial.println(F(“ACK CMD READY END”));
}
void loop() {
if (Serial.available()) {
uint8_t temp = Serial.read();
switch (temp) {
case 0:
myCAM1.OV5642_set_JPEG_size(OV5642_320x240);
Serial.println(F(“ACK CMD 320×240 END”));
delay(500);
break;
case 1:
myCAM1.OV5642_set_JPEG_size(OV5642_640x480);
Serial.println(F(“ACK CMD 640×480 END”));
delay(500);
break;
case 2:
myCAM1.OV5642_set_JPEG_size(OV5642_1024x768);
Serial.println(F(“ACK CMD 1024×768 END”));
delay(500);
break;
case 0x10:
captureImage();
break;
}
}
}
void captureImage() {
uint8_t temp = 0, temp_last = 0;
uint32_t length = 0;
myCAM1.flush_fifo();
myCAM1.clear_fifo_flag();
myCAM1.start_capture();
while (!myCAM1.get_bit(ARDUCHIP_TRIG, CAP_DONE_MASK));
length = myCAM1.read_fifo_length();
myCAM1.CS_LOW();
myCAM1.set_fifo_burst();
while (length–) {
temp_last = temp;
temp = SPI.transfer(0x00);
if ((temp == 0xD8) && (temp_last == 0xFF)) {
is_header = true;
Serial.write(temp_last);
Serial.write(temp);
}
else if (is_header) {
Serial.write(temp);
}
if ((temp == 0xD9) && (temp_last == 0xFF)) {
break;
}
}
myCAM1.CS_HIGH();
is_header = false;
myCAM1.clear_fifo_flag();
}
CURIOSIDADES SOBRE ARDUCAM
- Las cámaras ARDUCAM se utilizan en proyectos de robótica y drones.
- Algunas versiones permiten grabar vídeo y detectar movimiento.
- Este tipo de cámaras también se usan en sistemas de inteligencia artificial y reconocimiento facial.
- La comunicación SPI permite transmitir datos rápidamente entre dispositivos.
PROBLEMAS ENCONTRADOS Y SOLUCIONES
| Problema | Solución |
| La cámara no era detectada | Revisar conexiones SPI |
| Error al cargar librerías | Reinstalar librerías ARDUCAM |
| Imagen corrupta | Ajustar velocidad de comunicación |
¿Cómo Funciona una Cámara Digital?
Captura la luz mediante un sensor.
Convierte la luz en datos digitales.
Arduino procesa esos datos.
La imagen se envía al ordenador.
Video Explicativo
Conclusión
Este proyecto permite adquirir conocimientos prácticos sobre integración de sensores visuales en sistemas electrónicos programables. Además, introduce conceptos fundamentales de comunicación entre dispositivos, captura de imágenes y programación de hardware embebido, siendo una excelente base para futuros desarrollos relacionados con visión artificial y automatización.
Etiqueta:1ºbachillerato, AIDARAC, ARDUCAM, arduino, bachillerato, ciencia, iesmonterroso, monterroso, tic

