Temperature, Voltage & RTC via SMS

Dependencies:   DS1307 OLED160G1 mbed uOLED

Fork of Astromed by Renato Loureiro

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?

UserRevisionLine numberNew 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