
integration with sensors
Dependencies: JPEGCamera MODGPS RHT03 mbed
main.cpp
- Committer:
- aldih
- Date:
- 2013-09-16
- Revision:
- 0:a93721ad3c1a
File content as of revision 0:a93721ad3c1a:
#include "mbed.h" #include "JPEGCamera.h" #include "RHT03.h" #include "GPS.h" DigitalOut myled1(LED1); //show successful picture was taken DigitalOut myled2(LED2); //show end of sequence DigitalOut myled3(LED3); //show picture take failed DigitalOut myled4(LED4); //show camera is not ready Serial pc(USBTX, USBRX); // tx, rx /*Xbee Start*/ Serial XBee(p13, p14); GPS gps(NC,p27); // SET THIS. // Create an instance of the GPS object. You will need to // your GPS module to. char rmc[GPS_BUFFER_LEN]; char gga[GPS_BUFFER_LEN]; char vtg[GPS_BUFFER_LEN]; char ukn[GPS_BUFFER_LEN]; // 0.1 second flash of LED2 DigitalOut led2(LED2); Timeout t2; int j=0;// camera variable void t2out(void) { led2 = 0; } void blip2(void) { led2 = 1; t2.attach(&t2out, 0.1); } // 0.1 second flash of LED3 DigitalOut led3(LED3); Timeout t3; void t3out(void) { led3 = 0; } void blip3(void) { led3 = 1; t3.attach(&t3out, 0.1); } // 0.1 second flash of LED4 DigitalOut led4(LED4); Timeout t4; void t4out(void) { led4 = 0; } void blip4(void) { led4 = 1; t4.attach(&t4out, 0.1); } ///////////////////////////////////////////////////////////// void gps_call(void); void temp_hum(void); void cam_call(void); GPS_Time q1; JPEGCamera camera(p9, p10); // TX, RX int main() { //////////////////////////////////////////////////////////////////// // SET THIS. // Ensure you set the baud rate to match your serial // communications to your PC/Max/Linux host so you // can read the messages. pc.printf("setting the PC baud rate \n"); pc.baud(9600); // Tell MODGPS "we want copies of the NMEA sentences". When a callback // is made our buffers will contain a copy of the last received sentence // before it was processed/destroyed. gps.setRmc(rmc); gps.setGga(gga); gps.setVtg(vtg); gps.setUkn(ukn); // SET THIS. // Most GPS modules use 9600,8,n,1 so that's what // we default to here. Ensure your GPS module matches // this, otherwise set it to match. pc.printf("setting the GPS baud rate \n"); gps.baud(9600); gps.format(8, GPS::None, 1); // OPTIONAL // If you GPS has a 1 pulse per second output you can // connect it to an Mbed pin. Here you specify what pin // and on what "edge" teh signal is active. If your GPS // module has a rising edge at the one second point then // use GPS::ppsRise #ifdef PPSPIN gps.ppsAttach(PPSPIN, GPS::ppsFall); #endif // Sample of a callback to a function when the 1PPS activates. // For this example, we flash LED2 for 0.1 second. gps.attach_pps(&blip2); // Sample of a callback to a function when a NMEA GGA message is recieved. // For this example, we flash LED2 for 0.1 second. gps.attach_gga(&blip3); // Sample of a callback to a function when a NMEA RMC message is recieved. // For this example, we flash LED2 for 0.1 second. gps.attach_rmc(&blip4); // Camera Code pc.printf("Loading camera module \n"); LocalFileSystem local("local"); //save images on mbed camera.setPictureSize(JPEGCamera::SIZE320x240); pc.printf("getting ready for the while loop! \n"); //////////////////////////////////////////////////////////////////// int i; for(i=1;i<11;i++) {//gps gps_call(); if(i==1||i==5||i==10) {//temp&hum temp_hum(); } if(i%2==0) {//camera cam_call(); } } } void gps_call(void) { // GPS Code pc.printf("Turning inside the loop() \n"); // Every 3 seconds, flip LED1 and print the basic GPS info. pc.printf("hello GPS \n"); myled1 = 1; // Demonstrate how to find out the GPS location co-ords. pc.printf("Method 1. Lat = %.4f ", gps.latitude()); XBee.printf("Method 1. Lat = %.4f ", gps.latitude()); pc.printf("Lon = %.4f ", gps.longitude()); XBee.printf("Lon = %.4f ", gps.longitude()); pc.printf("Alt = %.4f ", gps.altitude()); XBee.printf("Alt = %.4f ", gps.altitude()); // Gran a snapshot of the current time. gps.timeNow(&q1); pc.printf("%02d:%02d:%02d %02d/%02d/%04d\r\n", q1.hour, q1.minute, q1.second, q1.day, q1.month, q1.year); XBee.printf("%02d:%02d:%02d %02d/%02d/%04d\r\n", q1.hour, q1.minute, q1.second, q1.day, q1.month, q1.year); } void temp_hum(void) { //Temperature Sensor Code pc.printf("hello TEMP"); int done=0; float temp,hum; RHT03 humtemp(p24); //Initalise the RHT03 (change pin number to the pin its connected to) while(!done) { //Loop keeps running until RHT03 is read succesfully wait(2); //Needed to make sure the sensor has time to initalise and so its not polled too quickly if(humtemp.readData() == RHT_ERROR_NONE) done=1; //Request data from the RHT03 } temp = humtemp.getTemperatureC(); //Gets the current temperature in centigrade hum = humtemp.getHumidity(); //Gets the current humidity in percentage pc.printf("Temperature is %f C \r",temp); XBee.printf("Temperature is %f C \r\n",temp); pc.printf("Humidity is %f % \r\n",hum); XBee.printf("Humidity is %f % \r\n",hum); ///////////////////////////////////////////////// } void cam_call(void) { //camera Code j++; Timer timer; pc.printf("starting timer..."); timer.start(); pc.printf("hello CAMERA"); if (camera.isReady()) { char filename[32]; sprintf(filename, "/local/pict%03d.jpg", j); printf("Picture: %s ", filename); if (camera.takePicture(filename)) { while (camera.isProcessing()) { camera.processPicture(); } myled1 = 1; //show successful picture was taken myled1 = 0; } else { printf("take picture failed "); myled3 = 1; //show picture take failed myled3 = 0; } } else { printf("camera is not ready "); myled4 = 1; //show camera is not ready myled4 = 0; } myled2 = 1; //show end of sequence myled2 = 0; printf("time = %f\n", timer.read()); //////////////////////////////////////////////////// //Xbee Code pc.printf("i'm Sending......."); ///////////////////////////////////////////// }