Buka sketsa ESP8266-Alexa.ino dan unggah ke NodeMCU Anda (unduh info papan dari Board Manager di Arduino IDE). Yang perlu Anda ubah hanyalah Kredensial Wi-Fi dan Nama Perangkat.
Anda dapat menyesuaikan Nama Perangkat di sketsa ESP8266-Alexa.ino dan Sinyal yang keluar di sketsa IR-Alexa-Send.ino:
Unggah sketsa IR_REMOTE_read.ino ke Arduino Anda untuk membaca sinyal jarak jauh yang diterima dan merekam sinyal IR Anda yang diterima untuk referensi nanti seperti yang terlihat dalam tutorial ini:
Selanjutnya, buka IR-Alexa-Send.ino di Arduino IDE dan unggah ke Arduino Uno Anda (pastikan Anda mengubah info papan unggah ke UNO).
Sambungkan daya ke kedua modul dan sambungkan kabel di antaranya. Pastikan pemancar IR terhubung ke Terminal 3 UNO. Lihat skema terlampir untuk informasi lebih lanjut:
Sekarang masuk ke aplikasi Amazon Alexa Anda di perangkat seluler atau PC Anda, buka Smart Home Anda dan tekan "Tambah Perangkat" untuk menemukan setiap perintah yang Anda atur dalam sketsa ESP8266-Alexa.ino.
Setelah ditemukan, Anda dapat mengujinya menggunakan salah satu struktur perintah berikut:
Kode
- ESP8266-Alexa.ino
- IR-Alexa-Send.ino
- IR_REMOTE_read.ino
ESP8266-Alexa.inoC/C++
Ini ditulis ke Chip NodeMCU untuk Meniru Perangkat "WEMO" melalui Arduino IDE#include #include #include "fauxmoESP.h"// ----- -------------------------------------------------- ----------------------// Kredensial Wifi// ---------------------- -------------------------------------------------- -----#menentukan WIFI_SSID "linksys"#menentukan WIFI_PASS ""#menentukan SERIAL_BAUDRATE 115200fauxmoESP fauxmo;// -------------------------- -------------------------------------------------- -// Wifi// -------------------------------------------- ---------------------------------void wifiSetup() { // Setel modul WIFI ke mode STA WiFi.mode( WIFI_STA); // Hubungkan Serial.printf("[WIFI] Menghubungkan ke %s ", WIFI_SSID); WiFi.begin(WIFI_SSID, WIFI_PASS); // Tunggu sementara (WiFi.status() !=WL_CONNECTED) { Serial.print("."); penundaan(100); } Serial.println(); // Terhubung! Serial.printf("[WIFI] STATION Mode, SSID:%s, alamat IP:%s\n", WiFi.SSID().c_str(), WiFi.localIP().toString().c_str()); }// ----------------------------------------------- ------------------------------// Inisialisasi Pin// -------------- -------------------------------------------------- -------------#define RELAY_PIN1 13#define RELAY_PIN2 2#define RELAY_PIN3 14#define RELAY_PIN4 15void setup() { //inisialisasi pin relay pinMode(RELAY_PIN1, OUTPUT); digitalWrite(RELAY_PIN1, RENDAH); pinMode(RELAY_PIN2, OUTPUT); digitalWrite(RELAY_PIN2, RENDAH); pinMode(RELAY_PIN3, OUTPUT); digitalWrite(RELAY_PIN3, RENDAH); pinMode(RELAY_PIN4, OUTPUT); digitalWrite(RELAY_PIN4, RENDAH); // Init serial port dan bersihkan sampah Serial.begin(SERIAL_BAUDRATE); Serial.println(); Serial.println(); Serial.println("Sketsa demo FauxMo"); Serial.println("Setelah koneksi, minta Alexa/Echo untuk 'menghidupkan piksel' atau 'mematikan' atau 'menghidupkan relai' atau 'mematikan'"); // Wifi wifiSetup();// ----------------------------------------- ------------------------------------// Nama Perangkat Alexa// ------- -------------------------------------------------- -------------------- // Fauxmo fauxmo.addDevice("TV"); fauxmo.addDevice("GregsNetflix"); fauxmo.addDevice("Tidur"); fauxmo.addDevice("Kantor"); fauxmo.onMessage(panggilan balik);}// ---------------------------------------- -------------------------------------// Panggilan Operasi Alexa// ------ -------------------------------------------------- ---------------------void callback(uint8_t device_id, const char * device_name, bool state) { Serial.printf("[MAIN] %s state:%s \n", nama_perangkat, status ? "ON" :"OFF"); if ( (strcmp(nama_perangkat, "TV") ==0) ) { // segera sesuaikan relai! if (status) { digitalWrite(RELAY_PIN1, TINGGI); } else { digitalWrite(RELAY_PIN1, TINGGI); } } if ( (strcmp(device_name, "GregsNetflix") ==0) ) { // segera sesuaikan relai! if (status) { digitalWrite(RELAY_PIN2, TINGGI); } else { digitalWrite(RELAY_PIN2, RENDAH); } } if ( (strcmp(nama_perangkat, "Tidur") ==0) ) { // segera sesuaikan relai! if (status) { digitalWrite(RELAY_PIN3, TINGGI); } else { digitalWrite(RELAY_PIN3, RENDAH); } } if ( (strcmp(nama_perangkat, "Kantor") ==0) ) { // segera sesuaikan relai! if (status) { digitalWrite(RELAY_PIN4, TINGGI); } else { digitalWrite(RELAY_PIN4, RENDAH); } }}void loop() { fauxmo.handle(); penundaan (500); digitalWrite(RELAY_PIN1, RENDAH); digitalWrite(RELAY_PIN2, RENDAH); digitalWrite(RELAY_PIN3, RENDAH); digitalWrite(RELAY_PIN4, LOW);}
IR-Alexa-Send.inoC/C++
Ini diunggah ke Arduino UNO untuk membaca sinyal dari NodeMCU dan mengirimkan Sinyal IR yang sesuai melalui IR Transmitting Diode#include IRsend irsend;#define a 4#define b 5#define c 6# define d 7void setup() { Serial.begin(9600); pinMode(a, INPUT); pinMode(b, INPUT); pinMode(c, INPUT); pinMode(d, INPUT);}void loop() { if (digitalRead(a) ==HIGH) { irsend.sendNEC(0x57E3E817, 32); //Power Code Serial.println("TV"); penundaan (500); } if (digitalRead(b) ==HIGH) { irsend.sendNEC(0x57E354AB, 32); //Masukkan penundaan kunci(2000); irsend.sendNEC(0x57E39867, 32); //Penundaan Kunci Naik(1000); irsend.sendNEC(0x57E39867, 32); //Penundaan Kunci Naik(1000); irsend.sendNEC(0x57E39867, 32); //Penundaan Kunci Naik(1000); irsend.sendNEC(0x57E3B44B, 32); // Penundaan Tombol Kanan(1000); irsend.sendNEC(0x57E354AB, 32); //Masukkan penundaan(2000); irsend.sendNEC(0x57E354AB, 32); //Masukkan Serial.println("Kantor"); penundaan (500); } if (digitalRead(c) ==HIGH) { irsend.sendNEC(0x57E38679, 32); //Opsi Penundaan tombol(1500); irsend.sendNEC(0x57E3CC33, 32); //Tunda tombol bawah(700); irsend.sendNEC(0x57E3CC33, 32); //Tunda tombol bawah(700); irsend.sendNEC(0x57E3CC33, 32); //Tunda tombol bawah(700); irsend.sendNEC(0x57E3CC33, 32); //Tunda tombol bawah(700); irsend.sendNEC(0x57E3B44B, 32); // Penundaan Tombol Kanan(700); irsend.sendNEC(0x57E3B44B, 32); // Penundaan Tombol Kanan (900); irsend.sendNEC(0x57E38679, 32); //Tombol Opsi Serial.println("Pengatur Waktu Tidur"); penundaan (500); } if (digitalRead(d) ==HIGH) { irsend.sendNEC(0x57E34AB5, 32); //Netflix Kode Serial.println("Netflix Greg"); penundaan (500); }}
IR_REMOTE_read.inoC/C++
Gunakan Kode ini pada Arduino Anda untuk membaca Clicker Hits yang datang dari Remote Anda ke Penerima IR.//2017.06.22#include #include /* CARA MENYATAKAN LAYAR LCD PIN KIRI KE KANAN DENGAN PIN DI SISI ATAS * * GND - VCC - POT TENGAH - 12 - GND - 11 - NONE - NONE - NONE - NONE - 5 - 4 - 9 - 2 - VCC - GND * * POT HARUS MEMILIKI 5V DAN GND PADANYA DAN DAPAT MEMUTAR KNOB UNTUK MENGUBAH KONTRAS LCD */ LiquidCrystal lcd(12, 11, 5, 4, 9, 2); //9 bukannya 3 (PERLU UNTUK TRANSMITTER)int receiverpin =10;IRrecv irrecv(receiverpin);hasil decode_results;void setup() { lcd.begin(16, 2); pinMode(pin penerima, INPUT); Serial.begin(9600); irrecv.enableIRIn();}void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); irrecv.resume(); lcd.clear(); lcd.print(hasil.nilai, HEX); penundaan(150); }}
Skema
Ini adalah Skema Akhir Menghubungkan Arduino dengan NodeMCU (Modul Wi-Fi)