Concurso de fotografía AM

Temática: «Una panorámica de tu acuario».
Ya esta abierto el plazo para presentar fotografías.

Más info
image01

¿Aún no conoces AMA?

Hazte socio de Acuariofilia Madrid Asociación.
CERRADO EL PLAZO DE INSCRIPCIÓN

Más info
image01

Atlas de peces de AM

¡Hemos alcanzado las 800 fichas! Visita nuestro atlas de peces actualizado.

Más info
image01

Cardúmenes y sociabilidad

Nueva actualización de la tabla con una extensa relación de peces, donde podrás conocer qué entorno necesita cada especie, su sociabilidad y si convive o no en cardumen. ¡Pasa a descubrirla!

Mas info
image01
Programar para dotar de automatismos a un acuario.
Respuestas: 29    Visitas: 8048
#16
(11-12-2015, 01:21 PM)Antonio Castro escribió: Aeros bienvenido, cualquier aportación es buena y deseada.
Desde tu punto de vista: ¿Cuál sería los mínimos que debe dar este "artilugio"?, ¿Hasta donde se debe complicar o hasta donde sería ya mucho?

Estando yo en blanco( o lego jaja), como aquel que dice, creo que lo mínimo seria lo que comentáis de controlar las luces, pero, quien no tiene un calentador también?
Yo creo que con un controlador de temperatura y de las luces seria un kit de principiante ideal, quitándote el termómetro de en medio del acuario y obteniendo una lectura mas fácil de la temperatura, ademas de dejar a un pasito la posibilidad de añadir ventiladores controlados también por arduino, no solo el calentador.

Eso seria lo mínimo para mi gusto si alguien se va a dejar dinero en un arduino, al fin y al cabo no lo quieres solo para sustituir una programador de 5€, no merecería la pena, sobre la simplicidad de programar... nunca he visto el programa pero supongo que admite comentarios como todo código y en los comentarios se podría poner de cabecera un:
Cita://En la linea 232 se modifica la temperatura minima del calentador
//En la linea 233 se modifica la temperatura maxima del calentador
//En la linea... ETC...
Así, alguien que no le interese meterse en el mundo C++, no tendrá necesidad, sobre la simplicidad del código, pues lo ideal la mayoría de veces siempre es lo mas simple, pero premiaría mas que no tuviese "agujeros", prefiero que sea complicado si sé que nunca va a fallar.

No puedo decir mucho mas sin saber nada de este mundillo y supongo que lo del quote que he puesto ya se hace, o almenos alguna cosa parecida, lo que si me parece importante es no quedarse solo en el control de las luces, nadie se meterá en ese "fregao" solo para controlar que las luces se enciendan y se apaguen a la hora Blush
#17
Parece ser que existe una librería que incluye la jestión del horario Verano/invierno.
Yo no la tengo hecha y no es algo trivial de implementar asi que es una buena noticia.

Además he visto un procedimiento que aprovecha el terminal Serial para hacer el ajuste de la hora. (Se introducen los datos desde el IDE).

Lo mismo se podría habilitar algún comando más.

Actualización 1.4 de la librería RTC para reloj Dallas DS1307 y DS3231

Tendría que investigar el uso de esa librería.

La programación de una tarea podría ser como sigue:
1) Debería ir ligada a un pin de salida.
2) Debería especificar el estado por defecto de la salida (HIGH/LOW)
3) Debería estar definida para un conjunto de días de la semana (al menos para uno de ellos)
4) Debería incluir un cierto número de pulsos caracterizados por su momento de inicio y su duración y cambiarían el estado por defecto del pin.

Con esta estructura habría que establecer un número máximo de tareas y un máximo número de pulsos para reservar el espacio en memoria paa todo ello.
#18
Siguiendo bajo el criterio de simplicidad creo que cada tarea/progamador de rele debería ser diario (no me imagino algo simple en el acuario que lleve a usar un calendario semanal/mensual), y de un solo pulso: hora/min encendido (no creo que haya que ajustar a seg), h/m apagado, a lo sumo y no se si ya es pasarse hacer un doble pulso en el primer activador con dos horas de encendido y apagado. Realmente no se para que seria necesario más para controlar un acuario.

Los módulos de relé para arduino (los habituales chinos) como este, trabajan en activado = low, permitiendo además alimentación del relé independiente (con optoacoplador) con lo que no se sobrecarga el regulador de tensión del arduino. Aunque lo de H/L no es transcendental ya que el rele lleva doble contacto NC/NO

En cuanto al número me decantaría por 4, aunque no se si evaluar la posibilidad de llegar 6 u 8 pero lo dejaría de momento para la versión pro. La disponibilidad de pines digitales a gastar lo ha de definir los disponibles en la placa de microprocesador finalmente elegida.

El punto 4 no lo acabo de entender, de momento no vamos a poner dimelado, cada activador debe gastar un boolean para estado y un par (o dos) de datetime o int(minuto_del_dia). Creo que partiendo de la base de un encendido previo al apagado se debe activar (low) si estando el flag apagado se supera un minuto del dia y apagar si estando encendido se supera otro.

Esto no incluye apagados posteriores a las 0:00 salvo que incluyamos una constante de desplazamiento del minuto del día. Todo ello en el supuesto de gestionar solo horas y minutos.



Aeros, Antonio nada y yo poco somos partidarios de fiar el calentador a una sonda gestionada por arduino, dado que como Antonio tiene demostrado, las sondas de temperatura sumergidas son muy susceptibles de acabar fallando por entrada de humedad y el comportamiento del arduino en ese caso es impredecible. Aunque yo soy de la opinión que con un doble calentador se puede asumir: uno independiente fijado su termostato sobre 20º/24º para evitar un desplome mayor y controlar con el arduino y la sonda el principal, con su termostato fijado a 30º para que evite un cocido si el arduino se vuelve loco.

Mi idea inicial es casi solo un programador de luces (solenoide CO2 a lo sumo) para atraer a la idea a la gente por su simplicidad (no eres el primero que se asusta en la primera impresión) y una vez logrado que la gente consiga su primer y simple montaje funcionando se demanden nuevas funciones, como será la activación de ventiladores o calentador para controlar la temperatura del agua (con la llegada del verano), querer dimelar la luz, etc...

Es decir empezar con algo sencillo y fácil, y después ir avanzando y que cada uno se plante donde se encuentre a gusto.
#19
Lo de pulso alto y puso bajo tienes razon en lo relativo a los reés, pero también existe la posibilidad de usar transistores para circuitos a 12v sin mucha carga. Por eso lo de los estados. Para que quede más intuitivo se puede convenir que si pasas el numero de pin con un valor negativo la salida se invierte. Una programación por defecto para ocho canales o pines no supone mayor complejidad que una programacion para dos.

No sé hasta que punto sería interesante lo de la programación semanal, pero por ejemplo si se programas una distribución de comida cuatro veces al día podrías dejar un día a la semana en ayunas. En otras palabras, no sería como tener que programar semanalmente cada pulso, sería bastante más simple.
La programación de datos tipo conjunto es fácil, se hace con combinaciones de bits. Puede no entenderse a la primera pero no es muy complicado.

Código:
// Para los dias de la semana el numero de combinaciones posible son 128 (2^7)
// Ponemos a modo de ejemplo unas pocas.
#define L     B01000000
#define M     B00100000
#define X     B00010000
#define J     B00001000
#define V     B00000100
#define S     B00000010
#define D     B00000001
#define LMXJVSD B01111111
#define LMX_VSD B01110111

En una variable tipo byte podemos usar 256 valores. Nosotros usaremos la mitad porque los días de la semana son 7 no 8.

No es una funcionalidad superinteresante pero tampoco supone mucho incluirla.
#20
(11-12-2015, 03:22 PM)Aeros escribió:
(11-12-2015, 01:21 PM)Antonio Castro escribió: Aeros bienvenido, cualquier aportación es buena y deseada.
Desde tu punto de vista: ¿Cuál sería los mínimos que debe dar este "artilugio"?, ¿Hasta donde se debe complicar o hasta donde sería ya mucho?

Estando yo en blanco( o lego jaja), como aquel que dice, creo que lo mínimo seria lo que comentáis de controlar las luces, pero, quien no tiene un calentador también?
Yo creo que con un controlador de temperatura y de las luces seria un kit de principiante ideal, quitándote el termómetro de en medio del acuario y obteniendo una lectura mas fácil de la temperatura, ademas de dejar a un pasito la posibilidad de añadir ventiladores controlados también por arduino, no solo el calentador.

Eso seria lo mínimo para mi gusto si alguien se va a dejar dinero en un arduino, al fin y al cabo no lo quieres solo para sustituir una programador de 5€, no merecería la pena, sobre la simplicidad de programar... nunca he visto el programa pero supongo que admite comentarios como todo código y en los comentarios se podría poner de cabecera un:
Cita://En la linea 232 se modifica la temperatura minima del calentador
//En la linea 233 se modifica la temperatura maxima del calentador
//En la linea... ETC...
Así, alguien que no le interese meterse en el mundo C++, no tendrá necesidad, sobre la simplicidad del código, pues lo ideal la mayoría de veces siempre es lo mas simple, pero premiaría mas que no tuviese "agujeros", prefiero que sea complicado si sé que nunca va a fallar.

No puedo decir mucho mas sin saber nada de este mundillo y supongo que lo del quote que he puesto ya se hace, o almenos alguna cosa parecida, lo que si me parece importante es no quedarse solo en el control de las luces, nadie se meterá en ese "fregao" solo para controlar que las luces se enciendan y se apaguen a la hora Blush

Tengo un buen trancazo desde ayer, así que no estoy en plenas facultades.
Esto se me había olvidado comentarlo.
La idea de Arturo es hacer algo muy sencillo y lo sencillo siempre es na cualidad importante.

Mezclar funcionalidades muy diferentes en un mismo controlador es lo que ya hace CAO1.

La idea de hacer un controlador sencillo para cada cosa yo creo que tiene ventajas en acuarios no muy grandes y para personas que empiezan. Al tener los controles por separado el mantenimiento del sistema puede hacerse por partes.

Desde un punto de vista lógico tampoco tiene mucho que ver que ver programar tareas periódicas que actuar permamentemente en función de la lectura de un sensor y el código se complicaría bastante.
#21
Si Antonio, usar bipolares, cmos, triac, etc está muy bien, para el que sabe de montajes electrónicos que se hace módulos y no los compra, pero ante user que a lo mejor enganchar un pin ya es algo serio, como que hablamos de ligas distintas.

Lo mismo aplicaría a desmontar un comedero para buscar los contractos de giro y adaptarlo a la gestión del microprocesador (no digo ya gestionar el motor), con arduino se pueden hacer maravillas pero en otro nivel. Tal vez sea una buena funcionalidad para dotar al Cao-01 tanto para comederos como para peristaticas de abonado.

El truco del binario para seleccionar el día de la semana esta muy bien pensado, pero sigo sin ver algo simple del acuario que lo necesite.

El código ha de ser sencillo pero ya se facilita "masticao", Lo fundamentalmente es que el montaje ha de ser supersencillo pocos módulos y pocos cables de interconexión. Para que el que no lo instale en su acuario sea porque no quiera y no por que no sepa o le de miedo.

PD: mejorate y dejalo para cuando la mente esté despejada.
#22
pues como os dije, cuando tengáis esto mas avanzado yo me ofrezco a comprar lo que me digais y ponerlo todo en marcha documentando mi proceso así como lo que mas me cueste o no vea claro a ver si entre todos podemos hacer que gente como yo se atreva a profundizar un poquitoBlush
#23
(12-12-2015, 12:15 AM)ArturoS escribió: Si Antonio, usar bipolares, cmos, triac, etc está muy bien, para el que sabe de montajes electrónicos que se hace módulos y no los compra, pero ante user que a lo mejor enganchar un pin ya es algo serio, como que hablamos de ligas distintas.

Lo mismo aplicaría a desmontar un comedero para buscar los contractos de giro y adaptarlo a la gestión del microprocesador (no digo ya gestionar el motor), con arduino se pueden hacer maravillas pero en otro nivel. Tal vez sea una buena funcionalidad para dotar al Cao-01 tanto para comederos como para peristaticas de abonado.

El truco del binario para seleccionar el día de la semana esta muy bien pensado, pero sigo sin ver algo simple del acuario que lo necesite.

El código ha de ser sencillo pero ya se facilita "masticao", Lo fundamentalmente es que el montaje ha de ser supersencillo pocos módulos y pocos cables de interconexión. Para que el que no lo instale en su acuario sea porque no quiera y no por que no sepa o le de miedo.

PD: mejorate y dejalo para cuando la mente esté despejada.

El problema es que son cosas fáciles de implementar, no estorban y alguien las va a pedir si no las pones. Es imposible hacer algo que guste a todo el mundo así que lo que es fácil de incluir, debería incluirse o alguien te preguntará porque no lo pusiste y lo verá como una limitación caprichosa del sistema, y tendrá razón.

El software, algunos no lo van ni a mirar siquiera. Solo mirarán ejemplos de como hacer las cosas para tocar lo menos posible y eso puede conseguirse ocultando la complicación.

Un ejemplo de esto es la librería de RTC. La quieres con algo muy complicado que es la detección del horario de verano e invierno pero la gente ni mirará la librería.

La configuración por defecto se pone para que funcione todos los días de la semana, el pulso para que funcione en HIGH y para aquel que quiera tocar y configurar algo, se deja la opción de que pueda hacerlo y sacar más partido.

Sí lo que yo sugiero fuera muy complicado de configurar podría tratarse como configuración avanzada, pero es que tampoco es el caso. Una configuración avanzada es aquella en la cual necesitas comprender lo que estás haciendo.

Basta con hacer funciones que faciliten el trabajo y poner un par de ejemplos para que todo quede clarísimo.

Las cosas que he sugerido no van a complicar la vida a nadie.

Para programar bastará hacer llamadas a un función.

CrearPulso(int Pin, int IniH, int IniM, int Ini_S, int DurH, int DurM, int Dur_S);

Si quieres que ese pin funcione normalmente no tendrás que hacer nada más y pueder programar así todos los pulsos que quieras.

Si quieres configurar el Pin para que funcione solo ciertos días de la semana o para que su estado por defecto sea el LOW habrá que definir una configuración para esa tarea (para ese pin).

ConfigurarPin(int Pin, int EstadoPorDefecto, ConjuntoDiasSemana);
#24
(12-12-2015, 02:20 AM)Aeros escribió: pues como os dije, cuando tengáis esto mas avanzado yo me ofrezco a comprar lo que me digais y ponerlo todo en marcha documentando mi proceso así como lo que mas me cueste o no vea claro a ver si entre todos podemos hacer que gente como yo se atreva a profundizar un poquitoBlush

Consideraciones sobre los pedidos:
A la hora de comprar es importante organizarse con tiempo para hacer pedidos en el mercado chino. La diferencia puede ser, en el caso de Arduino Uno, pagar 3 dólares sin gastos de envío (Puede tardar algo menos de un mes o hasta mes y medio). Es eso, o pagar 22 euros + gastos de envio en el mercado europeo.

Todos los pedidos en el mercado chino debe ser inferiores a 22 euros porque si es de 22 euros o más tendrías que pagar no solo el IVA sino los gastos de gestión de aduanas (no recuerdo creo que eran unos 15 euros) y si iguala o supera los 150 euros ademas de la gestión de aduanas y el IVA pagaras aranceles.

Suelo usar Aliexpress, tiene una oferta amplísima y los mejores precios.
Bangood lo que hace es fracionarte tus pedidos en varios envíos para evitar consecuencias desagradables en aduanas, tarda algo menos pero es algo más caro.

Si haces pedidos por valor inferior a 22 euros (yo no supero los 20 por si las moscas) obtienes cosas a muy buenos precios.
He comprado casi todo en Aliexpress (llevo 34 pedidos) siempre menos de 20 euros, porque es donde menos problemas he tenido, sus precios son muy buenos, si algo no viene como yo quiero me compensa volver a hacer otro pedido porque es muy barato y el porcentaje de pedidos satisfactorios es bastante alto. En este tipo de compras la última milla es muy importante. En Madrid llega todo bastante bien.


Si no tienes soldador:
Ignoro si tienes soldador de estaño de punta fina. El montaje definitivo quedaría mejor si eres de los que ya ha usado el soldador de punta fina.

Si no quieres soldar te puede venir bien comprar una arduino proto screw shield

Y un Arduino UNO que es el más básico y que en el mercado chino vale en Aliexpress uno 3 dolares y no te cobran gastos de envío y puede tardarte mes y medio en llegar, pero en el mercado europeo Por ejemplo en Electan 22 euros más gastos de envío.

Además de eso necesitarías un RTC DS3231 (Es muy preciso incluye un sensor de temperatura) $0.96

Observa que tiene pines machos y que no podrás pincharlo directamente en Arduino. Si no vas a soldar, necesitarías cables con terminales de pin.

Para el RTC: Una pila botón de litio de 3V CR2032 / 210 mAh
Solo necesitas una pila pero en Aliexpress puedes comprar 5 unidades por $1.41
1 hoja = 5 unids CR2032 3 V


Si vas a soldar:
Yo optará por cambiar El Arduino UNO por un Arduino Pro Micro y para hacer un prototipo necesitaría algo de este tipo

Con eso, algunos calbles y PCBs de prototipo de doble cara para soldar el Arduino y el RTC, te valdría.
#25
Vale acepto pulpo como..., digo configuración del pulso con calendario semanal.

Inicialmente se puede indicar al user que solo ponga la hora minuto de inicio y duración y en un anexo indicar las características avanzadas, que permite modificar el pin usado, el valor por defecto y los días de la semana.

Muchas funciones son mas potentes que el uso habitual que se les da, y si quieres desarrollar funciones mas complejas, mientras siga siendo fácil usarlas no me parece mala idea.

Creo que capto que quieres implementar una clase pulso, independiente del pin, lo cual permitirá asignar varios pulsos a un mismo pin, solo existe el riesgo que en una mala configuración se solape doble encendido o doble apagado
#26
(12-12-2015, 02:20 AM)Aeros escribió: pues como os dije, cuando tengáis esto mas avanzado yo me ofrezco a comprar lo que me digais y ponerlo todo en marcha documentando mi proceso así como lo que mas me cueste o no vea claro a ver si entre todos podemos hacer que gente como yo se atreva a profundizar un poquitoBlush

Tranquilo Aeros, deberías darnos un par de días para que centremos el Hard de base que deberemos utilizar, tema que apenas hemos concretado, divagando solo entre las varias posibilidades que da el mercado.

Como comenta Antonio, la diferencia de precio de pedirlo a china frente a una web española y ya no digo una tienda de embajadores es brutal (como de 2.5 a 25€). Tanto para tí, para otro que se una, o finalmente cuando se acabe el proyecto tenemos que ofrecer unos link de ejemplo (ebay, banggood, aliexpress) con los productos concretos o compatibles con los que se puede construir el sistema, ya que hay otros parecidos que pudieran no ser compatibles y la versatilidad de la oferta es inmensa.




Y por avanzar en el hard, componentes básicos

1º Placa microprocesador de la familia arduino
Esto es lo mollar, centraría en estas opciones, siempre en versiones 5v: UNO, micro, pro micro o nano. Las diferencias de precio son escasas (precios entre 2 a 5 € ), tal vez el mas potente es el pro micro, pero por contra para el uno y el nano es mas fácil encontrar escudos y tableros de conexiones (yo del micro no encuentro), para el caso que se quiera evitar soldaduras, aunque ciertamente evitarlas en todo el sistema lo veo complicado.

2º Modulo RTC por I2C ¿DS3231 o DS1307? discutamos cual es mejor o si serian indistintos.

3º Placa reles: Cumpliendo unos mínimos hay muchas hay y no veo problema concretarlo después, creo que es muy importante las que admitan alimentación independiente al pin, y el nº de reles dependerá de máximo admitido por el código y las necesidades del usuario.

4º Fuente alimentación, aquí la variedad es mucha, pero hay que decidir si de 1A o 2A, usando reles me decantaría por 2A para ir sobrado. Luego está el voltaje, como la regulación de las fuentes chinas es al menos sospechosa, tenemos que movernos entre 7.5v y 12v, aunque cuanto mas bajo menos disipación tal vez 9v sea un punto de compromiso.

Otra duda que tengo, es la alimentación de los reles, ¿se pueden alimentar desde el regulador de la placa del microprocesador sin sobrecargarlo? o necesitan una alimentación externa, y en tal caso ha de ser de 5v o admite más ya que pensando en negativo puede ser necesario o un modulo regulador de voltaje adicional si se usa la misma fuente o usar una segunda fuente de 5v para los relés (serian mas trastos pero mas sencillo de montar)

5º cables y conectores, a definir según todo lo anterior
#27
(12-12-2015, 02:50 PM)ArturoS escribió: Vale acepto pulpo como..., digo configuración del pulso con calendario semanal.

Inicialmente se puede indicar al user que solo ponga la hora minuto de inicio y duración y en un anexo indicar las características avanzadas, que permite modificar el pin usado, el valor por defecto y los días de la semana.

Muchas funciones son mas potentes que el uso habitual que se les da, y si quieres desarrollar funciones mas complejas, mientras siga siendo fácil usarlas no me parece mala idea.

Creo que capto que quieres implementar una clase pulso, independiente del pin, lo cual permitirá asignar varios pulsos a un mismo pin, solo existe el riesgo que en una mala configuración se solape doble encendido o doble apagado

Un pulso tiene que estar ligado a un pin, pero un Pin puede tener muchos pulsos.

Lo de los solapamientos solo hay que definir el comportamiento de un modo lógico y no me parece un problema. Si pones un pulso totalmente incluido dentro de otro (si su comienzo y su final caen dentro de otro) será un pulso irrelevante.

Para no complicar el código y la definición de los pulsos, la duración de un pulso sea cual sea terminará a las 24:00 y si quieres prolongarlo lo lógico es poner otro pulso a las 0:00 con la duracion deseada.

Lo ideal es explicar las cosas con ejemplos. La gente lo pilla rápido y puedes poner varios ejemplos triviales (un solo pulso en un pin), otros de dificultad media (varios pulsos en un pin) y unos pocos ejemplos más avanzados.

Si a los ejemplo los llamas avanzados, cuando el tipo consiga configurarlo, le comentará a su amigo en el bar lo que ha conseguido hacer. -nosweat.gif

Hemos creado un tema dentro del tema inicial. Voy a crear un tema para eso, se me ha ocurrido un nombre buenísimo "Programador básico de acuario con arduino" -laughbounce2.gif

Nuevo tema en Programador-básico-de-acuario-con-arduino
#28
(09-12-2015, 02:34 PM)rbaby escribió: Vale gracias por la respuesta, me leeré el link que envías, lo que más me cuesta es decidirme si arduino original (bastante caro) o algún sucedáneo chino, estuve leyendo algunas comparaciones y opiniones a favor y en contra de ambos. Me meteré a fondo en los temas de arduino del foro para leer experiencias. Saludos

Caramba repasando el hilo veo que no te hemos contestado.
Perdona ha sido un despiste.
VCualquier Arduino a 5V va a servir pero mejor uno compatible con Arduino UNO hay muchos clónicos baratos.

Seguimos en Nuevo tema en Programador-básico-de-acuario-con-arduino
#29
Hola Antonio, gracias por la respuesta. Saludos
(12-12-2015, 04:40 PM)Antonio Castro escribió:
(09-12-2015, 02:34 PM)rbaby escribió: Vale gracias por la respuesta, me leeré el link que envías, lo que más me cuesta es decidirme si arduino original (bastante caro) o algún sucedáneo chino, estuve leyendo algunas comparaciones y opiniones a favor y en contra de ambos. Me meteré a fondo en los temas de arduino del foro para leer experiencias. Saludos

Caramba repasando el hilo veo que no te hemos contestado.
Perdona ha sido un despiste.
VCualquier Arduino a 5V va a servir pero mejor uno compatible con Arduino UNO hay muchos clónicos baratos.

Seguimos en Nuevo tema en Programador-básico-de-acuario-con-arduino
#30
Volviendo al tema original de "Programar para dotar de automatismos a un acuario". Esto supone la programación combinada con hardware que sea capaz de interactuar mecánicamente y reaccionar ante estímulos exteriores.

Puse como ejemplo de hasta donde puede llegar la programación en el tema de los drones, pero a nosotros nos interesa controlar los actuarios y dotarles de ciertos automatismos que nos pueden ayudar de muchas formas.

Hay gente que usa Arduino para la cosas muy, pero que muy extrañas. Creo que el autor del vídeo que pongo a continuación intentó derrotar al juguete Simón por el medio tradicional, pero finalmente recurrió a Arduino para derrotarle. Me parece muy gracioso. Fijaros en los materiales que usó.

https://youtu.be/F3LjJITuheM -nosweat.gif

Usuarios navegando en este tema: 2 invitado(s)


Salto de foro: