Sensor Suhu ESP32 DS18B20 dengan Arduino IDE (Single, Multiple, Web Server)

Ini adalah panduan mendalam untuk sensor suhu DS18B20 dengan ESP32 menggunakan Arduino IDE. Kami akan menunjukkan cara menyambungkan sensor, menginstal pustaka yang diperlukan, dan menulis kode untuk mendapatkan pembacaan sensor dari satu dan beberapa sensor. Terakhir, kami akan membangun server web sederhana untuk menampilkan pembacaan sensor.

Anda mungkin juga suka membaca panduan DS18B20 lainnya:

    • Sensor SuhuESP8266 DS18B20 dengan Arduino IDE

    • Sensor SuhuESP32/ESP8266 DS18B20 dengan MicroPython

    • ESP32 denganBeberapa Sensor Suhu DS18B20

    • Sensor SuhuDS18B20 dengan Arduino

Memperkenalkan Sensor Suhu DS18B20

Sensor suhuDS18B20 adalah sensor suhu digital satu kabel. Ini berarti hanya memerlukan satu jalur data (dan GND) untuk berkomunikasi dengan ESP32 Anda.

Ini dapat didukung oleh catu daya eksternal atau dapat memperoleh daya dari jalur data (disebut "mode parasit"), yang menghilangkan kebutuhan akan catu daya eksternal.

Setiap sensor suhu DS18B20 memiliki kode serial 64-bit yang unik. Ini memungkinkan Anda untuk menghubungkan beberapa sensor ke kabel data yang sama. Jadi, Anda bisa mendapatkan suhu dari beberapa sensor hanya dengan satu GPIO.

Sensor suhu DS18B20 juga tersedia dalam versi tahan air.

Berikut ringkasan spesifikasi paling relevan dari sensor suhu DS18B20:

    • Berkomunikasi melalui komunikasi bus satu kabel

    • Rentang catu daya: 3.0V hingga 5.5V

    • Kisaran suhu pengoperasian: -55ºC hingga +125ºC

    • Akurasi +/-0,5 C (antara kisaran -10ºC hingga 85ºC)

Untuk informasi lebih lanjut, lihat lembar data DS18B20.

Bagian yang Diperlukan

Untuk mengikuti tutorial ini Anda memerlukan bagian-bagian berikut:

    • ESP32 (baca papan pengembangan ESP32 terbaik)

    • Sensor suhuDS18B20 (satu atau beberapa sensor) – versi tahan air

    • Resistor 4.7kOhm

    • Kabel jumper

    • Breadboard

Skema – ESP32

Seperti disebutkan sebelumnya, sensor suhu DS18B20 dapat diaktifkan melalui pin VDD (mode normal), atau dapat memperoleh kekuatannya dari jalur data (mode parasit). Anda dapat memilih salah satu mode.

Jika Anda menggunakan ESP32, ikuti salah satu dari dua diagram skematik ini.

Modus Parasit

Mode Normal

Mempersiapkan IDE Arduino Anda

Kami akan memprogram ESP32 menggunakan Arduino IDE, jadi pastikan Anda telah menginstal add-on ESP32 sebelum melanjutkan:

    • Instal ESP32Board di Arduino IDE (Windows, Mac OS X, dan instruksi Linux)

Menginstal Library

Untuk berinteraksi dengan sensor suhu DS18B20, Anda perlu menginstal library OneWire oleh Paul Stoffregen dan library Suhu Dallas. Ikuti langkah selanjutnya untuk menginstal perpustakaan tersebut.

    1. Buka Arduino IDE Anda dan buka Sketch > Include Library > Manage Library. Manajer Perpustakaan harus terbuka.

    2. Ketik "onewire" di kotak pencarian dan instal perpustakaan OneWire oleh Paul Stoffregen.

    3. Kemudian, cari "Dallas" dan instal perpustakaan DallasTemperature oleh Miles Burton.

Setelah menginstal perpustakaan, restart Arduino IDE Anda.

Kode (Single DS18B20)

Setelah menginstal perpustakaan yang diperlukan, Anda dapat mengunggah kode ke ESP32. Kode berikut membaca suhu dari sensor suhu DS18B20 dan menampilkan pembacaan pada Serial Monitor Arduino IDE.

Ada banyak cara berbeda untuk mendapatkan suhu dari sensor suhu DS18B20. Namun, jika Anda hanya menggunakan satu sensor, ini adalah salah satu cara termudah dan paling sederhana.

Cara Kerja Kode

Mulailah dengan menyertakan perpustakaan OneWire dan DallasTemperature.

Buat instance yang diperlukan untuk sensor suhu. Sensor suhu terhubung ke GPIO 4.

Dalam setup(), inisialisasi Serial Monitor pada baud rate 115200.

Inisialisasi sensor suhu DS18B20:

Sebelum benar-benar mendapatkan suhu, Anda perlu memanggil metode requestTemperatures() .

Kemudian, dapatkan suhu dalam Celcius dengan menggunakan metode getTempCByIndex() seperti gambar di bawah ini:

Atau gunakan getTempFByIndex() untuk mendapatkan suhu dalam Fahrenheit.

Metode getTempCByIndex() dan getTempFByIndex() menerima indeks sensor suhu. Karena kita hanya menggunakan satu sensor maka indeksnya adalah 0. Jika ingin membaca lebih dari satu sensor, gunakan indeks 0 untuk satu sensor, indeks 1 untuk sensor lainnya, dan seterusnya.

Terakhir, print hasilnya di Serial Monitor.

Pembacaan suhu baru diminta setiap 5 detik.

Demonstrasi

Setelah mengunggah kode, pembacaan sensor Anda akan ditampilkan di Serial Monitor:

Mendapatkan Suhu dari Beberapa Sensor Suhu DS18B20

Sensor suhu DS18B20 berkomunikasi menggunakan protokol satu kabel dan setiap sensor memiliki kode serial 64-bit yang unik, sehingga Anda dapat membaca suhu dari beberapa sensor hanya dengan menggunakan satu GPIO. Anda hanya perlu menyambungkan semua jalur data seperti yang ditunjukkan pada diagram skematik berikut:

Kode (Beberapa DS18B20s)

Kemudian, unggah kode berikut. Ini memindai semua perangkat di GPIO 4 dan mencetak suhu untuk masing-masing perangkat. (Sketsa ini didasarkan pada contoh yang diberikan oleh perpustakaan DallasTemperature).

Demonstrasi

Dalam contoh ini, kami menggunakan tiga sensor suhu DS18B20. Inilah yang kami dapatkan di Serial Monitor Arduino IDE.

Kami memiliki artikel khusus tentang cara menghubungkan beberapa sensor suhu DS18B20 dengan EPS32. Ikuti saja tutorial selanjutnya:

    ESP32 denganBeberapa Sensor Suhu DS18B20

Menampilkan Pembacaan Suhu DS18B20 di Server Web

Untuk membangun server web, kami akan menggunakan pustaka ESPAsyncWebServer yang menyediakan cara mudah untuk membangun server web asinkron. Membangun server web asinkron memiliki beberapa keuntungan. Kami merekomendasikan untuk melihat sekilas dokumentasi perpustakaan di halaman GitHub-nya.

Memasang pustaka ESPAsyncWebServer dan AsyncTCP

Anda perlu menginstal pustaka berikut di Arduino IDE Anda untuk membangun server web untuk proyek ini.

    ESPAsyncWebServer (folder .zip)

    AsyncTCP (folder .zip)

Library ESPAsyncWebServer, AsynTCP, dan ESPAsyncTCP tidak tersedia untuk diinstal melalui Arduino Library Manager, jadi Anda perlu menyalin file library ke folder Library instalasi Arduino. Atau, di Arduino IDE Anda, Anda bisa pergi ke Sketch > Include Library > Add .zip Library dan pilih library yang baru saja Anda unduh.

Kode (DS18B20 Async Web Server)

Buka Arduino IDE Anda dan salin kode berikut.

Masukkan kredensial jaringan Anda dalam variabel berikut dan kode akan langsung bekerja.

Cara Kerja Kode

Dalam paragraf berikut kami akan menjelaskan cara kerja kode. Teruslah membaca jika Anda ingin mempelajari lebih lanjut atau lompat ke bagian “Demonstrasi” untuk melihat hasil akhirnya.

Mengimpor Library

Pertama, impor pustaka yang diperlukan untuk papan ESP32:

Instansiasi Sensor DS18B20

Tentukan GPIO yang terhubung dengan pin data DS18B20. Dalam hal ini, terhubung ke GPIO 4.

Buat instance yang diperlukan untuk menginisialisasi sensor:

Mengatur Kredensial Jaringan Anda

Masukkan kredensial jaringan Anda dalam variabel berikut, sehingga ESP8266 dapat terhubung ke jaringan lokal Anda.

Buat objek AsyncWebServer pada port 80.

Baca Fungsi Suhu

Kemudian, kami membuat dua fungsi untuk membaca suhu.

Fungsi readDSTemperatureC() mengembalikan pembacaan dalam derajat Celcius.

Jika sensor tidak bisa mendapatkan pembacaan yang valid, ia mengembalikan -127. Jadi, kami memiliki pernyataan if yang mengembalikan dua tanda hubung (–-) jika sensor gagal mendapatkan pembacaan.

Fungsi reaDSTemperatureF() bekerja dengan cara yang sama tetapi mengembalikan pembacaan dalam derajat Fahrenheit.

Pembacaan dikembalikan sebagai tipe string. Untuk mengonversi float menjadi string, gunakan fungsi String().

Membangun Halaman Web

Langkah selanjutnya adalah membangun halaman web. HTML dan CSS yang diperlukan untuk membangun halaman web disimpan pada variabel index_html.

Dalam teks HTML kita memiliki TEMPERATUREC dan TEMPERATUREF di antara tanda-tanda %. Ini adalah pengganti untuk nilai suhu.

Artinya teks %TEMPERATUREC% ini seperti variabel yang akan diganti dengan nilai suhu sebenarnya dari sensor. Placeholder pada teks HTML harus berada di antara tanda %.

Kami telah menjelaskan dengan sangat rinci bagaimana HTML dan CSS yang digunakan di server web ini bekerja di tutorial sebelumnya. Jadi, jika Anda ingin mempelajari lebih lanjut, lihat proyek berikutnya:

    Server WebSuhu dan Kelembaban DHT11/DHT22 dengan Arduino IDE

Prosesor

Sekarang, kita perlu membuat fungsi processor(), yang akan menggantikan placeholder dalam teks HTML kita dengan nilai suhu aktual.

Saat halaman web diminta, kami memeriksa apakah HTML memiliki placeholder. Jika menemukan %TEMPERATUREC% placeholder, kami mengembalikan suhu dalam Celcius dengan memanggil fungsi readDSTemperatureC() yang dibuat sebelumnya.

Jika placeholder adalah %TEMPERATUREF%, kami mengembalikan suhu dalam Fahrenheit.

setup()

Di setup(), inisialisasi Serial Monitor untuk keperluan debugging.

Inisialisasi sensor suhu DS18B20.

Hubungkan ke jaringan lokal Anda dan cetak alamat IP ESP32.

Terakhir, tambahkan baris kode berikutnya untuk menangani server web.

Saat kami membuat permintaan pada URL root, kami mengirim teks HTML yang disimpan dalam variabel index_html. Kita juga perlu melewati fungsi prosesor, yang akan menggantikan semua placeholder dengan nilai yang tepat.

Kita perlu menambahkan dua penangan tambahan untuk memperbarui pembacaan suhu. Saat kami menerima permintaan di URL /temperaturec, kami hanya perlu mengirim nilai suhu yang diperbarui. Ini adalah teks biasa, dan harus dikirim sebagai karakter, jadi, kami menggunakan metode c_str().

Proses yang sama diulang untuk suhu dalam Fahrenheit.

Terakhir, kita bisa memulai server.

Karena ini adalah server web asinkron, kita tidak perlu menulis apa pun di loop().

Kurang lebih seperti itulah cara kerja kode.

Demonstrasi

Setelah mengupload kode, buka Arduino IDE Serial Monitor pada baud rate 115200. Tekan tombol RST on-board ESP32 dan setelah beberapa detik alamat IP Anda akan muncul.

Di jaringan lokal Anda, buka browser dan ketik alamat IP ESP32.

Sekarang Anda dapat melihat suhu dalam Celcius dan Fahrenheit di server web Anda. Pembacaan sensor diperbarui secara otomatis tanpa perlu me-refresh halaman web.

Membungkus

Kami harap tutorial ini bermanfaat bagi Anda. Kami memiliki panduan untuk sensor dan modul lain dengan ESP32 yang mungkin Anda sukai:

    ESP32 denganBME280 (Tekanan, Suhu dan Kelembaban)

    Sensor EfekAula Bawaan ESP32

    Tampilan OLEDESP32 dengan Arduino IDE

    Sensor Suhudan Kelembaban ESP32 DHT dengan Arduino IDE

Jika Anda ingin mempelajari lebih lanjut tentang ESP32, lihat kursus kami, atau periksa atau sumber gratis ESP32:

    Belajar ESP32dengan Arduino IDE

    Lebih BanyakProyek dan Tutorial ESP32

Sumber : randomnerdtutorials.com   

Posting Komentar

0 Komentar