| Ваш IP: 3.231.220.225 | Online(29) - гости: 24, боты: 5 | Загрузка сервера: 0.68 ::::::::::::


Интернет часы ESP8266 + LCD1602_I2C

Использование NTP-сервера является одним из лучших решений для получения точного времени, а использование ESP8266 Nodemcu позволит очень просто создать интернет часы. Текущее время и дата будут выводится на дисплей LCD1602 на базе контроллера HD44780 который работает совместно I2C модулем на базе микросхем PCF8574 который позволяет подключить дисплей к плате ESP8266 NodeMCU всего по двум проводам SDA и SCL (D2 и D1).

Перед тем как приступить к созданию интернет часов необходимо ознакомится со следующими статьями:

Так же Вам  понадобятся следующие библиотеки

#include <NTPClient.h>
#include <ESP8266WiFi.h> 
#include <WiFiUdp.h> 
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
 LiquidCrystal_I2C lcd(0x27,16,2);  // Устанавливаем дисплей
 WiFiUDP ntpUDP;
      /////////////////  https://www.ntppool.org/zone/@ - другие сервера  /////////////////////////////
      ///////////////// для России - ru.pool.ntp.org //////////////////////////////////////////////////
 NTPClient timeClient(ntpUDP, "pool.ntp.org", 21600,3600123);// 21600 - временной сдвиг в секундах от UTC 
 const char *ssid = "Имя_Wi-Fi_сети"; 
 const char *password = "Пароль";
 String date_time;
 unsigned long times;
 
void setup(){
  Serial.begin(9600);
  WiFi.begin(ssid, password);
  while ( WiFi.status() != WL_CONNECTED ) {
    delay ( 500 );
    Serial.print ( "." );
    timeClient.begin();}
  lcd.init();                    
  lcd.backlight();// Включаем подсветку дисплея
}
 
void loop(){
  if(millis()-times>=1000){times=millis();
   while(!timeClient.update()){timeClient.forceUpdate();}
  int hh = timeClient.getHours();
  int mm = timeClient.getMinutes();
  int ss = timeClient.getSeconds();
  date_time = timeClient.getFormattedDate();
  int index_date = date_time.indexOf("T");
  String date = date_time.substring(0, index_date);
 
  lcd.setCursor(4,0);
  lcd.print(hh/10);lcd.print(hh%10);lcd.print(":");
  lcd.print(mm/10);lcd.print(mm%10);lcd.print(":");
  lcd.print(ss/10);lcd.print(ss%10);
  lcd.setCursor(3,1);
  lcd.print(date);
  }}


Интернет часы на ESP8266 +TM1637

В дополнение к теме статьи привожу пример использования четырех разрядного семи-сегментного индикатора TM1637. На индикатор выводится часы, минуты и мигающее в такт секундам двоеточие.

Для индикатора TM1637 Вам необходимо установить библиотеку — TM1637Display.zip

Для питания индикатора TM1637 можно использовать контакт 3V модуля ESP8266 NodeMCU.

#include <NTPClient.h>
#include <ESP8266WiFi.h> 
#include <WiFiUdp.h> 
#include <Wire.h> 
#include <TM1637Display.h>
 TM1637Display display(D4, D2);// CLK,DIO
 WiFiUDP ntpUDP;
 NTPClient timeClient(ntpUDP, "pool.ntp.org", 21600,3600123);// 21600 - временной сдвиг в секундах от UTC 
 const char *ssid = "Имя_Wi-Fi_сети"; 
 const char *password = "Пароль";
 
 int times,x;
 unsigned long t1,t;
 
void setup(){
  Serial.begin(9600);
  WiFi.begin(ssid, password);
  while ( WiFi.status() != WL_CONNECTED ) {
    delay(500);Serial.print(".");
    timeClient.begin();}
    display.setBrightness(3);// ЯРКОСТЬ    
}
 
void loop(){  
  if(millis()-t1>=1000){t1=millis();
   while(!timeClient.update()){timeClient.forceUpdate();}
  int hh = timeClient.getHours();
  int mm = timeClient.getMinutes();
 // int ss = timeClient.getSeconds();
  times=hh*100+mm;} 
  if(millis()-t<500){x=0x00;}
  if(millis()-t>500){x=0x40;}
  if(millis()-t>999){t=millis();}
  display.showNumberDecEx(times,x,true); // вывод информации на индикатор TM1637
  }


Интернет часы ESP8266 + TFT SPI 320х240

Для отображения времени интернет часов так же можно использовать TFT-дисплей SPI 320×240 , но не просто выводить время, а сделать имитацию стрелочных часов.

Для нормальной загрузки скетча Вам понадобится дополнительная библиотекаNew_UTFT.zip

#include <NTPClient.h>
#include <ESP8266WiFi.h> 
#include <WiFiUdp.h>
#include <UTFT.h>
#include <SPI.h>
 WiFiUDP ntpUDP;
 NTPClient timeClient(ntpUDP, "pool.ntp.org", 21600,3600123);
 extern uint8_t BigFont[],SmallFont[];
 UTFT myGLCD ( ILI9341_S5P, 13, 14, 15, 0, 12 );//SDI (MOSI), SCK, CS, RESET, DC == D7 D5 D8 D3 D6
 const char *ssid = "Имя_Wi-Fi_сети"; 
 const char *password = "Пароль";
 String date_time;
 float sx,sy,osx,osy,mx,my,omx,omy,hx,hy,ohx,ohy;
 unsigned long times;
 
void setup(){
  Serial.begin(9600);
  WiFi.mode(WIFI_STA);WiFi.begin(ssid, password);
  while ( WiFi.status() != WL_CONNECTED ) {
    delay(500);Serial.print(".");
    timeClient.begin();}  
  myGLCD.InitLCD(0);myGLCD.fillRect(0,0,320,240);myGLCD.setFont(BigFont);myGLCD.clrScr(); // первоначальные настройки экрана
  myGLCD.fillScr(0x0000);myGLCD.setColor(0xffff);myGLCD.setBackColor(0x0000); 
 
   for(int i=0;i<360;i+=30){
    sx=cos((i-90)*0.0174532925);
    sy=sin((i-90)*0.0174532925);
    myGLCD.drawLine(sx*120+120,sy*120+120,sx*110+120,sy*110+120);}
 
   for(int i=0;i<360;i+=6){
    sx=cos((i-90)*0.0174532925);
    sy=sin((i-90)*0.0174532925);
    myGLCD.drawPixel(sx*115+120,sy*115+120);}
}
 
void loop(){
  if(millis()-times>=1000){times=millis();
   while(!timeClient.update()){timeClient.forceUpdate();}
 int hh = timeClient.getHours();
 int mm = timeClient.getMinutes();
 int ss = timeClient.getSeconds();
  date_time = timeClient.getFormattedDate();
 int index_date = date_time.indexOf("T");
 String date = date_time.substring(0, index_date);
  hx=cos(((hh*30+mm*6*0.08333333)-90)*0.0174532925);
  hy=sin(((hh*30+mm*6*0.08333333)-90)*0.0174532925);
  mx=cos(((mm*6+ss*6*0.01666667)-90)*0.0174532925);
  my=sin(((mm*6+ss*6*0.01666667)-90)*0.0174532925);
  sx=cos((ss*6-90)*0.0174532925);
  sy=sin((ss*6-90)*0.0174532925);
 myGLCD.setColor(0x0000);// clear
 myGLCD.drawLine(osx,osy,120,120);
 myGLCD.drawLine(omx,omy,120,120);
 myGLCD.drawLine(ohx,ohy,120,120); 
 myGLCD.setColor(0xffff);
 myGLCD.print("12",104,0);
 myGLCD.print("6",112,225);
 myGLCD.print("9",0,112);
 myGLCD.print("3",224,112);
  ohx = hx*70+120;
  ohy = hy*70+120;
  omx = mx*100+120;
  omy = my*100+120;  
  osx = sx*110+120;
  osy = sy*110+120;
 myGLCD.setColor(0xf000);
 myGLCD.drawLine(osx,osy,120,120);
 myGLCD.setColor(0xffff);
 myGLCD.drawLine(omx,omy,120,120);
 myGLCD.setColor(0xfff5);
 myGLCD.drawLine(ohx,ohy,120,120);
 myGLCD.setColor(0xf000);
 myGLCD.fillCircle(120,120,4);
 myGLCD.setColor(0xffff);
///////////////////////////////////////////////////////
 myGLCD.print(timeClient.getFormattedTime(),60,275);
 myGLCD.print(date,45,295);
  }
 }//loop


Форумы:

Комментарии

Добавить комментарий

Войти с помощью: 

Случайные статьи

  • РЕЛЕ ВРЕМЕНИ

    Реле времени предназначены для коммутации электрических цепей устройств с заданной временной выдержкой. Описываемые реле времени не содержат сетевого трансформатора, поэтому позволяют значительно снизить их массу и габаритные размеры. При налаживании и эксплуатации реле необходимо соблюдать меры предосторожности, так как цепи и элементы этих устройств находятся под сетевым напряжением. Если же …Подробнее...
  • Бинауральный преобразователь

    Бинауральный преобразователь

    Бинауральный преобразователь — устройство значительно снижающее эффект локализации кажущихся источников звука в голове слушателя и уменьшает неестественное резкое разделение каналов, что обычно возникает при прослушивании стерео фонограмм через стерео телефоны(наушники). Такой преобразователь приближает качество воспроизведения через головные телефоны к качеству воспроизведения через АС. Характеристики бинауральный преобразователя: Номинальное входное напряжение 0,8В …Подробнее...
  • Цифровой автосторож на двух микросхемах

    Данное уст-во предназначено для установки в автомобиле ВАЗ-2107, но его без особых изменений можно установить на любой отечественный или зарубежный автомобиль. Автосторож работает так: после включения питания тумблеров из салона автомобиля следует выдержка 15-20 секунд, в течении этого времени автосторож не реагирует на замыкание контактных датчиков(дверные выключатели внутри салонного освещения). …Подробнее...
  • Блок бесперебойного питания

    Блок бесперебойного питания

    Блок бесперебойного питания обеспечивает выходную мощность до 220 Вт. В схеме (см. рисунок) и напряжение свинцового автомобильного аккумулятора GB1 приложено к задающему генератору на микросхеме DD1 частотой 50 Гц, который раскачивает мощные ключевые транзисторы, попеременно прикладывающие 12 В к обмоткам Ia и Iб повышающего трансформатора Т2. С вторичной обмотки Т2 …Подробнее...
  • Радиоприемник УКВ с ЧМ в диапазоне частот 64-108 МГц и низковольтным питанием

    Приемник работает в диапазоне 64-108 МГц и имеет чувствительность не хуже 5 мкВ/м. Номинальное напряжение питания — 3 В. Весь высокочастотный тракт, включая ЧМ детектор, УВЧ и гетеродин, собран на одной специализированной микросхеме DA1 типаК174ХА34. Эта микросхема представляет собой УВЧ смеситель, гетеродин, УПЧ, усилитель-ограничитель, ЧМ детектор, системы шумопонижения и сжатия …Подробнее...