Desde que escribí el artículo del Arduino controlando el riego en el patio de casa se ha convertido en uno de los apuntes más visitados, y de los que más preguntas y confusión han generado, especialmente en lo referente a servir los datos de nuestra estación Arduino en una página web y desde ella dar órdenes a la placa.
Voy a tratar de explicar como y porqué lo tengo yo instalado sin enrollarme demasiado.

Página de control Arduino

En la imagen una captura de pantalla de la página de control de mi CCCP (Centro de Control Centralizado Patiota, un poco de pitorreo siempre viene bien) desde donde puedo consultar el estado del patio y dar algunas órdenes (regar, pulverizar, alimentar peces y encender luz del patio – Interruptor 3).
Esta página contiene NO está generada por Arduino si no por mi propio ordenador (servidor web GNU-Linux) que es el que sirve los datos, realiza el control de visitas/autentificación, genera archivos de registro/log y estadísticas (temperatura, humedad, etc… ), compone la página y todo su código correspondiente (css/javascript/php), y permite dar órdenes sencillas al Arduino (p. ejem: riega 10 segundos) pulsando un botón pero siempre después de realizar comprobaciones de autentificación y funcionamiento (p. ejem: antes de ordenar a Arduino que riegue hay que comprobar que no está ya regando, o pulverizando o que por error no le hemos dicho “riega durante 3 días”).

Inconvenientes

Todo este trabajo si bien podría (teóricamente, aunque esto no es estrictamente cierto) hacerlo Arduino es del todo desaconsejable por varios motivos:
1/ Arduino carece de la potencia necesaria para atender un volumen bajo-muy bajo de visitas. Si trabajáis con la tarjeta Ethernet notaréis en seguida como sube la temperatura de esta en cuanto le solicitáis que haga algo muy sencillo.
2/ La estabilidad de Arduino cuando tienen que atender muchas visitas se resiente y la placa se resetea si el volumen de trabajo aumenta.
3/ Hacer que Arduino sirva todo el código HTML de la página de control, además del enorme volumen de trabajo que le supondría sería impracticable cada vez que quisiéramos realizar un cambio mínimo en la página. Imagina tener que cambiar algún detalle del código HTML tener que descolgar el Arduino del patio, conectarlo a tu ordenador, subir a la placa el nuevo código, probarlo, volver la placa a su sitio. Una verdadera locura.

Sigue leyendo…

jueves, 28 de mayo de 2015

Llevaba tiempo queriendo instalar un interruptor así y me ha costado lo mio, porque a mis nulos conocimientos de electrónica se suma la poca documentación que he encontrado sobre estos dispositivos, pero bueno, el que la sigue la consigue y probando conseguí hacerlo funcionar.
Estas son las tripas de mi circuito (otro día pongo el esquema y explico como funciona) al que le acabo de añadir un micro-interruptor con dos posiciones (esa cosilla azul-celeste del centro).

Tripas del sensorTripas del sensor

La idea es la siguiente: una vez que me llevo el sensor de movimiento al monte poder alternar el funcionamiento del dispositivo entre varias opciones preseleccionadas y predefinidas en el código sin tener (como hasta ahora) que andar modificando y recargando el código en el ordenador antes de salir de casa de acuerdo a lo que fuese hacer en ese uso. Con este interruptor de dos posiciones se obtienen cuatro combinaciones posibles: interruptores ON/ON, ON/OFF, OFF/ON, OFF/OFF.
De este modo podemos precargar con cuatro modos de funcionamiento y alternar entre ellos en cualquier sitio y momento tan solo cambiando un interruptor (eso sí, muy pequeño, hace falta un boli para alcanzarlo).
El esquema es muy sencillo, solo necesitáis 1 resistencia de 1kΩ por cada interruptor (en el esquema he usado dos piezas cuando en realidad es una pieza+dos interruptores, para el caso esto es indiferente).

Esquema interruptorEsquema interruptor

Con esto instalado bastaría el código que lee los interruptores al inicio sería :int pinConmutadorA = 6;
int pinConmutadorB = 5;
void setup() {
int conmutadorAVal = digitalRead(pinConmutadorA);
int conmutadorBVal = digitalRead(pinConmutadorB);
if (conmutadorAVal == 1 && conmutadorBVal == 1) { int modoConmutadores = 1;}
if (conmutadorAVal == 1 && conmutadorBVal == 0) { int modoConmutadores = 2;}
if (conmutadorAVal == 0 && conmutadorBVal == 1) { int modoConmutadores = 3;}
if (conmutadorAVal == 0 && conmutadorBVal == 0) { int modoConmutadores = 4;}
}

Los interruptores los compré en Electrónica Embajadores a 0,6 €.

Os presento mi gran proyecto Arduino que he bautizado como CCCP, Control Patiota. Grande no tanto por su complejidad sino especialmente porque es una idea que llevaba mascullando ya algunos años, pero claro también por el tiempo que me ha llevado la instalación y puesta en marcha.
El proyecto básicamente consiste en una instalación de riego por goteo y micro-aspersores accesible desde internet y completada con algunos “extras” como un alimentador (mejorado) para los peces del patio y algunos sensores de temperatura y humedad con los que monitorizar el espacio. El siguiente vídeo podéis ver la instalación y como funciona.

Lógicamente la tarea más complicada de todo este tinglado ha sido todo lo referente a los componentes no-electrónicos: la instalación del sistema de riego y conexión a la red, la instalación de 20 mts de cable de red entre el router y la caja y los cientos de micro-goteros instalados, uno por maceta.
En cuanto a la electrónica no me calenté mucho la cabeza, he cogido los componentes y los he metido tal cual en una caja de plástico, incluida la propia placa de prototipado, los cables de conexión entre placas y los transformadores de corriente. Puesto que para la pruebas y la subida del código al Arduino las conexiones/desconexiones iban a ser frecuentes, la condición inexcusable era que la caja fuese fácil/rápida de desmontar y trasladable, y que alojase dentro todo la electrónica necesaria de manera que al desconectar los “periféricos” quede una caja de plástico con un enchufe. Con un par de regletas y un par de cables USB desmontarlo todo son apenas 15 segundos.

Elementos Arduino

La instalación es una placa Arduino UNO sobre la que acopla una Ethernet Shield de la que salen los habituales conexiones a sensores y controles.
La placa Ethernet se comporta como un servidor web conectándose al router de casa con una IP fija (192.168.1.205 en este caso), y es a través de la intranet desde el arduino informa desde estado de los sensores y espera la ejecución de órdenes. Sigue leyendo…

viernes, 8 de marzo de 2013 (Hace 12 dias)

Resultados 8300 lecturas: Azul:temperatura, rojo:luz

En esta ventanita a la izquierda podeis ver los datos en tiempo real tomados cada 5 segundos y tomados con una micro-estación meteorológica montada con arduino. Hora (está deliberadamente fuera de hora, unos 4 minutos de retraso) > temperatura > cantidad de luz (indice arbitrario a falta de saber los lumens que admite el sensor pero bastante sensible)

Para un divertido proyecto que quiero poner en marcha en breve ( y que contaré más adelante si todo sale como debe) he estado refrescando mi arduino que lo tenía acumulando polvo y montado un circuito elemental con un sensor de temperatura y un sensor de luz. Los he montado sobre la propia placa y los he puesto en el patio para ir probando a ver que tal dibujan el amanecer de hoy.

El resultado se va registrando cada 5 segundos en un archivo de texto, de este archivo se cogen las últimas 100 lecturas y se muestran en sentido cronológico inverso que es lo que podeis ver en el iframe superior.

El montaje y el código arduino es muy elemental#include
int sensorTemp = 0;
int sensorLuz = 1;
void setup() {
Serial.begin(9600);
setTime(08,30,45,8,3,2012);
}
void loop() {
int vTemp = analogRead(sensorTemp);
float voltage = ( vTemp * 5.0 ) / 1024;
float temperaturaC = (voltage - 0.5) * 100 ;
int vLuz = analogRead(sensorLuz);
float luzC = map(vLuz, 0, 1023, 100, 0);
Serial.print(hour()); numeros(minute()); numeros(second());
Serial.print(" > Temp: "); Serial.print(temperaturaC); Serial.print("ºC, Luz: ");
Serial.print(luzC); Serial.println("%");
delay(5000);
}
void numeros(int dg){
Serial.print(":");
if(dg < 10)
Serial.print('0');
Serial.print(dg);
}

Si todo sale como espero ya os contaré DONDE quiero medir la luz y la temperatura y algún registro más.

lunes, 31 de octubre de 2011

Este proyecto de Arduino es tan simple como el mecanismo de un botijo, literalmente, conceptualmente esto es un botijo hecho con arduino, pero es probable que sea el más práctico de los realizados hasta ahora. Cuanto más complicado más inútil, y viceversa, cuanto más simple más práctico, bonita moraleja.

Una de las limitaciones propias de tener animales y plantas en casa son las obligaciones que generan. Da igual que los animales sean canarios y peces, para ellos un martes es indistinguible de un domingo, su estómago funciona de igual forma.

En nuestra última salida a Galicia decidimos no incordiar a ningún familiar/amigo con la tarea de “pasarse a ver si lo canarios tienen agua y darle de comer a los peces“. Dispuse un depósito de 8 litros de agua como bebedero y me ingenié un sistema de alimentación para los peces (alrededor de 80-100 platys) que viven en la tinaja del patio.
El problema de la alimentación de los peces es que si se les dá en exceso se contamina el agua y puede provocar un bloom bacteriano que en el peor de los casos acabe con un buen montón de peces muertos y si se les dá poco pues 3/4 de lo mismo. Si bien los platys se “distraen” mordisqueando algas y con el agua fresca se les puede “aletargar” fácilmente una temporada preferí no arriesgarme con un semana de parón y sobretodo costando tan poco trabajo.

(En el vídeo, si no teneis ganas de escuchar el rollo, para ver el funcionamiento moverse hasta el minuto 2:00)

Dispensador de comida

La mayor dificultad de este invento viene dada por la particular presentación de la comida de peces: pesa muy poco, absorbe humedad ambiental como una esponja reseca y es muy grande. En las primeras pruebas que hice, con un bote abierto completamente, la humedad ambiental del patio era suficiente para que por la mañana la comida estuviese convertida en pasta grumosa y solidificada en el fondo del envase, hasta tal punto solidificada que ni sacudiéndolo con fuerza caía fuera del bote.
La solución vino disponiendo una tapa basculante que evitaba la “caída de humedad” dentro del bote (y posibles chispeos veraniegos) y procurando que los movimientos del bote fuesen bastante bruscos para “desatascar” el contenido.
Esta tapadera basculante tiene una ventaja, el propio movimiento de giro del bote provoca que esta tapadera golpee el envase en cada giro, consiguiendo que “desatranque” posibles apelmazamientos de las escamas.

Sigue leyendo…

martes, 16 de agosto de 2011

Sigo con mis prácticas. Ayer construí un sencillo sistema para “mover” de forma gradual la potencia entre tres dispositivos, en este caso tres leds, pero que sin mucho esfuerzo serviría para situar un puntero en un espacio circular para, por ejemplo, con un par de motorcillos y un lápiz dibujar curvas…. ¿se me ven ya las intenciones?

El cógido es básicamente la curva de un seno desplazada 90º para adelante y para atrás para cada uno de los leds laterales:

int pinPotenciometro = 0;
float valor;
void setup() {
}
void loop() {
valor = analogRead(pinPotenciometro);
float p1=sin(radians(((180.00/1024.00) * valor)+90))*255;
float p2=sin(radians(((180.00/1024.00) * valor)))*255;
float p3=sin(radians(((180.00/1024.00) * valor)-90))*255;
if(p1<0) p1=0;if(p1>255) p1=255;
if(p2<0) p2=0;if(p2>255) p2=255;
if(p3<0) p3=0;if(p3>255) p3=255;
analogWrite(11,p1);
analogWrite(10,p2);
analogWrite(9, p3);
delay(30);
}

El esquema lo podeis ver aqui

Más apuntes (0) anteriores en la categoria Arduino

Cuaderno de campo es un blog desarrollado y mantenido por Trebol-a y en el que escriben Trebol-a, Miguel, Merche y Mónica
Si quieres saber algo más sobre los autores acude a la página acerca-de, si quieres contactar con alguno de nosotros hazlo a través de contactar ó de Google+

Creative Commons: Todo el contenido de la web (imágenes, textos, vídeos, a excepción de aquellas obras de otros autores enlazados por Cuaderno de Campo) se acoge a los términos expresados en la licencia Creative Commons