● online
- ESR Meter Digital LCR-T4 Tester Transistor Diode M....
- Power Supply 12V Adaptor 220VAC to 12VDC 2A Murni ....
- Kabel Jumper arduino Dupont Pelangi 30 cm Male to ....
- Relay Module 1 Channel Modul Relay 5V 10A 1 Channe....
- TANG CRIMPING PRESS SKUN RATCHET YTH SN-48B....
- 5V 700mA (3.5W) Isolated switch Power Supply Modul....
- Arduino Uno R3 Compatible ATmega328P DIP....
- Power module DC DC 9A 300W Step Down Buck Converte....
- 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…

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
Dulu kita sudah belajar untuk mengisi bootloader Arduino Uno ke IC Atmega328 juga, namun dengan jenis DIP (LIHAT DISINI).... selengkapnya
Pada kesempatan ini akan dijelaskan mengenai cara pembuatan export/download berupa file excel berdasarkan range tanggal yang dipilih. Filter ini... selengkapnya
Sensor DS18b20 merupakan sebuah sensor untuk mendeteksi suhu ruangan, namun bisa juga untuk suhu air tergantung dari jenis... selengkapnya
Arduino Pro Mini merupakan jenis Arduino yang berukuran kecil dibandingkan dengan Nano, Unodan Mega. Dengan ukuran yang kecil ini... selengkapnya
Sebagai seorang programmer tentu saja harus mempunyai kemampuan di bidang Bahasa pemograman karena landasan utama dalam membangun sebuah aplikasi... selengkapnya
MP3 DFPlayer merupakan sebuah modul elektronik yang berfungsi untuk memainkan sebuah suara yang filenya berketensi MP3. Seperti memutar sebuah... selengkapnya
Pada postingan sebelumnya sudah membahas tentang kontrol relay menggunakan Arduino di sini. Nah untuk kali ini saya akan membahasnya... selengkapnya
Dalam dunia edit-mengedit gambar, bagi orang yang sudah ahli memang sudah tidak heran lagi. Tetapi bagi orang yang awam... selengkapnya
Bagi anda yang belum tau cara menggunakan LED pada NodeMCU, pada artikel ini akan di bahas cara-caranya. Sebelum melangkah... selengkapnya
Siapa yang nggak kenal dengan running text? Running text merupakan sebuah teks berjalan pada sebuah papan yang berisi led-led... selengkapnya
Penurun tegangan DC-DC ekonomis yang bisa distel tegangan output nya. Cocok untuk pemasangan variasi mobil dan sepeda motor, dijadikan charger… selengkapnya
Rp 9.000Spesifikasi : – 16×2 – Warna Biru – Tegangan kerja : 5v Digunakan untuk keperluan display project seperti Arduino, Raspberry,… selengkapnya
Rp 17.000Mini Solderless Breadboard 400 Tie Points adalah breadboard 400 titik lubang, dengan ukuran yang compact sangat cocok untuk anda yang… selengkapnya
Rp 7.800Arduino Uno adalah board mikrokontroler yang berbasis ATmega328P. Arduino Uno memiliki 14 pin input/output digital (6 di antaranya dapat digunakan… selengkapnya
Rp 144.0000.66-inch OLED display module LCD module IIC/I2C interface FOR Wemos D1 MINI Shield 64×48
Rp 33.500Specifications: Operating voltage: DC3-5V Operating current: less than 20mA Sensor Type: Analog Detection Area: 40mmx16mm Production process: FR4 double-sided HASL… selengkapnya
Rp 3.000TECHNICAL SPECIFICATIONS: – Broadcom BCM2711, Quad core Cortex-A72 (ARM v8) 64-bit SoC @ 1.5GHz – 2GB LPDDR4-2400 SDRAM – 2.4… selengkapnya
Rp 1.200.000Dimmer AC 220 Volt 4000 Watt + Casing Aluminium Potensiometer untuk mengatur tegangan output min/max pada tegangan AC PLN 220V…. selengkapnya
Rp 52.500ASIS adalah perangkat Smart Soket listrik produk dari Indomaker.com. Nama ‘ASIS’ merupakan kependekan dari ‘Andika Smart IoT Socket’. Secara umum,… selengkapnya
Rp 120.000Modul sensor tegangan AC bolak balik 1 fasa ini menggunakan optocoupler sehingga tegangan input (AC) tidak akan mengganggu/membahayakan tegangan output… selengkapnya
Rp 21.000
Saat ini belum tersedia komentar.