Pengawas Arduino: Cara Kerjanya

pengawas Arduino

Dalam artikel baru ini kita akan melihat apa a penjaga, kegunaannya, dan cara menggunakannya dalam proyek Anda Arduino. Semua yang perlu Anda ketahui tentang fungsi menarik namun belum diketahui ini. Dan ya, seperti namanya (anjing pengawas), ini dapat digunakan untuk melacak beberapa masalah.

Di sini kita akan lihat Semua yang perlu Anda ketahui tentang…

Apa itu anjing penjaga?

Dalam komputasi, penjaga adalah mekanisme pengawasan yang digunakan untuk memantau pengoperasian suatu sistem atau program. Fungsi utamanya adalah mendeteksi dan merespons situasi abnormal atau kegagalan sistem, seperti crash atau macet, dan mengambil tindakan perbaikan untuk memastikan kelanjutan pengoperasian atau pemulihan sistem.

Anjing penjaga beroperasi pada pengatur waktu yang dikonfigurasi untuk interval waktu tertentu. Jika sistem atau program tidak melakukan tindakan tertentu atau memberi daya pada pengawas (yaitu memulai ulang) dalam interval waktu tersebut, pengawas berasumsi bahwa sistem berada dalam keadaan yang tidak diinginkan atau telah berhenti merespons dengan benar dan mengambil tindakan yang telah ditentukan. Tindakan ini mungkin berbeda-beda tergantung penerapannya dan mungkin termasuk me-reboot sistem, membuat log kesalahan, memicu alarm, atau mengambil langkah spesifik untuk memperbaiki masalah.

Pengawas digunakan pada berbagai sistem dan perangkat komputer, mulai dari sistem operasi dan server hingga perangkat sistem real-time yang tertanam dan kritis, termasuk Arduino. Tujuan utamanya adalah untuk meningkatkan keandalan dan ketersediaan sistem dengan mendeteksi dan merespons masalah secara otomatis, sehingga mengurangi kebutuhan intervensi manual dalam situasi kegagalan.

Apa itu pengawas Arduino?

buku tentang arduino

Timer pengawas Arduino harus disesuaikan dengan kebutuhan aplikasi. Dia Timer Pengawas menggunakan sumber clock internal 128 kHz (dapat bervariasi tergantung pada board dan MCU yang digunakan). Saat diaktifkan, ini mulai menghitung dari nol hingga nilai yang telah ditentukan pengguna. Jika Watchdog Timer tidak direset ketika mencapai nilai ini, mikrokontroler akan direset.

Mikrokontroler, atau MCU, adalah perangkat elektronik kecil yang mengintegrasikan unit pemrosesan pusat (CPU), memori, periferal input/output, dan terkadang antarmuka komunikasi dalam satu chip. Ini dirancang untuk mengontrol dan melaksanakan tugas tertentu.

Pengatur Waktu Pengawas ATMega328P, yang diterapkan di Arduino UNO, menawarkan 10 pengaturan waktu berbeda, masing-masing menentukan kapan pengatur waktu akan meluap dan karenanya menyebabkan pengaturan ulang. Interval waktu yang berbeda adalah sebagai berikut: 16 ms, 32 ms, 64 ms, 0.125 detik, 0.25 detik, 0.5 detik, 1 detik, 2 detik, 4 detik, dan 8 detik, seperti yang akan kita lihat nanti pada tabel yang saya sertakan.

Jika masih belum jelas apa yang dapat Anda lakukan dengan Watchdog Timer Arduino UNO, kita lihat saja nanti Sebuah contoh sehingga Anda dapat memahaminya secara grafis. Dalam contoh ini, kita akan menggunakan LED sederhana yang berkedip (blink). LED berkedip selama jangka waktu tertentu sebelum memasuki loop while(). Perulangan while() ini digunakan sebagai alternatif sistem pemblokiran. Karena Watchdog Timer tidak direset saat berada dalam loop while(), hal ini akan menyebabkan sistem reboot, dan LED akan mulai berkedip lagi sebelum sistem crash dan reboot. Siklus ini akan terus berlanjut…

Pertimbangan dan fitur

Pengatur Waktu Pengawas Itu dinonaktifkan di awal kode. Penundaan x detik dimasukkan sebelum mengaktifkan Watchdog. Penundaan ini sangat penting agar bootloader Arduino dapat memeriksa apakah kode baru sedang dimuat dan memberikan cukup waktu untuk membakar kode ke memori flash. Aspek ini relevan sebagai tindakan pencegahan. Suatu situasi mungkin timbul ketika, karena kesalahan pengkodean atau pertimbangan yang tidak tepat, kode yang tertulis mengatur ulang mikrokontroler pada interval yang sangat pendek tanpa batas. Hal ini dapat merusak papan Arduino dan mencegah kode diunggah dengan benar ke dalamnya. Jika ini terjadi, Anda perlu membakar bootloader menggunakan Arduino lain sebagai ISP pada Arduino yang terkunci...

Saat kita menggunakan pengawas Arduino, itu perlu digunakan register bit untuk menentukan perilaku chip. Register yang relevan dan artinya dirinci dalam lembar data mikrokontroler yang ada di papan Arduino. Namun, lingkungan pengembangan terintegrasi (IDE) Arduino hadir dengan beberapa fungsi dan makro yang dirancang untuk menyederhanakan proses ini, yang dapat diimpor dengan menyertakan perpustakaan #termasuk untuk menggunakan pengawas chip AVR.

Dengan cara ini, kita dapat mengkonfigurasi pengawas mengaktifkannya menggunakan fungsi wdt_enable(). Argumen fungsi ini menentukan waktu sebelum papan direset jika pengatur waktu belum direset. Adapun nilai-nilai yang dapat Anda konfigurasikan dalam kode, saya sertakan di sini:

Waktu sebelum pengawas dipicu argumen wtd_enable()
15 ms WDTO_15MS
30 ms WDTO_30MS
60 ms WDTO_60MS
120 ms WDTO_120MS
250 ms WDTO_250MS
500 ms WDTO_500MS
1 s WDTO_1S
2 s WDTO_2S
4 s WDTO_4S
8 s WDTO_8S
Untuk informasi lebih lanjut, Anda dapat melihat lembar data Arduino, di mana Anda dapat menemukan rincian lebih lanjut tentang mikrokontroler terintegrasi itu sendiri, register yang dapat digunakan dengan pengawas, pinout, periferal, spesifikasi teknis, voltase, konsumsi daya, dll.

Contoh penggunaan pengawas di Arduino

Arduino IDE, tipe data, pemrograman

Terakhir, mari kita lihat bagaimana watchdog digunakan secara praktis dengan contoh di Arduino IDE. Seperti yang bisa kita lihat, caranya cukup sederhana, Anda dapat menemukan berbagai kode sumber seperti ini di Internet, untuk dapat berlatih, memodifikasi, dan membuat kode Anda sendiri untuk menggunakan pengawas dalam proyek Anda. Mari kita lihat contoh kita:

#include <avr/wdt.h> // Incluir la biblioteca watchdog (wdt.h)
 
void setup()
{
  wdt_disable(); // Desactivar el watchdog mientras se configura, para que no se resetee
  wdt_enable(WDTO_2S); // Configurar watchdog a dos segundos
}
 
void loop()
{
  wdt_reset(); // Actualizar el watchdog para que no produzca un reinicio
  //Aquí iría el código de tu programa...
}

Seperti yang bisa dilihat pada contoh sketsa Arduino ini, ada tiga fungsi dari bahasa pemrograman yang luar biasa untuk mengelola anjing penjaga, dan ini adalah:

  • wdt_disable() untuk menonaktifkan pengatur waktu saat mengkonfigurasi Arduino.
  • wdt_aktifkan(waktu) untuk menetapkan interval ke pengatur waktu dan memulainya, menentukan waktu yang sesuai seperti yang telah saya tunjukkan pada tabel sebelumnya.
  • wdt_reset() untuk memperbarui interval yang ditetapkan dan agar program tidak dimulai ulang.

Tambahkan sebagai sumber pilihan