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: 8083
#1
Es evidente que la acuariofilia es multidisciplinar pero cuando hablamos de programar nuestros propios sistemas de control, entramos en un nivel de complejidad técnica que puede superar las capacidades de muchos aficionados sin una preparación técnica especializada. ¿Entonces por qué molestarse? realmente merece la pena?

No hay muchos aficionados a la acuariofilia, por ello la ley de la oferta y la demanda no nos beneficia. Los que nos complicamos la vida con ciertos temas no hacemos estas cosas solo porque nos guste el brico, la electrónica y la programación.

De hecho, todo ello suponen una dedicación bastante importante, pero a nivel de comunidad de aficionados a la acuariofilia necesitamos alcanzar ciertas cotas de autosuficiencia para lograr equipos que nos permitan hacer aquellas cosas que el mercado no ofrece o lo hace a un precio muy alto o con insuficiente calidad.

Lo bueno que tiene la programación, es que hecho el esfuerzo una vez, un gran número de gente se puede beneficiar de ella, y se puede convertir un hardware relativamente sencillo en un sistema con capacidades sorprendentes.

Lo que me gusta de Arduino es que es un sistema con posibilidades de dotar de esa inteligencia a cualquier equipo.

Últimamente tengo en la cabeza hacer un sistema de cambios parciales de agua más o menos automatizado y finalmente he usado un acelerómetro como indicador de nivel de acuario. Este es uno de los sensores claves en construcción de drones (y de tablets, etc.) y casualmente hay un vídeo que ilustra de forma brillante lo que puede hacer un hardware sencillito gracias al trabajo de unos programadores que están al más alto nivel.

El hardware son: cuatro motores, varios sensores, un procesador, una batería, una carcasa y no hay mucho más.

El software, hace uso de algoritmos matemáticos nada triviales y es lo que hace del cacharo algo espectacular. A poco que os gusten estos temas técnicos el vídeo os va a encantar.

Raffaello D'Andrea: Raffaello D'Andrea: La asombrosa potencia atlética de los cuadricópteros.
#2
El tema arduino siempre me ha llamado mucho la atención, pero como ya he dicho en otras ocasiones los temas de electronica y programación me superan y yo soy de los que si no que me lo monto yo mismo prefiero no montarlo.
Y ya no es por pura economía; (que también) si no por que disfruto haciéndolo yo mismo.
De todas formas reitero mi agradecimiento por el interés que te tomas por que todos podamos intentar entrar en el mundo arduino.
(quien sabe)Dodgy
#3
(08-12-2015, 01:28 PM)pedmar escribió: El tema arduino siempre me ha llamado mucho la atención, pero como ya he dicho en otras ocasiones los temas de electronica y programación me superan y yo soy de los que si no que me lo monto yo mismo prefiero no montarlo.
Y ya no es por pura economía; (que también) si no por que disfruto haciéndolo yo mismo.
De todas formas reitero mi agradecimiento por el interés que te tomas por que todos podamos intentar entrar en el mundo arduino.
(quien sabe)Dodgy

El problema en el caso de Arduino es que usa C++ por razones de eficiencia. Es un lenguaje poco apropiado para empezar a programar. El lenguaje que considero más interesante para aprender a programar es el lenguaje Python, porque su aprendizaje se va rentabilizando muy rápidamente, es muy intuitivo, minimiza la escritura de código haciéndolo muy compacto pero es muy legible, no trabaja con punteros sino con listas, hay librerías muy potentes, tienen un sistema de depuración que es una maravilla.

Para Raspberry Pi hay cosas interesantes en Python como esta.

TUTORIAL RASPBERRY PI – USO DE PICAMERA CON PYTHON
https://geekytheory.com/tutorial-raspber...on-python/

Ya veo que eres un autodidacta todo terreno y que te las apañas de maravilla, pero ya sabes que mi objetivo es sentar una base que software y un diseño hardware que sea la base para que cada cual haga con ello lo que quiera sin demasiados conocimientos técnicos. Por el momento, continua siendo un sistema algo complicado que requiere de conocimientos técnicos, pero yo espero que cada vez resulte más accesible a un mayor número de personas que no quieren gastar su tiempo aprendiendo electrónica y programación para luego hacer un cacharrito para el acuario.

Los gurús de la electrónica y de la programación se las apañan solitos, a mí me interesa ayudar al que más lo necesita y en la acuariofilia existe un campo amplísimo para hacer cosas.

Ya he visto que en el campo de la producción audiovisual también estás haciendo cosillas chulas, felicidades.

Resumiendo, cada cual elije sus batallas y tú en lo tuyo eres un crack. Para cualquier cosa que necesites ya sabes donde me tienes. Big Grin
#4
Hola Antonio, primero que nada gracias por el video, este tema de arduino me interesa mucho, de hecho hace un tiempo ya compré un libro en Amazon para montar un controlador de acuario (creo que tú eres el autor Smile ) Lo que me ha costado es encontrar el kit inicial, ¿alguna recomendación con buena relación calidad precio? Por lo demás he estado siguiendo por este foro el tema de arduino y parece fascinante el potencial que tiene. Saludos
#5
Antonio, yo creo que para los users del foro, legos en programación, y asperos en bricos eléctricos/electrónicos necesitarían y agradecerían se les preparara un diseño ultra-básico orientado casi en exclusiva a un programador horario de la iluminación.

Es bastante habitual al ver los "sotanos" de sus acuarios ver instalados unos cuantos "tochos programadores de 220v"

Cuando me refiero a ultra-básico me refiero a un sistema reducido al microprocesador, el modulo RTC, y un modulo de reles. Sin ni siquiera LCD o botonera, parametrizandose en el encabezado del código los horarios de encendido y apagado de cada relé. De tal forma que el user modifique el valor de las constantes en el texto del sketch lo compile y cargue con el ide y a funcionar (y sin tener que saber que es un bucle o una variable).

Esto daría soporte a iluminaciones de fluorescentes y bombillas de cualquier tipo permitiendo, si dispone de varias lamparas hacer una cierta atenuación o incluso tener programada una luz de noche o una válvula solenoide para los casos de CO2

Partiendo del ultra ya se podrían, para el que se quiera complicar más, ampliar a disponer de dimelado, sonda temperatura con alarma o LCD informativo,...

Se podía basar en los arduino uno, nano o micro, pero huiría del mini para simplificar que ya tengan conector USB.

Y a un costo irrisorio, es decir que, a precio bandgood, estamos hablando de menos de 15€ (Fuente 3€ + UNO 4€+ RTC 2€ + 4Reles 4€ + cables dupond 1.5€)
#6
(09-12-2015, 12:21 PM)rbaby escribió: Hola Antonio, primero que nada gracias por el video, este tema de arduino me interesa mucho, de hecho hace un tiempo ya compré un libro en Amazon para montar un controlador de acuario (creo que tú eres el autor Smile ) Lo que me ha costado es encontrar el kit inicial, ¿alguna recomendación con buena relación calidad precio? Por lo demás he estado siguiendo por este foro el tema de arduino y parece fascinante el potencial que tiene. Saludos

Posiblemente lo mejor sea prepararse uno mismo el kit y me doy cuenta de que en mi libro no se trata ese tema que me parece muy pertinente.

Las posibilidades de Arduino son tan amplias que hacer un kit básico completito es imposible porque lo de completito sería un problema definirlo. Todo depende de la orientación que tengas. La oferta de kits para Arduina es amplísima.

Necesitas elegir una placa. Para hacer pruebas básicas vale practicamente cualquiera.

También me parece muy interesante comprar una breadboard y cablecillos flexibles, algo de herramienta y una serie de componentes electrónicos.

En la siguiente dirección han intentado hacer una
Guía Con El Mejor Material Para Empezar Con Arduino

El resultado es algo tan amplio que realmente no será de ayuda para los que empiezan.

Este tema es muy interesante pero no es trivial de resumir. Lo puedo intentar orientándolo a CAO1 pero podría salirme otro tocho.
#7
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
#8
(09-12-2015, 01:26 PM)ArturoS escribió: Antonio, yo creo que para los users del foro, legos en programación, y asperos en bricos eléctricos/electrónicos necesitarían y agradecerían se les preparara un diseño ultra-básico orientado casi en exclusiva a un programador horario de la iluminación.

Es bastante habitual al ver los "sotanos" de sus acuarios ver instalados unos cuantos "tochos programadores de 220v"

Cuando me refiero a ultra-básico me refiero a un sistema reducido al microprocesador, el modulo RTC, y un modulo de reles. Sin ni siquiera LCD o botonera, parametrizandose en el encabezado del código los horarios de encendido y apagado de cada relé. De tal forma que el user modifique el valor de las constantes en el texto del sketch lo compile y cargue con el ide y a funcionar (y sin tener que saber que es un bucle o una variable).

Esto daría soporte a iluminaciones de fluorescentes y bombillas de cualquier tipo permitiendo, si dispone de varias lamparas hacer una cierta atenuación o incluso tener programada una luz de noche o una válvula solenoide para los casos de CO2

Partiendo del ultra ya se podrían, para el que se quiera complicar más, ampliar a disponer de dimelado, sonda temperatura con alarma o LCD informativo,...

Se podía basar en los arduino uno, nano o micro, pero huiría del mini para simplificar que ya tengan conector USB.

Y a un costo irrisorio, es decir que, a precio bandgood, estamos hablando de menos de 15€ (Fuente 3€ + UNO 4€+ RTC 2€ + 4Reles 4€ + cables dupond 1.5€)

La idea de CaoBT es en parte es esa, solo que el código de CaoBT sería mucho más complejo de lo que sugieres tú, porque contempla otras posibilidades, pero nada impide usarlo como tu dices. Bastaría con no ponerle el módulo BlueTooth y si también quieres ahorrarte ese código para meter otras cosa también lo puedes hacer. Basta con poner la velocidad del puerto serie a cero y esa parte del código no se incluirá.

Código:
#if BAUDIOS_SS > 0    
    #include <SoftwareSerial.h>        //
    #include "CaoRefr_SSerial.h"
#endif

La ampliación sería ponerle el modulito HC-05 y descargarse una App en el movil para no tener que recompilar cada vez que quieres cambiar algo o monitorizar el sistema.

En un controlador con RTC, lo que va a desear todo el mundo es poder poner en hora el RTC, y eso suele necesitar algún tipo de interfaz. La solución para evitarlo sería compilar el programa y cargarlo inmediatamente haciendo que tome inicialmente la hora y fecha en el instante en que se compiló el programa, pero siempre quedaría un pequeño desfase por lo que tarda en cargar el programa pero serían segundos. Podría hacerse.

Si no te gusta Arduino Pro Mini por no traer USB te recomiendo usar un clónico barato de Arduino Pro Micro a 5V/16MHz. En AliExpress.com los tienes por 3 Euros.
La disposición de patillas es físicamente idénticas pero funcionalmente solo hay cierta similitud y no son totalmente compatibles entre sí.

El uso de estos Arduinos Pro Mini y Pro Micro en una Bread Board es muy cómodo. Ya habéis visto como queda en el vídeo del acelerómetro.

Adelanto que Ruben y yo aún no hemos probado algo que estamos diseñando (bueno el diseño en EAGLE lo hace todo él). Se trata de una PCB de doble cara que admitiría tanto Arduino Pro Mini 5V como Arduino Pro Micro 5V. No controladores son compatibles, pero cambiando de posición algunos puentes en la PCB y programando un software que detecte la placa Arduino que está usando, se debería poder usar cualquiera de las dos. Arduino Pro Micro tiene un poco más de SRAM que Pro Mini.

Estoy muy enfocado en el diseño de cosas muy baratitas.

PD:
Respecto al Arduino Pro Min, es cierto que tendrías que comprar un adaptador USB-FTDI para poderlo usar pero no es tanto el problema, yo estoy encantado con los Arduino Pro Mini y te aseguro que me resulta igual de cómodo que usar el Pro Micro que trae USB y que apenas los uso porque. El adaptador lo dejo puesto en el cable.
#9
Antonio, ya conozco las bondades del CaoBT, que no me has entendido la idea.

Algo tan simple, para que no asuste ni al mas negado de los usuarios, como comprar tres piezas, seguir las instrucciones para cablear 7/8 cables y enchufar a la fuente.

Dotar al personal de un mini procesador con mínimas prestaciones sin que tenga que saber nada de lo que es programación.


Y que es unos segundos que se pierdan con la hora del compilado si los programadores mecánicos eléctricos tienen pestañas de 15 min
#10
(09-12-2015, 07:56 PM)ArturoS escribió: Antonio, ya conozco las bondades del CaoBT, que no me has entendido la idea.

Algo tan simple, para que no asuste ni al mas negado de los usuarios, como comprar tres piezas, seguir las instrucciones para cablear 7/8 cables y enchufar a la fuente.

Dotar al personal de un mini procesador con mínimas prestaciones sin que tenga que saber nada de lo que es programación.

Y que es unos segundos que se pierdan con la hora del compilado si los programadores mecánicos eléctricos tienen pestañas de 15 min

Quieres prescindir de guardar nada en la EEPROM y hacer algo muy simple (y muy poco flexible). Tienes razón en que puede que esto sirva para que alguien se atreva con ello y una vez que lo tenga funcionando quizás desee algo más.

Para un temporizardor simple habría que hacer uso de las funciones más simples que ofrecen los RTC y limitarse a programaciones diarias de 24 horas y a programaciones semanales. Te quitas un montón de temas complicados relativos a la gestión de fechas con días del mes, años bisiestos, horarios de verano/invierno, etc.

Una vez que se tiene una idea clara de todo lo que se quiere hacer (diseño funcional), el resto no será demasiado complicado.

Acepto el reto. Vamos a definirlo juntos. Lo podemos llamar Programador eléctrico fácil con Arduino

Para que funcione bien tras un corte eléctrico será imprescindible usar un RTC.

¿Has pensado como hacer para poner en hora ese Programador?
1) Usar un interfaz de botones
2) Tomar la hora y fecha desde la última compilación.

PD:
Estamos de acuerdo en que entrar directamente en uno de los proyectos CAO1 o CaoBT puede intimidar a los novatos y eso es un gran problema. No son programas triviales.

También reconozco que no existe un proyecto específico dedicado especialmente a los más novatos. El Aula Arduino trataba de eso, pero hemos ido avanzando y los que quieran entrar ahora lo mismo se intimidan y dan un paso atrás.

Podría ser interesante abrir un nuevo tema que retome la idea inicial de servir de apoyo a los más novatos y que tenga un enfoque práctico para los que desean dar los primeros pasos. En tal caso necesitaría saber si existe gente dispuesta a colaborar porque ya tengo mucha carga de trabajo.

Hay muchas labores y diferentes formas de aportar un granito de arena a un proyecto así y no siempre se necesita tener conocimientos técnicos para ayudar, ademas, el echo de participar puede ser la forma de dar un primer paso y enchufarse a un tema interesante.
#11
Esa es mas o menos la idea, un brico sencillo, y lo defino como brico no como proyecto arduino porque creo que su orientacion debe ser un kit o diy "Prêt-à-porter", para que alguien con mínimos conocimientos de soldar un cable con estaño, sin que tenga que saber de nada de lenguajes de programación, se pueda hacer, con un arduino y un par de módulos, un programador para el acuario. Y editando el .ino como vulgar txt modificar los datos de parametrización y punto.

No hay porque complicarlo con una botonera, ya que eso implica menús lo cual implica un LCD, y que haya que almacenar los parámetros modificados en eeprom. Si se quiere modificar lo programado, hay que modificar las constantes del sketch, recompilar y subir, ¿que es un incordio? Sí pero es el precio a pagar por la simplicidad. Tampoco se está cambiando el fotoperiodo al acuario todos los días.


Para lo cual hay que:

- Definir los requerimientos y funcionalidades previo al diseño funcional

- Desarrollar un sketch simple incluyendo las libs, que no vienen por defecto en el ide, en la misma carpeta del proyecto, evitando complicar la instalación del ide y que cada usuario pille una versión distinta de la lib.

- Documentar instrucciones de que lineas puede modificar, y como, para parametrizar su acuario.

- Definir que módulos adquirir (con ejemplos de links) y documentar las conexiones realizar (en consonancia con el sketch y sin opción a cambios del pin).

- Realizar pruebas, contar con la participación de un user lego en la materia para que detecte "suponidos", redactar la documentación y publicar la misma y el soft soporte.


Si tiene éxito la idea y los user demandan más, en una fase dos o versión plus se podía estudiar, sobre el mismo fundamento un prototipo ampliado con más funciones como control de temperatura, activado de ventiladores, dimelado simple o lo que los user demanden. Pero sería la última etapa "Prêt-à-porter", para que el user después de aquí ya entre en adaptar el código y el montaje a sus necesidades particulares con Cao-01 o su propio diseño


En cuanto al nombre yo me inclino mas por "Programador básico de acuario con arduino", ya se que es en principio no es mas que un programador eléctrico pero orientado a su uso en acuarios ya que esto es un foro de acuarios (si otro lo usa para la luz del jardín es su decisión)


Pasos a dar:

1º Crear un post de diseño para centrar la idea donde concretar funcionalidades y hard necesario (Tu tienes el honor)
2º Obtener, si falta, el hard necesario. Conectar y cargar las primeras versiones del sketch y corrección de errores
3º Con montaje y soft concluido, redactar el tutorial de montaje del brico
4º Realizar un montaje prueba completo por persona sin conocimientos previos siguiendo el tutorial, mejorar lo que se detecte
5º Publicar post del brico (para no liar con el cocinao) y soporte a dudas.


Para iniciar las pruebas y documentar yo me ofrezco (aunque con el tiempo estoy como todos) pero luego creo que nos hace falta un voluntario, aunque creo con varios users briqueando pantallas no será difícil que alguno se una a montar y probar el programador y luego ya si le coge el gusto puede saltar al arduino serio.
#12
yo me ofrezco de conejillo, me gusta la informática y tengo algo de idea de c++, aunque mas allá de programación orientada a objetos no llego, ademas me encantaría enterarme cuando hablais-notworthy.gif-nosweat.gif
#13
(11-12-2015, 02:31 AM)ArturoS escribió: Esa es mas o menos la idea, un brico sencillo, y lo defino como brico no como proyecto arduino porque creo que su orientacion debe ser un kit o diy "Prêt-à-porter", para que alguien con mínimos conocimientos de soldar un cable con estaño, sin que tenga que saber de nada de lenguajes de programación, se pueda hacer, con un arduino y un par de módulos, un programador para el acuario. Y editando el .ino como vulgar txt modificar los datos de parametrización y punto.

[...]

Pero tienes que mojarte, te hice una pregunta sobre como ponemos en hora el RTC y mi intención es ir haciéndote algunas preguntas más como si tu fueras un cliente y yo te fuera a realizar algo a medida porque el problema con los diseños sencillos que uno puede tener en la cabeza algo muy sencillo pero luego a medida que vas refinando el diseño te vas tropezando con una serie de detallitos tontos que tienes que resolver y que van complicando tu idea inicial.

Arturo, tengo muy en mente que quieres algo muy sencillo. En realidad, un software complejo no tiene porque ser complicado de usar, así que supongo que la sencillez la quieres reservar principalmente para la parte de instalación y montaje. Dentro de lo que cabe intentaré no hacer cosas muy raras para que los que empiezan con C++ se animen a usarlo, pero en eso habrá que llegar a soluciones de compromiso y tú vas a hacer la labor crítica de mis propuestas de diseño y por eso te pregunto.

Si yo hiciera algo como a mí me gusta, podría resultarte innecesariamente complicado si no has participado de las decisiones de diseño, así que quiero que participes diciendo que cosas consideras superfluas y cuales no.

Dime como pondrías tú en hora el RTC. Si pones una hora fija en el código siempre arrancará con esa hora. Si le dices que tome la fecha y hora de compilación, cada vez que se valla la lúz tendrás que compilar y recargar el programa.
Otra solución es hacer dos programas. 1) Un programa que ponga en hora el RTC y 2) otro cargue el programa de control y no haga ajuste de la hora del RTC.
La otra solución es una botonera que es la que a mí me parece más sencilla y es la que usan los programadores digitales comerciales.

(11-12-2015, 03:02 AM)Aeros escribió: yo me ofrezco de conejillo, me gusta la informática y tengo algo de idea de c++, aunque mas allá de programación orientada a objetos no llego, ademas me encantaría enterarme cuando hablais-notworthy.gif-nosweat.gif

Eso está muy bien.
Comentamé que componentes tienes.
¿Tienes ya algún Arduino? ¿Tienes alguna breadboard?
Lo de programación orientada a objeto no es tan complicado pero en plan autodidacta los comienzos pueden ser duros. Para los primeros pasos adelantarás más si tienes a alguien que te ayude y para eso estoy yo.
#14
Que va no tengo nada, la verdad es que cuando lo miré me pareció complicado, puro código y sin interfaz... uff, así que como tengo un calentador y las luces decidí no complicarme la vida, pero si os puedo ayudar en algo y encima aprendo... pues con gusto me ofrezco y si no importa tener a un novato mas...[emoji106]
#15
Vale Antonio, es que con tanto texto alguna cosa se pasa

De cliente a proveedor:

La hora del RTC, en principio con que coja el de compilación " RTC.adjust(DateTime(__DATE__, __TIME__)); " sería mas simple y suficiente para que mas o menos ajuste el pequeño error del reloj, que el user se preocupe del tener buena hora en el PC para que la hora sea correcta.

Como hacerlo, para que si se va la luz no lo vuelva a hacer y siga con la salvaguardada gracias a la batería en macros pondría "#PONERLAHORA 0" para que no la cambie. Y el RTC.adjust(DateTime(__DATE__, __TIME__)); se sitúa dentro de un bucle if de PONERLAHORA.
Se le indica, al user, en las instrucciones de montaje que cambie a "#PONERLAHORA 1" compile y suba el programa para que el RTC almacene la hora correcta, y que vuelva a dejar "#PONERLAHORA 0" en la carga definitiva del programa, para que ya no se modifique.
También se podía hacer como dices en un programa de configuración inicial independiente, que por ejemplo incluya también verificar la direccion I2C de la RTC (por serial console), no vaya a haber módulos que la tengan cambiada, o incluso un chequeo del módulo, no vaya a ser que lo conecten mal.

En el apartado RTC si sería interesante disponer del cambio de horario de verano automático, para no obligar al user a recompilar o que se le quede desplazado el fotoperiodo una hora.

En la lib DS1307new algo he leido sobre isMEZSummerTime, pero no he mirado como se habría que usar. O si no, usar una función aproximada que haga el cambio al cambiar el mes: usar un flag para horario de invierno y si es cierto y el mes está entre 4 y 10 cambiar la hora y el flag, y el inverso; el error será que no cambiará la hora durante un máximo de 7 días, pero nos ahorramos todo cálculo de cual es el ultimo domingo del mes y controlar que den las 2 a.m.

Estas totalmente en lo cierto respecto a que la complejidad del código no afecta en nada a la simplicidad del montaje, pero si se usa un código sencillo esto puede facilitar que los user que lo deseen empiecen a mojarse en el código arduino.

Mi insistencia con no poner botonera, es la simplicidad, ya que eso al menos implica una botonera (hecha o modulo comprado) y un lcd, más cosas a conectar y a mecanizar la caja. Pero no te digo que no, que a futuro podamos evolucionar a una versión avanzada con ello, pero eso el tiempo lo dirá y mejor es complicarlo paso a paso.



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?

Usuarios navegando en este tema: 3 invitado(s)


Salto de foro: