Saber cuánta memoria SRAM queda libre en Arduino

Llevo toda la tarde refactorizando el código de la estación de información para ahorrar toda la memoria SRAM posible pues el Arduino se reiniciaba continuamente por no disponer de ella.

Al principio pensaba que era por usar una estructura global para guardar los datos de los sensores todos juntos y así aumentar la legibilidad del código, pero no, algo de memoria debía de estar gastando pero no era la razón del problema…

Después probé a usar los tipos de datos exactos para el dato a guardar en ellos, es decir, si quería tener una variable para iterar en un bucle no podía usar una de tipo INT, que son  4 bytes, era mejor una de tipo BYTE, que es un 1 byte… así con todas, pero nada, el Arduino seguía reiniciándose.

(más…)

Leer más

10 horas de muestras de la Estación Meteorológica

Me faltan cosas por programar, pero ya guarda todo en la SD:

Librería de Arduino Pro Mini para Eagle

Sparkfun tiene una librería con muchos de sus componentes, entre ellos los Arduino, sin embargo les faltan muchos de los pines que posee y para usarlos luego hay que ir añadiendo pines extra, una chapucería vamos.

Al pensar que crear una librería de componentes para Eagle seria complicado no me lo mire mucho, sin embargo vi este tutorial y la verdad que es bastante sencillo. Por ello cree la siguiente librería que incluye como componentes dos Arduinos Pro Mini, la primera versión con 8 pines analógicos y la segunda con 6.

 

Librería RTC para reloj Dallas DS1307 y DS3231

Después de probar bastantes de las librerías disponibles para este reloj y de que no me convenciera ninguna por su forma de funcionar, decidí programar mi propia librería basándome en el código que use en mi primer RTC.

Ahora al estar todo en una librería es mucho mas cómodo de usar que antes y tiene los métodos necesarios para poner el reloj en hora u obtener sus datos.

(más…)

Leer más

Estación meteorológica por Bluetooth con Arduino

Junto a la estación de información iba a ser necesario alguna caja que le aportara datos, porque si bien el ordenador lo puede hacer mediante noticias rss y otro tipo de datos proporcionados desde internet, también es cierto que puede resultar interesante saber la climatología de primera mano.

Para ello he ideado una caja, o estación meteorológica, que aportara todos los datos de sus diferentes sensores, en este caso la temperatura, humedad, luz y hora en tiempo real.

(más…)

Leer más

Control Remoto de Alumbrado – 8 – Con iluminación Led

La instalacion de los nuevos componentes la realice hace meses pero hasta ahora no había adaptado el código para poderle sacar provecho. Desde hoy esta publicada la versión 2 del código en Google Codes. Esta actualización no añade mejoras respecto a la anterior, si no que ofrece otro tipo de funcionalidades.

He eliminado el temporizador de apagado, tanto en el control manual como desde el mando a distancia. A cambio ahora se puede controlar además de la lampara principal, mediante un relé, un segundo tipo de iluminación compuesto por varios aros de Led que ofrecen una luz de cortesía, estos se controlan con un transistor BD135.

En un principio el código tenia pensado hacerlo en C++, pero después de varios días programando he llegado a la conclusión de que no merecía la pena ya que estaba dando más trabajo que otra cosa :/

Emular pines Serial de Arduino con la librería NewSoftSerial

En ocasiones queremos conectar varios módulos al mismo tiempo al Arduino. Esto no es problema siempre y cuando usen diferentes pines, el problema esta cuando dichos pines son capaces de soportar un protocolo de comunicación y el resto no, ejemplos de ello tenemos el puerto SPI, I2C o Serial.

En el caso del I2C tampoco hay problema pues cada dispositivo se identifica con un número que lo identifica del resto de módulos (de distinto tipo, por ejemplo un termómetro y un lcd, «no pueden» ser idénticos). Sin embargo no sucede lo mismo con el puerto SPI y Serial.

(más…)

Leer más