Project-D Weather Station To measure temperature and pressure

Dependencies:   BMP180 N5110 mbed

Committer:
afreshmeat
Date:
Thu May 07 15:51:42 2015 +0000
Revision:
0:d147c974627d
The first version of my project

Who changed what in which revision?

UserRevisionLine numberNew contents of line
afreshmeat 0:d147c974627d 1 /**
afreshmeat 0:d147c974627d 2 @Header file name.h
afreshmeat 0:d147c974627d 3 @Project-D Weather Station
afreshmeat 0:d147c974627d 4 @file main.cpp
afreshmeat 0:d147c974627d 5 @author Li XingYu
afreshmeat 0:d147c974627d 6 @date May 2015
afreshmeat 0:d147c974627d 7 */
afreshmeat 0:d147c974627d 8
afreshmeat 0:d147c974627d 9 #include "mbed.h"
afreshmeat 0:d147c974627d 10 #include "N5110.h"
afreshmeat 0:d147c974627d 11 #include "BMP180.h"
afreshmeat 0:d147c974627d 12
afreshmeat 0:d147c974627d 13 /**
afreshmeat 0:d147c974627d 14 @namespace lcd,bmp180,serial
afreshmeat 0:d147c974627d 15 @brief serial connects to micro-controller
afreshmeat 0:d147c974627d 16 @brief
afreshmeat 0:d147c974627d 17 */
afreshmeat 0:d147c974627d 18
afreshmeat 0:d147c974627d 19 //The pins of N5110, BMP180 which are connected to micro-controller
afreshmeat 0:d147c974627d 20 N5110 lcd(p7,p8,p9,p10,p11,p13,p22);
afreshmeat 0:d147c974627d 21 BMP180 bmp180(p28,p27);
afreshmeat 0:d147c974627d 22 Serial serial(USBTX,USBRX);// The tool which sets the date
afreshmeat 0:d147c974627d 23
afreshmeat 0:d147c974627d 24 /**
afreshmeat 0:d147c974627d 25 add up one integer variable
afreshmeat 0:d147c974627d 26 @param setTimerFlag - integer to add
afreshmeat 0:d147c974627d 27 creat two functions
afreshmeat 0:d147c974627d 28 @param serialISR - function to add
afreshmeat 0:d147c974627d 29 @param setTime - function to add
afreshmeat 0:d147c974627d 30 */
afreshmeat 0:d147c974627d 31 void serialISR();// ISR that is called when serial data is received
afreshmeat 0:d147c974627d 32 void setTime();// function to set the UNIX time
afreshmeat 0:d147c974627d 33 int setTimerFlag = 0;// flag for ISR
afreshmeat 0:d147c974627d 34
afreshmeat 0:d147c974627d 35 char rxString[16];// buffer to store received string
afreshmeat 0:d147c974627d 36
afreshmeat 0:d147c974627d 37
afreshmeat 0:d147c974627d 38 /**
afreshmeat 0:d147c974627d 39 @Boot Screen
afreshmeat 0:d147c974627d 40 Sset Brightness
afreshmeat 0:d147c974627d 41 @Set date
afreshmeat 0:d147c974627d 42 @Connect LCD and sensor to micro-controller
afreshmeat 0:d147c974627d 43 @Display temperature and pressure
afreshmeat 0:d147c974627d 44 */
afreshmeat 0:d147c974627d 45
afreshmeat 0:d147c974627d 46 int main()
afreshmeat 0:d147c974627d 47 {
afreshmeat 0:d147c974627d 48
afreshmeat 0:d147c974627d 49 lcd.init();
afreshmeat 0:d147c974627d 50 //Boot Screen
afreshmeat 0:d147c974627d 51 lcd.printString("Project-D",2,1);//First line and coordinate
afreshmeat 0:d147c974627d 52 lcd.printString("Weather",2,2);//Second line and coordinate
afreshmeat 0:d147c974627d 53 lcd.printString("station",2,3);//Third line and coordinate
afreshmeat 0:d147c974627d 54 wait(2.0);//Wait 2 secs and turn into next interface
afreshmeat 0:d147c974627d 55 lcd.clear();//Clear
afreshmeat 0:d147c974627d 56 lcd.setBrightness(0.1);//Screen Brightness
afreshmeat 0:d147c974627d 57 bmp180.init();
afreshmeat 0:d147c974627d 58 Measurement measurement;
afreshmeat 0:d147c974627d 59 //RTC
afreshmeat 0:d147c974627d 60 serial.attach(&serialISR);//Set the time
afreshmeat 0:d147c974627d 61 char t[30];//array to t
afreshmeat 0:d147c974627d 62 while(1) {
afreshmeat 0:d147c974627d 63 time_t seconds = time(NULL);
afreshmeat 0:d147c974627d 64
afreshmeat 0:d147c974627d 65 strftime(t, 30 , "%X %D",localtime(&seconds));//The form of date
afreshmeat 0:d147c974627d 66
afreshmeat 0:d147c974627d 67 serial.printf("Time = %s\n" ,t);// The form of date displaying on the screen
afreshmeat 0:d147c974627d 68 lcd.printString(t,0,5);//The coordinate of date
afreshmeat 0:d147c974627d 69 wait(1.0);
afreshmeat 0:d147c974627d 70 if(setTimerFlag) // if updated time has been sent
afreshmeat 0:d147c974627d 71 {
afreshmeat 0:d147c974627d 72 setTimerFlag = 0;// clear flag
afreshmeat 0:d147c974627d 73 setTime(); // update time
afreshmeat 0:d147c974627d 74
afreshmeat 0:d147c974627d 75 }
afreshmeat 0:d147c974627d 76
afreshmeat 0:d147c974627d 77
afreshmeat 0:d147c974627d 78 measurement = bmp180.readValues();// The values received by BMP180
afreshmeat 0:d147c974627d 79 char buffer[14];//array for buffer
afreshmeat 0:d147c974627d 80 int length = sprintf(buffer,"T= %.2f C",measurement.temperature);//Thr form of values of temperature
afreshmeat 0:d147c974627d 81 if(length<=14)//If less than 14 words a line
afreshmeat 0:d147c974627d 82 lcd.printString(buffer,0,1); // The coordinate of date
afreshmeat 0:d147c974627d 83 char buffer2[14];//14 words a line
afreshmeat 0:d147c974627d 84 length =sprintf(buffer2,"P = %.2f mb",measurement.pressure);//The form of values of pressure
afreshmeat 0:d147c974627d 85 if(length<=14)//If less than 14 words a line
afreshmeat 0:d147c974627d 86 lcd.printString(buffer2,0,2); //The coordinate of values
afreshmeat 0:d147c974627d 87 wait(1.0);//wait 1 sec
afreshmeat 0:d147c974627d 88 }
afreshmeat 0:d147c974627d 89
afreshmeat 0:d147c974627d 90
afreshmeat 0:d147c974627d 91
afreshmeat 0:d147c974627d 92 }
afreshmeat 0:d147c974627d 93
afreshmeat 0:d147c974627d 94 /**
afreshmeat 0:d147c974627d 95 add up one integer variable
afreshmeat 0:d147c974627d 96 @setTime - print it for debugging
afreshmeat 0:d147c974627d 97 @timeflag - read rx string into buffer
afreshmeat 0:d147c974627d 98 @param time - integer to add
afreshmeat 0:d147c974627d 99 @atoi - update the time
afreshmeat 0:d147c974627d 100 */
afreshmeat 0:d147c974627d 101
afreshmeat 0:d147c974627d 102 void setTime()// print time for debugging
afreshmeat 0:d147c974627d 103 {
afreshmeat 0:d147c974627d 104 serial.printf("set_time - %s",rxString);// atoi() converts a string to an integer
afreshmeat 0:d147c974627d 105
afreshmeat 0:d147c974627d 106 int time = atoi(rxString);// update the time
afreshmeat 0:d147c974627d 107
afreshmeat 0:d147c974627d 108 set_time(time);
afreshmeat 0:d147c974627d 109 }
afreshmeat 0:d147c974627d 110
afreshmeat 0:d147c974627d 111 void serialISR()
afreshmeat 0:d147c974627d 112 {
afreshmeat 0:d147c974627d 113 // when a serial interrupt occurs, read rx string into buffer
afreshmeat 0:d147c974627d 114 serial.gets(rxString,16);
afreshmeat 0:d147c974627d 115 // set flag
afreshmeat 0:d147c974627d 116 setTimerFlag = 1;
afreshmeat 0:d147c974627d 117 }
afreshmeat 0:d147c974627d 118
afreshmeat 0:d147c974627d 119
afreshmeat 0:d147c974627d 120
afreshmeat 0:d147c974627d 121
afreshmeat 0:d147c974627d 122
afreshmeat 0:d147c974627d 123
afreshmeat 0:d147c974627d 124
afreshmeat 0:d147c974627d 125