TB Modul 4

Modul 4
SISTEM MONITORING DAN OTOMATISASI PENJEMURAN IKAN ASIN

1. Pendahuluan[Kembali]
    Ikan asin merupakan pengolahan ikan yang telah diawetkan dengan cara penggaraman dan pengeringan. Pengeringan ikan masih dengan cara tradisional dengan menjemurnya di bawah sinar matahari untuk mengurangi kadar air pada daging ikan, namun masalah yang sering terjadi, yaitu perubahan cuaca secara tiba-tiba, yang menyebabkan ikan asin mengalami kerusakan pada daging ikan. Oleh karena itu, diperlukan suatu sistem monitoring dan secara otomatis dapat memantau cuaca, suhu, dan kontrol atap. 
    Pada sistem monitoring dan otomatisasi penjemuran ikan asin ini, digunakan sensor hujan untuk mendeteksi kondisi cuaca, sensor DHT22 untuk memantau suhu dan kelembaban udara, serta sensor LDR untuk mendeteksi intensitas cahaya. Selain itu, sistem juga dilengkapi sensor PIR untuk mendeteksi pergerakan di sekitar area penjemuran. Output sistem terdiri dari buzzer yang diaktifkan baik oleh sensor PIR maupun kombinasi input dari sensor hujan dan LDR sebagai indikasi kondisi tidak aman atau tidak optimal untuk penjemuran. Informasi suhu dan kelembaban ditampilkan melalui LCD I2C yang dikendalikan berdasarkan input dari sensor DHT22. Seluruh komponen dikendalikan oleh mikrokontroler STM32, dengan komunikasi antar perangkat dilakukan melalui UART (TX ke RX STM32) dan protokol I2C untuk koneksi ke LCD. Pemrograman sistem dilakukan menggunakan software Arduino IDE.



2. Tujuan[Kembali]
a. Mengoptimalkan proses pengeringan ikan asin
    Dengan memantau suhu, kelembaban, intensitas cahaya, dan kondisi cuaca secara real-time, sistem dapat memastikan ikan asin dijemur pada kondisi lingkungan yang ideal agar hasil pengeringan maksimal dan berkualitas.

b. Mencegah kerusakan akibat cuaca tidak menentu
    Sistem dapat secara otomatis mendeteksi hujan dan rendahnya pencahayaan, lalu memberikan respons seperti menyalakan buzzer atau menyampaikan informasi ke pengguna, sehingga ikan tidak terpapar air hujan atau kelembaban berlebih.

c. Meningkatkan efisiensi dan mengurangi intervensi manual
    Dengan adanya sensor dan output otomatis, sistem ini meminimalkan kebutuhan pengawasan langsung oleh manusia selama proses penjemuran, terutama dalam hal pengawasan cuaca dan kondisi lingkungan sekitar.

d. Menjaga keamanan area penjemuran
    Sensor PIR mendeteksi gerakan di sekitar lokasi jemuran dan mengaktifkan buzzer sebagai alarm, berfungsi sebagai sistem keamanan untuk mencegah pencurian atau gangguan dari hewan liar.

e. Menyediakan informasi lingkungan secara real-time
    Melalui LCD I2C, pengguna dapat langsung melihat suhu dan kelembaban saat ini, sehingga bisa mengambil keputusan yang cepat dan tepat bila diperlukan.

f. Memanfaatkan komunikasi data antarperangkat yang efisien
    Dengan penggunaan komunikasi UART dan I2C, sistem memastikan pertukaran data antar komponen berjalan efisien dan sinkron, mendukung kerja sistem yang responsif dan real-time.



3. Alat dan Bahan[Kembali]
1. STM32F103C8T6



spesifikasi

2. Sensor DHT22


3. Sensor LDR

4. Rain Sensor

Spesifikasi :

- Catu Daya : 5 V
- Output Arus : 100 mA
- Output Sinyal : TTL
- Sensitifitas : Dapat disesuaikan sesuai kebutuhan dengan potensiometer
- Dilengkapi indikator LED
- Sensor dan panel kontrol dipisah untuk mendapatkan kinerja yang optimal
- Dimensi Panel Kontrol : 30 x 16 mm

- Dimensi Sensor : 54 x 40 mm

5. Sensor PIR

6. Motor Servo


7. Buzzer
8. LCD I2C

9. Kabel jumper

10. Breadboard

11. Styrofoam



4. Dasar Teori[Kembali]

1. Universal Asynchronous Receiver Transmitter (UART)
    UART (Universal Asynchronous Receiver-Transmitter) adalah bagian perangkat keras komputer yang menerjemahkan antara bit-bit paralel data dan bit-bit serial. UART biasanya berupa sirkuit terintegrasi yang digunakan untuk komunikasi serial pada komputer atau port serial perangkat periperal.
    Cara Kerja Komunikasi UART

    Data dikirimkan secara paralel dari data bus ke UART1. Pada UART1 ditambahkan start bit, parity bit, dan stop bit kemudian dimuat dalam satu paket data. Paket data ditransmisikan secara serial dari Tx UART1 ke Rx UART2. UART2 mengkonversikan data dan menghapus bit tambahan, kemudia di transfer secara parallel ke data bus penerima.

2. Pulse Width Modulation (PWM)
    PWM (Pulse Width Modulation) adalah teknik modulasi yang mengubah lebar pulsa (duty cycle) sementara amplitudo dan frekuensi tetap konstan. Satu siklus pulsa terdiri dari kondisi high dan transisi ke kondisi low. Lebar pulsa PWM sebanding dengan amplitudo sinyal asli yang belum dimodulasi. Duty cycle adalah rasio antara waktu ON (lebar pulsa High) dan periode total, biasanya dinyatakan dalam persentase (%).
duty cycle pwm


    Keterangan :
t_ON  = waktu ON atau waktu dimana tegangan keluaran berada pada posisi tinggi (high atau 1)
t_OFF  = waktu OFF atau waktu dimana tegangan keluaran berada pada posisi rendah (low atau 0)
t_total = waktu satu siklus atau penjumlahan antara t_ON dengan t_OFF atau disebut juga dengan “periode satu gelombang”
    Pada board Arduino Uno, pin yang dapat digunakan untuk PWM adalah pin yang ditandai dengan tanda tilde (~), yaitu pin 3, 5, 6, 9, 10, dan 11. Pin-pin ini dapat berfungsi sebagai input atau output analog. Untuk menggunakan PWM pada pin tersebut, gunakan perintah analogWrite().
PWM pada Arduino beroperasi pada frekuensi 500Hz, yang berarti ada 500 siklus per detik. Setiap siklus dapat diberi nilai antara 0 hingga 255. Jika nilai 0 diberikan, pin tersebut akan selalu berada pada 0 volt. Jika nilai 255 diberikan, pin akan selalu berada pada 5 volt. Memberikan nilai 127 (setengah dari 255 atau 50%) akan membuat pin berada pada 5 volt selama setengah siklus dan 0 volt selama setengah siklus lainnya. Memberikan nilai 64 (25% dari 255) akan membuat pin berada pada 5 volt selama 1/4 siklus dan 0 volt selama 3/4 siklus, dan ini terjadi 500 kali dalam satu detik.

3. Inter Integrated Circuit (12C)
    Inter Integrated Circuit atau sering disebut I2C adalah standar komunikasi serial dua arah menggunakan dua saluran yang didisain khusus untuk mengirim maupun menerima data. Sistem I2C terdiri dari saluran SCL (Serial Clock) dan SDA (Serial Data) yang membawa informasi data antara I2C dengan pengontrolnya. 
    Cara Kerja Komunikasi 12C
    Pada I2C, data ditransfer dalam bentuk message yang terdiri dari kondisi start, Address Frame, R/W bit, ACK/NACK bit, Data Frame 1, Data Frame 2,  dan kondisi Stop.
Kondisi start dimana saat pada SDA beralih dari logika high ke low sebelum SCL.
Kondisi stop dimana saat pada SDA beralih dari logika low ke high sebelum SCL.
R/W bit berfungsi untuk menentukan apakah master mengirim data ke slave atau meminta data dari slave. (logika 0 = mengirim data ke slave, logika 1 = meminta data dari slave)
    ACK/NACK bit berfungsi sebagai pemberi kabar jika data frame ataupun address frame telah diterima receiver.

4. STM32F103C8T6
    STM32F103C8T6 merupakan salah satu jenis mikrokontroler dari keluarga STM32 yang diproduksi oleh STMicroelectronics. Mikrokontroler ini termasuk dalam seri STM32F1 dan berbasis pada inti prosesor ARM Cortex-M3 32-bit. Dengan kecepatan clock hingga 72 MHz, STM32F103C8T6 menawarkan performa yang tinggi serta efisiensi dalam konsumsi daya, menjadikannya sangat populer dalam berbagai aplikasi sistem tertanam (embedded system). Mikrokontroler ini dilengkapi dengan memori flash sebesar 64 KB dan SRAM sebesar 20 KB, serta mendukung hingga 37 pin input/output (GPIO) yang dapat dikonfigurasi sesuai kebutuhan pengguna.
    Selain itu, STM32F103C8T6 memiliki beragam fitur pendukung seperti ADC 12-bit hingga 10 kanal, beberapa jenis komunikasi serial seperti UART, SPI, dan I2C, serta dilengkapi juga dengan USB 2.0 Full-Speed. Mikrokontroler ini memiliki beberapa timer yang bisa digunakan untuk berbagai keperluan, seperti pengendalian motor, pengukuran waktu, atau pembuatan sinyal PWM. Arsitektur yang digunakan juga sudah mendukung sistem interrupt dengan menggunakan NVIC (Nested Vectored Interrupt Controller), sehingga respon terhadap kejadian eksternal bisa dilakukan secara efisien.
    Dalam proses pengembangannya, STM32F103C8T6 dapat diprogram menggunakan beberapa platform seperti STM32CubeIDE, Keil uVision, ataupun PlatformIO, dan bisa diakses melalui programmer seperti ST-Link V2 atau USB to Serial menggunakan bootloader. Untuk mempermudah pemrograman, STMicroelectronics menyediakan library seperti HAL (Hardware Abstraction Layer) dan LL (Low Layer) yang mempermudah akses ke fitur-fitur perangkat keras.

Spefikasi:
Fitur-Fitur Utama
- USB 2.0 Full-Speed
- 12-bit ADC hingga 10 channel
- DMA Controller
- Up to 7 timers (PWM, encoder interface, input capture, output compare)
- Real-Time Clock (RTC)
- Nested Vectored Interrupt Controller (NVIC)
- LED Power Indicator

5. Rain Sensor
    Rain sensor atau sensor hujan adalah perangkat elektronik yang digunakan untuk mendeteksi keberadaan dan intensitas air hujan. Sensor ini umumnya terdiri dari sebuah plat konduktif dengan pola jejak tembaga yang terbuka (seperti jaring), yang bekerja berdasarkan prinsip perubahan resistansi. Saat plat sensor dalam kondisi kering, resistansinya tinggi sehingga arus listrik tidak mudah mengalir. Namun, ketika tetesan air hujan membasahi permukaan sensor, air (sebagai penghantar) menyebabkan penurunan resistansi sehingga arus dapat mengalir lebih mudah antara jalur-jalur konduktif tersebut. Perubahan ini dapat dideteksi sebagai sinyal analog atau digital tergantung jenis output sensor yang digunakan.
    Pada sistem yang menggunakan sinyal analog, output dari rain sensor biasanya dihubungkan ke pin ADC (Analog to Digital Converter) pada mikrokontroler. Nilai tegangan analog yang terbaca mencerminkan tingkat kekeringan atau kebasahan sensor: nilai tinggi menunjukkan kondisi kering, dan nilai rendah menandakan adanya air hujan. Sensor ini dapat dikalibrasi dengan menetapkan batas minimum dan maksimum nilai ADC untuk mengonversi data menjadi persentase tingkat kelembaban atau intensitas hujan. Berikut grafik respon dari sensor rain:
Spesifikasi :
- Catu Daya : 5 V
- Output Arus : 100 mA
- Output Sinyal : TTL
- Sensitifitas : Dapat disesuaikan sesuai kebutuhan dengan potensiometer
- Dilengkapi indikator LED
- Sensor dan panel kontrol dipisah untuk mendapatkan kinerja yang optimal
- Dimensi Panel Kontrol : 30 x 16 mm
- Dimensi Sensor : 54 x 40 mm

Pinout Sensor Rain:
Pin1 (VCC) : 3.3V DC hingga 5V DC  
Pin2 (GND) : Ini adalah pin ground  
Pin3 (A0) : Ini adalah pin analog output
Ping4(D0) : Ini adalah pin digital output.

6. LCD
    LCD (Liquid Crystal Display) adalah suatu jenis media tampilan yang menggunakan kristal cair sebagai penampil utama. LCD (Liquid Crystal Display) bisa menampilkan suatu gambar/karakter dikarenakan terdapat banyak sekali titik cahaya (piksel) yang terdiri dari satu buah kristal cair sebagai titik cahaya. LCD 16x2 dapat menampilkan sebanyak 32 karakter yang terdiri dari 2 baris dan tiap baris dapat menampilkan 16 karakter. Bentuk fisik LCD 16x2 dapat dilihat pada gambar dibawah ini.

 

Bagian-bagian LCD atau Liquid Crystal Display diantaranya adalah :

       Lapisan Terpolarisasi 1 (Polarizing Film 1)
       Elektroda Positif (Positive Electrode)
       Lapisan Kristal Cair (Liquid Cristal Layer)
       Elektroda Negatif (Negative Electrode)
       Lapisan Terpolarisasi 2 (Polarizing film 2)
       Backlight atau Cermin (Backlight or Mirror)
 

Dibawah ini adalah gambar struktur dasar sebuah LCD :

7. Sensor LDR
    Sensor LDR (Light Dependent Resistor), atau sering disebut sebagai fotodiode atau fotoresistor, adalah komponen pasif yang nilai resistansinya berubah-ubah tergantung pada intensitas cahaya yang mengenainya. Semakin terang cahaya yang mengenai permukaan LDR, resistansinya akan semakin menurun. Sebaliknya, semakin gelap kondisi di sekitar LDR, resistansinya akan semakin meningkat. Karakteristik ini membuatnya sangat cocok untuk mendeteksi tingkat cahaya.

    LDR umumnya terbuat dari bahan semikonduktor seperti kadmium sulfida (CdS) atau kadmium selenida (CdSe). Bahan-bahan ini memiliki resistansi yang tinggi dalam keadaan gelap. Ketika foton cahaya menumbuk material semikonduktor, mereka memberikan energi kepada elektron, menyebabkan elektron-elektron tersebut bergerak dari pita valensi ke pita konduksi. Proses ini menghasilkan elektron bebas dan hole, yang meningkatkan konduktivitas material dan dengan demikian menurunkan resistansinya.

    Sel Resistor Tergantung Cahaya atau Cell Light Dependent Resistor (LDR) adalah Sensor cahaya photoresistif yang paling umum digunakan adalah sel fotokonduktif Cadmium Sulphide ORP12. Resistor yang bergantung pada cahaya ini memiliki respon spektral sekitar 610nm di wilayah cahaya kuning ke oranye.
    Resistansi sel ketika tidak menyala (resistansi gelap) sangat tinggi pada sekitar 10MΩ yang jatuh ke sekitar 100Ω ketika sepenuhnya diterangi (resistansi terang).
    Untuk meningkatkan resistansi gelap dan karenanya mengurangi arus gelap, jalur resistif membentuk pola zig-zag melintasi substrat keramik. Photocell CdS adalah perangkat dengan biaya sangat rendah yang sering digunakan dalam peredupan otomatis, deteksi gelap atau senja untuk menyalakan lampu jalan "ON" dan "OFF", dan untuk aplikasi jenis meteran eksposur fotografi.

Sensor Cahaya

    Menghubungkan resistor yang tergantung cahaya (LDR) secara seri dengan Resistor standar seperti ini di satu tegangan supply DC memiliki satu keuntungan besar, tegangan yang berbeda akan muncul di persimpangan mereka untuk berbagai tingkat cahaya.
    Jumlah drop tegangan seri resistor, R 2 ditentukan oleh nilai resistif dari cahaya resistor tergantung, RLDR. Kemampuan ini untuk menghasilkan tegangan yang berbeda menghasilkan rangkaian yang sangat berguna yang disebut "Beda Potensial" atau Jaringan Pembagi Tegangan.
    Seperti yang kita ketahui, arus melalui rangkaian seri adalah umum dan karena LDR mengubah nilai resistifnya karena intensitas cahaya, tegangan yang ada pada VOUT akan ditentukan oleh rumus pembagi tegangan.
    Resistansi LDR, RLDR dapat bervariasi dari sekitar 100Ω di bawah sinar matahari, hingga lebih dari 10MΩ dalam kegelapan absolut dengan variasi resistansi ini diubah menjadi variasi tegangan pada VOUT seperti yang ditunjukkan.

8. Sensor PIR
9. Motor Servo
    Servo motor adalah jenis servo motor standar yang paling umum ditemui dalam proyek-proyek elektronika dan robotika. Dinamakan demikian karena kemampuannya untuk memutar porosnya dalam rentang sudut sekitar 0 hingga 180 derajat. Batasan putaran ini menjadikannya ideal untuk aplikasi yang memerlukan pergerakan sudut yang spesifik dan terkontrol, bukan putaran terus-menerus.
   Dasar teori servo motor 180 derajat sama dengan servo motor pada umumnya, yaitu menggunakan sistem kendali closed-loop (umpan balik). Ini berarti motor secara terus-menerus membandingkan posisi yang diinginkan dengan posisi aktualnya dan melakukan koreksi jika ada perbedaan.
Komponen utama servo motor meliputi:

  1. Motor DC: Sumber tenaga utama yang menggerakkan poros.
  2. Gearbox (Kotak Roda Gigi): Serangkaian roda gigi yang terhubung ke motor DC. Fungsi gearbox adalah untuk mengurangi kecepatan putaran motor DC dan pada saat yang sama meningkatkan torsi (kekuatan putaran). Ini memungkinkan servo untuk menggerakkan beban yang lebih berat dengan presisi.
  3. Potensiometer: Sensor posisi yang terhubung ke poros output. Potensiometer ini berfungsi sebagai umpan balik untuk memberi tahu sirkuit kontrol posisi aktual poros servo. Resistansinya berubah seiring dengan perubahan sudut poros.
  4. Sirkuit Kontrol: Otak dari servo. Sirkuit ini menerima sinyal perintah (biasanya berupa sinyal Pulse Width Modulation atau PWM) dari mikrokontroler atau perangkat kontrol lainnya. Sirkuit ini kemudian membandingkan lebar pulsa sinyal PWM (posisi yang diinginkan) dengan nilai resistansi dari potensiometer (posisi aktual). Jika ada perbedaan, sirkuit akan menginstruksikan motor DC untuk bergerak hingga posisi aktual sesuai dengan posisi yang diinginkan.

Cara Kerja:

Servo motor  dikendalikan menggunakan sinyal PWM (Pulse Width Modulation). Sinyal PWM adalah serangkaian pulsa yang dikirim ke pin sinyal servo. Lebar (durasi) pulsa inilah yang menentukan sudut posisi poros servo.

Prinsip kerjanya adalah sebagai berikut:

  • Servo mengharapkan untuk menerima pulsa sinyal PWM setiap 20 milidetik (ms), yang setara dengan frekuensi 50 Hz.
  • Lebar pulsa (durasi ON) dari sinyal PWM inilah yang mengontrol sudut putaran:
    • Pulsa sekitar 1 ms biasanya akan memutar poros servo ke posisi 0 derajat.
    • Pulsa sekitar 1.5 ms akan memutar poros servo ke posisi 90 derajat (posisi tengah/netral).
    • Pulsa sekitar 2 ms akan memutar poros servo ke posisi 180 derajat.
  • Durasi pulsa di antara nilai-nilai tersebut akan menginterpolasi posisi sudut servo. Misalnya, pulsa 1.25 ms mungkin akan memposisikan servo pada 45 derajat.
  • Sirkuit kontrol internal servo akan terus-menerus memantau posisi poros melalui potensiometer. Jika posisi aktual tidak sesuai dengan posisi yang diperintahkan oleh sinyal PWM, sirkuit akan menggerakkan motor hingga posisi yang diinginkan tercapai. Setelah itu, motor akan berhenti dan menahan posisi tersebut sampai sinyal PWM berubah.

Aplikasi Servo Motor 

Servo motor 180 derajat sangat populer karena kesederhanaan kontrolnya dan kemampuannya untuk mencapai posisi sudut yang akurat. Beberapa aplikasi umumnya meliputi:

  • Robotika: Sebagai sendi pada lengan robot mini, penggerak gripper (penjepit), atau kepala robot untuk menggerakkan sensor atau kamera.
  • Kendaraan Remote Control (RC): Untuk sistem kemudi pada mobil RC, atau kontrol aileronelevator, dan rudder pada pesawat RC.
  • Sistem Otomasi dan Kontrol: Menggerakkan katup, pengunci pintu otomatis, atau mekanisme kecil lainnya yang memerlukan pergerakan sudut terbatas.
  • Proyek Arduino/Mikrokontroler: Sangat sering digunakan dalam berbagai proyek hobi karena mudah diintegrasikan dengan mikrokontroler populer seperti Arduino.
  • Kamera Pan-Tilt: Untuk mengontrol orientasi horizontal (pan) dan vertikal (tilt) dari sebuah kamera kecil.

Servo motor 180 derajat adalah pilihan yang tepat ketika Anda membutuhkan kontrol posisi sudut yang presisi dalam rentang terbatas, bukan putaran kontinu. 

10. Buzzer
    Perangkat sinyal audio seperti beeper atau buzzer dapat berupa tipe elektromekanis, piezoelektrik , atau mekanis. Fungsi utamanya adalah mengubah sinyal dari audio menjadi suara. Umumnya, perangkat ini ditenagai oleh tegangan DC dan digunakan dalam timer, perangkat alarm, printer, alarm, komputer, dll. Berdasarkan berbagai desainnya, perangkat ini dapat menghasilkan berbagai suara seperti alarm, musik, bel, dan sirene.
Konfigurasi Pin Buzzer
Konfigurasi Pin Buzzer
    Konfigurasi pin buzzer ditunjukkan di bawah ini. Buzzer terdiri dari dua pin, yaitu positif dan negatif. Terminal positifnya dilambangkan dengan simbol '+' atau terminal yang lebih panjang. Terminal ini dialiri daya melalui 6 Volt sedangkan terminal negatifnya dilambangkan dengan simbol '-' atau terminal pendek dan dihubungkan ke terminal GND.

Spesifikasi

Spesifikasi buzzer antara lain sebagai berikut.

  • Warnanya hitam
  • Rentang frekuensi 3.300Hz
  • Kisaran Suhu Operasional dari – 20° C hingga +60° C
  • Tegangan operasi berkisar dari 3V hingga 24V DC
  • Tingkat tekanan suara adalah 85dBA atau 10cm
  • Arus suplai di bawah 15mA

Jenis-jenis Buzzer

Buzzer tersedia dalam beberapa jenis, meliputi berikut ini.

  • Piezoelektrik
  • Elektromagnetik
  • Mekanis
  • Elektromekanis
  • Magnetik

Piezoelektrik

Seperti namanya, tipe piezoelektrik menggunakan efek piezoelektrik keramik piezoelektrik & arus pulsa untuk membuat pelat logam bergetar & menghasilkan suara. Jenis buzzer ini dibuat dengan kotak resonansi, multi resonator, pelat piezoelektrik, housing, impedance matcher, dll. Beberapa buzzer juga dirancang dengan LED .

11. Sensor DHT22

    Sensor DHT22 adalah sensor digital yang dirancang untuk mengukur suhu dan kelembaban udara. Sensor ini sering digunakan dalam berbagai proyek elektronika karena akurasinya yang relatif tinggi, stabilitas jangka panjang, dan harga yang terjangkau. DHT22 merupakan versi yang lebih akurat dan memiliki rentang pengukuran yang lebih luas dibandingkan pendahulunya, DHT11.

Di dalam sensor DHT22 terdapat dua komponen utama:

  1. Sensor Kelembaban Kapasitif: Untuk mengukur kelembaban, DHT22 menggunakan elemen sensor kelembaban kapasitif. Elemen ini terdiri dari dua elektroda yang dipisahkan oleh substrat penahan kelembaban. Ketika kelembaban udara berubah, kapasitas dielektrik dari substrat juga berubah, yang pada gilirannya mengubah nilai kapasitansi antara dua elektroda. Perubahan kapasitansi ini kemudian dikonversi menjadi sinyal digital yang merepresentasikan tingkat kelembaban.
  2. Termistor NTC (Negative Temperature Coefficient): Untuk mengukur suhu, DHT22 menggunakan termistor NTC. Termistor adalah resistor peka suhu yang nilai resistansinya berubah secara signifikan dengan perubahan suhu. Pada termistor NTC, resistansinya akan menurun seiring dengan meningkatnya suhu. Perubahan resistansi ini diukur dan dikonversi menjadi nilai suhu digital.

Sensor DHT22 memiliki mikrokontroler internal kecil yang bertugas membaca data dari kedua sensor (kelembaban dan suhu), melakukan kalibrasi, dan mengubahnya menjadi format sinyal digital yang siap dibaca oleh mikrokontroler eksternal (seperti Arduino atau Raspberry Pi) melalui antarmuka data single-bus.

Spesifikasi Umum DHT22:

  • Rentang Pengukuran Suhu: -40°C hingga 80°C
  • Akurasi Suhu: ±0.5°C
  • Rentang Pengukuran Kelembaban: 0% hingga 100% RH (Relative Humidity)
  • Akurasi Kelembaban: ±2% RH
  • Tegangan Operasi: 3.3V hingga 5V
  • Sinyal Output: Digital (membutuhkan satu pin data)
  • Frekuensi Sampling: Maksimal 0.5 Hz (satu pembacaan setiap 2 detik)
12. Kabel Jumper

Jumper adalah kabel elektrik yang memiliki pin konektor di setiap ujungnya dan berfungsi sebagai penghubung dua komponen yang melibatkan Arduino tanpa memerlukan solder.




5. Percobaan [Kembali]

a. Prosedur[Kembali]
1. Persiapan Alat dan Bahan
1x Mikrokontroler STM32 (misalnya STM32F103C8T6)
1x Sensor DHT22 (suhu dan kelembaban)
1x Sensor Rain (sensor hujan digital)
1x Sensor LDR (sensor cahaya)
1x Sensor PIR (sensor gerak)
1x LCD 16x2 I2C
1x Buzzer
Kabel jumper secukupnya
Breadboard 
Komputer/laptop dengan Arduino IDE terinstal
Kabel USB untuk STM32

2. Rangkaian Sistem
Hubungkan DHT22 ke pin input STM32 untuk membaca suhu & kelembaban.
Hubungkan Sensor Rain ke pin digital STM32.
Hubungkan Sensor LDR ke pin analog STM32.
Hubungkan Sensor PIR ke pin digital STM32.
Sambungkan LCD I2C ke pin SCL & SDA STM32 (komunikasi I2C).
Hubungkan Buzzer ke salah satu pin digital STM32 sebagai output.
Gunakan koneksi UART (TX-RX) antar modul STM32 jika lebih dari satu modul digunakan.

3. Pemrograman Sistem
Buka Arduino IDE dan pilih board STM32.
- Import library yang diperlukan:
DHT.h untuk sensor DHT22
Wire.h dan LiquidCrystal_I2C.h untuk LCD I2C
Buat program untuk:
Menampilkan suhu & kelembaban dari DHT22 ke LCD
- Mengaktifkan buzzer jika:
Ada gerakan terdeteksi oleh PIR
Kondisi hujan (sensor rain aktif)
Intensitas cahaya di bawah ambang batas (dari LDR)
Upload program ke STM32 via Arduino IDE

4. Langkah-langkah Pengujian
- Inisialisasi Sistem
Sambungkan STM32 ke komputer melalui USB
Upload dan jalankan program dari Arduino IDE
Pastikan LCD menyala dan menampilkan data suhu & kelembaban
- Uji Sensor PIR
Gerakkan tangan atau benda di depan sensor PIR
Cek apakah buzzer menyala saat gerakan terdeteksi
Uji Sensor Rain dan LDR
Basahi sensor hujan atau simulasikan tetesan air
Tutupi LDR atau tempatkan di ruangan gelap
Cek apakah buzzer menyala saat kondisi gelap dan hujan terdeteksi
- Uji Tampilan LCD
Pastikan suhu dan kelembaban dari DHT22 tampil secara real-time di LCD
Uji Komunikasi UART (jika ada dua STM32)
Periksa apakah data dari satu modul bisa dikirim dan diterima oleh STM32 lain

5. Pencatatan Hasil
Catat reaksi sistem saat setiap sensor diuji.
Catat delay atau ketidaksesuaian jika ada.
Amati stabilitas pembacaan sensor suhu/kelembaban di LCD.


b. Hardware[Kembali]


c. Rangkaian Simulasi dan Prinsip Kerja[Kembali]


Prinsip Kerja:
    Sistem monitoring dan otomatisasi penjemuran ikan asin ini dirancang untuk bekerja secara otomatis dengan mengandalkan berbagai sensor sebagai input dan mikrokontroler STM32 sebagai pengendali utama. Sensor DHT22 digunakan untuk mengukur suhu dan kelembaban udara di sekitar area penjemuran, kemudian hasil pembacaan tersebut ditampilkan secara real-time pada layar LCD 16x2 melalui komunikasi I2C. Selain itu, sistem juga dilengkapi dengan sensor hujan dan sensor LDR yang berfungsi mendeteksi kondisi cuaca dan intensitas cahaya. Apabila terdeteksi hujan oleh sensor rain dan intensitas cahaya rendah oleh sensor LDR, maka sistem akan mengaktifkan buzzer sebagai peringatan bahwa kondisi lingkungan tidak mendukung proses penjemuran. Untuk menjaga keamanan lingkungan penjemuran, sensor PIR digunakan untuk mendeteksi pergerakan manusia atau hewan. Jika sensor PIR mendeteksi adanya gerakan, buzzer juga akan diaktifkan sebagai sistem alarm. Seluruh data dari sensor diproses oleh STM32, dengan komunikasi antar perangkat dilakukan menggunakan protokol UART dan I2C. Sistem ini diprogram dan dikendalikan menggunakan Arduino IDE, yang mengatur logika kerja dari pembacaan sensor hingga pengendalian output seperti buzzer dan tampilan LCD.

d. Flowchart dan Listing Program[Kembali]
a. Flowchart



b. Listing Program
- Transmitter
#include <DHT.h>

#define DHTPIN PA3
#define DHTTYPE DHT22
#define PIR_PIN PA4
#define BUZZER_PIN PB0

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial1.begin(9600);       // UART1: PA9 (TX), PA10 (RX)
  dht.begin();

  pinMode(PIR_PIN, INPUT);
  pinMode(BUZZER_PIN, OUTPUT);
  digitalWrite(BUZZER_PIN, LOW); // Matikan buzzer saat awal
}

void loop() {
  // --- Baca sensor PIR dan kontrol buzzer ---
  int pirState = digitalRead(PIR_PIN);
  if (pirState == HIGH) {
    digitalWrite(BUZZER_PIN, HIGH);
  } else {
    digitalWrite(BUZZER_PIN, LOW);
  }

  // --- Baca sensor DHT dan kirim data ke RX ---
  float suhu = dht.readTemperature();
  float kelembapan = dht.readHumidity();

  if (!isnan(suhu) && !isnan(kelembapan)) {
    Serial1.print(suhu, 1);         // 1 angka di belakang koma
    Serial1.print(",");
    Serial1.print(kelembapan, 1);
    Serial1.print("\n");
  }

  delay(1000); // Kirim data tiap 1 detik
}


- Receiver
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>

#define RAIN_PIN PA1        // Input digital sensor hujan (HIGH = hujan)
#define SERVO_PIN PB1       // Output PWM ke servo

LiquidCrystal_I2C lcd(0x27, 16, 2);
String buffer = "";
Servo atapServo;

bool atapTertutup = false;

void setup() {
  Serial1.begin(9600);  // UART dari STM32 TX
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Menunggu data...");

  pinMode(RAIN_PIN, INPUT);
  atapServo.attach(SERVO_PIN);
  atapServo.write(110); // Awal: buka atap (110 derajat, dibalik)
}

void loop() {
  // --- Terima data suhu & kelembapan dari UART ---
  while (Serial1.available()) {
    char c = Serial1.read();
    if (c == '\n') {
      int commaIndex = buffer.indexOf(',');
      if (commaIndex > 0) {
        String suhuStr = buffer.substring(0, commaIndex);
        String humStr = buffer.substring(commaIndex + 1);

        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("Suhu: ");
        lcd.print(suhuStr);
        lcd.print(" C");

        lcd.setCursor(0, 1);
        lcd.print("Hum: ");
        lcd.print(humStr);
        lcd.print(" %");

        // Status atap di LCD
        lcd.setCursor(10, 1);
        if (atapTertutup) {
          lcd.print("Ttp");  // Tutup
        } else {
          lcd.print("Bka");  // Buka
        }
      }
      buffer = "";
    } else {
      buffer += c;
    }
  }

  // --- Baca sensor hujan ---
  bool hujan = digitalRead(RAIN_PIN) == HIGH;  // HIGH = hujan

  // --- Logika atap: tutup jika hujan ---
  if (hujan) {
    if (!atapTertutup) {
      atapServo.write(0);      // Tutup atap (dibalik)
      atapTertutup = true;
    }
  } else {
    if (atapTertutup) {
      atapServo.write(110);    // Buka atap (dibalik, 110 derajat)
      atapTertutup = false;
    }
  }

  delay(100); // Respons cepat
}



e. Video Demo[Kembali]


f. Download File[Kembali]
HTML [Klik]
Rangkaian Simulasi  [KliK]
Datasheet Sensor ldr [KliK]
Datasheet Sensor dht22 [KliK]
Datasheet STM32 [KliK]
Datasheet Motor Servo [KliK]
Datasheet LCD 16x2 i2c [KliK]


Komentar

Postingan populer dari blog ini