How to use the GPS, DS18B20, analog input and SDCARD
Dependencies: DS1820 SDFileSystem mbed RHT03
Fork of frdm_serial by
main.cpp@9:27360d48afcd, 2016-02-29 (annotated)
- 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?
User | Revision | Line number | New 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 |