Craft-camera, cámara de fotos con Arduino

La Craft-camera es una cámara de bajo coste DIY (Do it yourself) hecha con Arduino un proyecto open source, el open source o código abierto es con lo que se conoce a los proyectos (o Software) distribuidos y desarrollados libremente.

Craft camera, camara, arduino, DIY

Esta hecha por una carcasa de cartón y el controlador arduino, los planos de construcción de la carcasa se pueden encontrar en la web de craft-camera.  El objetivo es contrarrestar la obsolescencia programada con lo que conlleva que el producto sea sostenible.

Podemos ver la plantilla de la cámara. De esta forma la carcasa se construye recortando y doblando el cartón como si hicieramos origami.

Plantilla montaje, cámara arduino

Vamos a ver el montaje de la cámara.

Material necesario:

  • Arduino uno
  • Batería de litio (Lithium Backpack) 
  • microSD shield
  • Tarjeta micro SD
  • Cámara JPEG color TTL
  • Pulsador
  • Botón ON/OFF
  • Resistencia de 220 Ohms
  • Resistencia de 10kOhms

 

 

Y como quedaría el montaje interno de todo el hardware.

hardware cámara con arduino

 

Esquema de montaje:

Esquema, craftcamera, arduino, camara DIY

1. Batería de litio            4. Cámara JPEG
2. Arduino uno                5. Pulsador para realizar fotografía
3. microSD shield con SD        6. Botón ON/OFF

Y nuestro código  anotado con multitu de explicacions, que esperamos que os sirva :)

Programa: 

#include <MemoryCard.h>       //Cargamos la librería para la sd
#include <SdFat.h>            //Cargamos la librería para la sd
#include <JPEGCamera.h>       //Cargamos la librería de la cámara

JPEGCamera camera;  //Crea una instancia de la cámara (Función de la librería)
char response[32]; //Variable de tipo array para almacenar la respuesta de la cámara a los comandos
unsigned int count=0; //Variable para contar el número de caracteres de la respuesta de la camara
int size=0; //Variable que guarda el tamaño de las imágenes
int address=0; //Variable para la dirección de almacenamiento de los datos
int eof=0; //Variable para detectar el final de un archivo
int led=6; //Variable led se le asigna la dirección 6
int boton=4; //Variable boton se le asigna la dirección 4
int estadoboton = 0; //Variable del estado del botón

void setup() {
camera.begin();                //Configuración de la cámara
MemoryCard.begin();            //Configuración de la tarjeta de memoria
count=camera.reset(response);  //Reset de la cámara
delay(3000);
}

void loop()
{
estadoboton=digitalRead(boton); //leemos el estado del pulsador
if(estadoboton == HIGH) {       //Si el pulsador se ha apretado realiza la acción
count = camera.takePicture(response); // Hacemos la foto
count = camera.getSize(response, &size); //Obtenemos el tamaño de la foto

//Crea un archivo llamado foto.txt
//La tarjeta de memoria solo puede crear archivos de formato txt
//Cuando se vaya abrir el archivo en el ordenador se debe renombrar a .jpg
MemoryCard.open(“/foto.txt”, true);

while(address < size) //Mientras address(que empieza desde 0) sea más pequeño que size seguirá leyendo
{
count=camera.readData(response, address); //Lee la información de cada dirección (address)

for(int i=0; i<count; i++){ //Guarda toda la información que emos leido a la tarjeta
if((response[i] == (char)0xD9) && (response[i-1]==(char)0xFF))eof=1; // Comprobar la respuesta del indicador eof (0xFF, 0xD9)
MemoryCard.file.print(response[i], BYTE); //Guarda la información a la tarjeta
if(eof==1)break; // Si encontramos el carácter eof, salir de este bucle y dejar de leer los datos
}
address+=count; //Incremento de la dirección
if(eof==1)break; // Nos aseguramos de que dejamos de leer los datos si el indicador eof se establece.
}
MemoryCard.close(); //Cerramos el archivo
digitalWrite(led, HIGH);  //Encendemos el led indicando que se realizó la foto
delay(500);
digitalWrite(led, LOW); //Apagamos el led
}
}

Nota: Todas las librerías mencionadas se pueden descargar gratuitamente de internet.

El Arduino no puede procesar la imagen, simplemente la captura y la guarda en la tarjeta de memoria para después poder ver-la en el ordenador.
Se podría ampliar el proyecto colocándole un flash con un condensador pero reduciría drásticamente el tiempo de la batería.


3 comentarios

  1.   Diego dijo

    Hola.
    Que tanto consume de recursos la captura de la imagen en el arduino?
    Podrias pasar algun link de la libreria JPEGCamera por favor?

    Muchas gracias, buen desarrollo

  2.   roger peña dijo

    Hola, una duda, Como instalaste esas librerías, o bien como las mando a llamar en arduino??.
    al correr el programa que propones me marca error al compilado, desearía que me resolvieras esa duda, porfavor :)

  3.   Gonzalo dijo

    buenas tardes, quisiera saber si tienen disponible la libreria para la camara.
    También me interesaría saber donde deben ir conectados los 4 cables de la camaraweb ya que no me queda clara la imagen.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *