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.
Intentaré recuperarla, pero ya he ido pidiendo otra por si acaso
Da mucha rabia que la gente venda sondas de esa forma. -dwarf.gif -diablo2.gif -frustrated.gif
Por desgracia no hay forma de fabricarse una. Si eres capa de arreglarla ya nos contarás. Suerte.
Hola Antonio, en primer lugar me presento, pues es mi primer post, aunque llevo tiempo leyendo, mi nombre es Francisco y soy de Murcia, aunque vivo en Suiza por motivos de trabajo.
Tengo un problema al cargar el CAO en mi placa Arduino, el error que me da es este:


Arduino:1.6.5 (Mac OS X), Placa:"Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

In file included from Cao1_Lcd20x4.h:16:0,
from Cao1_Lcd20x4.cpp:24:
/Users/imac27/Documents/Arduino/libraries/new-lcd/LiquidCrystal_I2C.h: In member function 'void Cao1_Lcd20x4::Ini()':
/Users/imac27/Documents/Arduino/libraries/new-lcd/LiquidCrystal_I2C.h:154:9: error: 'int LiquidCrystal_I2C::init()' is private
int init();
^
Cao1_Lcd20x4.cpp:65: error: within this context
lcd_i2c.init();
^
Multiple libraries were found for "OneWire.h"
Used: /Users/imac27/Documents/Arduino/libraries/OneWire
Not used: /Users/imac27/Desktop/Arduino.app/Contents/Java/libraries/OneWire
Multiple libraries were found for "LiquidCrystal_I2C.h"
Used: /Users/imac27/Documents/Arduino/libraries/new-lcd
Not used: /Users/imac27/Desktop/Arduino.app/Contents/Java/libraries/new-lcd
within this context

Podrias ayudarme con esto porfabor?. me interesa mucho tu proyecto.
Gracias de antemano y te sigo de cerca.
Saludos.
(01-11-2015, 12:30 PM)Consstyle escribió: [ -> ]Hola Antonio, en primer lugar me presento, pues es mi primer post, aunque llevo tiempo leyendo, mi nombre es Francisco y soy de Murcia, aunque vivo en Suiza por motivos de trabajo.
Tengo un problema al cargar el CAO en mi placa Arduino, el error que me da es este:


Arduino:1.6.5 (Mac OS X), Placa:"Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

In file included from Cao1_Lcd20x4.h:16:0,
from Cao1_Lcd20x4.cpp:24:
/Users/imac27/Documents/Arduino/libraries/new-lcd/LiquidCrystal_I2C.h: In member function 'void Cao1_Lcd20x4::Ini()':
/Users/imac27/Documents/Arduino/libraries/new-lcd/LiquidCrystal_I2C.h:154:9: error: 'int LiquidCrystal_I2C::init()' is private
int init();
^
Cao1_Lcd20x4.cpp:65: error: within this context
lcd_i2c.init();
^
Multiple libraries were found for "OneWire.h"
Used: /Users/imac27/Documents/Arduino/libraries/OneWire
Not used: /Users/imac27/Desktop/Arduino.app/Contents/Java/libraries/OneWire
Multiple libraries were found for "LiquidCrystal_I2C.h"
Used: /Users/imac27/Documents/Arduino/libraries/new-lcd
Not used: /Users/imac27/Desktop/Arduino.app/Contents/Java/libraries/new-lcd
within this context

Podrias ayudarme con esto porfabor?. me interesa mucho tu proyecto.
Gracias de antemano y te sigo de cerca.
Saludos.

Asegúrate de que estás usando la última versión CAO_1.2.1
http://acuariofiliamadrid.org/attachment.php?aid=2315

En el fichero LeameCAO_1.2.1 viene una "Aclaración sobre el uso de la librería LiquidCrystal".

Podría darse el caso de que estés usando una librería inadecuada o incompatible con las librerías que usamos nosotros. Creo que el compilador muestra una serie de avisos, pero el error decisivo parece ser que en la llamada a la función "lcd_i2c.init()" que ocurre dentro de mi módulo 'Cao1_Lcd20x4.cpp'.
El error dice que esa función init() no se puede usar desde fuera de la librería LiquidCrystal por ser una función privada. Si eso fuera cierto a mí también me daría error, por lo tanto, estás usando una librería diferente y en ella la función init fue declarada como privada.

Hay dos soluciones: O cambias la librería, o cambias la declaración de la función haciéndola pública.

Empieza intentado usar la misma librería que nosotros, y luego ya veremos.
Era la libreria.
Muchas gracias Antonio.
(01-11-2015, 06:00 PM)Consstyle escribió: [ -> ]Era la libreria.
Muchas gracias Antonio.

-good.gif
No hay duda de cual es el principal obstáculo para cualquier persona que quiera adentrarse en el apasionante mundo de Arduino.

El lenguaje de programación del Arduino es una variante del lenguaje C++. Este es uno de los mejores lenguajes para llevar la programación a su más alto nivel, es decir, para programar a un nivel de ingeniería del software.

Esto tiene unas pocas ventajas para un principiante pero también muchos inconvenientes.

La ventaja es que facilita la reutilización del software y gracias a ello el entorno de programación de Arduino ya incluye un montón de librerías estupendas, listas para ser utilizadas.

Cada hardware utilizable en el entorno Arduino dispone de una serie de librerías que facilitan su uso extraordinariamente.

La dificultad es que la enorme potencia de C++ y los avanzados conceptos que maneja, hacen de él un vasto mundo de programación que cuesta bastante tiempo llegar a dominar completamente.

Hacer cositas sencillitas no es muy complicado, pero dominar completamente las herramientas que ofrece este lenguaje, exige bastante estudio y dedicación.

Por todo ello, me ha parecido muy buena la idea de que en Genbeta dedicaran todo un artículo al C++ titulado Estas son las mejores webs y canales de YouTube para aprender C++ desde cero hasta nivel experto

Tratándose de Genbeta, no me cabe duda de los video tutoriales son de una gran calidad y es cuestión de seguir aquel canal que se adapte mejor a tus necesidades , ya sea para empezar a aprender programación o para perfeccionar tu actual nivel de programación.

No debéis dejaros intimidar por la complejidad de algunos programas que se publiquen aquí porque hay muchas formas de conseguir un mismo objetivo y para ilustrar esto mismo tenemos el ejemplo muy bueno. E de la refrigeración de un acuario.

Pese a que la refrigeración de acuarios es un tema aparentemente sencillo, o quizás debido a eso, los antecedentes de la refrigeración de acuarios en el proyecto CAO, nos han dejado una secuencia de versiones que dan testimonio de la propia evolución de todo el proyecto CAO.

Todos los refrigeradores CAO usan como sensor de temperatura el DS18B20 del cual ya se habló en CAO1. Basicamente un refrigerador de acuario consiste en conectar un ventilador a partir de cierta temperatura así que es perfectamente posible hacer algo muy sencillo.

Cao_RefrigV1
[Imagen: hv55ya.jpg]
Esta fue la primera versión. No es parametrizable, no tiene un modulo genérico de sensores, no tiene parte de comunicaciones. Los ajustes de funcionamiento han de hacerse en el código. Consta de un único módulo con 289 líneas de código (y podía haberse hecho incluso con menos). Se usó un Arduino Uno.

RefrigParmV2.1
[Imagen: 2i89nqs.jpg]
Esta nueva versión es parametrizable. Se hizo como preparación a la siguiente versión. Se publicó como versión provisional porque con el verano en ciernes quise ofrecer algo aunque fuera temporal. Yo mismo lo necesité para dejar mi gambario refrigerado en verano. Una diferencia interesante con la versión anterior de solo 289 líneas de código, es que el control de la temperatura no activa y desactiva un ruidoso ventilador, sino que gradualmente a plica más o menos potencia hasta lograr la temperatura deseada. También incluye una indicación con LEDs de colores rojo verde y azul, que indica un valor aproximado de la temperatura para aquellos que no de seen usar un LCD de 16x2.
“RefrigParmV2.1” tiene 10 módulos de software además de su módulo principal. Con un total de 2867 líneas de código . Se usó un Arduino Pro Mini.

CaoBT_Refrig_Mini_V1
[Imagen: wuOhNLL.jpg]
Esta versión incluye un diseño de PCB de nuestro compañero Ruben
[Imagen: fasltu.jpg]
Usa Arduino Pro Mini y tiene una parte de código para Android. La parte de Arduino tiene 3515 líneas de código y la parte de Android no usa líneas de código porque está realizada con App Inventor que es un lenguaje visual pero también lleva bastante trabajo.
Se ha implementado entre otras cosas un protocolo de comunicaciones propio. La comunicación usa Bluetooth y se hace con un modulito HC-05.
Las líneas de código no son en vano. Gracias a que podemos usar un terminal Android como interfaz, podemos, si así lo deseamos, prescindir de botonera y LCD resultando con ello un modelo barato, más muy pequeño y con diferencia el más potente.

Conclusión:
Si bien un hardware económico como este puede hacer mucho usando un software potente, también se pueden hacer cosas muy interesantes con muy pocas líneas de código.

Os animo a programar cosillas para Arduino.
-nosweat.gif Buenos días a todos espero que me podáis echar una mano, ante todo presentarme me llamo Luis Miguel, tengo 35 años y aunque soy madrileño de nacimiento llevo viviendo en cantabria casi ya 18 años, siempre desde pequeño en casa a habido acuarios ya fueran míos o de mi padre.
He tenido desmontado durante casi 4 años un acuario de 470 litros y hará 4 meses lo e vuelto a montar usa dos pantallas de aluminio de dos tubos T8 de 36w cada uno pero por los años que tienen una de ellas sea roto y no se puede acceder a la reactancia para sustituirla y la otra no le queda mucho, e visto en youtube el vídeo de vuestro compañero Antonio castro y investigando e dado con vuestra pagina.
Quería saber si me podeis hechar una mano o si antonio se puede poner en contacto con migo porque su proyecto de CAO1 me a parecido muy interesante y ya que la pantalla a realizar no es pequeña me gustaría incorporarle algunos sensores como PH, temperatura del agua y de la pantalla con activación de ventiladores para regular la temperatura, nivel del agua del acuario y auto llenado, ciclo de la iluminación amanecer, anochecer y luz de luna.
Ya sé que no es un proyecto pequeño pero es que la pantalla seria de 1455 mm de largo por 495 mm de ancho y la altura del acuario es de 655 mm de alto.
Muchas gracias y haber si me podéis echar una mano, un cordial saludo.
Me parece perfecto Luis Miguel. Puedo guiarte en lo que necesites hasta donde yo sepa.

Para empezar, yo te recomiendo no meter todo en una caja como hice yo.
Yo incluso metí el controlador dentro de la pantalla de iluminación, pero te informo que, si bien es posible hacerlo, no res muy práctico. Hay mejores formas de hacerlo.

Te comento como veo yo ahora la distribucion ideal para los diferentes módulos hardware.

Controlador CAO1
Recomiendo que el controlador CAO1 esté en un lugar accesible ya que necesitas manejar una botonera de 5 botones y un display LCD de 20x4. También incluirá un reloj de tiempo real y un disco piezo eléctrico como zumbador.

Dimmer
Recomiendo separar la etapa de potencia de la iluminación (dimmer) en una caja aparte.

Sensores de Temperatura del agua, pH, Redox, Conductímetro,
Se pueden integrar en CAO1, pero lo ideal sería independizarlos en un módulo de sensores con sus actuadores (reles, dimmers, etc.)
La medición de potencial Redox y condictimetría son temas en estudio pero si se hace este módulo se puede dejar preparado para estas posibles ampliaciones.

REGRIGERADOR DE ACUARIO
Puedes integrarlo en CAO1 o independizarlo y controlarlo con un terminal Android comunicando por Blue Tooth

CONTROLADOR DE NIVEL DE AGUA Y DE CAMBIOS PARCIALES
Puedes integrarlo en CAO1. Existe un proyecto en marcha para independizarlo y controlarlo con un terminal Android comunicando por Blue Tooth.

RELEs
Puede que quieras programar la activación diaria de ciertas salidas programables.
Dependiendo de la cantidad de salidas que tengas previsto integrar en CAO1 tendrán que salir bastantes cables de esa caja y si la etapa de potencia con RELES la tienes independizadas puedes usar un solo cable blindado con muchos hilos finos para llevar las señales que necesites desde el controlador a la etapa de potencia con relés.

Consideraciones a tener en cuenta:
Actualmente, estoy trabajando en una línea de proyectos con una filosofía diferente. En lugar de hacer un controlador que lo controle todo, he visto que poder hacer varios más pequeños, tiene sus ventajas.

Si usas para esto un Arduino Mega2560 para CAO1, que es lo suyo, seguramente podrás controlar todo lo demás, pero tal como te indico tienes la opción de separar algunas funciones en controladores pequeños basado en Arduino Pro Mini o Arduino Pro Micro.

Tener controlado todo con un mismo sistema significa tener que dejar todo sin control cada vez que necesites hacer algo de mantenimiento en el controlador CAO1. También te permitirá ir desarrollando y probando los distintos sistemas por partes con mayor facilidad. Los fallos serán más fáciles de localizar. Te pongo un ejemplo. Una sonda de temperatura mal sellada te puede provocar la entrada de interferencias tan fuertes en el sistema que te puede resetear el sistema. Tener el hardware separado ayuda a localizar los fallos y solucionarlos.

El interfaz de usuario de CAO1 basado en LCD de 20x4 y una botonera de 5 botones, es mucho más limitado que lo que te ofrece un Interfaz Android (table o SmartPhone). Un Interfaz Android tiene capacidades gráficas y podría servirte para el registro periódico de parámetros del acuario para registrar su evolución, etc. También es más cómodo.
Hola buenos días

Mi nombre es Edgar y soy de México y pues me gusta la acuariofilia y un tanto la electronica, entonces decidí hacer algo programable, así que un día investigando por internet me encontre con que ya existía CAO1 y decidí echarle un vistazo, lo cual me sorprendio porque era el reflejo de mi idea, pero claro estaba que la ingeneria del software estaba yo en ceros.

Así que hace unos meses me compre el libro de Don Antonio para darme una idea más amplia de CAO1, pedí mis cosas y todo por internet, ya mañana me llegan! Al ver que utiliza Arduino, me descargue el software y puse el codigo en el programa, seleccione el tipo de tarjeta sobre la que programare y lo compile y me marco error de compilación.

Tengo muchas dudas Sad y he estado leyendo esta sección del foro y veo que muchos han avanzado pero no localizo yo mi error. No sé, si es por las librerias, tal vez no las coloque en la carpeta adecuada o debo colocarlas en qué orden.

Undecided
(02-12-2015, 08:38 PM)edzvlogs escribió: [ -> ]Hola buenos días

Mi nombre es Edgar y soy de México y pues me gusta la acuariofilia y un tanto la electronica, entonces decidí hacer algo programable, así que un día investigando por internet me encontre con que ya existía CAO1 y decidí echarle un vistazo, lo cual me sorprendio porque era el reflejo de mi idea, pero claro estaba que la ingeneria del software estaba yo en ceros.

Así que hace unos meses me compre el libro de Don Antonio para darme una idea más amplia de CAO1, pedí mis cosas y todo por internet, ya mañana me llegan! Al ver que utiliza Arduino, me descargue el software y puse el codigo en el programa, seleccione el tipo de tarjeta sobre la que programare y lo compile y me marco error de compilación.

Tengo muchas dudas Sad y he estado leyendo esta sección del foro y veo que muchos han avanzado pero no localizo yo mi error. No sé, si es por las librerias, tal vez no las coloque en la carpeta adecuada o debo colocarlas en qué orden.

Undecided
Confirma que tienes el Arduino Mega 2560, que instalaste el IDE de arduino en tu ordenador y que lo configuraste para tu tarjeta, etc.

Dime que versión del software descargaste. Yo te recomiendo que uses la versión CAO_1.2.1
http://acuariofiliamadrid.org/attachment.php?aid=2315

Siguiendo las instrucciones de instalación no deberías tener mucho problema seguramente olvidaste algo.

Pon los mensajes de error que te proporciona el compilador y te orientaré para que puedas continuar. En especial son importantes los primeros mensajes de error.
(03-12-2015, 10:32 AM)Antonio Castro escribió: [ -> ]
(02-12-2015, 08:38 PM)edzvlogs escribió: [ -> ]Hola buenos días

Mi nombre es Edgar y soy de México y pues me gusta la acuariofilia y un tanto la electronica, entonces decidí hacer algo programable, así que un día investigando por internet me encontre con que ya existía CAO1 y decidí echarle un vistazo, lo cual me sorprendio porque era el reflejo de mi idea, pero claro estaba que la ingeneria del software estaba yo en ceros.

Así que hace unos meses me compre el libro de Don Antonio para darme una idea más amplia de CAO1, pedí mis cosas y todo por internet, ya mañana me llegan! Al ver que utiliza Arduino, me descargue el software y puse el codigo en el programa, seleccione el tipo de tarjeta sobre la que programare y lo compile y me marco error de compilación.

Tengo muchas dudas Sad y he estado leyendo esta sección del foro y veo que muchos han avanzado pero no localizo yo mi error. No sé, si es por las librerias, tal vez no las coloque en la carpeta adecuada o debo colocarlas en qué orden.

Undecided
Confirma que tienes el Arduino Mega 2560, que instalaste el IDE de arduino en tu ordenador y que lo configuraste para tu tarjeta, etc.

Dime que versión del software descargaste. Yo te recomiendo que uses la versión CAO_1.2.1
http://acuariofiliamadrid.org/attachment.php?aid=2315

Siguiendo las instrucciones de instalación no deberías tener mucho problema seguramente olvidaste algo.

Pon los mensajes de error que te proporciona el compilador y te orientaré para que puedas continuar. En especial son importantes los primeros mensajes de error.


gracias por su respuesta Don Antonio, así segui los pasos y me dice error de LCD entre otros
mire, este es el error que me señala

Arduino:1.6.3 (Windows 7), Placa:"Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"

In file included from Cao1_Botonera5Puls.cpp:12:0:

Cao1_Lcd20x4.h:16:31: fatal error: LiquidCrystal_I2C.h: No such file or directory

#include <LiquidCrystal_I2C.h>

^

compilation terminated.

Error de compilación

This report would have more information with
"Show verbose output during compilation"
activala desde Archivo > Preferencias



no entiendo porque no aparece o no encuentra la libreria del LCD
El error es porque no tienes instaladas las librerías de LCD por bus I2C.

Baja el siguiente fichero

Y en el IDE de arduino ejecuta "Programa > Include Library > add Zip Library...", y selecciona el zip descargado.

Por cierto Antonio, veo que FMalpartida a actualizado la Lib a 24/10/15
(05-12-2015, 11:09 AM)ArturoS escribió: [ -> ]El error es porque no tienes instaladas las librerías de LCD por bus I2C.

Baja el siguiente fichero


Y en el IDE de arduino ejecuta "Programa > Include Library > add Zip Library...", y selecciona el zip descargado.

Por cierto Antonio, veo que FMalpartida a actualizado la Lib a 24/10/15

A edzvlogs le digo que el problema es claro y confirmo lo que dice Arturo.
En las instrucciones también se incluye información sobre la necesidad de incluir estas librerías y algún comentario de como hacerlo, pero hay varias formas de instalar librerías. Yo creo que lo más sencillo es hacerlo como acaba de indicar Arturo, pero se puede hacer manualmente y dependiendo de como se haga, cuando actualices la versión de tu IDE, puede que necesites reinstalarlas o no.

Acabo de mirarlo y tienes razón, parece que es muy reciente. Quizás sean algo más rápidas, no lo sé. No me aclara mucho el README. La velocidad no es crítica para esta aplicación.