Code Smarthome
Code Smarthome
Code Smarthome
h>
#include <Wire.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <WiFiClient.h>
#include "DHT.h"//Memasukkan library DHT11
#include <Adafruit_GFX.h> //untuk OLED
#include <Adafruit_SSD1306.h> //untuk OLED
#include <NTPClient.h>
#include <WiFiUdp.h>
//define OLED
#define SCREEN_WIDTH 128 // lebar layar OLED, dalam piksel
#define SCREEN_HEIGHT 64 // Tinggi tampilan OLED, dalam piksel
//deklarasi komunikasi serial OLED, yaitu komunikasi I2C
#define OLED_RESET -1 // Reset pin
#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
const long utcOffsetInSeconds = 3600*7; //7 adalah nilai dari GMT+7 (WIB)
char daysOfTheWeek[7][12] = {"Minggu", "Senin ", "Selasa", "Rabu ","Kamis ", "Jumat
", "Sabtu "};
//NTP Server yang digunakan
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org", utcOffsetInSeconds);
#define LEDpenerangandalam D7
#define DHTPIN D4 //Menentukan pin untuk data
#define DHTTYPE DHT11 //Mendefinisikan tipe DHT yang dipakai
DHT dht(DHTPIN, DHTTYPE); //Pengenalan sensor DHT
int sensorApi = D5;
int LEDsensorApi = D3;
int LEDsensorLDR = D6;
int sensor_LDR = A0;
BLYNK_WRITE(V0)
{
int pinValue = param.asInt();Serial.println("dalam main");
digitalWrite(LEDpenerangandalam,pinValue);
}
void setup()
{
// put your setup code here, to run once:
Serial.begin(9600);
Wire.begin();
pinMode(sensorApi, INPUT);
pinMode(LEDsensorApi, OUTPUT);
pinMode(LEDpenerangandalam,OUTPUT);
digitalWrite(LEDsensorApi, LOW);
pinMode(sensor_LDR, INPUT);
pinMode(LEDsensorLDR, OUTPUT);
digitalWrite(LEDsensorLDR, LOW);
void loop()
{
Serial.println("=================");
sensorFire();
sensorDHT11();
OLED();
NTP_waktu();
yield();
Blynk.run();
Serial.println("=================");
}
void sensorDHT11()
{
dht.begin(); //Membuka jalur komunikasi DHT11
delay(2000); //Memberikan jeda selama 2000ms untuk pembacaan sensor
Serial.println(dht.readTemperature());
Serial.println(dht.readHumidity());
Blynk.virtualWrite(V1, dht.readTemperature()); //mengirimkan data ke Virtual pin
di Blynk Cloud
Blynk.virtualWrite(V2, dht.readHumidity()); //mengirimkan data ke Virtual pin di
Blynk Cloud
}
void sensorFire()
{
// put your main code here, to run repeatedly:
int nilaiSensor;
nilaiSensor=digitalRead(sensorApi);
Serial.print("Nilai sensor : ");
Serial.println(nilaiSensor);
if(nilaiSensor==0)
{
digitalWrite(LEDsensorApi, HIGH);
delay(100);
}
else
{
digitalWrite(LEDsensorApi, LOW);
delay(100);
}
}
int sensorLDR()
{
int nilaiLDR=analogRead(sensor_LDR);Serial.println(nilaiLDR);
Blynk.virtualWrite(V3, nilaiLDR); //mengirimkan data ke Virtual pin di Blynk Cloud
if(nilaiLDR <= 200)
{
digitalWrite(LEDsensorLDR, HIGH);Blynk.virtualWrite(V4, 1); //mengirimkan data ke
Virtual pin di Blynk Cloud
}
else if(nilaiLDR > 200)
{
digitalWrite(LEDsensorLDR, LOW);Blynk.virtualWrite(V4, 0); //mengirimkan data ke
Virtual pin di Blynk Cloud
}
delay(1000);
return nilaiLDR;
}
void OLED()
{
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("LDR, suhu, dan kelembaban");display.println();
display.print("LDR = ");display.println(sensorLDR());//beda antara display.print
dengan display.prinln
display.print("Suhu = ");display.println(dht.readTemperature());//display.print
memasukkan karakter dan melanjutkan karakter di kanannya
display.print("Kelembaban =
");display.println(dht.readHumidity());//display.println memasukkan karakter dan
melanjutkan karakter di bawahnya
display.display();
}
void cekwifi()
{
//memastikan koneksi dengan hotspot
Serial.print("Connecting to ");
Serial.println(ssid); //menampilkan nama hotspot ke Serial monitor
WiFi.begin(ssid, password); //memulai untuk terhubung WiFi
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected"); //menandakan sudah terkoneksi
Serial.println(WiFi.localIP()); //menampilkan Alamat IP
WiFi.mode(WIFI_STA);
}
void NTP_waktu()
{
display.setTextSize(1);
display.setTextColor(WHITE);
timeClient.update();
//menampilkan waktu pada OLED
display.setTextSize(1);
display.setCursor(0,57);
display.print(daysOfTheWeek[timeClient.getDay()]);
display.setTextSize(1);
display.setCursor(93,57);
printkurangdarinol(timeClient.getHours());
display.print(":");
printkurangdarinol(timeClient.getMinutes());
//display.print(":");
//printkurangdarinol(timeClient.getSeconds());
display.display();//menampilkan semua karakter di OLED
}