2. Kontrol Terjadwal

Catatan untuk NodeMCU ESP8266: agar status device-nya bisa menjadi Online, silahkan menggunakan library ArduinoIoTCloud versi 1.8.0 dan Arduino_ConnectionHandler versi 0.7.1, dan upload program secara offline (menggunakan software IDE Arduino di komputer).

Catatan untuk ESP32: agar status devicenya bisa menjadi Online, rekan-rekan bisa menggunakan Editor Arduino online (seharusnya lancar tanpa masalah). Karena memang ESP32 didukung penuh dalam pengembangan Arduino IoT Cloud, sedangkan untuk NodeMCU ESP8266 belum menjadi prioritas.

Setelah di bagian pertama telah dibahas bagaimana menghubungkan NodeMCU dengan Arduino IoT Cloud, di bagian kedua ini akan dibahas bagaimana membuat kontrol alat yang dapat di-hidup/mati-kan secara terjadwal, secara berkala berulang setiap menit, setiap jam, setiap hari, atau setiap minggu, atau di waktu-waktu tertentu, menggunakan Arduino IoT Cloud dan NodeMCU. Ide kontrol terjadwal ini saya peroleh dari tutorial Arduino IoT Cloud Scheduler, yang dapat rekan-rekan buka di link ini: https://docs.arduino.cc/arduino-cloud/features/cloud-scheduler

Mengikuti sumber di atas, berikut ini langkah-langkah pembuatan kontrol terjadwal tersebut:
1. Buka kembali Thing yang sudah dibuat di bagian pertama. Tekan tombol Create untuk menciptakan Thing baru.

Gambar 1. Halaman Things, buat Thing baru dengan meng-klik tombol Create.

2. Buat Thing yang baru memiliki 4 buah variabel berikut ini:

Nama Variable

Tipe Variable

Ijin Akses (Permission)

Update Policy

jadwal

CloudSchedule (Time | Schedule)

Read & Write

On change

waktu

CloudTime (Time | Time)

Read Only

On change

indikator

bool (Basic | Boolean)

Read Only

On change

counter

int (Basic | Integer Number)

Read Only

On change


3. Berikut ini berturut-turut tampilan saat penambahan keempat variable pada Thing yang baru.

Gambar 2. Ketika tombol Create ditekan, terbuka Tab Setup. Tekan tombol Add Variable

Gambar 3. Di jendela Add Variable, isi Name = jadwal, Type = pilih Time, pilih Schedule, 
isi Permission = Read & Write, Update = On Change

Gambar 4. Di jendela Add Variable berikutnya, isi Name = waktu, Type = pilih Time, pilih Time,
isi Permission = Read Only, Update = On Change

Gambar 5. Di jendela Add Variable berikutnya, isi Name = indikator, Type = pilih Basic, pilih Boolean,
isi Permission = Read Only, Update = On Change

Gambar 6. Di jendela Add Variable berikutnya, isi Name = counter, Type = pilih Basic, pilih Integer, 
isi Permission = Read Only, Update = On Change

Gambar 7. Setelah keempat variable ditambahkan, terlihat daftar 4 variable muncul di Tab Setup

4. Setelah penambahan variable, berikutnya menghubungkan keempat variable tersebut dengan sebuah Device. Berikut ini berturut-turut tampilan saat menambahkan sebuah Device NodeMCU.

Gambar 8. Klik tombol Select Device. Di jendela Associated Device, pilih Set Up New Device

Gambar 9. Muncul jendela Setup Device. Pilih Set up a 3rd Party device

Gambar 10. Pilih tipe ESP8266, pilih NodeMCU 1.0 (ESP-12E Module), klik Continue 

Gambar 11. Muncul isian nama Device, berikan nama yang lain atau biarkan saja, klik Next

Gambar 12. Muncul kode Device ID dan Secret Key, klik download the pdf untuk menyimpan kedua kode tersebut, kemudian beri centang di tulisan "I saved my ...", klik Continue

Gambar 13. Isi pdf yang didownload, berisi nama Device, ID dan Secret Key

Gambar 14. Setelah mendapatkan Device ID dan Secret Key, maka setup Device selesai, klik Done

Gambar 15. Di bagian Associated Device, di Tab Setup, muncul nama Device, ID, tipe dan statusnya

5. Setelah mengatur device yang dihubungkan (di bagian Associated Device) selesai, berikutnya adalah mengatur bagian Network. Klik tombol Configure. Di jendela Configure Network, isi Wi-Fi Name dan Password dengan nama dan password hotspot Wi-Fi, dan isi Secret Key dengan kode Secret Key di pdf yang telah didownload. Tekan tombol Save.

Gambar 16. Isi nama dan password hotspot Wi-Fi dan kode Secret Key, klik Save

6. Dengan terisinya ketiga bagian di Tab Setup, yaitu Cloud Variables, Associated Device dan Network, maka bagian Tab Setup telah selesai. Berikutnya dilanjutkan dengan pembuatan kode program di Tab Sketch. Terlihat muncul angka 4 di Tab Setup, yang menandakan bahwa ada 4 variabel yang telah ditambahkan di Sketch atau draft program.

Gambar 17. Tab Setup telah terisi, berikutnya lanjutkan dengan pemrograman di Tab Sketch

7. Klik Tab Sketch. Terlihat kode program yang dibangkitkan, dengan 4 buah variable telah ditambahkan dalam kode program. Klik pada Open Full Editor untuk membuka Web Editor.

Gambar 18. Isi Tab Sketch, kode program dengan 4 variable telah ditambahkan dalam program

8. Sama seperti di bagian pertama, agar status Device NodeMCU bisa menjadi Online (Online = terhubung ke Cloud), perlu mengubah versi library ArduinoIoTCloud ke 1.8.0, dan library Arduino_ConnectionHandler ke versi 0.7.1  serta program harus diupload menggunakan software IDE Arduino. Untuk itu di Web Editor, klik kanan nama file di kotak Sketchbook, kemudian pilih Download Sketch.

Gambar 19. Di Web Editor, klik kanan nama file, pilih Download Sketch

9. Setelah Sketch terdownload, Ekstrak file tersebut, tempatkan di dalam folder Arduino di Documents, dan klik 2 kali pada file dengan ekstensi ino untuk membuka software IDE Arduino. Setelah Sketch terbuka, di Tab program utama (*.ino), hapus isinya, dan ganti dengan kode program berikut ini (Catatan: nama variable di sini disesuaikan dengan nama variable di Tabel langkah no. 2):
  1. #include "arduino_secrets.h"
  2. #include "thingProperties.h"
  3. bool toggle;
  4. void setup() {
  5.   pinMode(2,OUTPUT);
  6.   Serial.begin(9600);
  7.   delay(1500);
  8.   initProperties();
  9.   ArduinoCloud.begin(ArduinoIoTPreferredConnection);
  10.   setDebugMessageLevel(2);
  11.   ArduinoCloud.printDebugInfo();
  12. }
  13. void loop() {
  14.   ArduinoCloud.update();
  15.   if (jadwal.isActive()) {
  16.     indikator = true;
  17.     digitalWrite(2, HIGH);
  18.     if (toggle) {
  19.       counter = ++counter;
  20.       toggle = false;
  21.     }
  22.   } else {
  23.     indikator = false;
  24.     digitalWrite(2, LOW);
  25.     toggle = true;
  26.   }
  27.   if (ArduinoCloud.connected()) {
  28.     waktu = ArduinoCloud.getLocalTime();
  29.   }
  30. }
  31. void onJadwalChange() {
  32. }

10. Ketika Sketch didownload, isian nama dan password Wi-Fi serta kode Secret Key di bagian program arduino_secrets.h ternyata menjadi kosong. Untuk itu, isi lagi di bagian program arduino_secrets.h, nama dan password Wi-Fi, serta kode Secret Key yang dapat di-copy dari Secret Key di file pdf atau dari Tab Secret di Web Editor.

Gambar 20. Di Tab arduino_secrets.h, isi kembali nama dan password Wi-Fi serta Secret Key

11. Berikutnya, hubungkan NodeMCU ke port USB Komputer, kemudian atur Board dan Port di menu Tools. Gambar berikut menunjukkan pengaturan Board dan Port di software Arduino versi 2.0.3 dan versi 1.8.19.

Gambar 21(a). Atur Board = NodeMCU 1.0 dan Port = sesuai COM yang digunakan (Arduino 2.0.3)

Gambar 21(b). Atur Board = NodeMCU 1.0 dan Port = sesuai COM yang digunakan (Arduino 1.8.19)

12. Setelah pengaturan Board dan Port sudah benar, dan library yang benar sudah terinstal (ada 4 buah library yang harus diinstal, silahkan mengunduh file library di langkah no. 27), upload Sketch tersebut ke hardware NodeMCU. Gambar berikut menunjukkan upload program di software Arduino versi 2.0.3 dan versi 1.8.19.

Gambar 22(a). Upload program ke NodeMCU (Arduino 2.0.3)

Gambar 22(b). Upload program ke NodeMCU (Arduino 1.8.19)

13. Setelah upload selesai, buka Serial Monitor, tunggu hingga muncul tulisan "Connected to Arduino IoT Cloud". Apabila tulisan tersebut sudah muncul di Serial Monitor, seharusnya Status Device di Tab Setup halaman Thing menjadi Online.

Gambar 23. Setelah upload selesai, status Device seharusnya Online

14. Selain di Tab Setup, status Device juga dapat dilihat di halaman Devices.

Gambar 24. Status Device di halaman Devices terlihat Online

15. Setelah status Device Online, maka langkah berikutnya adalah mengatur tampilan variable di Dashboard. Klik Tab Dashboards, kemudian tekan tombol Create di halaman Dashboard.

Gambar 25. Tekan tombol Create di halaman Dashboard

16. Di tampilan Dashboard yang baru, ganti nama Untitled menjadi Kontrol Terjadwal.

Gambar 26. Tampilan Dashboard untuk Kontrol Terjadwal

17. Gambar-gambar berikut ini menampilkan langkah-langkah dalam menambahkan Widget untuk Dashboard Kontrol Terjadwal.

Gambar 27. Klik tombol Add, di Tab Widgets pilih Scheduler

Gambar 28. Di Widget Settings Scheduler, tekan tombol Link Variable

Gambar 29. Pilih Things yang baru, pilih Variables: jadwal, kemudian klik Link Variable

Gambar 30. Widget Scheduler telah terhubung dengan variable jadwal, klik Done

Gambar 31. Klik tombol Add, pilih Tab Widgets, pilih Time Picker

Gambar 32. Di Widget Settings Time Picker, klik tombol Link Variable

Gambar 33. Pilih Things yang baru, pilih Variables: waktu, klik tombol Link Variable

Gambar 34. Widget Time Picker telah terhubung dengan variable waktu, klik Done

Gambar 35. Klik tombol Add, pilih Tab Widgets, pilih LED

Gambar 36. Di Widget Settings LED, klik tombol Link Variable

Gambar 37. Pilih Things yang baru, pilih Widgets: indikator, klik Link Variable

Gambar 38. Widget LED telah terhubung dengan variable indikator

Gambar 39. Klik tombol Add, pilih Tab Widgets, pilih Value

Gambar 40. Di Widget Settings Value, klik tombol Link Variable

Gambar 41. Pilih Things yang baru, pilih Variables: counter, klik Link Variable

Gambar 42. Widget Value telah terhubung dengan variable counter

18. Setelah semua variable di Thing yang baru telah terhubung dengan widget, maka apabila status Device masih online, semua widget tersebut seharusnya menampilkan data variable.

Gambar 43. Ketika status Device Online, widget di Dashboard menampilkan data variable

19. Untuk menjalankan Kontrol Terjadwal ini, klik pada widget Scheduler. Di jendela Job Scheduler, isi tanggal dan jam waktu mulai, durasi atau lamanya dihidupkan, diulangi kapan saja, dan kapan berakhir. Setelah diisi, klik Done.

Gambar 44. Klik widget Scheduler, isi waktu mulai, durasi hidup, kapan berulang dan kapan berakhir 

20. Gambar-gambar berikut menunjukkan hasil pengaturan Scheduler terhadap nyala LED dan nilai counter.

Gambar 45. Scheduler dimulai dari jam 10:00:00, dan setiap menit, LED akan menyala 10 detik

Gambar 46. Ketika waktu menunjukkan jam 10:00:02, LED = ON dan counter = 1 

Gambar 47. Ketika waktu menunjukkan jam 10:00:37, LED = OFF dan counter = 1 

Gambar 48Ketika waktu menunjukkan jam 10:02:06, LED = ON dan counter = 3 

21. Klik pada tombol layout HP, dan lakukan penataan posisi dan ukuran widget seperti berikut.

Gambar 49. Tampilan Dashboard di HP

22. Berikutnya, setelah bisa menyalakan LED built-in di NodeMCU, diinginkan agar alat ini dapat juga menghidup/matikan alat elektronik lain. Untuk itu, diperlukan sebuah Relay. Untuk memudahkan pembuatan rangkaian Relay, maka sebaiknya menggunakan modul rangkaian yang sudah jadi, yang banyak tersedia di pasaran. Dalam contoh di sini, saya mengggunakan Relay 8 channel 5V, karena nanti di bagian ketiga, saya ingin bisa mengontrol lebih banyak alat (di toko-toko online, tersedia bermacam-macam modul relay, ada yang 1 channel, 2 channel, 4 channel, 8, channel, 16 channel). Saya menggunakan Relay 8 channel yang berbentuk seperti ini:
Gambar 50. Bentuk Modul rangkaian Relay 8 Channel 5V (Sumber: http://wiki.sunfounder.cc/index.php?title=8_Channel_5V_Relay_Module)
  
23. Relay pada modul rangkaian di atas membutuhkan tegangan 5V, sementara output dari NodeMCU hanya bertegangan 3,3V. Lalu bagaimana caranya agar Relay 5V tersebut bisa bekerja dengan tegangan NodeMCU yang hanya 3,3V tersebut? Untuk menjawab pertanyaan ini, akan lebih mudah apabila melihat gambar skematik rangkaian dari modul tersebut. Berikut ini gambar skematik rangkaian untuk setiap channel Relay:

Gambar 51. Skematik rangkaian untuk setiap channel Relay

24. Terlihat pada gambar skematik rangkaian di atas, ada IC optokopler, yang memiliki tegangan input VCC dan tegangan output JD-VCC. Tegangan input VCC ini, karena hanya digunakan untuk menyalakan LED pemancar, maka bisa diberi tegangan 3,3V. Sedangkan tegangan JD-VCC harus diberi tegangan 5V agar Relay bisa beroperasi. Lebih jelasnya, lihat gambar pengawatan berikut ini. 

Gambar 52. Pengawatan Modul Relay 5V dengan NodeMCU 3,3V

Cara agar Modul Relay 5V bisa dikontrol oleh NodeMCU 3,3V:
  1. Pada kaki VCC dan JD-VCC di Modul Relay 8 Channel di atas, biasanya diberi jumper seperti terlihat pada Gambar 50. Agar bisa dikontrol dengan NodeMCU, lepas jumper tersebut, sehingga kaki VCC dan JD-VCC terpisah.
  2. Hubungkan kaki D4 (GPIO2) NodeMCU dengan kaki In8 Modul Relay.
  3. Hubungkan kaki 3V (3,3V) NodeMCU ke Vcc Modul Relay.
  4. Hubungkan kaki VU (5V) NodeMCU ke JD-VCC Modul Relay.
  5. Hubungkan kaki GND NodeMCU ke GND Modul Relay.
25. Setelah pengawatan di atas dilakukan, buka Dashboard. Atur waktu di widget Scheduler, dan perhatikan nyala Relay ke-8. Setiap kali widget LED di Dashboard menyala, LED Built-in dan Relay akan OFF, dan setiap kali widget LED padam, LED Built-in dan Relay akan ON. Mengapa bisa terbalik? Karena rangkaian di LED Built-in dan Relay disusun secara Aktif Low, yaitu ketika diberi sinyal High malah OFF, sedangkan ketika diberi sinyal Low malah ON. Agar bisa sejalan dengan widget LED, maka buat kode program pada langkah no. 9 di atas, menjadi:
  • baris ke-17: digitalWrite(2, HIGH); ubah menjadi digitalWrite(2, LOW);
  • baris ke-24: digitalWrite(2, LOW); ubah menjadi digitalWrite(2, HIGH);

Berikut hasil pembuatan aplikasi Kontrol Terjadwal ini: 

Gambar 53(a). Seting jadwal: nyala dari detik ke-0 sampai ke-50 setiap menit, saat detik ke 51

Gambar 53(b). Seting jadwal: nyala dari detik ke-0 sampai ke-50 setiap menit, saat detik ke 17

Gambar 54(a). Seting jadwal: nyala dari detik ke-0 sampai ke-50 setiap menit, saat detik ke 55

Gambar 54(b). Seting jadwal: nyala dari detik ke-0 sampai ke-50 setiap menit, saat detik ke 37

26. Agar lebih jelas mengenai pembuatan Kontrol Terjadwal ini, silahkan rekan-rekan dapat melihat video berikut ini.

Video pembuatan Kontrol Terjadwal

27. Sampai di sini pembahasan mengenai pembuatan Kontrol Terjadwal. Pembahasan berikutnya, di bagian kedua, akan dijelaskan bagaimana memperbanyak Kontrol Terjadwal ini. Untuk file program NodeMCU dan Library yang digunakan di sini, silahkan bisa diunduh di bawah ini.

File download: kontrol1


No comments:

Post a Comment