How to use the GPS, DS18B20, analog input and SDCARD

Dependencies:   DS1820 SDFileSystem mbed RHT03

Fork of frdm_serial by Freescale

Committer:
fgmpinheiro
Date:
Mon Feb 29 14:42:03 2016 +0000
Revision:
9:27360d48afcd
Parent:
8:164088fcf57b
Estacao meteorologica fgmp

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emilmont 0:f59179afee57 1 #include "mbed.h"
fgmpinheiro 8:164088fcf57b 2 #include "SDFileSystem.h"
fgmpinheiro 8:164088fcf57b 3 #include "DS1820.h"
fgmpinheiro 9:27360d48afcd 4 #include "RHT03.h" //Include neede to use the RHT03 lib
fgmpinheiro 8:164088fcf57b 5 /*******************************************************************************************/
emilmont 0:f59179afee57 6 DigitalOut myled(LED_GREEN);
Kojto 4:d6816f97e349 7 Serial pc(USBTX, USBRX);
fgmpinheiro 8:164088fcf57b 8 Serial gps(PTC17, PTC16);
fgmpinheiro 9:27360d48afcd 9 AnalogIn ps(PTB10);//(A2);
fgmpinheiro 9:27360d48afcd 10 AnalogIn qc(PTB11);//(A2);
fgmpinheiro 9:27360d48afcd 11
fgmpinheiro 8:164088fcf57b 12 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // MOSI, MISO, SCK, CS
fgmpinheiro 8:164088fcf57b 13 DS1820 ds1820(PTB3); // substitute PA_9 with actual mbed pin name connected to the DS1820 data pin
fgmpinheiro 8:164088fcf57b 14 /*******************************************************************************************/
fgmpinheiro 8:164088fcf57b 15 FILE *fp;
fgmpinheiro 8:164088fcf57b 16 char gps_data[255];
fgmpinheiro 8:164088fcf57b 17 /*******************************************************************************************/
emilmont 0:f59179afee57 18
sam_grove 7:986d5298b118 19 int main()
sam_grove 7:986d5298b118 20 {
fgmpinheiro 8:164088fcf57b 21 int i,rlock,stn;
fgmpinheiro 8:164088fcf57b 22 char gps_data[256],str1[25],str2[25];
fgmpinheiro 8:164088fcf57b 23 char ns,ew,aval,modi,mv,mi;
fgmpinheiro 8:164088fcf57b 24 float utctime,hokui,tokei;
fgmpinheiro 8:164088fcf57b 25 float g_hokui,g_tokei;
fgmpinheiro 8:164088fcf57b 26 float d_hokui,m_hokui,d_tokei,m_tokei;
fgmpinheiro 8:164088fcf57b 27 int h_time,m_time,s_time,d_date,m_date,a_date;
fgmpinheiro 8:164088fcf57b 28 float speed,course,utcdate,magvar;
fgmpinheiro 8:164088fcf57b 29 int j;
fgmpinheiro 9:27360d48afcd 30 float v1,v2,temp;
fgmpinheiro 9:27360d48afcd 31 int done=0;
fgmpinheiro 9:27360d48afcd 32 float temp2,hum;
fgmpinheiro 9:27360d48afcd 33 RHT03 humtemp(PTB2); //Initalise the RHT03 (change pin number to the pin its connected to)
fgmpinheiro 8:164088fcf57b 34
fgmpinheiro 8:164088fcf57b 35 wait(2);
fgmpinheiro 8:164088fcf57b 36 pc.baud(115200);
fgmpinheiro 8:164088fcf57b 37 gps.baud(9600);
fgmpinheiro 8:164088fcf57b 38 pc.printf("\nHello World! I am ALPINHA 4\n");
fgmpinheiro 8:164088fcf57b 39 mkdir("/sd/test1", 0777);
fgmpinheiro 9:27360d48afcd 40 fp = fopen("/sd/GPS.txt", "w");
fgmpinheiro 8:164088fcf57b 41 if (fp == NULL)
fgmpinheiro 8:164088fcf57b 42 { // that it was created.
fgmpinheiro 8:164088fcf57b 43 pc.printf("\nnao possivel abrir o arquivo\n");; // Return error.
fgmpinheiro 8:164088fcf57b 44 } else
fgmpinheiro 8:164088fcf57b 45 {
fgmpinheiro 8:164088fcf57b 46 pc.printf("\n arquivo aberto para escrita\n");; // Return error.
fgmpinheiro 8:164088fcf57b 47 }
fgmpinheiro 8:164088fcf57b 48 fprintf(fp, "1.txt in test 1");
fgmpinheiro 8:164088fcf57b 49 fclose(fp);
fgmpinheiro 8:164088fcf57b 50 ds1820.begin();
fgmpinheiro 8:164088fcf57b 51 ds1820.setResolution(12);
fgmpinheiro 9:27360d48afcd 52 ds1820.startConversion();
fgmpinheiro 8:164088fcf57b 53 wait(1.0); // let DS1820 complete the temperature conversion
fgmpinheiro 8:164088fcf57b 54 pc.printf("temp = %3.3f\r\n", ds1820.read()); // read temperatura
fgmpinheiro 8:164088fcf57b 55 while (1)
fgmpinheiro 9:27360d48afcd 56 {
fgmpinheiro 9:27360d48afcd 57 if(humtemp.readData() == RHT_ERROR_NONE) done=1; //Request data from the RHT03
fgmpinheiro 9:27360d48afcd 58 temp2 = humtemp.getTemperatureC(); //Gets the current temperature in centigrade
fgmpinheiro 9:27360d48afcd 59 hum = humtemp.getHumidity(); //Gets the current humidity in percentage
fgmpinheiro 8:164088fcf57b 60 i=0;
fgmpinheiro 8:164088fcf57b 61 while(gps.getc()!='$');
fgmpinheiro 8:164088fcf57b 62 while( (gps_data[i]=gps.getc()) != '\r') i++;
fgmpinheiro 8:164088fcf57b 63 gps_data[i]='\0';
fgmpinheiro 8:164088fcf57b 64 aval='\0';
fgmpinheiro 9:27360d48afcd 65 v1=0.0;v2=0;
fgmpinheiro 9:27360d48afcd 66 for (j=0;j<20;j=j+1)
fgmpinheiro 9:27360d48afcd 67 {
fgmpinheiro 9:27360d48afcd 68 v1 =v1+ps*3300;//.read();
fgmpinheiro 9:27360d48afcd 69 v2 =v2+qc*3300;//.read();
fgmpinheiro 9:27360d48afcd 70 }
fgmpinheiro 9:27360d48afcd 71 v1=v1/20.0;v2=v2/20.0;
fgmpinheiro 8:164088fcf57b 72 if((gps_data[2]=='R')&(gps_data[3]=='M')&(gps_data[4]=='C'))
fgmpinheiro 8:164088fcf57b 73 {
fgmpinheiro 8:164088fcf57b 74 temp=ds1820.read();
fgmpinheiro 8:164088fcf57b 75 ds1820.startConversion();
fgmpinheiro 9:27360d48afcd 76 for(j=0;j<i-1;j++) if(gps_data[j]==',') gps_data[j]=' ';
fgmpinheiro 9:27360d48afcd 77 sscanf(gps_data,"%s %f %c %f %c %f %c %f %f %f %s", str1,&utctime,&aval,&hokui,&ns,&tokei,&ew,&speed,&course,&utcdate,str2);
fgmpinheiro 8:164088fcf57b 78 //if(aval=='A')
fgmpinheiro 8:164088fcf57b 79 {
fgmpinheiro 8:164088fcf57b 80 //latitude
fgmpinheiro 8:164088fcf57b 81 d_hokui = int(hokui/100);
fgmpinheiro 8:164088fcf57b 82 m_hokui = (hokui - d_hokui*100)/60;
fgmpinheiro 8:164088fcf57b 83 g_hokui = d_hokui + m_hokui;
fgmpinheiro 8:164088fcf57b 84 //longitude
fgmpinheiro 8:164088fcf57b 85 d_tokei = int(tokei/100);
fgmpinheiro 8:164088fcf57b 86 m_tokei = (tokei - d_tokei*100)/60;
fgmpinheiro 8:164088fcf57b 87 g_tokei=d_tokei + m_tokei;
fgmpinheiro 8:164088fcf57b 88
fgmpinheiro 8:164088fcf57b 89 //time set
fgmpinheiro 8:164088fcf57b 90 h_time = int(utctime/10000);
fgmpinheiro 8:164088fcf57b 91 m_time = int((utctime - h_time*10000)/100);
fgmpinheiro 8:164088fcf57b 92 s_time = int(utctime - h_time*10000 - m_time*100);
fgmpinheiro 8:164088fcf57b 93
fgmpinheiro 8:164088fcf57b 94 //date set
fgmpinheiro 8:164088fcf57b 95 d_date = int(utcdate/10000);
fgmpinheiro 8:164088fcf57b 96 m_date = int((utcdate - d_date*10000)/100);
fgmpinheiro 8:164088fcf57b 97 a_date = int(utcdate - d_date*10000 - m_date*100);
fgmpinheiro 8:164088fcf57b 98
fgmpinheiro 9:27360d48afcd 99 pc.printf("%02d/%02d/%02d %02d:%02d:%02d %c %4.6f %4.6f %4.6f %3.3f %3.3f %3.3f --->%f %f\n",d_date,m_date,a_date,h_time,m_time,s_time,aval,g_hokui,g_tokei,speed,temp,temp2,hum,v1,v2);
fgmpinheiro 8:164088fcf57b 100 fp = fopen("/sd/alpinha2.txt", "a");
fgmpinheiro 8:164088fcf57b 101 if (fp == NULL)
fgmpinheiro 8:164088fcf57b 102 { // that it was created.
fgmpinheiro 9:27360d48afcd 103 pc.printf("\nnao possivel abrir o arquivo\n"); // Return error.
fgmpinheiro 9:27360d48afcd 104 } else
fgmpinheiro 9:27360d48afcd 105 fprintf(fp,"%2d/%2d/%2d %2d:%2d:%2d %c %4.6f %4.6f %4.6f %3.3f %3.3f %3.3f %3.3f %3.3f\r\n",d_date,m_date,a_date,h_time,m_time,s_time,aval,g_hokui,g_tokei,speed,temp,temp2,hum,v1,v2);
fgmpinheiro 8:164088fcf57b 106 fclose(fp);
fgmpinheiro 8:164088fcf57b 107 }
fgmpinheiro 8:164088fcf57b 108
emilmont 0:f59179afee57 109 }
emilmont 0:f59179afee57 110 }
fgmpinheiro 8:164088fcf57b 111 }
fgmpinheiro 8:164088fcf57b 112
fgmpinheiro 8:164088fcf57b 113
fgmpinheiro 8:164088fcf57b 114
fgmpinheiro 8:164088fcf57b 115
fgmpinheiro 8:164088fcf57b 116
fgmpinheiro 8:164088fcf57b 117
fgmpinheiro 8:164088fcf57b 118