● online
- Power Supply 12V Adaptor 220VAC to 12VDC 2A Murni ....
- Modul Sensor Tegangan AC Bolak balik 220V Listrik ....
- 5V 700mA (3.5W) Isolated switch Power Supply Modul....
- Kabel Jumper 10cm Dupont Pelangi 10 cm Female to F....
- Dimmer AC 4000W 220 Volt 4000 Watt 220V + Casing A....
- Kabel Jumper 10cm Dupont Pelangi 10 cm Male to Mal....
- DS3231SN DS3231 SN I2C RTC Module & Baterai Mo....
- Raspberry Pi 4 Model B 4GB Original UK E14 Raspi 4....
- Selamat Datang di Indomaker ❯ Silahkan pesan produk sesuai kebutuhan anda, kami siap melayani.
- Selamat Datang di Indomaker ❯ Silahkan pesan produk sesuai kebutuhan anda, kami siap melayani.
Kontrol AC (Air Conditioners) Menggunakan IR Remote dan NodeMCU
Tutorial kali ini akan membahas mengenai penggunaan sensor IR (infrared) untuk mengontrol AC / pendingin udara menggunakan jaringan internet. Masalah yang sering terjadi pada penggunaan AC adalah lupa untuk mematikannya yang mengakibatkan tunggakan listrik tiap bulan membengkak. Dengan adanya alat yang akan dibuat ini akan menjawab permasalah tersebut, karena kita bisa mengontrol kapan dan dari mana saja. Kontroler yang kita pakai adalah NodeMCU yang terhubung dengan jaringan WiFi. Untuk transmitter menggunakan IR LED (led inframerah), dan receiver tentunya AC sebagai objek yang akan kita kontrol. Lebih rincinya alat dan bahan yang diperlukan sebagai berikut :
- NodeMCU v3 Ch340, BELI
- IR LED transmitter, BELI
- Resistor 330 Ohm, BELI
- Transistor BC547, BELI
- Library IrRemoteEsp8266, download.
Catatan : untuk tahap pembelajaran, alat ini masih menggunakan jaringan WIFI local.
Rangkaian
Keterangan :
- PIN_OUT ke pin D2 NodeMCU
- Sumber 5v dari Pin VV NodeMCU
- GND ke GND
Rangkai sesuai gambar di atas. Selanjutnya buka Arduino IDE dan masukkan library IRemoteEsp8266 yang sudah didownload. Buka menu File > Examples > IRemoteESP8266 > pilih merk AC yang digunakan. Di sini menggunakan merk DAIKIN > pilih TurnOnDaikinAC. Silahkan upload sketch program tersebut sampai Done uploading. Ini merupakan percobaan menghidupkan AC secara langsung terlebih dahulu untuk memastikan IR berfungsi. Arahkan led IR ke AC jika berhasil maka AC akan menyala. Berikut ini merupakan perintah umum yang digunakan pada AC DAIKIN
Dari contoh sketch program di atas kita masukkan beberapa perintah yang kita inginkan pada web interface misalnya berupa button. Sketch programnya di bawah ini :
#include <Arduino.h> #include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> #include <ESP8266mDNS.h> #include <IRsend.h> #include <ir_Daikin.h> // Add this library: https://github.com/markszabo/IRremoteESP8266 #include <IRremoteESP8266.h> #define DELAY_BETWEEN_COMMANDS 1000 const uint16_t kIrLed = 4; // ESP8266 GPIO pin to use. Recommended: 4 (D2). IRDaikinESP ac(kIrLed); const char* ssid = "Indomaker"; const char* password = "cahbarongan"; ESP8266WebServer server(80); const int led = BUILTIN_LED; String rowDiv = " <div class=\"row\" style=\"padding-bottom:1em\">\n"; String endDiv = " </div>\n"; // Buttons are using the bootstrap grid for sizing - http://getbootstrap.com/css/#grid String generateButton(String colSize, String id, String text, String url) { return "<div class=\"" + colSize + "\" style=\"text-align: center\">\n" + " <button id=\"" + id + "\" type=\"button\" class=\"btn btn-default\" style=\"width: 100%\" onclick='makeAjaxCall(\"" + url + "\")'>" + text + "</button>\n" + "</div>\n"; } void handleRoot() { digitalWrite(led, 0); String website = "<!DOCTYPE html>\n"; website = website + "<html>\n"; website = website + " <head>\n"; website = website + " <meta charset=\"utf-8\">\n"; website = website + " <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n"; website = website + " <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n"; website = website + " <link rel=\"stylesheet\" href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css\">\n"; website = website + " </head>\n"; website = website + " <body>\n"; website = website + " <div class=\"container-fluid\">\n"; // ------------------------- Power Controls -------------------------- website = website + rowDiv; website = website + generateButton("col-xs-4", "acpower", "AC Power ON", "acpower"); website = website + generateButton("col-xs-4", "poweroff", "AC Power OFF", "poweroff"); website = website + generateButton("col-xs-4", "satpower", "Sat Power", "satpower"); website = website + endDiv; // ------------------------- Channel Controls -------------------------- website = website + rowDiv; website = website + generateButton("col-xs-3", "sschannel1", "1", "sschannel1"); website = website + generateButton("col-xs-3", "sschannel2", "2", "sschannel2"); //website = website + generateButton("col-xs-3", "sschannel3","---", "sschannel3"); website = website + generateButton("col-xs-3", "sschannel4", "3", "sschannel4"); website = website + generateButton("col-xs-3", "sstvsound", "TVS", "sstvsound"); website = website + endDiv; // ------------------------- Volume Controls -------------------------- website = website + rowDiv; website = website + generateButton("col-xs-12", "up", "Vol Up", "up"); website = website + endDiv; website = website + rowDiv; website = website + generateButton("col-xs-12", "down", "Vol Down", "down"); website = website + endDiv; // ------------------------- Satelite Controls -------------------------- // Not working well // website = website + rowDiv; // website = website + generateButton("col-xs-offset-4 col-xs-4", "satup","Sat Up", "satup"); // website = website + generateButton("col-xs-4", "satblue","Sat Blue", "satblue"); // website = website + endDiv; // website = website + rowDiv; // website = website + generateButton("col-xs-4", "satexit","Sat Exit", "satexit"); // website = website + generateButton("col-xs-4", "satdown","Sat Down", "satdown"); // website = website + generateButton("col-xs-4", "satok","Sat Ok", "satok"); // website = website + endDiv; // ------------------------- Chromecast -------------------------- website = website + rowDiv; website = website + generateButton("col-xs-12", "chromecast", "Chromecast", "chromecast"); website = website + endDiv; website = website + rowDiv; website = website + generateButton("col-xs-12", "togglesource", "TV Source", "togglesource"); website = website + endDiv; website = website + endDiv; website = website + " <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js\"></script>\n"; website = website + " <script src=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js\"></script>\n"; website = website + " <script> function makeAjaxCall(url){$.ajax({\"url\": url})}</script>\n"; website = website + " </body>\n"; website = website + "</html>\n"; server.send(200, "text/html", website); digitalWrite(led, 1); } void handleNotFound() { digitalWrite(led, 1); String message = "File Not Found\n\n"; message += "URI: "; message += server.uri(); message += "\nMethod: "; message += (server.method() == HTTP_GET) ? "GET" : "POST"; message += "\nArguments: "; message += server.args(); message += "\n"; for (uint8_t i = 0; i < server.args(); i++) { message += " " + server.argName(i) + ": " + server.arg(i) + "\n"; } server.send(404, "text/plain", message); digitalWrite(led, 1); } void setup(void) { ac.begin(); pinMode(led, OUTPUT); digitalWrite(led, 1); Serial.begin(115200); WiFi.begin(ssid, password); Serial.println(""); // Wait for connection while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("Connected to "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP()); if (MDNS.begin("esp8266")) { Serial.println("MDNS Responder Started"); } server.on("/", handleRoot); server.on("/acpower", []() { Serial.println("AC power"); ac.on(); ac.setFan(1); ac.setMode(kDaikinCool); #if SEND_DAIKIN ac.send(); #endif // SEND_DAIKIN server.send(200, "text/plain", "AC Power"); }); server.on("/poweroff", []() { Serial.println("Power Off"); ac.off(); #if SEND_DAIKIN ac.send(); #endif // SEND_DAIKIN server.send(200, "text/plain", "Power Off"); }); server.on("/sstvsound", []() { Serial.println("Surround Sound sstvsound"); //perintah //..... server.send(200, "text/plain", "Surround Sound sstvsound"); }); server.on("/down", []() { Serial.println("Sorround Sound Down"); //irsend.sendNEC(0x4BB6C03F, 32); server.send(200, "text/plain", "Volume Down"); }); server.on("/up", []() { Serial.println("Surround Sound Up"); //irsend.sendNEC(0x4BB640BF, 32); server.send(200, "text/plain", "Volume Up"); }); server.on("/sschannel1", []() { Serial.println("Surround Sound Channel 1"); //irsend.sendNEC(0x10, 32); server.send(200, "text/plain", "Surround Sound Channel 1"); }); server.on("/sschannel2", []() { Serial.println("Surround Sound Channel 2"); //irsend.sendNEC(0x810, 32); server.send(200, "text/plain", "Surround Sound Channel 2"); }); server.on("/sschannel3", []() { Serial.println("Surround Sound Channel 3"); //irsend.sendNEC(0x4BB6708F, 32); server.send(200, "text/plain", "Surround Sound Channel 3"); }); server.on("/sschannel4", []() { Serial.println("Surround Sound Channel 4"); //irsend.sendNEC(0x410, 32); server.send(200, "text/plain", "Surround Sound Channel 4"); }); server.on("/tvsource", []() { Serial.println("TV Source"); //irsend.sendNEC(0x20DFD02F, 32); server.send(200, "text/plain", "TV Source"); }); server.on("/togglesource", []() { Serial.println("TV Source"); //irsend.sendNEC(0x20DFD02F, 32); //delay(DELAY_BETWEEN_COMMANDS); //irsend.sendNEC(0x20DFD02F, 32); server.send(200, "text/plain", "TV Source"); }); server.on("/satpower", []() { Serial.println("Sat Power"); //irsend.sendNEC(0xA25D7887, 32); server.send(200, "text/plain", "Sat Power"); }); server.on("/satok", []() { Serial.println("Sat Ok"); //irsend.sendNEC(0xA25DFA05, 32); server.send(200, "text/plain", "Sat OK"); }); server.on("/satexit", []() { Serial.println("Sat Exit"); //irsend.sendNEC(0xA25D06F9, 32); server.send(200, "text/plain", "Sat Exit"); }); server.on("/satup", []() { Serial.println("Sat UP"); //irsend.sendNEC(0xA25DC03F, 32); server.send(200, "text/plain", "Sat UP"); }); server.on("/satdown", []() { Serial.println("Sat Down"); //irsend.sendNEC(0xA25D7A85, 32); server.send(200, "text/plain", "Sat Down"); }); server.on("/satblue", []() { Serial.println("Sat Blue"); //irsend.sendNEC(0xA25D52AD, 32); server.send(200, "text/plain", "Sat Blue"); }); server.on("/chromecast", []() { Serial.println("Chromecast"); //irsend.sendNEC(0x20DFD02F, 32); //delay(DELAY_BETWEEN_COMMANDS); //irsend.sendNEC(0x20DFD02F, 32); //delay(DELAY_BETWEEN_COMMANDS); //irsend.sendNEC(0x4BB6906F, 32); server.send(200, "text/plain", "Chromecast"); }); server.onNotFound(handleNotFound); server.begin(); Serial.println("HTTP Server Started"); } void loop(void) { server.handleClient(); }
Hasil tampilannya berikut ini…
![](http://indomaker.com/wp-content/uploads/2019/12/tam.png)
Selanjutnya silahkan coba dengan menekan ON/OFF jangan lupa untuk mengarahkan IR LED ke object. Semoga berhasil.
Kontrol AC (Air Conditioners) Menggunakan IR Remote dan NodeMCU
Oke kali ini akan membahas seputar sensor fingerprint, dimana fungsi dari fingerprint ini adalah sebagai validasi data identitas dengan... selengkapnya
Aktivitas manusia dalam kehidupan sehari-harinya tentu tidak jauh dari mendengarkan musik, menonton film atau streaming youtube baik untuk... selengkapnya
Phyton merupakan bahasa yang sangat populer saat ini. Bahasa yang dibuat oleh Guido Van Rossum pada tahun 1991 ini... selengkapnya
Semangat pagi semua, kali ini kita akan belajar mengenai penggunaan LCD pada Arduino tanpa module I2C. Kenapa perlu belajar... selengkapnya
Pemanfaatan sebuah sensor bisa dijadikan berbagai fungsi, nah kali ini kita akan belajar untuk memonitoring sensor menggunakan WIFI yang... selengkapnya
Semangat pagi, salam hangat dari saya untuk semua pengunjung indomaker.com. Kali ini kita akan belajar mengenai penggunaan timer relay... selengkapnya
LoRa merupakan singkatan dari Long Range, dimana module ini menggunakan frekuensi radio dengan jarak yang jauh dan konsumsi daya... selengkapnya
TM1637 merupakan sebuah komponen elektronika yang terdiri dari 4 digit 7 segment. Pada pembahasan sebelumnya kita sudah mempelajari apa itu... selengkapnya
Hallo pada artikel kali ini, saya akan memberikan cara menampilkan teks pada LCD dengan NodeMCU. Bagi anda yang sudah... selengkapnya
Hallo kali ini saya akan membahas mengenai relay lagi yaitu relay 2 channel. Di pasaran, relay ini sudah menggunakan... selengkapnya
Fitur: -Dapat mendeteksi api atau panjang gelombang sumber cahaya dalam 760nm ~ 1100nm – Api lebih ringan mendeteksi jarak 80cm… selengkapnya
Rp 9.000Kabel jumper 20 cm merk Dupont untuk Arduino Female to male 1 lembar = 40 kabel
Rp 11.300Clone of the highest version of the Arduino platform with the ATmega2560 processor. It fully works with Arduino IDE. A… selengkapnya
Rp 292.000Tang Crimping Press Skun Ratchet YTH SN-48B Model YTH SN-48B FOR NON INSULATED TERMINAL YTH SN-48B dengan mata Press 0.5… selengkapnya
Rp 150.0001 X LDR Sensor 5mm Cahaya 5528 Light Dependent Resistor LDR
Rp 4.000Dimmer AC 220 Volt 4000 Watt + Casing Aluminium Potensiometer untuk mengatur tegangan output min/max pada tegangan AC PLN 220V…. selengkapnya
Rp 52.500Spesifikasi: 50mm Kapton Tape Polymide Film Gold High Temp isolasi Tahan Panas Harga Tertera: 1 Roll Kapton Tape Polymide Film… selengkapnya
Rp 75.000Support terus UKM indonesia dengan membeli produk-produk dalam negeri. Untuk kualitas tidak usah diragukan, udah kita tes QC dengan sangat… selengkapnya
Rp 8.500Warna : biru dan merah Bahan Alumunium 25T include baut 2 pcs
Rp 8.750Penurun tegangan DC-DC ekonomis yang bisa distel tegangan output nya. Cocok untuk pemasangan variasi mobil dan sepeda motor, dijadikan charger… selengkapnya
Rp 9.000
Saat ini belum tersedia komentar.