Smart Light System based on Time

samrt light
This content provide you Experience

Smart light system based on time which turn off and on on your light and appliances at your given time. This system is based on RTC module and made by using ESP32

Component required

  • PCB board
  • Jumper wire
  • ESP32 microcontroller
  • RTC Module
  • OLED
  • LED
  • USB type B cable

Set up environment for ESP32 >> Click to this link https://elconics.com/getting-started-withesp32/

Install some libraries

Click on following links —

Install these Libraries by click on zip download

Include in Library manager — sketch>>include library >> add zip library

Select the downloaded file and click on open >> you see this notification in bottom of your IDE

Follow this same step and install all libraries given above

Connect OLED

Connect RTC module

connect both together in same ESP

Connect LED

Code create a new file and upload this code to your Arduino IDE.

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
#include <SPI.h>
#include <Wire.h>
#include "RTClib.h"
 
RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
 

 
 int led=26;
void setup() 
{
 
Serial.begin(9600);
pinMode(led,OUTPUT);
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
  }
  delay(2000);
  display.clearDisplay();

  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  // Display static text
  display.println("Elconic!");
  
  display.display(); 
 
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
 

 
//rtc.adjust(DateTime(__DATE__, __TIME__));
display.clearDisplay();
}
 
void loop()
{  delay(1000);
  display.clearDisplay();
 DateTime now = rtc.now();
 Serial.print(now.year(), DEC);
 Serial.print('/');
 Serial.print(now.month(), DEC);
 Serial.print('/');
 Serial.print(now.day(), DEC);
 Serial.print(" (");
 Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
 Serial.print(") ");
 Serial.print(now.hour(), DEC);
 Serial.print(':');
 Serial.print(now.minute(), DEC);
 Serial.print(':');
 Serial.print(now.second(), DEC);
 Serial.println();
 
 
//display.clearDisplay();
display.display(); 
   display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(0,0);
  display.println(daysOfTheWeek[now.dayOfTheWeek()]);
  display.setCursor(0,20);
  // Display static text
  display.println(now.hour(), DEC);
   display.setCursor(25, 20);
 display.println(":");
 display.setCursor(35, 20);
  display.println(now.minute(), DEC);
  display.setCursor(65, 20);
  display.println(":");
  display.setCursor(85, 20);
  display.println(now.second(), DEC);

display.display();
  display.setCursor(0, 40);
  // Display static text
   display.println(now.day(), DEC);
   display.setCursor(14, 40);
 display.println("/");
 display.setCursor(30, 40);
  display.println(now.month(), DEC);
   display.setCursor(60, 40);
  display.println("/");
  display.setCursor(80, 40);
  display.println(now.year(), DEC);
 

//  delay(1000);
display.display();
if ((now.hour()>=22 && now.minute()==00 )||( now.hour()<=6 && now.minute()==00))
{
  
  digitalWrite(led,LOW);
  
  
  }
  else
  {
    
    digitalWrite(led,HIGH);
    }

 





} 

Leave a Comment

Your email address will not be published. Required fields are marked *

Related post