DHT22 adalah sensor suhu dan kelembapan yang amat popular di kalangan penggemar elektronik DIY. Mungkin kerana faktor kosnya yang murah. Ianya bukanlah sensor yang mempunyai ketepatan yang sangat tepat tetapi faktor harganya yang murah menjadikannya amat popular dan sesuai untuk … – Pengenalan –

Oleh Muhammad Ilyasaa dalam Tutorial Raspberry Pi
Tahap Kesukaran : Baru Mula Belajar

Kami persembahkan bacaan di laman NADI Eleczone Solutions ini kepada para pelajar, mahasiswa dan peminat teknologi, demi kepentingan perkembangan ilmu teknologi ilmiah dan amaliah di Malaysia tercinta kita.
Semoga diberkahi dan diredhai Allah Subhanahu wa Ta’ala – Amin!

# Pembacaan di bawah sesuai digunakan bersama sama papan Raspberry Pi 3, Raspberry Pi Zero, Raspberry Pi 4 dan mana mana papan Raspberry Pi yang bersesuaian.

>> Pengenalan <<

DHT22 adalah sensor suhu dan kelembapan yang amat popular di kalangan penggemar elektronik DIY. Mungkin kerana faktor kosnya yang murah (namun tidak boleh menandingi kemurahan harga modul DHT11 yang lebih murah).

Ianya bukanlah sensor yang mempunyai ketepatan yang sangat tepat (namun mempunyai ketepatan yang lebih baik berbanding modul DHT11) tetapi faktor harganya yang murah menjadikannya amat popular dan sesuai untuk eksperimen atau projek yang mana anda perlu untuk mandapatkan maklumat suhu sekeliling. Sensor ini hanya memerlukan tiga sambungan ke papan komputer Raspberry Pi iaitu sambungan kuasa 3.3v, ground dan satu pin GPIO.

Sensor ini mempunyai spesifikasi seperti berikut :

  • Kelembapan : Julat diantara 0% ke 100% dengan ketepatan 2% ke 5%.
  • Suhu : Julat diantara -40 ke 80 darjah Celcius dengan ketepatan +/- 0.5 darjah Celcius.

Sensor ini tidak disyorkan untuk dibuat pembacaan lebih dari sekali setiap 2 saat daripada sensor. Sekiranya dilakukan, sensor mungkin memberi bacaan yang ralat.

>> Jom kita mulakan <<

Dalam tutorial ini, anda perlukan :

>> Sambungan Litar <<

Ambil papan Raspberry Pi anda dan bina litar di bawah. Kita akan menggunakan Pin BCM GPIO 17 Raspberry Pi untuk membuat pembacaan suhu serta kelembapan daripada sensor suhu DHT22.

Terdapat beberapa variasi modul DHT22 di pasaran yang didatangkan dengan turutan pin yang berlainan. Jadi sebelum anda membuat sambungan dari DHT22 ke pin Raspberry Pi, pastikan anda periksa label di atas modul DHT22 untuk mengenal pasti yang mana Vcc (+), Ground (-) dan data.

Modul DHT22 yang digunakan dalam gambar di bawah mempunyai turutan (dari kiri) VCC (+), data dan GND (-).

  • Pin VCC (+) DHT22 akan disambungkan ke pin 3.3V Raspberry Pi
  • Pin data DHT22 akan disambungkan ke pin BCM GPIO 17 Raspberry Pi
  • Pin GND (-) DHT22 akan disambungkan ke pin GND Raspberry Pi

Fail Fritzing : DHT22_rasp.fzz

>> Python Library <<

DHT22 berkomunikasi melalui pin data dengan menggunakan protokol onewire. Bagi membolehkan papan Raspberry Pi kita berkomunikasi dengan modul DHT22, kita perlu memasang library Adafruit DHT ke dalam direktori Python. Library Adafruit DHT menyediakan banyak fungsi yang stabil dan boleh digunakan terus oleh kita dalam mendapatkan bacaan daripada modul DHT22.

>> Pemasangan library <<

Pertama kita akan mengemas kini pakej Python yang terdapat di dalam Raspberry Pi kita supaya ianya pada versi yang terkini. Pastikan anda telah membuat sambungan ke WiFi dan buka terminal.

Tulis arahan di bawah untuk pergi ke direktori home pi :

cd

Kemas kini pakej Python yang terdapat di dalam Raspberry Pi kita supaya ianya berada pada versi yang terkini menggunakan arahan di bawah :

sudo apt-get update
sudo apt-get install build-essential python-dev

Seterusnya kita akan memuat turun Library Adafruit DHT dengan menulis arahan di bawah :

git clone https://github.com/adafruit/Adafruit_Python_DHT.git

Selepas selesai memuat turun Library Adafruit DHT menggunakan arahan di atas, direktori yang bernama Adafruit_Python_DHT akan muncul. Masuk ke direktori tersebut dengan menulis arahan di bawah:

cd Adafruit_Python_DHT

Seterusnya kita akan melakukan pemasangan library Adafruit DHT ke dalam Python dan Python3 dengan menggunakan arahan di bawah :

sudo python setup.py install
sudo python3 setup.py install

Selesai arahan di atas dilaksanakan manandakan library Adafruit DHT berjaya dipasang ke dalam Python (Python 2) dan Python 3. Sekarang kita boleh mula untuk menggunakan sensor DHT22 di dalam kod Python kita sendiri. Cara paling mudah untuk menggunakan library Adafruit DHT dalam kod kita sendiri adalah dengan import Adafruit_DHT dan memanggil fungsi read_retry.

Nota : Proses pemasangan library python Adafruit DHT ini hanya perlu dilakukan sekali sahaja. Jika anda pernah melakukannya sebelum ini, anda tidak perlu melakukannya lagi berkali kali. Sekali sahaja sudah mencukupi.

>> Kod Python Raspberry Pi <<

Di bawah adalah kod python penuh yang akan digunakan kita dalam tutorial ini. Cuba baca sekali lalu… Tidak mengapa jika anda tidak memahami sepenuhnya kod python di bawah.

Di bawah adalah format yang kami suka gunakan di mana definisi kepada fungsi fungsi ditulis di bahagian atas manakala di bahagian bawah kami khaskan kepada susun atur kod untuk dilaksanakan.

#!/usr/bin/python

# Bahagian Pustaka
import Adafruit_DHT

# Tetapkan jenis sensor yang akan digunakan samaada DHT11,DHT22 atau AM2302
sensor = Adafruit_DHT.DHT22

# Nota tentang Pin papan Raspberry PI
# +5  +5   - TX RX IO  - IO IO   -  IO SPI SPI I2C  - IO  - IO IO IO
#  2   4   6  8 10 12 14 16 18  20  22  24  26  28 30 32 34 36 38 40
#  1   3   5  7  9 11 13 15 17  19  21  23  25  27 29 31 33 35 37 39
# +3 I2C I2C IO  - IO IO IO +3 SPI SPI SPI   - I2C IO IO IO IO IO  -

# Tetapakn nombor GPIO BCM yang disambungkan kepada sensor
gpio = 17

# Fungsi Kod Utama
def main():

    # Pusingan selama lamanya
    while True:

        # Memanggil fungsi read_retry dari pustaka Adafruit_DHT.
        humidity, temperature = Adafruit_DHT.read_retry(sensor, gpio)

        # Memaparkan bacaan DHT22 pada terminal
        if humidity is not None and temperature is not None:
            print('Suhu={0:0.1f}*C  Kelembapan={1:0.1f}%'.format(temperature, humidity))
        else:
            print('Bacaan gagal untuk diperoleh daripada sensor ...')

# Susun atur kod untuk dilaksanakan
if __name__ == '__main__':

    try:
        main()
    except KeyboardInterrupt:
        print ("\nKod siap dilaksanakan.")

Cara menulis Nota atau Komen

Di dalam bahasa python, cara untuk menulis nota atau komen adalah dengan memulakan baris ayat tersebut dengan simbol # . Ayat yang ditulis selepas simbol # tidak akan dikira sebagai kod python. Jadi jika anda ingin menulis nota di dalam kod python, anda boleh lah memulakan ayat tersebut dengan simbol # .Di bawah adalah baris baris ayat yang tidak dikira sebagai kod python kerana ianya dimulai dengan simbol # .

.

# Bahagian Pustaka

.
.

# Nota tentang Pin papan Raspberry PI
# +5  +5   - TX RX IO  - IO IO   -  IO SPI SPI I2C  - IO  - IO IO IO
#  2   4   6  8 10 12 14 16 18  20  22  24  26  28 30 32 34 36 38 40
#  1   3   5  7  9 11 13 15 17  19  21  23  25  27 29 31 33 35 37 39
# +3 I2C I2C IO  - IO IO IO +3 SPI SPI SPI   - I2C IO IO IO IO IO  -
 
# Bahagian IO
.

# Fungsi Kod Utama
.
.

# Fungsi kod bagi memastikan pin ditetapkan kepada input semula		
.
.

# Susun atur kod untuk dilaksanakan
.
.

Bahagian Pustaka

Di dalam kod python penuh pada bahagian bernota # Bahagian Pustaka adalah untuk mengimport library Adafruit_DHT.

.
.

import Adafruit_DHT

.
.

Fungsi read_retry yang akan kita gunakan kelak bagi mendapatkan bacaan suhu dan kelembapan terletak di dalam library Adafruit_DHT.

Sejurus kod python ini dilaksanakan, ia akan mencari baris kod yang terletak di bawah baris nota # Susun atur kod untuk dilaksanakan.

.
.

if __name__ == '__main__':

.
.

Dan seterunya melaksanakan isi kod di dalamnya.

.
.

    try:
        main()
    except KeyboardInterrupt:
        print ("\nKod siap dilaksanakan.")

.
.

Susun atur di bahagian kod ini adalah ia akan memanggil dan melaksanakan fungsi main() sehingga pengguna menekan butang “Ctrl+c” yang menandakan KeyboardInterrupt. Sejurus selepas pengguna menekan butang “Ctrl+c” pada terminal, terminal akan memaparkan “Kod siap dilaksanakan”.

Fungsi main()

Apabila fungsi main() dipanggil, kod akan pergi ke bahagian

.
.

def main():

.
.

Di dalam fungsi main(), terdapat loop while True. Kod yang terdapat dalam loop while True akan diulang berkali kali, selama-lamanya.

Fungsi kod read_retry yang terdapat dalam loop while True adalah untuk membolehkan Raspberry Pi berkomunikasi dengan modul DHT22 seterusnya memperoleh data suhu dan kelembapan daripada modul DHT22. Selepas data diperoleh menggunakan fungsi ini, data tersebut akan disimpan di dalam memori humidity dan temperature.

.
.

    # Pusingan selama lamanya
    while True:

        # Memanggil fungsi read_retry dari pustaka Adafruit_DHT.
        humidity, temperature = Adafruit_DHT.read_retry(sensor, gpio)

        # Memaparkan bacaan DHT22 pada terminal
        if humidity is not None and temperature is not None:
            print('Suhu={0:0.1f}*C  Kelembapan={1:0.1f}%'.format(temperature, humidity))
        else:
            print('Bacaan gagal untuk diperoleh daripada sensor ...')

.
.

Adafruit_DHT.read_retry() akan mencuba sehingga 15 kali percubaan untuk mendapatkan bacaan daripada sensor DHT22 dengan masa menunggu 2 saat diantara setiap percubaan semula. Raspberry Pi amat sensitif kepada timing GPIO nya dan kadang kala gagal untuk mendapatkan bacaan daripada modul DHT22. Jadi setiap kali fungsi read_retry dipanggil, ia akan mencuba maksimum 15 kali percubaan seandainya ia gagal untuk mendapatkan bacaan.

print() adalah untuk memaparkan perkataan di terminal.

Siapkan litar di atas dan salin kod ke dalam fail DHT22.py. Ini dapat dilakukan dengan pertama membuka terminal.

Tulis arahan di bawah untuk pergi ke direktori home pi :

cd

Anda boleh memuat turun kod di atas secara automatik dengan menulis arahan di bawah pada terminal, pastikan anda telah membuat sambungan kepada WiFi :

wget -O DHT22.py https://bit.ly/3dW6fQk

>> melaksanakan kod python <<

Seterusnya, laksanakan kod python di atas dari terminal. Ini dapat dilakukan dengan menaip arahan berikut di terminal :

thonny DHT22.py

Klik ENTER pada keyboard. Ini akan membuka IDE Thonny bersama sama kod DHT22.py. IDE Thonny adalah IDE yang mampu melaksanakan kod Python dan ianya dikonfigurasikan untuk menggunakan Python 3. Klik pada butang RUN untuk mula melaksanakan kod.

Hasilnya, terminal akan memaparkan bacaan suhu dan kelembapan :

Kod DHT22.py akan berjalan selama lamanya selagi tidak dihentikan. Kod boleh dihentikan dengan menekan “Ctrl+c” di terminal.

>> Tahniah, Anda Hebat <<

Kunjungi sekarang kedai Raspberry Pi Pulau Pinang di

Nadi Eleczone Solutions
Lot 1667, Tingkat 1, Jalan Teluk Air Tawar, Taman Air Tawar Indah, 13050 Butterworth, Penang
04 – 351 1802

TINGGALKAN JAWAPAN BALAS ANDA

Sila masukkan ulasan anda!
Sila masukkan nama anda di sini