Fonctionnalités ok : Wifi (basique), NTP, RTC.
TODO : gestion d'erreurs.
This commit is contained in:
parent
0f028e6757
commit
55ca79e431
@ -5,78 +5,103 @@
|
|||||||
*
|
*
|
||||||
* Horloge Nixie basée sur ESP + module RTC-DS1307, avec fonctionnalités wifi pour synchro NTP
|
* Horloge Nixie basée sur ESP + module RTC-DS1307, avec fonctionnalités wifi pour synchro NTP
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "hardware.h"
|
#include "hardware.h"
|
||||||
#include "nixie.h"
|
|
||||||
#include "horlogerie.h"
|
|
||||||
#include "secrets.h"
|
#include "secrets.h"
|
||||||
|
#include <ESP8266WiFi.h>
|
||||||
|
#include <WiFiUdp.h>
|
||||||
|
#include <RTClib.h> // Date and time functions using a DS1307 RTC connected via I2C and Wire lib
|
||||||
|
#include <NTP.h> // The NTP library allows you to receive time information from the Internet. https://github.com/sstaub/NTP
|
||||||
|
#include "nixie.h" // Mes routines de pilotage d'affichage Nixie
|
||||||
|
|
||||||
// Date and time functions using a DS1307 RTC connected via I2C and Wire lib
|
const char *ssid = SECRET_WIFI_SSID;
|
||||||
#include <RTClib.h>
|
const char *password = SECRET_WIFI_PASS;
|
||||||
|
char daysOfTheWeek[7][12] = {"Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"};
|
||||||
// Les affectations physiques
|
|
||||||
|
|
||||||
// event at to 14:45 (for tests)
|
|
||||||
uint8_t DAILY_EVENT_HH = 14; // event start time: hour
|
|
||||||
uint8_t DAILY_EVENT_MM = 45; // event start time: minute
|
|
||||||
|
|
||||||
|
WiFiUDP wifiUdp;
|
||||||
|
NTP ntp(wifiUdp);
|
||||||
RTC_DS1307 rtc;
|
RTC_DS1307 rtc;
|
||||||
|
|
||||||
char daysOfTheWeek[7][12] = {
|
/////////////////////////////////////////////////////
|
||||||
"Dimanche",
|
//////////// FONCTIONS ////////////////
|
||||||
"Lundi",
|
/////////////////////////////////////////////////////
|
||||||
"Mardi",
|
//
|
||||||
"Mercredi",
|
void syncNTPtoRTC(){
|
||||||
"Jeudi",
|
|
||||||
"Vendredi",
|
|
||||||
"Samedi"
|
|
||||||
};
|
|
||||||
|
|
||||||
|
Serial.println ("Routine de synchro NTP vers RTC :");
|
||||||
|
Serial.print ("- récupération du temps Internet : ");
|
||||||
|
ntp.update(); // récupération du temps NTP
|
||||||
|
Serial.println(ntp.formattedTime("%T")); // hh:mm:ss
|
||||||
|
|
||||||
|
Serial.print ( "- enregistrement du temps Internet dans l'horlore RTC" );
|
||||||
|
rtc.adjust(DateTime(ntp.year(), ntp.month(), ntp.day(), ntp.hours(), ntp.minutes(), ntp.seconds()));
|
||||||
|
Serial.println ( " : OK." );
|
||||||
|
Serial.print ( "Maintenant l'horloge interne indique : " );
|
||||||
|
|
||||||
|
DateTime now = rtc.now();
|
||||||
|
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
|
||||||
|
Serial.print(" ");
|
||||||
|
Serial.print(now.day(), DEC);
|
||||||
|
Serial.print('/');
|
||||||
|
Serial.print(now.month(), DEC);
|
||||||
|
Serial.print('/');
|
||||||
|
Serial.print(now.year(), DEC);
|
||||||
|
Serial.print(" ");
|
||||||
|
Serial.print(now.hour(), DEC);
|
||||||
|
Serial.print(':');
|
||||||
|
Serial.print(now.minute(), DEC);
|
||||||
|
Serial.print(':');
|
||||||
|
Serial.println(now.second(), DEC);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////
|
||||||
|
//////////// setup et loop ////////////////
|
||||||
|
/////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
void setup () {
|
void setup () {
|
||||||
|
//// Initialisation de la liaison série
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
Wire.begin(I2C_SDA,I2C_SCL); // Broches (SDA,SCL) de l'I2C pour la RTC
|
Serial.println ("");
|
||||||
|
Serial.println ("Liaison série OK");
|
||||||
|
|
||||||
// SETUP RTC MODULE
|
//// Connexion au WIFI
|
||||||
|
WiFi.begin(ssid, password);
|
||||||
|
Serial.print ("Connexion au WiFi");
|
||||||
|
while ( WiFi.status() != WL_CONNECTED ) {
|
||||||
|
delay ( 500 );
|
||||||
|
Serial.print ( "." );
|
||||||
|
}
|
||||||
|
Serial.println ( " OK" );
|
||||||
|
|
||||||
|
// Récup du temps avec prise en compte de l'heure d'été pour la France
|
||||||
|
Serial.print("Initialisation NTP");
|
||||||
|
ntp.ruleDST("CEST", Last, Sun, Mar, 2, 120); // last sunday in march 2:00, timetone +120min (+1 GMT + 1h summertime offset)
|
||||||
|
ntp.ruleSTD("CET", Last, Sun, Oct, 3, 60); // last sunday in october 3:00, timezone +60min (+1 GMT)
|
||||||
|
ntp.begin();
|
||||||
|
Serial.println(" : OK");
|
||||||
|
Serial.print("- sur Internet, nous sommes le : ");
|
||||||
|
ntp.update();
|
||||||
|
Serial.println(ntp.formattedTime("%A %d/%m/%Y, il est : %T")); // www dd/mm/yyyy hh:mm:ss
|
||||||
|
|
||||||
|
Serial.print("Initialisation RTC");
|
||||||
if (! rtc.begin()) {
|
if (! rtc.begin()) {
|
||||||
Serial.println("Couldn't find RTC");
|
Wire.begin(I2C_SDA,I2C_SCL); // Broches (SDA,SCL) de l'I2C pour la RTC
|
||||||
|
delay(1000);
|
||||||
|
if (! rtc.begin()) {
|
||||||
|
Serial.println(" --> RTC introuvable ! Fin.");
|
||||||
while (1);
|
while (1);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
Serial.println (" : OK");
|
||||||
|
|
||||||
// sets the RTC to the date & time on PC this sketch was compiled
|
syncNTPtoRTC();
|
||||||
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
|
|
||||||
|
|
||||||
// sets the RTC with an explicit date & time, for example to set
|
|
||||||
// January 21, 2021 at 3am you would call:
|
|
||||||
// rtc.adjust(DateTime(2021, 1, 21, 3, 0, 0));
|
|
||||||
initwifintp();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////
|
||||||
|
|
||||||
void loop () {
|
void loop () {
|
||||||
DateTime now = rtc.now();
|
|
||||||
printTime(now);
|
|
||||||
if (now.hour() == DAILY_EVENT_HH &&
|
|
||||||
now.minute() == DAILY_EVENT_MM) {
|
|
||||||
Serial.println("It is on scheduled time");
|
|
||||||
// TODO: write your code"
|
|
||||||
} else {
|
|
||||||
Serial.println("It is NOT on scheduled time");
|
|
||||||
}
|
|
||||||
delay(1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
void printTime(DateTime time) {
|
Serial.println("Rien");
|
||||||
Serial.print("Date : ");
|
delay(10000);
|
||||||
Serial.print(time.year(), DEC);
|
|
||||||
Serial.print('/');
|
|
||||||
Serial.print(time.month(), DEC);
|
|
||||||
Serial.print('/');
|
|
||||||
Serial.print(time.day(), DEC);
|
|
||||||
Serial.print(" (");
|
|
||||||
Serial.print(daysOfTheWeek[time.dayOfTheWeek()]);
|
|
||||||
Serial.print(") - Heure : ");
|
|
||||||
Serial.print(time.hour(), DEC);
|
|
||||||
Serial.print(':');
|
|
||||||
Serial.print(time.minute(), DEC);
|
|
||||||
Serial.print(':');
|
|
||||||
Serial.println(time.second(), DEC);
|
|
||||||
}
|
}
|
||||||
|
15
boutsdecode.txt
Normal file
15
boutsdecode.txt
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
// event at to 14:45 (for tests)
|
||||||
|
uint8_t DAILY_EVENT_HH = 14; // event start time: hour
|
||||||
|
uint8_t DAILY_EVENT_MM = 45; // event start time: minute
|
||||||
|
|
||||||
|
|
||||||
|
DateTime now = rtc.now();
|
||||||
|
printTime(now);
|
||||||
|
if (now.hour() == DAILY_EVENT_HH &&
|
||||||
|
now.minute() == DAILY_EVENT_MM) {
|
||||||
|
Serial.println("It is on scheduled time");
|
||||||
|
// TODO: write your code"
|
||||||
|
} else {
|
||||||
|
Serial.println("It is NOT on scheduled time");
|
||||||
|
}
|
@ -1,49 +0,0 @@
|
|||||||
#include "horlogerie.h"
|
|
||||||
#include "Arduino.h"
|
|
||||||
#include "hardware.h"
|
|
||||||
#include "secrets.h"
|
|
||||||
|
|
||||||
#include <WiFi.h>
|
|
||||||
#include <NTPClient.h>
|
|
||||||
#include <WiFiUdp.h>
|
|
||||||
|
|
||||||
|
|
||||||
void initwifintp() {
|
|
||||||
|
|
||||||
// Replace with your network credentials (see in 'arduino_secrets.h' file)
|
|
||||||
char ssid[] = SECRET_WIFI_SSID;
|
|
||||||
const char* password = SECRET_WIFI_PASS;
|
|
||||||
|
|
||||||
// Define NTP Client to get time
|
|
||||||
WiFiUDP ntpUDP;
|
|
||||||
NTPClient timeClient(ntpUDP);
|
|
||||||
|
|
||||||
// Variables to save date and time
|
|
||||||
String formattedDate;
|
|
||||||
String dayStamp;
|
|
||||||
String timeStamp;
|
|
||||||
|
|
||||||
// Initialize Serial Monitor
|
|
||||||
Serial.begin(115200);
|
|
||||||
Serial.print("Connecting to ");
|
|
||||||
Serial.println(ssid);
|
|
||||||
WiFi.begin(ssid, password);
|
|
||||||
while (WiFi.status() != WL_CONNECTED) {
|
|
||||||
delay(100);
|
|
||||||
Serial.print(".");
|
|
||||||
}
|
|
||||||
// Print local IP address and start web server
|
|
||||||
Serial.println("");
|
|
||||||
Serial.println("WiFi connected.");
|
|
||||||
Serial.println("IP address: ");
|
|
||||||
Serial.println(WiFi.localIP());
|
|
||||||
|
|
||||||
// Initialize a NTPClient to get time
|
|
||||||
timeClient.begin();
|
|
||||||
// Set offset time in seconds to adjust for your timezone, for example:
|
|
||||||
// GMT +1 = 3600
|
|
||||||
// GMT +8 = 28800
|
|
||||||
// GMT -1 = -3600
|
|
||||||
// GMT 0 = 0
|
|
||||||
timeClient.setTimeOffset(3600);
|
|
||||||
}
|
|
11
horlogerie.h
11
horlogerie.h
@ -1,11 +0,0 @@
|
|||||||
/* fichier nixie.h */
|
|
||||||
#include "Arduino.h"
|
|
||||||
#include "hardware.h"
|
|
||||||
#include "secrets.h"
|
|
||||||
|
|
||||||
#include <WiFi.h>
|
|
||||||
#include <NTPClient.h>
|
|
||||||
#include <WiFiUdp.h>
|
|
||||||
|
|
||||||
|
|
||||||
void initwifintp();
|
|
@ -1,2 +1,4 @@
|
|||||||
|
## Change with your credentials and rename this file in 'secrets.h'
|
||||||
|
|
||||||
#define SECRET_WIFI_SSID "YOUR_SSID"
|
#define SECRET_WIFI_SSID "YOUR_SSID"
|
||||||
#define SECRET_WIFI_PASS "YOUR_PASS"
|
#define SECRET_WIFI_PASS "YOUR_PASS"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user