A simple WIP that logs data from a Grove sensor, and can send and receive information over USB and SMS.

Dependencies:   DHT DS_1337 SDFileSystem USBDevice mbed

Committer:
Joseph Radford
Date:
Sun Apr 10 15:47:33 2016 +1000
Revision:
0:2df78a4443cd
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Joseph Radford 0:2df78a4443cd 1 #include "rtc.h"
Joseph Radford 0:2df78a4443cd 2 #include "DS1337.h"
Joseph Radford 0:2df78a4443cd 3
Joseph Radford 0:2df78a4443cd 4 // declare reference to interface to the hardware real time clock
Joseph Radford 0:2df78a4443cd 5 extern DS1337* RTC_DS1337;
Joseph Radford 0:2df78a4443cd 6
Joseph Radford 0:2df78a4443cd 7 // RTC enabled flag
Joseph Radford 0:2df78a4443cd 8 static int _rtcEnabled;
Joseph Radford 0:2df78a4443cd 9
Joseph Radford 0:2df78a4443cd 10 time_t my_rtc_read()
Joseph Radford 0:2df78a4443cd 11 {
Joseph Radford 0:2df78a4443cd 12 time_t retval = 0; // time since start of epoch
Joseph Radford 0:2df78a4443cd 13 tm _time_tm;
Joseph Radford 0:2df78a4443cd 14
Joseph Radford 0:2df78a4443cd 15 RTC_DS1337->readTime();
Joseph Radford 0:2df78a4443cd 16
Joseph Radford 0:2df78a4443cd 17 // extract values from RTC to tm struct
Joseph Radford 0:2df78a4443cd 18 _time_tm.tm_year = ((int)RTC_DS1337->getYears()) - 1900; // struct tm stores (year - 1900)
Joseph Radford 0:2df78a4443cd 19 _time_tm.tm_mon = (int)RTC_DS1337->getMonths() - 1; // struct tm stores months 0 - 11, DS1337 stores 1-12
Joseph Radford 0:2df78a4443cd 20 _time_tm.tm_mday = (int)RTC_DS1337->getDays();
Joseph Radford 0:2df78a4443cd 21 _time_tm.tm_hour = (int)RTC_DS1337->getHours();
Joseph Radford 0:2df78a4443cd 22 _time_tm.tm_min = (int)RTC_DS1337->getMinutes();
Joseph Radford 0:2df78a4443cd 23 _time_tm.tm_sec = (int)RTC_DS1337->getSeconds();
Joseph Radford 0:2df78a4443cd 24
Joseph Radford 0:2df78a4443cd 25 // convert to time_t
Joseph Radford 0:2df78a4443cd 26 retval = mktime(&_time_tm);
Joseph Radford 0:2df78a4443cd 27 if (retval == (time_t) -1)
Joseph Radford 0:2df78a4443cd 28 return (time_t)1; // error
Joseph Radford 0:2df78a4443cd 29 else
Joseph Radford 0:2df78a4443cd 30 return retval;
Joseph Radford 0:2df78a4443cd 31 }
Joseph Radford 0:2df78a4443cd 32
Joseph Radford 0:2df78a4443cd 33
Joseph Radford 0:2df78a4443cd 34 //https://developer.mbed.org/teams/Seeed/code/Seeed_Arch_GPRS_V2_RTC_HelloWorld/file/6db7dfbab0f1/main.cpp
Joseph Radford 0:2df78a4443cd 35 void my_rtc_write(time_t _time)
Joseph Radford 0:2df78a4443cd 36 {
Joseph Radford 0:2df78a4443cd 37 // extract time_t to time info struct
Joseph Radford 0:2df78a4443cd 38 tm * timeinfo = localtime(&_time);
Joseph Radford 0:2df78a4443cd 39
Joseph Radford 0:2df78a4443cd 40 RTC_DS1337->setSeconds (timeinfo->tm_sec);
Joseph Radford 0:2df78a4443cd 41 RTC_DS1337->setMinutes (timeinfo->tm_min);
Joseph Radford 0:2df78a4443cd 42 RTC_DS1337->setHours (timeinfo->tm_hour);
Joseph Radford 0:2df78a4443cd 43 RTC_DS1337->setDays (timeinfo->tm_mday); // day of month
Joseph Radford 0:2df78a4443cd 44 RTC_DS1337->setDayOfWeek (timeinfo->tm_wday);
Joseph Radford 0:2df78a4443cd 45 RTC_DS1337->setMonths (timeinfo->tm_mon + 1); // struct tm stores months 0 - 11, DS1337 stores 1-12
Joseph Radford 0:2df78a4443cd 46 RTC_DS1337->setYears (timeinfo->tm_year + 1900); // struct tm subtracts 1900 from year
Joseph Radford 0:2df78a4443cd 47
Joseph Radford 0:2df78a4443cd 48 RTC_DS1337->setTime();
Joseph Radford 0:2df78a4443cd 49 }
Joseph Radford 0:2df78a4443cd 50
Joseph Radford 0:2df78a4443cd 51 void my_rtc_init()
Joseph Radford 0:2df78a4443cd 52 {
Joseph Radford 0:2df78a4443cd 53 RTC_DS1337->start();
Joseph Radford 0:2df78a4443cd 54 _rtcEnabled = 1;
Joseph Radford 0:2df78a4443cd 55 }
Joseph Radford 0:2df78a4443cd 56
Joseph Radford 0:2df78a4443cd 57 int my_rtc_enabled()
Joseph Radford 0:2df78a4443cd 58 {
Joseph Radford 0:2df78a4443cd 59 return _rtcEnabled;
Joseph Radford 0:2df78a4443cd 60 }