● online
- Kabel Jumper arduino Dupont Pelangi 30 cm Male to ....
- Raspberry Pi 4 Model B 8GB Original UK E14 Raspi 4....
- Arduino Mega 2560 R3 16U2 AtMega16u2 Mega2560 Mega....
- Modul Sensor Tegangan AC Bolak balik 220V Listrik ....
- ESP32 D1 Mini WiFi Bluetooth Dual Core Development....
- Jasa Cetak PCB....
- WEMOS D1 MINI PRO BOARD IoT ESP8266 WIFI PAKET LEN....
- LCD 16x2 / 1602 Display Arduino Raspberry LCD 16 x....
- 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
Sensor suhu lagi? Gpp ya disini kita belajar semua sensor suhu, nah tinggal sensor mana nih yang akan digunakan,... selengkapnya
Bagi orang-orang yang sering melihat konten-konten di aplikasi Instagram mungkin sudah tidak asing lagi, melihat gambar atau foto yang... selengkapnya
Bootstrap adalah sebuah framework yang dapat memudahkan seorang programmer web untuk mempercepat dan mempermudah dalam membuat dan mengembangkan website.... selengkapnya
Computerized Numerical Control (CNC) is a machine based on a stepper motor that can move according to the commands... selengkapnya
Tutorial kali ini akan membahas mengenai penggunaan sensor IR (infrared) untuk mengontrol AC / pendingin udara menggunakan jaringan... selengkapnya
Telegram adalah sebuah aplikasi chating yang cukup banyak penggunanya dan telegram ini dapat menjawab sendiri sesuai dengan perintah yang... selengkapnya
Blynk merupakan sebuah platform aplikasi android yang diperuntukan untuk berbagai kontroler hardware seperti arduino, esp8266, raspberry dsb untuk mengendalikan,... selengkapnya
LED adalah singkatan dari Light Emiting Diode, yang merupakan sebuah dioda yang dapat mengubah energi listrik menjadi cahaya, dan... selengkapnya
Sensor Waterflow adalah sensor yang dapat membaca aliran air pada suatu tempat/saluran air. Sensor ini digunakan untuk membaca... selengkapnya
CNC router merupakan sebuah mesin yang mempunyai kegunaan untuk memotong, mengukir/grafir dan membuat marking. Semua proses itu dapat dilakukan... selengkapnya
Dual Volt Amp Meter Digital Ampere Meter Voltmeter 10A 0-100V Ammeter Dilengkapi dengan pengukuran Voltmeter dan Amperemeter dalam 1 display… selengkapnya
Rp 26.500Kabel jumper Dupont untuk jumper Arduino atau Raspberry Pi 20 cm Male to Male 1 lembar = 40 kabel
Rp 11.300TILT SENSOR adalah sensor untuk mendeteksi sudut kemiringan / derajat, dimana cara kerja sensor ini adalah dengan menggunakan 2 buah… selengkapnya
Rp 9.800Bosan dengan modul arduino yang kalian punya, saatnya mencoba modul programmer yang lain yah ini dia RASPBERRY PI 4 COMPUTER… selengkapnya
Rp 1.545.000Spesifikasi: Microcontroller: ATmega328 SMD Operating Voltage: 5V Input Voltage (recommended): 7-12V Digital I/O Pins: 14 (of which 6 provide PWM… selengkapnya
Rp 74.500Penurun tegangan DC-DC ekonomis yang bisa distel tegangan output nya. Cocok untuk pemasangan variasi mobil dan sepeda motor, dijadikan charger… selengkapnya
Rp 9.000Kabel jumper Dupont untuk jumper Arduino atau Raspeberry Pi 20 cm Female to female 1 lembar = 40 kabel
Rp 11.300Features and Specs: Dual-Core, 32-bit ARM Cortex M0+ Processor Clocked at 48MHz (default), configurable max to 133MHz. Ready with USB… selengkapnya
Rp 82.900ESP-WROOM-32 is Powered by Espressif’s most advanced SoC, the ESP-WROOM-32 features high performance, a wide range of peripherals, Wi-Fi and… selengkapnya
Rp 38.400Temperature and humidity transmitter SHT20 sensor industrial grade high precision temperature and humidity monitoring Modbus RS485 (MD02) MODBUS debugging assistant… selengkapnya
Rp 96.800
Saat ini belum tersedia komentar.