Oke teman teman, pada artikel yang berjudul Project IoT Suhu dan Kelembaban ini saya akan sharing lagi tentang salah satu project yang ada kaitan nya dengan internet.

Sebenarnya dulu juga sudah pernah saya upload atau posting tentang project IoT sederhana yang berjudul Project IoT ESP8266 ESP12E

Atau project yang lebih sederhana lagi di youtube dengan judul Membuat IoT Internet of Things Sederhana.

Nah kalau disini saya membuat ulang project tersebut dengan penambahan LCD sebagai display untuk mengetahui nilai suhu dan kelembaban yang terbaca pada sensor.

Alat dan Bahan

Alat dan bahan yang diperlukan dalam pembuatan project ini adalah :

  • ATmega328
  • 2x Kapasitor 100nF
  • 2x Kapasitor 22pF
  • Kristal 16MHz
  • LCD 16×2
  • 2x Resistor 10k
  • 1x Resistor 3k3
  • Modul GSM SIM800L
  • Adaptor Variabel

Gambar Rangkaian

Untuk gambar rangkaian nya kalian bisa lihat pada gambar berikut yang sudah saya gambar menggunakan software EAGLE PCB.

Coding Arduino

Nah sedangkan untuk coding arduino nya kalian bisa langsung aja copy baris coding berikut.

[sociallocker id=2480]
#include "SoftwareSerial.h"
#include <DHT11.h>
#include <LiquidCrystal.h>
int pin=6;
float temp, humi;
DHT11 dht11(pin); 
LiquidCrystal lcd(19, 18, 17, 16, 15, 14);
int relay=9;
SoftwareSerial mySerial(7, 8);
unsigned long PreviousMillis = 0; 
unsigned long intervalTime; 
unsigned long CurrentMillis;
  unsigned long interval=5*60000; 
void setup() {
  lcd.begin(16, 2);
  
  
  pinMode(relay,OUTPUT);
  // put your setup code here, to run once:
mySerial.begin(9600);
Serial.begin(9600);
delay(20000);
  mySerial.println("AT");
  delay(1000);
  lcd.setCursor(0,0);
  lcd.print("Cek GSM ");
  while (mySerial.available()){
    lcd.write(mySerial.read());
    //Serial.write(mySerial.read());
  
}
    delay(5000);
    lcd.clear();
}

void loop() {
  int err;
  
  if((err=dht11.read(humi, temp))==0)
  {
    lcd.setCursor(0,0);
    lcd.print("t:");
    lcd.print(temp,1);
    lcd.print("C  ");
    lcd.setCursor(9,0);
    lcd.print("H:");
    lcd.print(humi,0);
    lcd.println("%  ");
  }
  // put your main code here, to run repeatedly:
 CurrentMillis = millis();

if ( CurrentMillis < PreviousMillis ) // millis reset to zero?
  {
    intervalTime = CurrentMillis+interval;
    }

   updatedata();
  //kontrol();
}
void kontrol(){
   mySerial.println("AT+SAPBR=3,1,\"Contype\",\"GPRS\"");
delay(100);
 while (mySerial.available()){
    Serial.write(mySerial.read());}
    mySerial.println("AT+SAPBR=3,1,\"APN\",\"\"");
delay(100);
while (mySerial.available()){
    Serial.write(mySerial.read());}
    mySerial.println("AT+SAPBR=1,1");
delay(100);
while (mySerial.available()){
    Serial.write(mySerial.read());}
mySerial.println("AT+SAPBR=2,1");
delay(100);
while (mySerial.available()){
    Serial.write(mySerial.read());}
mySerial.println("AT+HTTPINIT");
delay(100);
while (mySerial.available()){
    Serial.write(mySerial.read());}
mySerial.println("AT+HTTPPARA=\"CID\",1");
delay(100);
while (mySerial.available()){
    Serial.write(mySerial.read());}
mySerial.println("AT+HTTPPARA=\"URL\",\"http://abc.xyz/kontrol.php\"");

delay(100);
  while (mySerial.available()){
    Serial.write(mySerial.read());}
mySerial.println("AT+HTTPACTION=0");
delay(4000);
while (mySerial.available()){
    Serial.write(mySerial.read());}
    //delay(1000);
mySerial.println("AT+HTTPREAD");
delay(500);  

while (mySerial.available()){
  char c = mySerial.read();
  Serial.write(c);
  if (c == '8' ) {
    mySerial.println("AT+HTTPTERM");
    lcd.setCursor(0,1);
    lcd.print("Keran Aktif    ");
   digitalWrite(relay,HIGH); 
    
  }
  if (c == '9' ) {
    mySerial.println("AT+HTTPTERM");
    lcd.setCursor(0,1);
    lcd.print("Keran Non Aktif   ");
    digitalWrite(relay,LOW); 
  }
}
}

void updatedata(){

   if ( CurrentMillis > intervalTime )  
  {
    intervalTime = CurrentMillis + interval;
    mySerial.println("AT+SAPBR=3,1,\"Contype\",\"GPRS\"");
delay(1000);
 while (mySerial.available()){
    Serial.write(mySerial.read());}
mySerial.println("AT+SAPBR=3,1,\"APN\",\"\"");
delay(1000);
while (mySerial.available()){
    Serial.write(mySerial.read());}
mySerial.println("AT+SAPBR=1,1");
delay(4000);
while (mySerial.available()){
    Serial.write(mySerial.read());}
mySerial.println("AT+SAPBR=2,1");
delay(1000);
while (mySerial.available()){
    Serial.write(mySerial.read());}
mySerial.println("AT+HTTPINIT");
delay(1000);
while (mySerial.available()){
    Serial.write(mySerial.read());}
    mySerial.println("AT+HTTPPARA=\"CID\",1");
delay(1000);
while (mySerial.available()){
    Serial.write(mySerial.read());}
    mySerial.print("AT+HTTPPARA=\"URL\",\"http://abc.com/tambah.php?t=");
mySerial.print(temp,0);
mySerial.print("&h=");
mySerial.print(humi,0);
mySerial.println("\"");
  delay(1000);
while (mySerial.available()){
    Serial.write(mySerial.read());}
mySerial.println("AT+HTTPACTION=0");
delay(4000);
while (mySerial.available()){
    Serial.write(mySerial.read());}
    delay(1000);
    mySerial.println("AT+HTTPREAD");
delay(5000);  
while (mySerial.available()){
    Serial.write(mySerial.read());}
    delay(3000);
    mySerial.println("AT+HTTPTERM");
  delay(2000);
    while (mySerial.available()){
    Serial.write(mySerial.read());}
    
  }
  
}

[/sociallocker]

Untuk file web nya bisa kalian download pada link yang sudah saya siapkan di akhir dari artikel ini.

Ingat kamu juga harus menyiapkan database pada hosting dan sesuaikan file web agar bisa terkoneksi dengan database yang sudah dibuat. Tidak tampilnya data pada website bisa jadi dikarenakan database yang belum terkoneksi pada script PHP nya.

Tampilan Web

Project IoT Suhu dan Kelembaban

Eksplorasi konten lain dari Duwi Arsana

Berlangganan untuk dapatkan pos terbaru lewat email.

6 gagasan untuk “Project IoT Suhu dan Kelembaban

Komentar anda

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.