lunes, 23 de abril de 2012

Working with Arduino Boards

Today I am spending to program Arduino Boards.

Arduino Boards are very versatile and easy to program. The board
I programing is Libelium, Libelium is a company specializing in sensor networks. The company also providing boards has a wide range of accessories, in this case I work with gas sensors.

I made a file of modular programming in which with few configuration strings I can enable or disable features.

The development in question allows the variables collected from the sensors and setting them in a string compatible with csv format and sends by radio frequency up to 12 km and writ to a local text file (MicroSD card) to ensure not lose any data.


void setup()
                {
                PWR.ifHibernate();
                key_access_in_EEPROM();
                configurar_xbee868();
                RTC.ON();
                activar_sensores();
                SD.ON();
 
                [...] 
 
                crear_fichero();
                }

void loop()
                {
                Utils.blinkLEDs(3000);
                if( intFlag & HIB_INT )
                        {
                        hibInterrupt();
                        }
                PWR.hibernate("00:00:00:10",RTC_OFFSET,RTC_ALM1_MODE2);
                }
 
 
[...]
 
void generar_paquete_motas()
                {
                [...]
                //generación de todas las variables 
                [...]
                sprintf(aux2," MOTA2: %s, -mac: %s%s, -bat: %d, -temp: %s, 
                            -ozone: %s, -polution: %s \n", RTC.getTime(), 
                             macHigh, macLow, PWR.getBatteryLevel(), tabla, 
                             tabla2, tabla3);          
                data=aux2;
                enviar_paquete();
                }
 
[...] 

void hibInterrupt()
                {
                  generar_paquete_motas();
                  escribir_linea_fichero();
                  Utils.blinkLEDs(1000);
                  Utils.blinkLEDs(1000);
                  intFlag &= ~(HIB_INT);
                  } 


As seen, the Loop and Setup functions only call functions that can run or not, based on the configuration you need.

This gives us great versatility and ease way of configuration.

No hay comentarios:

Publicar un comentario