Temperature, Voltage & RTC via SMS
Dependencies: DS1307 OLED160G1 mbed uOLED
Fork of Astromed by
main.cpp@4:d352ae75fe0b, 2012-11-23 (annotated)
- Committer:
- Renato
- Date:
- Fri Nov 23 14:24:58 2012 +0000
- Revision:
- 4:d352ae75fe0b
- Parent:
- 3:603f315daf7b
Astromed with Temperature, Voltage & RTC via SMS
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
feabhas | 0:03ec282c2908 | 1 | #include "mbed.h" |
Renato | 1:b2ea1e9d90df | 2 | #include "stdint.h" |
feabhas | 0:03ec282c2908 | 3 | #include "DS18B20.h" |
Renato | 1:b2ea1e9d90df | 4 | #include "OLED160G1.h" |
Renato | 1:b2ea1e9d90df | 5 | #include "uOLED.h" |
Renato | 4:d352ae75fe0b | 6 | #include "ds1307.h" |
Renato | 1:b2ea1e9d90df | 7 | |
Renato | 3:603f315daf7b | 8 | DigitalInOut sensor(p23); //DS18b20 connected on pin 23 |
Renato | 4:d352ae75fe0b | 9 | DS1307 my1307(p9,p10); // start DS1307 class and give it pins for connections of the DS1307 device |
Renato | 3:603f315daf7b | 10 | OLED160G1 oled(p28, p27, p8); |
Renato | 3:603f315daf7b | 11 | AnalogIn input(p20); //Voltage meter |
Renato | 2:fe0f893513d4 | 12 | |
Renato | 2:fe0f893513d4 | 13 | Serial GSM(p13, p14); |
Renato | 3:603f315daf7b | 14 | Serial pc(USBTX,USBRX); |
feabhas | 0:03ec282c2908 | 15 | |
feabhas | 0:03ec282c2908 | 16 | Ticker timer; // used for our microsec timing |
Renato | 3:603f315daf7b | 17 | |
Renato | 1:b2ea1e9d90df | 18 | float temp=0; |
Renato | 3:603f315daf7b | 19 | |
Renato | 3:603f315daf7b | 20 | |
Renato | 2:fe0f893513d4 | 21 | unsigned char i = 0; |
Renato | 2:fe0f893513d4 | 22 | unsigned char j = 0; |
Renato | 2:fe0f893513d4 | 23 | char NumTel[] = "937831063"; |
Renato | 2:fe0f893513d4 | 24 | unsigned char CtrlZ = 0x1A; |
Renato | 3:603f315daf7b | 25 | float volt=0; |
feabhas | 0:03ec282c2908 | 26 | |
Renato | 4:d352ae75fe0b | 27 | |
Renato | 4:d352ae75fe0b | 28 | int sec = 0; // Values to set time with |
Renato | 4:d352ae75fe0b | 29 | int min = 32; |
Renato | 4:d352ae75fe0b | 30 | int hours = 13; |
Renato | 4:d352ae75fe0b | 31 | int day = 6; |
Renato | 4:d352ae75fe0b | 32 | int date = 23; |
Renato | 4:d352ae75fe0b | 33 | int month = 11; |
Renato | 4:d352ae75fe0b | 34 | int year = 12; |
Renato | 4:d352ae75fe0b | 35 | int loop = 10; // Non zero value for the while loop |
Renato | 4:d352ae75fe0b | 36 | |
Renato | 4:d352ae75fe0b | 37 | void test_rw(int test) { |
Renato | 4:d352ae75fe0b | 38 | if (test == 0) pc.printf("Last R/W operation passed!\n\r"); |
Renato | 4:d352ae75fe0b | 39 | else pc.printf("Last R/W operation failed!\n\r"); |
Renato | 4:d352ae75fe0b | 40 | } |
Renato | 4:d352ae75fe0b | 41 | |
Renato | 4:d352ae75fe0b | 42 | |
feabhas | 0:03ec282c2908 | 43 | int main() { |
Renato | 1:b2ea1e9d90df | 44 | |
Renato | 2:fe0f893513d4 | 45 | |
Renato | 2:fe0f893513d4 | 46 | GSM.baud(9600); |
Renato | 2:fe0f893513d4 | 47 | GSM.format(8,Serial::None,1); |
Renato | 2:fe0f893513d4 | 48 | |
Renato | 4:d352ae75fe0b | 49 | test_rw(my1307.settime( sec, min, hours, day, date, month, year)); // Set the time on the DS1307 |
Renato | 4:d352ae75fe0b | 50 | |
Renato | 4:d352ae75fe0b | 51 | |
Renato | 2:fe0f893513d4 | 52 | oled.init(); |
Renato | 1:b2ea1e9d90df | 53 | oled.eraseScreen(); |
Renato | 1:b2ea1e9d90df | 54 | oled.setTextBackgroundType(OLED_SET_TEXT_OPAQUE); |
Renato | 1:b2ea1e9d90df | 55 | oled.setFontSize(0); |
Renato | 4:d352ae75fe0b | 56 | wait(.3); |
feabhas | 0:03ec282c2908 | 57 | sensor.mode(PullUp); |
feabhas | 0:03ec282c2908 | 58 | |
feabhas | 0:03ec282c2908 | 59 | ROM_Code_t ROM_Code = ReadROM(); |
Renato | 3:603f315daf7b | 60 | |
Renato | 4:d352ae75fe0b | 61 | test_rw(my1307.gettime( &sec, &min, &hours, &day, &date, &month, &year)); // Read the time and display on screen |
Renato | 4:d352ae75fe0b | 62 | pc.printf("seconds read are %.2D \n\r",sec); |
Renato | 4:d352ae75fe0b | 63 | pc.printf("min read are %.2D \n\r",min); |
Renato | 4:d352ae75fe0b | 64 | pc.printf("hour read are %.2D \n\r",hours); |
Renato | 4:d352ae75fe0b | 65 | pc.printf("day read are %.2D \n\r",day); |
Renato | 4:d352ae75fe0b | 66 | pc.printf("date read are %.2D \n\r",date); |
Renato | 4:d352ae75fe0b | 67 | pc.printf("month read are %.2D \n\r",month); |
Renato | 4:d352ae75fe0b | 68 | pc.printf("year read are %.2D \n\r",year); |
Renato | 4:d352ae75fe0b | 69 | |
Renato | 1:b2ea1e9d90df | 70 | oled.locate(0,1); |
Renato | 4:d352ae75fe0b | 71 | oled.eraseScreen(); |
Renato | 3:603f315daf7b | 72 | oled.printf("Temp Actual..\n"); |
Renato | 4:d352ae75fe0b | 73 | pc.printf("Temp Actual..\n"); |
Renato | 3:603f315daf7b | 74 | |
feabhas | 0:03ec282c2908 | 75 | while (1) { |
Renato | 3:603f315daf7b | 76 | volt = input.read()*3.3; |
Renato | 1:b2ea1e9d90df | 77 | showTemperature(&temp); |
Renato | 1:b2ea1e9d90df | 78 | oled.locate(2,3); |
Renato | 1:b2ea1e9d90df | 79 | oled.setFontSize(2); |
Renato | 1:b2ea1e9d90df | 80 | oled.printf("%.2f C",temp); |
Renato | 4:d352ae75fe0b | 81 | wait(3600); |
Renato | 3:603f315daf7b | 82 | |
Renato | 2:fe0f893513d4 | 83 | |
Renato | 3:603f315daf7b | 84 | GSM.printf("AT+CMGF=1\r\n"); |
Renato | 4:d352ae75fe0b | 85 | pc.printf("AT+CMGF=1\r\n"); |
Renato | 3:603f315daf7b | 86 | wait(1); |
Renato | 2:fe0f893513d4 | 87 | |
Renato | 3:603f315daf7b | 88 | GSM.printf("AT+CMGS=937831063\r\n"); |
Renato | 4:d352ae75fe0b | 89 | pc.printf("AT+CMGS=937831063\r\n"); |
Renato | 3:603f315daf7b | 90 | wait(1); |
Renato | 3:603f315daf7b | 91 | |
Renato | 3:603f315daf7b | 92 | GSM.printf("%.2f C\r\n",temp); |
Renato | 3:603f315daf7b | 93 | GSM.printf("%.2f V\r\n", volt); |
Renato | 4:d352ae75fe0b | 94 | //GSM.printf("%c",CtrlZ); |
Renato | 4:d352ae75fe0b | 95 | pc.printf("%.2f C\r\n",temp); |
Renato | 4:d352ae75fe0b | 96 | pc.printf("%.2f V\r\n", volt); |
Renato | 3:603f315daf7b | 97 | |
Renato | 4:d352ae75fe0b | 98 | test_rw(my1307.gettime( &sec, &min, &hours, &day, &date, &month, &year)); |
Renato | 4:d352ae75fe0b | 99 | oled.locate(0,1); // Print and refresh data on line 2 of the oled display |
Renato | 4:d352ae75fe0b | 100 | oled.setFontSize(0); |
Renato | 4:d352ae75fe0b | 101 | oled.printf("\r%.2D",hours); |
Renato | 4:d352ae75fe0b | 102 | GSM.printf("%.2D",hours); |
Renato | 4:d352ae75fe0b | 103 | oled.printf(":%.2D",min); |
Renato | 4:d352ae75fe0b | 104 | GSM.printf(":%.2D",min); |
Renato | 4:d352ae75fe0b | 105 | oled.printf(":%.2D\r\n",sec); |
Renato | 4:d352ae75fe0b | 106 | GSM.printf(":%.2D",sec); |
Renato | 4:d352ae75fe0b | 107 | oled.printf(" %.2D",date); |
Renato | 4:d352ae75fe0b | 108 | GSM.printf(" %.2D",date); |
Renato | 4:d352ae75fe0b | 109 | oled.printf("/%.2D",month); |
Renato | 4:d352ae75fe0b | 110 | GSM.printf("/%.2D",month); |
Renato | 4:d352ae75fe0b | 111 | oled.printf("/%.2D\r\n",year); |
Renato | 4:d352ae75fe0b | 112 | GSM.printf("/%.2D",year); |
Renato | 4:d352ae75fe0b | 113 | if (day == 1){ |
Renato | 4:d352ae75fe0b | 114 | oled.printf(" Domingo \n"); |
Renato | 4:d352ae75fe0b | 115 | GSM.printf(" Domingo \n"); |
Renato | 4:d352ae75fe0b | 116 | } |
Renato | 4:d352ae75fe0b | 117 | if (day == 2){ |
Renato | 4:d352ae75fe0b | 118 | oled.printf(" Segunda \n"); |
Renato | 4:d352ae75fe0b | 119 | GSM.printf(" Segunda-Feira \n"); |
Renato | 4:d352ae75fe0b | 120 | } |
Renato | 4:d352ae75fe0b | 121 | if (day == 3){ |
Renato | 4:d352ae75fe0b | 122 | oled.printf(" Terca \n"); |
Renato | 4:d352ae75fe0b | 123 | GSM.printf(" Terca-Feira \n"); |
Renato | 4:d352ae75fe0b | 124 | } |
Renato | 4:d352ae75fe0b | 125 | if (day == 4){ |
Renato | 4:d352ae75fe0b | 126 | oled.printf(" Quarta \n"); |
Renato | 4:d352ae75fe0b | 127 | GSM.printf(" Quarta-Feira \n"); |
Renato | 4:d352ae75fe0b | 128 | } |
Renato | 4:d352ae75fe0b | 129 | if (day == 5){ |
Renato | 4:d352ae75fe0b | 130 | oled.printf(" Quinta \n"); |
Renato | 4:d352ae75fe0b | 131 | GSM.printf(" Quinta-Feira \n"); |
Renato | 4:d352ae75fe0b | 132 | } |
Renato | 4:d352ae75fe0b | 133 | if (day == 6){ |
Renato | 4:d352ae75fe0b | 134 | oled.printf(" Sexta \n"); |
Renato | 4:d352ae75fe0b | 135 | GSM.printf(" Sexta-Feira \n"); |
Renato | 4:d352ae75fe0b | 136 | } |
Renato | 4:d352ae75fe0b | 137 | if (day == 7){ |
Renato | 4:d352ae75fe0b | 138 | oled.printf(" Sabado \n"); |
Renato | 4:d352ae75fe0b | 139 | GSM.printf(" Sabado \n"); |
Renato | 4:d352ae75fe0b | 140 | } |
Renato | 4:d352ae75fe0b | 141 | GSM.printf("%c",CtrlZ); |
feabhas | 0:03ec282c2908 | 142 | } |
feabhas | 0:03ec282c2908 | 143 | } |
feabhas | 0:03ec282c2908 | 144 |