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
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
0 Komentar