Реализация GPS и RTC

alena86
Offline
Зарегистрирован: 29.12.2019

Здравствуйте! Необходимо реализовать измерение частоты сети в бытовой розетке:

- штемпель времени через GPS-время

- GPS - для коррекции отклонения измерений

- получение времени с RTC, если GPS не работает



Hardware:

-NodeMCU v3,

-REAL TIME CLOCK MODULE DS1307(Sparkfun)

-GT-U7 main module: GPS module using the original 7th generation chip, Software is compatible with NEO-6M.

Готовые части кода: WiFi, LCD, запись на SD-карту. 

 Помогите написать скетч для GPS и RTC. 

Интерфейс должен иметь следующую структуру:

Structures:

typedef struct {
    byte hour;
    byte min;
    byte sec;
} structTime;

typedef struct {
    structTime time; // time of measurement
    int freq;        // measured frequency
    double lat;      // GPS latitude during measurement
    double long;     // GPS longitude during measurement
} structData;

---------------------------------------
LCD Modul:
----------
int setLCD (double * freq,        // measured frequency
            structTime * timeGPS, // time captured from GPS
            int * measPeriod,     // measurement period
            byte * sigWifi,       // Wifi signal strength
            byte * sigGPS);       // GPS signal strength

---------------------------------------
GPS Modul:
----------
int getGPSLoc (double * lat, double * long);
int getGPSTime (structTime * time);
int getGPSPulse (int * pulseCount);  //PPS (pulse per second) signal

---------------------------------------
RTC Modul:
----------
int getRTCTime (structTime * time);
int setRTCTime (structTime * time);

---------------------------------------
SDC Modul:
----------
int loadConfig ();
int storeData (structData * data);

---------------------------------------
WiFi Modul:
-----------
int connectWifi (char * ssid, char * pw);
int sendWifi (structData * data);
int getWifiTime (structTime * time);

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Какова требуемая точность (допустимое отклонение) таймштампа в сравнении со Stratum1?

alena86
Offline
Зарегистрирован: 29.12.2019

Требований к точности нет и +-0.05 секунды будет достаточно. Часовой пояс UTC+1.

sadman41
Offline
Зарегистрирован: 19.10.2016

Т.е. то, что RTC оперирует минимум секундными интервалами - вас не смущает... А то, что ходят слухи о том, что ESP8266 произвольно фризится при работе с WiFi - тоже не пугает? Всё ещё настаиваете на 0.05sec ? 

alena86
Offline
Зарегистрирован: 29.12.2019

Не настаиваю. Сможете помочь с написанием скетча? 

sadman41
Offline
Зарегистрирован: 19.10.2016

В ближайшие две новогодние недели? Только если Вы из семьи миллионеров.

alena86
Offline
Зарегистрирован: 29.12.2019

Задача заключается в том, чтобы получать координаты и время с GPS, если GPS не отвечает, время получается с RTC. Реализацией WiFi, SD-Card, выводом данных на LCD-Display занимаются другие. У меня моя часть задания работает с имеющимися библиотеками, но я не знаю как ее переделать вот под эту форму:


GPS Modul:
----------
int getGPSLoc (double * lat, double * long);
int getGPSTime (structTime * time);
int getGPSPulse (int * pulseCount);  //PPS (pulse per second) signal

---------------------------------------
RTC Modul:
----------
int getRTCTime (structTime * time);
int setRTCTime (structTime * time);
-----------------------------------------
typedef struct {
    byte hour;
    byte min;
    byte sec;
} structTime;
andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

А если у rtc батарейка сядет то откуда время брать?

sadman41
Offline
Зарегистрирован: 19.10.2016

Откуда эти функции: getGPSTime() и пр.? 

alena86
Offline
Зарегистрирован: 29.12.2019

Это студенческий проект. Если батарейка сядет, то ее поменяют. Мы не должны беспокоится о ней. 

mixail844
Offline
Зарегистрирован: 30.04.2012

sadman41 пишет:

Откуда эти функции: getGPSTime() и пр.? 

судя по всему из рук исполнителя ;)