NodeMCU Reset Sendiri? Begini Solusinya Kawan!

Halo para pembaca sekalian, Selamat Hari Ini!

Semoga semua pembaca selalu dalam keadaan sehat walafiat.

Pada artikel ini kita akan membahas tentang permasalahan yg terjadi pada NodeMCU.

NodeMCU memang terkadang memiliki banyak masalah. Dari mulai sisi hardware hingga masalah software atau firmware. Apakah kalian pernah mengalami, ketika membuat program dan dilakukan compile sudah berhasil. Selanjutnya ketika di upload juga berhasil.  Ketika Running juga sudah berjalan lancar, namun ternyata tiba-tiba reset. Itulah yang sering disebut sebagai “Auto Reset”, Apa penyebabnya?

Penyebabnya sebenarnya banyak. Bisa dari short circuit, Hang, atau bisa juga karena kehilangan daya. Namun pada artikel ini akan berfokus pada bahasan tentang auto reset yang disebabkan oleh programnya. Auto reset yang disebabkan oleh program artinya program tersebut melakukan reset pada dirinya sendiri karena ada error atau hang. Pada dasarnya, konsepnya sama seperti ketika kita menggunakan aplikasi di Android atau Windows yang tiba-tiba force close. 

Jadi, pada mikrokontroler sudah dibekali oleh program WDT pada firmwarenya. Pertanyaannya, Apa WDT itu? WDT adalah singkatan dari watchdog timer atau timer watchdog. WDT akan otomatis mereset program apabila program macet atau hang.

Jika alat yg kita buat posisinya ditempat yang mudah dijangkau, mungkin WDT tidak terlalu terasa pentingnya. Jika alat kita bermasalah karena program error, kita bisa memantaunya dari dekat dan tinggal pencet tombol reset untuk menormalkannya kembali.

Namun, jika alat yang Anda buat diletakkan di atas loteng, di atas tower, atau di atas gunung, apakah Anda tidak keberatan jika harus bersusah-susah naik ke sana hanya untuk mencet tombol reset?!

Ilmu tentang WDT ini sepele, tapi efeknya bisa menghemat biaya dan waktu. Misalnya jika Anda membuat alat IOT untuk mengisi air bak mandi otomatis yang dapat dikontrol melalui internet. Eh, ternyata eh ternyata tengah malam alatnya macet, padahal relay pompanya sedang aktif. Apa yang terjadi? Sudah pasti akan banjir.

Namun, pada kondisi tertentu program ini memang kadang merepotkan. Terlebih ketika kita baru menerapkan alias mengupload program baru. Jika kita lihat data di ESP8266 Arduino Core’s documentation.  Terdapat beberapa penyebab, diantaranya adalah sebagai berikut:

1. Interrupt Service Routines

Secara default, semua fungsi di compile ke dalam flash, yang berarti bahwa cache dapat digunakan untuk coding. Namun, cache saat ini tidak dapat digunakan karena adanya interupsi hardware. Artinya jika Anda memakai Hardware ISR, Seperti attachInterrupt(gpio, myISR, CHANGE) untuk mengganti GPIO., maka ISR harus memiliki IRAM_ATTR yg telah declare.

Solusinya adalah jangan menggunakan delay() atau yield() jika Anda menggunakan hardware ISR.

2. Asynchronous Callback

Program terlalu komplek sehingga prosesor NodeMCU tidak sanggup menjalankan.

3. Memori Penuh

Memory RAM pada ESP8266 penuh. Hal ini bisa dihindari dengan cara mengganti kode char dengan PROGMEM. Progmem akan menyimpan data program dalam memory flash. Jadi kita bisa menghemat RAM.

4. Stack

Ukuran Stack pada ESP8266 hanya sebesar 4KB. Hindari penggunaan object yang memiliki kemampuan untuk memanage intermal. seperti std::string, std::vector, maka gunakan char saja untuk menulis kalimat agar memorynya hemat.

Selain itu, hindari juga penggunaan arrays yang berlebihan karena akan menghabiskan memory stack.

Baca juga:

Last, itulah pembahasan tentang NodeMCU Selalu Reset Sendiri. Memang sebaiknya kita harus lebih cermat dalam  semoga bisa menjadi referensi dan bermanfaat bagi para pembaca sekalian.  Apabila Anda membutuhkan jasa pengerjaan project terkait Arduino IoT dan ingin memesan project bisa melakukan pemesanan dengan klik tombol dibawah ini:

Jika ada pertanyaan terkait pemesanan project bisa menghubungi – 081325645334 (Indobot Project)

1 thought on “NodeMCU Reset Sendiri? Begini Solusinya Kawan!”

Leave a Comment

whatsapp