Pada kesempatan kali ini saya akan memberikan tutorial tentang pembuatan Home Automation dengan arduino ethernet dan monitoring suhu kelembaban. Jadi intinya kita akan mengontrol relay dan led via web server sebagai bahan simulasi output objek sebelum di implementasikan ke skala yang asli atau besar. Disini juga saya menambahkan monitoring suhu dan kelembaban menggunakan sensor DHT11 secara realtime.
Bahan Percobaan :
- Arduino Mega 2560
- Ethernet Shield
- 1 Relay (Bisa di sesuaikan dengan kebutuhan jika ingin banyak relay juga bisa 😀)
- 3 LED
- DHT11 (Sensor Suhu dan Kelembaban)
- 3 Resistor 220
- 1 Resistor 10K
- Kabel Jumper
Berikut ini merupakan video hasil percobaan :
Skema Rangkaian :
*note : Pada LED Menggunakan Resistor 220 dan pada DHT11 menggunakan resistor 10k
Konfigurasi :
- Karena pada percobaan ini saya menggunakan jaringan lokal saja, maka langkah awal qt lakukan bridge adapter pada pc/ laptop kita. silahkan klik disini untuk langkah - langkah bridge adapter.
*note: Sharing dilakukan pada wifi adapter dan di share ke ehternet adapter. karna pada percobaan ini kita memerlukan koneksi internet untuk mengload file CSS yang online. - Setting IP Address pada Ethernet adapter menjadi :
IP Address : 192.168.1.10
Netmask : 255.255.255.0
Gateway : 192.168.1.1 - Buka aplikasi Arduino IDE, kemudian pada tab Tools pada pilihan Board, Processor, dan Port sesuaikan dengan Arduino yang anda gunakan. (disini saya menggunakan arduino Mega 2560).
- Copy Paste kode dibawah kemudian upload ke Arduino anda
//////////BERBAGE ILMU//////////
#include <SPI.h>
#include <Ethernet.h>
#include <DHT.h>
#define DHTPIN 3
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
int relay1 = 2;
int lampu1 = 4;
int lampu2 = 5;
int lampu3 = 7;
boolean statusR1, statusR2, statusR3, statusR4 = false;
String readString;
char c;
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; /*SESUAIKAN DENGAN MAC ADDRESS ETHERNET SHIELD ANDA, INI MERUPAKAN DEFAULT MAC ADDRESS JIKA DI BELAKANG ETHERNET ANDA TIDAK ADA KETERANGAN MAC ADDRESS*/
IPAddress ip(192, 168, 1, 177);
EthernetServer server(80);
void setup() {
pinMode(relay1, OUTPUT);
pinMode(lampu1, OUTPUT);
pinMode(lampu2, OUTPUT);
pinMode(lampu3, OUTPUT);
Serial.begin(9600);
while (!Serial) { ; }
Ethernet.begin(mac, ip);
server.begin();
dht.begin();
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(t) || isnan(h)) {
Serial.println("Failed to read from DHT");
} else {
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C");
}
EthernetClient client = server.available();
if (client) {
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
c = client.read();
if (readString.length() < 100) {
readString += c;
}
if (c == '\n' && currentLineIsBlank) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.println("<HTML>");
client.println("<HEAD>");
client.println("<meta http-equiv=\"Refresh\" content=\"4; url=/ControlingDio\" />");
client.println("<meta http-equiv=\"Content-Type\" content=\"application/vnd.wap.xhtml+xml; charset=utf-8\" />");
client.println("<link type=\"text/css\" rel=\"stylesheet\" href=\"http://haidao.mw.lt/js_css/css_pages.css\" />"); // LINK CSS ONLINE, JIKA TIDAK INGIN DI AKSES JADIKAN KOMENTAR SAJA //
client.println("<TITLE>Room Automation</TITLE>");
client.println("</HEAD>");
client.println("<BODY align=\"center\" bgcolor=\"#34495E\">");
client.println("<h1><p align=\"left\">Kontrol by Dio Toar </h1>");
client.println("<hr />");
client.println("<br />");
client.println("<br />");
client.println("<table align=\"center\"><tr>");
client.println("<th width=\"10%\">Nama Perangkat</th>");
client.println("<th width=\"10%\">Status Perangkat</th>");
client.println("<th width=\"10%\">Saklar ON/OFF</th></tr>");
client.println("<tr class=\"trh1\"><td align=\"left\">");
client.println(" ");
client.println(" ");
client.println("AC");
client.println("</td><td align=\"center\">");
if (statusR1 == false) {
client.println("<b>MATI</b>");
} else {
client.println("<b>HIDUP</b>");
}
client.println("</td><td align=\"center\">");
if (statusR1 == false) {
client.println("<a href=\"/1on\" />HIDUP</a>");
} else {
client.println("<a href=\"/1off\" />MATI</a>");
}
client.println("</td></tr>");
client.println();
client.println("<tr class=\"trh2\"><td align=\"left\">");
client.println(" ");
client.println(" ");
client.println("Lampu Kamar");
client.println("</td><td align=\"center\">");
if (statusR2 == false) {
client.println("<b>MATI</b>");
} else {
client.println("<b>HIDUP</b>");
}
client.println("</td><td align=\"center\">");
if (statusR2 == false) {
client.println("<a href=\"/2on\" />HIDUP</a>");
} else {
client.println("<a href=\"/2off\" />MATI</a>");
}
client.println("</td></tr>");
client.println();
client.println("<tr class=\"trh1\"><td align=\"left\">");
client.println(" ");
client.println(" ");
client.println("Lampu Belajar");
client.println("</td><td align=\"center\">");
if (statusR3 == false) {
client.println("<b>MATI</b>");
} else {
client.println("<b>HIDUP</b>");
}
client.println("</td><td align=\"center\">");
if (statusR3 == false) {
client.println("<a href=\"/3on\" />HIDUP</a>");
} else {
client.println("<a href=\"/3off\" />MATI</a>");
}
client.println("</td></tr>");
client.println();
client.println("<tr class=\"trh2\"><td align=\"left\">");
client.println(" ");
client.println(" ");
client.println("Lampu Toilet");
client.println("</td><td align=\"center\">");
if (statusR4 == false) {
client.println("<b>MATI</b>");
} else {
client.println("<b>HIDUP</b>");
}
client.println("</td><td align=\"center\">");
if (statusR4 == false) {
client.println("<a href=\"/4on\" />HIDUP</a>");
} else {
client.println("<a href=\"/4off\" />MATI</a>");
}
client.println("</td></tr>");
client.println();
client.println("<H2>");
client.print("Humidity: ");
client.println("</H2>");
client.println("<p />");
client.println("<H1>");
client.print(h);
client.print(" %\t");
client.println("</H1>");
client.println("<p />");
client.println("<H2>");
client.print("Temperature: ");
client.println("</H2>");
client.println("<H1>");
client.print(t);
client.println(" °");
client.println("C");
client.println("</H1>");
client.println("</BODY>");
delay(1);
client.stop();
if (readString.indexOf("1on") >0){
digitalWrite(relay1, HIGH);
statusR1 = true;
}
if (readString.indexOf("1off") >0){
digitalWrite(relay1, LOW);
statusR1 = false;
}
if (readString.indexOf("2on") >0){
digitalWrite(lampu1, HIGH);
statusR2 = true;
}
if (readString.indexOf("2off") >0){
digitalWrite(lampu1, LOW);
statusR2 = false;
}
if (readString.indexOf("3on") >0){
digitalWrite(lampu2, HIGH);
statusR3 = true;
}
if (readString.indexOf("3off") >0){
digitalWrite(lampu2, LOW);
statusR3 = false;
}
if (readString.indexOf("4on") >0){
digitalWrite(lampu3, HIGH);
statusR4 = true;
}
if (readString.indexOf("4off") >0){
digitalWrite(lampu3, LOW);
statusR4 = false;
}
if (c == '\n') {
currentLineIsBlank = true;
}
else if (c != '\r') {
currentLineIsBlank = false;
}
readString=""; } } } } }
Testing :
- Hubungkan Arduino dengan ethernet adapter pc/ laptop anda dengan menggunakan kabel LAN.
- Masuk pada CMD kemudian lakukan ping pada IP ethernet anda. pada percobaan ini saya menggunakan IP Address 192.168.1.177. jika hasil ping Reaply maka ethernet sudah terhubung dengan PC/ Laptop kita.
- Pastikan anda sudah melakukan bridge adapter dan anda sudah terkoneksi internet pada wifi adapter anda.
- Buka Browser anda kemudian pada kolom url masukan IP Address 192.168.1.177
jika hasilnya seperti berikut anda sudah berhasil
Semoga bisa bermanfaat, percobaan kali ini merupakan refrensi dari Boarduino kemudian saya kembangkan. Selamat mencoba 😄😄👌
7 komentar
kenapa dht - nya salah?...............
salah gimana ya ??
kak butuh acces point juga ngga?
ini kenapa ya gan
exit status 1
Error compiling for board Arduino/Genuino Uno.
bang 4 relay donk
klo 4 relay ,perlu ditambahin char yg mana aja. plis