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
Eksplorasi konten lain dari Duwi Arsana
Berlangganan untuk dapatkan pos terbaru lewat email.
Bli misal pake wifi aja g usa pake gprs apanya yg diubah ya?
itu di artikel yang sudah di link di post sudah ada yang pakai wifi. kasikan modul wifi
https://duwiarsana.com/project-iot-esp8266-esp12e/
skematic Eaglenya bisa dicetak pd mesin cnc ya mas?… dan kalau boleh tanya apa masih punya Diptrace Unlimited mas? sebab yg saya dpt di free tersedia yg kecil
diptrace unlimited uda ga punya mas. kalau layout pcb memang bisa dicetak cnc tergantung mesin nya.
maaf mas agung, file webnya kok g bisa di download ya?
over download kayak nya mas, jadi uda ga bisa download lagi