Acuariofilia Madrid

Versión completa: Aula Arduino para principiantes.
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Un reloj hecho con el software de CAO.

[attachment=1763]

Incluye un par de ficheros txt a modo de instrucciones.
Los módulos BlueTooth HC-05 que he recibido de Aliexpress conectan por BlueTooth, pero no se dejar configurar. Ni siquiera puedo cambiar pa password que viene por defecto. He probado un montón de sketch si resultado y lo curioso es que no tengo problema para ponerlo en modo AT para recibir comandos. He verificado que los puertos que uso con SoftwareSerial funcionan sin problemas. He probado en varias placas. Ya contacté con el vendedor que confesó no tener ni idea ni de electrónica ni de nada que no sea vender. Lo cierto es que los problemas que tengo con el mercado chino no son muchos y los precios son muy baratos. Lo peor es que algunos productos tardan en llegar más de un més.

El caso es que para estar pegándome con el BlueTooth prefiero pegarme con algo más interesante y he descubierto que existe un modulito muy barato para conectar por WiFi. Se trata del ESP8266

Servidor Web con Arduino y WIFI ESP8266

Me parece buena idea probarlo en primer lugar con Arduino Mega.
Es otro mundo totalmente nuevo por explorar para mí y tendré que esperar casi dos meses a recibirlo y empezar a jugar con él. Espero tener mas suerte que con el BT aunque para hacer pruebecitas me vale perfectamente.

Avanzo poco pero trabajo en varias cosas a la vez, así que en algún momento vendrán los resultados.

Sería estupendo controlar el acuario desde la playa. Es un objetivo a largo plazo, pero algún día llegará.
Todavía no he recibido todas las piezas, estoy canino por probar cao y por meterme a ver su código. Llevo ya la mitad del hilo leído y la verdad que es de agradecer la cantidad de temas que habéis tratado y de cosas que aprende uno. La electrónica la tenía muy olvidada y me estoy intentando poner las pilas, pero hay muchos conceptos que nunca llegué a aprender. Soy informático y la electrónica que estudié era de más alto nivel... puertas lógicas, alus, etc. Me pierdo con los usos que hacéis de los condensadores y de los diodos. Estoy pidiendo mogollón de material para ponerme a experimentar.

Y luego vendrá el código, tengo ganas de ver cómo has estructurado el software Smile
Mira Antonio, adjunto un esquema de la alimentación led que quiero hacer (pulsa sobre la imagen y la verás más grande). Utilizaré una fuente de pc, las tomas de 3.3V y 12V para alimentar 36 powerleds de 3W en 3 canales diferentes.

[Imagen: wdwspCN.gif]

He intentado hacer el esquema lo más simplificado posible agrupando los arrays de leds y poniendo una nota explicativa al lado. Echa un vistazo si puedes y mañana mismo en la quedada podemos hablar el tema en persona. Usaré 5 tips141 en total para que en la línea de 3.3V ninguno sufra un exceso de amperaje (mejor dejar los tips alrededor de 5A que solo usar 2tips y que cada uno esté entre 7 y 8A no?). Las resistencias que usaré en la línea de 12V para el voltaje sobrante serán de 2W 5% de tolerancia.

Si tienes cualquier duda o quieres hacer cualquier apunte te contesto en cuanto lo vea.

Un saludo!
Estupendo, me encantará hablar de esos temas. De todas formas aquí puedes hacer referencias a cuestiones ya tratadas poniendo el enlace al mensaje.

Respecto a tu esquema el número de amperios que ha de entregar la fuente es muy alto y yo dudo que exista una fuente con esas características. Si es una fuente de PC, las salidas de 3.3v no tendrán tanta capacidad. Deberias usar montajes en serie para 12v o para 24v.
(07-02-2015, 10:28 AM)Antonio Castro escribió: [ -> ]Estupendo, me encantará hablar de esos temas. De todas formas aquí puedes hacer referencias a cuestiones ya tratadas poniendo el enlace al mensaje.

Respecto a tu esquema el número de amperios que ha de entregar la fuente es muy alto y yo dudo que exista una fuente con esas características. Si es una fuente de PC, las salidas de 3.3v no tendrán tanta capacidad. Deberias usar montajes en serie para 12v o para 24v.

En el esquema está puesto cada salida el amperaje que da (al menos según las características de la fuente). El canal de 3.3V da 28A y el de 12V da 24A.

Pero el esquema teóricamente está correcto no? como máximo una salida pwm de arduino conmutará 3 tip141. Es capaz de hacerlo poniendo a cada tip su resistencia 2k2 entiendo, no?


Si la fuente no es capaz de alimentar tanto led a 3.3V, tengo pedidas también resistencias de 2R7 a 2W para poder montarlos en la línea de 12V. Aunque lo ideal por montaje y por eficiencia energética es ahorrarse resistencias obviamente.

Por cierto, la web china que te comenté en la quedada es http://www.banggood.com/ hay multitud de cosas de acuariofilia y de electrónica a muy buen precio y buena calidad. Los envíos son más rápidos que desde aliexpress
Respecto a tu proyecto y una vez aclarado lo de la capacidad de la fuente de alimentación, todo parece factible. Aprovechando que es un voltaje bajo puedes poner condensadores de gran capacidad. Yo pondría unos 4000 microfaradios para unos 12 voltios o algo más (siempre hay que poner un voltaje superior) porque la conmutación rápida que hace el TIP con tanto amperaje puede provocar zumbidos en la fuente de alimentación. Ya me dirás que tal cuando hagas tus pruebas. De estos temas se habló bastante en este hilo. Ignoro si ya diste con esos comentarios.

Acambiando de tema: Acabo de mirar el ESP8266 en
http://www.banggood.com/ESP8266-Remote-S...47259.html

La verdad es que yo lo he conseguido un poco más barato en Aliexpress. (2 de ellos a 5.31 $) pero si Bangood son más rápidos, puede no traer cuenta Aliexpress.

Te comento un poco más sobre lo que hablamos esta mañana en la quedada y te explico por qué creo que Python puede ir bien (sin que eso signifique descartar nada).

Creo que la principal pega que puede tener Python es la de su escasa eficiencia. Es un lenguaje interpretado (eos lo hace bastante más lento) y además no tiene la facilidad de usar arrays porque ese tipo de cosas las gestiona como si fueran listas (también eso lo hace más lento).

Implementar un servidor con Python yo creo que es bastante fácil, pero en condiciones normales no sería una buena idea, por el tema de la eficiencia. En nuestro caso el servidor no necesitaría estar atendiendo una gran cantidad de conexiones. Se trata de ofrecer una interfaz web a una sola persona para que maneje su controlador de acuario. No se va a necesitar que sea un servidor eficiente.

Las cosas que me gustan del lenguaje Python son: 1) La cantidad de estupendas librerías para absolutamente todo. 2) Que se puede hacer mucho escribiendo poco. 3) Que es un lenguaje muy legible. 4) Lo fácil que resulta depurar los errores de programación. Yo lo recomiendo como primer lenguaje de programación.

El PHP me parece que es un lenguaje feo, pero ideal para el entorno de WEB. Yo lo he usado mucho y para aplicaciones web es muy práctico. Es muy posible necesite usarlo combinado con Python.

No descarto absolutamente nada. Me tomaré mi tiempo y lo suyo es jugar primero con una serie de cosas con las cuales no he tenido ocasión de jugar hasta ahora antes de decidirme por algo.
Hola Antonio, tengo una duda con condensadores Big Grin

He conectado el arduino a un relé con aislamiento óptico. Donde arduino no alimenta de corriente al relé y solo envía un pulso de 5v positivo o negativo para cerrarlo o abrirlo. El relé está alimentado por otra fuente externa a 5V.

Actualmente lo estoy alimentando con la salida de 5V de la fuente de PC, que para el caso me viene al pelo. Pero he pedido ya una fuente conmutada ajustable de 12V para bajarle un poco la tensión y mantener todas las series de 3 leds que estoy haciendo sin la resistencia (el consumo total de las resistencias está ahora en unos 13w... me parece mucho desperdicio de energía, así que cambiaré de fuente).

Para sacar los 5V de la fuente (en estos relés la alimentación de 5V NO puede venir del propio arduino, sino de una fuente aparte) me he pedido un LM7805 para que baje de los 12 a 5V.

Y ahora después de este rollo introductorio viene la pregunta:

He visto en tus esquemas que en el montado de tu LM7809 usas dos condensadores de 500uF. Pero mirando el datasheet oficial de estos reguladores se recomienda usar un condensador de 0.33uF y otro de 0.1uF. Así que no tengo ni idea qué montar para mi LM7805... si hacerlo como tu y meter dos de 500, o seguir el datasheet original y poner los otros dos.

El consumo para alimentar el relé será realmente irrisorio.

Edito con otra duda.

El arduino lo voy a alimentar con un transformador de 9v que tengo. Por tanto la fuente de alimentación de arduino y la de los leds será diferente. Para el dimeo con el TIP141 he visto en tus esquemas que hay que interconectar las tierras de arduino y la fuente de alimentación en el emisor del TIP. Me ha surgido una duda tonta... al ser fuentes de alimentación diferentes la de arduino y la de los leds... no existirá ningún tipo de corto o problema al interconectar las tierras de ambas a través de arduino no?

Un saludo!
En el datasheet te pondrá un ejemplo de uso. Usar un condensador mayor para estabilizar la salida de una fuente de alimentación nunca puede ocasionar problema. Permite que la fuente responda mejor a picos de consumo superiores a lo normal y en un circuito que consume pulsos de gran intensidad puede venir bien e impedir que se oigan zumbidos. Puedes probar con condensadores pequeños sin problemas. No causaras ningún daño, pero si notas algún problema se podría solucionar añadiendo en paralelo un condensador mayor.

No lo llames tierra. Es la conexión de masa. Es la referencia de o voltios. El retorno de la corriente. Mientras las conexiones de dos circuitos solo compartan una conexión con masa y no compartan ninguna otra conexión, no hay problema.

Tierra y masa no son exactamente lo misto La conexión de tierra es el el tercer cable de la toma de suministro eléctrico que esta conectada en tu comunidad a una pica que está enterrada bajo el edificio. Los chasis de los electrodomésticos debe de ir conectada a este toma de tierra. la conexión de masa de un circuito debería estar aislada del chasis del aparato ya que este debería estar conectada a tierra. Dicho todo esto pregúntame a que lugar debería estar conectada el agua de acuario para impedir una derivación. Es un tema delicado ue compruebo no siempre está bien resuelto. Lo trato en mi libro. Si te interesa te corto y pego el fragmento.
(17-02-2015, 06:21 PM)Antonio Castro escribió: [ -> ]Tierra y masa no son exactamente lo misto La conexión de tierra es el el tercer cable de la toma de suministro eléctrico que esta conectada en tu comunidad a una pica que está enterrada bajo el edificio. Los chasis de los electrodomésticos debe de ir conectada a este toma de tierra. la conexión de masa de un circuito debería estar aislada del chasis del aparato ya que este debería estar conectada a tierra. Dicho todo esto pregúntame a que lugar debería estar conectada el agua de acuario para impedir una derivación. Es un tema delicado ue compruebo no siempre está bien resuelto. Lo trato en mi libro. Si te interesa te corto y pego el fragmento.

Ya ya, conozco la diferencia de tierra y masa, pero tengo la manía de llamar tierra a la masa Tongue

Entonces le pondré al LM7805 un par de condensadores mayores que los recomendados. Los que menos dificultad tenga para conseguir. Los de tipo lenteja sirven para este caso de bajo consumo no?
Para grandes capacidades suelen ser electrolíticos. Estos tienen el problema de que admiten voltajes menores y tampoco admiten polarización en sentido contrario porque se deterioran. Creo que por esa razón suelen usarse en paralelo condensadores electrolíticos de gran capacidad con condensadores cerámicos de menor capacidad que admiten voltajes mucho mayores.
(17-02-2015, 07:17 PM)Antonio Castro escribió: [ -> ]Para grandes capacidades suelen ser electrolíticos. Estos tienen el problema de que admiten voltajes menores y tampoco admiten polarización en sentido contrario porque se deterioran. Creo que por esa razón suelen usarse en paralelo condensadores electrolíticos de gran capacidad con condensadores cerámicos de menor capacidad que admiten voltajes mucho mayores.

Entonces para este tipo de condensadores en un regulador, mejor los cerámicos? el voltaje máximo será de 12V... entiendo que con condensadores electrolíticos de 25V me sobraría, no?
(17-02-2015, 07:51 PM)Agamenon escribió: [ -> ]
(17-02-2015, 07:17 PM)Antonio Castro escribió: [ -> ]Para grandes capacidades suelen ser electrolíticos. Estos tienen el problema de que admiten voltajes menores y tampoco admiten polarización en sentido contrario porque se deterioran. Creo que por esa razón suelen usarse en paralelo condensadores electrolíticos de gran capacidad con condensadores cerámicos de menor capacidad que admiten voltajes mucho mayores.

Entonces para este tipo de condensadores en un regulador, mejor los cerámicos? el voltaje máximo será de 12V... entiendo que con condensadores electrolíticos de 25V me sobraría, no?

Se pueden provocar picos de tensión en los circuitos conmutados. Si tiene de 25v los puedes usar. Si vas a comprarlos puedes comprarlos con algo más de voltaje para más seguridad. Los ingenieros no hacen estas cosas a ojo de buen cubero, pero no es nuestro caso. No suele haber problemas. Yo para 12 voltios he visto a gente usar desde 25v a unos 50v. Perdona tanta ambigüedad.
Antonio, estoy terminando de soldar los leds y estoy aprovechando en los ratos libres para leerme tu documentación de CAO1. Me han quedado claras muchas cosas del funcionamiento de tu programa, aunque aún no me he metido a mirar el código. Solo lo he cargado al arduino y he afinado todo para que funcione la pantalla, botonera, sensores y reloj. La librería que usa mi pantalla es otra, y he tenido que cambiar la forma de inicializarla y algunos comandos. Pero como eso está abstraído en un módulo ha sido muy sencillo y todo lo demás ha ido sin problemas.

Respecto al software te dejo unas sugerencias de mejora para la próxima versión. Yo seguramente las programe en la actual porque para mi son totalmente necesarias.


1. Sugerencia básica: Programación de activación/desactivación de salidas digitales por horario. Esto lo considero fundamental para usar relés. Por ejemplo el CO2 lo quiero activar 1 hora antes del fotoperiodo y cortarlo 1 hora antes del fin, actualmente no es posible y tendré que seguir con el programador analógico. Otra utilidad podría ser cortar corriente de la fuente de alimentación de los leds cuando estos no vayan a usarse... y más aparatos podrían beneficiarse de esta opción que considero básica.

2. Sugerencia más personal: definición de la duración de luz de luna. Actualmente se puede definir que en el periodo de noche estén encendidas las luces azules como luz de luna. Pues bien, a mi eso me interesa... pero no toda la noche. Quiero que se apague el fotoperíodo a su hora, pero seguir teniendo la luz azul tenue que se define para luz azul nocturna para disfrutar de los peces hasta que me acueste. Pero cuando me acueste que se apague también y no tenerla toda la noche como es la funcionalidad actual. Para ello se podría definir un nuevo parámetro de fin de luz de luna que defina el momento en que se apagará esta.

3. Para nota: encender la luz fuera del horario, y poder ajustar la intensidad de la misma. Todo el fotoperíodo podría estar controlado con una variable maestra que si está a true encienda la luz independientemente de lo que diga la función y configuración del fotoperíodo. Si esta variable está a true, use para el dimeo la el valor definido en otra variable, que puede estar definida en configuración a un valor por defecto y luego mediante la botonera aumentarse o reducirse pulsando (entre 0 y 100%). Esta funcionalidad la implementaría como una opción más en el menú del fotoperíodo: Estado de iluminación. Tendría dos modos: Auto y Manual. En auto se cumplirá la funcionalidad actual. En manual se activaría la variable global esta (o atributo privado de la clase o como se quiera implementar) y aparecería debajo del modo "Intensidad"... inicialmente en un valor preconfigurado del X% y ajustable pulsando los botones de derecha e izquierda a más y menos entre un rango del 0 y 100%.


Para mi implementando estas sugerencias se terminaría de bordar la aplicación y se cumplirían las necesidades de casi todo el mundo. Los relés podrían ser controlados mediante la medición de un parámetro por sensor (como está ahora) y también por horario. Eso cubre todo el abanico. Enciendo el CO2 porque el ph me baje de X o lo enciendo porque es la hora H. Enciendo el motor de la bomba que rellena el agua porque el sensor de la boya ha bajado de X o activo el comedero de peces porque es la hora programada. Se podría hacer todo.


Bueno me he enrollado demasiado pero quería definir claramente mis sugerencias. No se si te parecerán bien para incluirlas en la siguiente versión de CAO, igualmente creo que yo las implementaré más pronto que tarde porque algunas para mi son imprescindibles.

Un saludo!
(19-02-2015, 06:01 PM)Agamenon escribió: [ -> ]Antonio, estoy terminando de soldar los leds y estoy aprovechando en los ratos libres para leerme tu documentación de CAO1. Me han quedado claras muchas cosas del funcionamiento de tu programa, aunque aún no me he metido a mirar el código. Solo lo he cargado al arduino y he afinado todo para que funcione la pantalla, botonera, sensores y reloj. La librería que usa mi pantalla es otra, y he tenido que cambiar la forma de inicializarla y algunos comandos. Pero como eso está abstraído en un módulo ha sido muy sencillo y todo lo demás ha ido sin problemas.

Respecto al software te dejo unas sugerencias de mejora para la próxima versión. Yo seguramente las programe en la actual porque para mi son totalmente necesarias.

Precisamente la gran ventaja que ofrece CAO es para las personas que tienen esa capacidad para tocar el código. Está pesnsada para que resulte sencillo modificar una parte sin afectar al resto.

Yo te animo a compartir esta información para que la gente que desee usar el mismo hardware que tú estás usando, no se vea obligada a reinventar la rueda. Por otra parte si yo pudiera introducir cambios para contemplar ese otro modelo de pantalla en mi librería tu no te verías en la necesidad de tener que readaptar las nuevas versiones desarrolladas por mí.

(19-02-2015, 06:01 PM)Agamenon escribió: [ -> ]1. Sugerencia básica: Programación de activación/desactivación de salidas digitales por horario. Esto lo considero fundamental para usar relés. Por ejemplo el CO2 lo quiero activar 1 hora antes del fotoperiodo y cortarlo 1 hora antes del fin, actualmente no es posible y tendré que seguir con el programador analógico. Otra utilidad podría ser cortar corriente de la fuente de alimentación de los leds cuando estos no vayan a usarse... y más aparatos podrían beneficiarse de esta opción que considero básica.

En efecto era algo muy necesario y para la próxima versión ya incluyo algo de eso.

No sé si es muy importante lo de desconectar las fuentes de alimentación de potencia cuando no se usen. Es cierto que algo consumen, pero yo uso Mean Well y su consumo en standby es bajísimo. Del orden de medio vatio creo. Consulta ese dato para tu fuente si te preocupa.

(19-02-2015, 06:01 PM)Agamenon escribió: [ -> ]2. Sugerencia más personal: definición de la duración de luz de luna. Actualmente se puede definir que en el periodo de noche estén encendidas las luces azules como luz de luna. Pues bien, a mi eso me interesa... pero no toda la noche. Quiero que se apague el fotoperíodo a su hora, pero seguir teniendo la luz azul tenue que se define para luz azul nocturna para disfrutar de los peces hasta que me acueste. Pero cuando me acueste que se apague también y no tenerla toda la noche como es la funcionalidad actual. Para ello se podría definir un nuevo parámetro de fin de luz de luna que defina el momento en que se apagará esta.

Las modificaciones que he pensado hacer se asociarían a un nuevo parametro cuyo valor permite varios modos de funcionamiento del dimmer:

MOD_DIMM_AUTO=0, // Automatico gobernado por fotoperiodo (modo normal como ahora)
MOD_DIMM_OFF=1, // Luces siempre apagadas.
MOD_DIMM_NOCT=2, // Luces siempre en modo nocturno.
MOD_DIMM_DARK=3, // Luces siempre en modo poca luz
MOD_DIMM_NOON=4 // Luces siempre en modo mediodia

Las intensidades máximas de la luz diurna, crepuscular y nocturna ya se pueden modificar el la versión actual por parámetro.

Lo que se podría hacer seria añadir algunos modos más, pero todo lo relativo a trabajar con lapsos de tiempo que tengan relación con el fotoperiodo son más fáciles de imaginar que de implementar.

(19-02-2015, 06:01 PM)Agamenon escribió: [ -> ]3. Para nota: encender la luz fuera del horario, y poder ajustar la intensidad de la misma. Todo el fotoperíodo podría estar controlado con una variable maestra que si está a true encienda la luz independientemente de lo que diga la función y configuración del fotoperíodo. Si esta variable está a true, use para el dimeo la el valor definido en otra variable, que puede estar definida en configuración a un valor por defecto y luego mediante la botonera aumentarse o reducirse pulsando (entre 0 y 100%). Esta funcionalidad la implementaría como una opción más en el menú del fotoperíodo: Estado de iluminación. Tendría dos modos: Auto y Manual. En auto se cumplirá la funcionalidad actual. En manual se activaría la variable global esta (o atributo privado de la clase o como se quiera implementar) y aparecería debajo del modo "Intensidad"... inicialmente en un valor preconfigurado del X% y ajustable pulsando los botones de derecha e izquierda a más y menos entre un rango del 0 y 100%.

Creo que con lo que he comentado para los modos del dimmer ya podría valer.

(19-02-2015, 06:01 PM)Agamenon escribió: [ -> ]Para mi implementando estas sugerencias se terminaría de bordar la aplicación y se cumplirían las necesidades de casi todo el mundo. Los relés podrían ser controlados mediante la medición de un parámetro por sensor (como está ahora) y también por horario. Eso cubre todo el abanico. Enciendo el CO2 porque el ph me baje de X o lo enciendo porque es la hora H. Enciendo el motor de la bomba que rellena el agua porque el sensor de la boya ha bajado de X o activo el comedero de peces porque es la hora programada. Se podría hacer todo.

Bueno me he enrollado demasiado pero quería definir claramente mis sugerencias. No se si te parecerán bien para incluirlas en la siguiente versión de CAO, igualmente creo que yo las implementaré más pronto que tarde porque algunas para mi son imprescindibles.

Un saludo!

Tal y como lo tengo pensado para la próxima version, se podría por ejemplo cortar la acción del filtro y de los aireadores unos segundos antes del suministro de comida y no volver a conectar el filtro hasta cinco minutos después dando tiempo a que los peces consuman todo y evitando que la comida termine en lugares indeseables de dificil acceso para los peces por efecto del movimiento del agua.

Yo agradezco mucho este tipo de interactividad porque me ayuda a mejorar la aplicación.

Dudo mucho que exista un final para las mejoras que puedan hacerse. Yo tenía la idea de que las necesidades podían variar mucho de unos usuarios a otros pero me quedé corto imaginando el tipo de cosas diferentes que la gente desea hacer.

Gracias por compartir tus ideas.

Te comento lo que estoy mirando últimamente:
Últimamente he estado mirando un cacharrito muy baratito que permite conexión WiFi. se trata del ESP8266. Parece que lo han pensado para que sea muy fácil de usar ocultando el el procesador interno todos los detalles de la gestión del TCP. En la práctica se puede implementar un pseudo-servidor-web con muchas limitaciones sobre un servicio web clásico. Yo no veo la forma de poder hacer conexiones autenticadas para proteger el acceso a ese pseudo-servidor-web, pero es tan barato que creoi que podría interesar a mucha gente.