Sistem Kontrol Argoforestri: pada Tanaman Strawberry dan Ternak Lebah

1. Pendahuan[Kembali]

Pertanian modern menghadapi berbagai tantangan signifikan, mulai dari perubahan iklim, keterbatasan lahan, hingga fluktuasi lingkungan yang tidak menentu. Dalam konteks ini, sistem agroforestri dan teknologi pertanian presisi menjadi pendekatan strategis yang dapat menjawab kebutuhan produktivitas berkelanjutan dan efisiensi sumber daya. Salah satu inovasi yang menjanjikan adalah integrasi antara budidaya tanaman stroberi (Fragaria sp.) dan peternakan lebah madu (Apis mellifera) dalam sistem greenhouse berbasis sensor otomatis. Stroberi merupakan komoditas hortikultura bernilai tinggi yang memiliki kandungan gizi seperti kalsium, vitamin C, dan karbohidrat. Namun, budidaya stroberi sangat tergantung pada kondisi lingkungan yang spesifik, yakni pencahayaan matahari 8–10 jam per hari, dan curah hujan tahunan sekitar 600–700 mm. Penanaman di luar kondisi tersebut berisiko menurunkan kualitas dan kuantitas hasil panen secara signifikan.


Untuk mengatasi kendala lingkungan tersebut, penggunaan greenhouse atau rumah kaca menjadi solusi yang efektif, memungkinkan pengendalian variabel lingkungan secara terkendali dan presisi, menciptakan iklim mikro yang mendekati kondisi ideal untuk pertumbuhan stroberi. Sistem ini ditingkatkan lagi dengan penerapan sensor otomatis berbasis mikrokontroler, yang dalam implementasinya dibagi menjadi dua node mikrokontroler Raspberry Pi Pico yang saling berkomunikasi. Pada node sensor, sensor kelembapan tanah digunakan untuk memantau kebutuhan air pada tanaman stroberi. Sensor DHT22 berfungsi untuk mendeteksi suhu dan kelembapan udara. Untuk mendeteksi intensitas cahaya, digunakan sensor LDR yang terintegrasi dengan modul RTC (Real Time Clock) untuk pengendalian pencahayaan berdasarkan kondisi waktu dan pencahayaan alami. Node sensor ini membaca seluruh data sensor setiap 5 detik, mengubah nilai ADC menjadi satuan persentase dan lux, lalu mengemas data dalam format JSON dan mengirimkannya melalui UART ke node aktuator.


Pada node aktuator, yang juga menggunakan Raspberry Pi Pico, data JSON diterima dan diproses untuk mengontrol lingkungan. Sistem akan mengaktifkan sejumlah lampu LED sesuai kondisi lingkungan yang terdeteksi dari nilai lux: jika kondisi gelap (lux sangat rendah), maka 4 lampu akan menyala penuh untuk membantu proses fotosintesis; jika pencahayaan sedikit gelap, maka hanya 2-3 lampu yang menyala; sedangkan jika terang, hanya 1 lampu yang menyala sebagai pencahayaan tambahan. Informasi nilai pencahayaan (lux) dan durasi lampu menyala, beserta data sensor lainnya dan waktu, akan ditampilkan secara real-time pada layar LCD. Selain mengatur kondisi tanaman, sistem ini juga memperhatikan kebutuhan lingkungan kandang lebah madu. Suhu dan kelembapan yang stabil sangat penting untuk menjaga kenyamanan dan produktivitas lebah. Ketika kelembapan udara di kandang lebah terdeteksi turun di bawah ambang batas (misalnya 60%), motor servo akan menggerakkan katup tangki air di bawah kandang lebah untuk melepaskan uap air dan meningkatkan kelembapan, guna mencegah stres pada koloni lebah. Integrasi ini bersifat simbiotik: stroberi menyediakan nektar bagi lebah, sementara lebah membantu penyerbukan tanaman secara alami. Kehadiran lebah dapat meningkatkan hasil panen stroberi secara signifikan, dari 25.55 kg/ha menjadi 50.8 kg/ha. Seluruh sistem bekerja secara otomatis dan terkoordinasi, dengan operasional aktuator yang dibatasi pada waktu tertentu (misalnya pukul 07.00 hingga 15.00), dan di luar jam tersebut aktuator dimatikan.

Berdasarkan uraian tersebut, rumusan masalah dalam penelitian ini adalah bagaimana merancang dan mengimplementasikan sistem greenhouse berbasis sensor otomatis yang mampu mengontrol pencahayaan, suhu, dan kelembapan secara adaptif, serta bagaimana sistem ini dapat mendukung sinergi antara budidaya stroberi dan pemeliharaan lebah madu dalam suatu ekosistem agroforestri yang terintegrasi. Adapun tujuan dari praktikum ini adalah untuk merancang sistem greenhouse otomatis berbasis mikrokontroler yang dapat mengatur kelembapan tanah dan udara, pencahayaan, serta pengairan tambahan guna mendukung pertumbuhan tanaman stroberi dan kenyamanan lebah madu. Selain itu, penelitian ini bertujuan untuk menguji efektivitas sistem dalam menjaga kestabilan lingkungan mikro serta meningkatkan efisiensi budidaya secara keseluruhan.

2. Tujuan[Kembali]

1.    Merancang dan mengimplementasikan sistem otomatis berbasis Raspberry Pipico untuk memantau kelembapan tanah, intensias cahaya pada tanaman strawberry memantau kelembapan udara, serta suhu pada kandang lebah secara real-time dengan menggunakan sensor DHT22, Soil Moisture, dan ldr

 2.     Mengembangkan mekanisme penerangan cukup, serta pennyiraman yang tepat terhadap  strawberry, dan penjagaan suhu serta kelembapan udara pada kandang lebah, didalam greenhouse


3. Alat dan Komponen[Kembali]

a.     Sensor dht22



b.     Sensor soil moisture



c.     Sensor ldr



d.      LCD 16 x 2



e.     Breadboard



f.     Resistor



g.     Jumper



h.     Ponpa 6 volt



i. Raspberry Pi Pico


k.     Relay modul



l. RTC



m. LED



n. motor servo

 



4. Landasan Teori
[Kembali]

   1. Raspberry Pi Pico

Raspberry Pi Pico adalah papan rangkaian elektronik yang di dalamnya terdapat
komponen utama chip mikrokontroler RP2040, yang dirancang dan diproduksi oleh
Raspberry Pi Foundatio. Tidak seperti komputer mini raspberry Pi lainnya yang
menjalankan sistem operasi seperti Linux, Pico dirancang untuk tugas-tugas yang lebih
sederhana dan langsung (embedded system), seperti membaca sensor, mengontrol
perangkat, atau melakukan pengolahan data pada tingkat hardware.
Adapun spesifikasi dari Raspberry Pi Pico adalah sebagai berikut:

gambar. Respberry pi pico

 


 

2.     Analog to Digital Converter (ADC)

ADC adalah suatu metode untuk konversi sinyal analog menjadi sinyal digital. Biasanya sinyal analog yang dikonversi berupa tegangan (Volt) dan dirubah menjadi sinyal digital seperti kode biner 0 dan 1.

ADC atau Analog to Digital Converter merupakan salah satu perangkat elektronika yang digunakan sebagai penghubung dalam pemrosesan sinyal analog oleh sistem digital. Fungsi utama dari fitur ini adalah mengubah sinyal masukan yang masih dalam bentuk sinyal analog menjadi sinyal digital dengan bentuk kode-kode digital. Ada 2 faktor yang perlu diperhatikan pada proses kerja ADC yaitu kecepatan sampling dan resolusi. 

Rangkaian ADC memiliki dua karakter prinsip, yaitu kecepatan sampling dan resolusi. Kecepatan sampling suatu ADC menyatakan seberapa sering sinyal analog dikonversikan ke bentuk sinyal digital pada selang waktu tertentu yang dinyatakan dalam sample per second (SPS). Sedangkan resolusi suatu ADC menentukan ketelitian nilai hasil konversi yang berhubungan dengan jumlah bit yang dimilikinya. Sehingga semakin besar jumlah bit suatu ADC makan akan memberikan ketelitian nilai hasil konversi yang lebih baik. Pada Arduino, resolusi yang dimiliki adalah 10bit atau rentang nilai digital antara 0 - 1023. Pada Arduino tegangan referensi yang digunakan adalah 5 volt, hal ini berarti ADC pada Arduino mampu menangani sinyal analog dengan tegangan 0 - 5 volt. Arduino Uno mempunyai 6 pin input analog yang berlabel A0 sampai A5 dimana masingmasing pin tersebut memberikan 10bit resolusi. 

 3. PWM, ADC, INTERRUPT, & MILLIS 

    a. PWM

Pulse Width Modulation (PWM) secara umum adalah sebuah cara memanipulasi lebar sinyal yang dinyatakan dengan pulsa dalam suatu perioda, untuk mendapatkan tegangan rata-rata yang berbeda. Satu siklus pulsa merupakan kondisi high kemudian berada di zona transisi ke kondisi low. Lebar pulsa PWM berbanding lurus dengan amplitudo sinyal asli yang belum termodulasi. Duty Cycle adalah perbandingan antara waktu ON (lebar pulsa High) dengan perioda. Duty Cycle biasanya dinyatakan dalam bentuk persen (%).

 


Gambar 22. Duty Cycle

Duty Cycle = 𝑡𝑂𝑁

𝑡𝑡𝑜𝑡𝑎𝑙

        

§  𝑡𝑜𝑛 = Waktu ON atau Waktu dimana tegangan keluaran berada pada posisi tinggi (highatau 1) 
§  𝑡𝑜𝑓𝑓 = Waktu OFF atau Waktu dimana tegangan keluaran berada pada posisi rendah(low atau 0)

§  𝑡𝑡𝑜𝑡𝑎𝑙= Waktu satu siklus atau penjumlahan antara tON dengan tOFF atau disebut juga dengan periode satu gelombang.

 

Pada Raspberry Pi Pico, terdapat blok PWM yang terdiri dari 8 unit (slice), dan masing-masing slice dapat mengendalikan dua sinyal PWM atau mengukur frekuensi serta duty cycle dari sinyal input. Dengan total 16 output PWM yang dapat dikontrol, semua 30 pin GPIO bisa digunakan untuk PWM. Setiap slice memiliki fitur utama seperti penghitung 16-bit, pembagi clock presisi, dua output independen dengan duty cycle 0–100%, serta mode pengukuran frekuensi dan duty cycle. PWM pada Raspberry Pi Pico juga mendukung pengaturan fase secara presisi serta dapat diaktifkan atau dinonaktifkan secara bersamaan melalui satu register kontrol global, sehingga memungkinkan sinkronisasi beberapa output untuk aplikasi yang lebih kompleks.


b.     ADC

ADC atau Analog to Digital Converter merupakan salah satu perangkat elektronika yang digunakan sebagai penghubung dalam pemrosesan sinyal analog oleh sistem digital. Fungsi utama dari fitur ini adalah mengubah sinyal masukan yang masih dalam bentuk sinyal analog menjadi sinyal digital dengan bentuk kode-kode digital.

Raspberry Pi Pico memiliki empat ADC (Analog-to-Digital Converter) 12-bit dengan metode SAR, tetapi hanya tiga kanal yang dapat digunakan secara eksternal, yaitu ADC0, ADC1, dan ADC2, yang terhubung ke pin GP26, GP27, dan GP28. Kanal keempat (ADC4) digunakan secara internal untuk membaca suhu dari sensor suhu bawaan. Konversi ADC dapat dilakukan dalam tiga mode: polling, interrupt, dan FIFO dengan DMA. Kecepatan konversi ADC adalah 2μs per sampel atau 500 ribu sampel per detik (500kS/s). Mikrocontroller RP2040 berjalan pada frekuensi 48MHz yang berasal dari USB PLL, dan setiap konversi ADC membutuhkan 96 siklus CPU, sehingga waktu samplingnya adalah 2μs per sampel.

c.     Millis

Raspberry Pi Pico yang sering diprogram menggunakan MicroPython, fungsi utime.ticks_ms() menyediakan fungsionalitas yang sepadan. Fungsi ini mengembalikan nilai penghitung milidetik yang bersifat monotonik (terus bertambah) sejak sistem dimulai atau modul utime dimuat. Sama seperti millis() dan HAL_GetTick(), nilai ticks_ms() juga akan mengalami wrap-around (kembali ke nol) setelah mencapai batasnya, sehingga penggunaan fungsi utime.ticks_diff() menjadi penting untuk perhitungan selisih waktu yang akurat dan aman terhadap overflow. Dengan demikian, utime.ticks_ms() memungkinkan implementasi pola penjadwalan dan delay non-blocking yang serupa untuk menciptakan aplikasi yang responsif di lingkungan MicroPython. 


 4. Communication

        a.     ART (Universal Asynchronous Receiver Transmitter)

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


Gambar  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 

 b.     I2C (Inter-Integrated Circuit)

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:


      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.

 5. 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)

6. sensor soil mouisture  

Sensor Soil Moisture atau Sensor Kelembaban Tanah adalah perangkat yang digunakan untuk mengukur kandungan air (kelembaban) di dalam tanah. Sensor ini menjadi sangat penting dalam sistem irigasi otomatis, pertanian cerdas, dan proyek berkebun yang ingin memastikan tanaman mendapatkan jumlah air yang optimal

Ada beberapa jenis sensor kelembaban tanah, tetapi yang paling umum untuk proyek hobi adalah jenis resistif atau kapasitif.

a. Sensor Kelembaban Tanah Tipe Resistif (yang paling umum terlihat)


 

  • Prinsip Kerja: Sensor ini bekerja berdasarkan prinsip perubahan resistansi listrik tanah. Biasanya terdiri dari dua probe (elektroda) yang dimasukkan ke dalam tanah. Listrik dialirkan antara kedua probe ini. Air bersifat konduktif, sehingga semakin banyak air di dalam tanah, semakin baik pula konduktivitas tanah, yang berarti resistansi antara kedua probe akan menurun. Sebaliknya, tanah kering memiliki konduktivitas yang buruk, sehingga resistansinya tinggi.
  • Kelebihan: Umumnya lebih murah dan mudah digunakan.
  • Kekurangan: Rentan terhadap korosi pada probe karena kontak langsung dengan air dan mineral di dalam tanah. Korosi ini dapat mengurangi akurasi dan masa pakai sensor dalam jangka panjang. Karena itu, sensor resistif biasanya memiliki umur pakai yang lebih pendek dibandingkan kapasitif.

b. Sensor Kelembaban Tanah Tipe Kapasitif


 

  • Prinsip Kerja: Sensor ini menggunakan prinsip perubahan kapasitansi dielektrik. Alih-alih mengukur resistansi langsung melalui probe yang terekspos, sensor ini menggunakan bidang frekuensi radio untuk mengukur kapasitansi di sekitarnya. Air memiliki konstanta dielektrik yang jauh lebih tinggi daripada udara atau tanah kering. Oleh karena itu, semakin banyak air di dalam tanah, semakin tinggi pula nilai kapasitansi yang terdeteksi oleh sensor. Probe sensor kapasitif biasanya dilapisi atau terisolasi, sehingga tidak langsung bersentuhan dengan tanah dan meminimalkan korosi.
  • Kelebihan: Lebih tahan terhadap korosi dan memiliki masa pakai yang lebih panjang. Pembacaan lebih stabil dan akurat.
  • Kekurangan: Umumnya sedikit lebih mahal daripada sensor resistif.

Kedua jenis sensor ini mengeluarkan nilai analog yang kemudian perlu dibaca oleh mikrokontroler. Nilai analog ini akan bervariasi dari nilai rendah (tanah kering) hingga nilai tinggi (tanah basah). Pengguna perlu mengkalibrasi sensor ini dengan menguji pada kondisi tanah kering dan tanah basah untuk mendapatkan rentang nilai yang akurat untuk aplikasi spesifik mereka.



    7. Pompa 6 volt

    Motor pump / pompa air adalah alat untuk menggerakan air dari tempat bertekanan rendah ke tempat bertekanan yang lebih tinggi. Pada dasarnya motor pump sama dengan motor DC pada umumnya, hanya saja sudah di-packing sedemikian rupa sehingga dapat digunakan di dalam air.


Spesifikasi :

 

·       Nilai Tegangan : DC 12V

·       Beban : Air

·       Penyerapan air : 1L – 1.2L/min

·       Arus (dengan beban) : Kurang dari 320mA

·       Arus : 2.0LPM

·       Ukuran total : D27 x 75mm

·       Diameter lubang air : 6.5mm

·       Tekanan maksimum : Lebih dari 360mmHg

·       Kebisingan : Kurang dari <60dB 

    

    8. Raspbery pipico

    Raspberry Pi Pico adalah papan rangkaian elektronik yang di dalamnya terdapat komponen utama chip mikrokontroler RP2040, yang dirancang dan diproduksi oleh Raspberry Pi Foundatio. Tidak seperti komputer mini raspberry Pi lainnya yang menjalankan sistem operasi seperti Linux, Pico dirancang untuk tugas-tugas yang lebih sederhana dan langsung (embedded system), seperti membaca sensor, mengontrol perangkat, atau melakukan pengolahan data pada tingkat hardware.
Adapun spesifikasi dari Raspberry Pi Pico adalah sebagai berikut:

Gambar 5. Raspberry pi pico

Parameter

Spesifikasi

Microcontroller

RP2040

Operating Voltage

3.3 V

Input Voltage (recommended)

5 V via USB

Input Voltage (limit)

1.8–5.5 V

Digital I/O Pins

26 GPIO pins

PWM Digital I/O Pins

16

Analog Input Pins

3

DC Current per I/O Pin

16 mA

DC Current for 3.3V Pin

300 mA

Flash Memory

2 MB on-board QSPI Flash

SRAM

264 KB

Clock Speed

Hingga 133 MHz


Gambar 6. Konfigurasi pin Raspberry pi pico


Bagian-bagian pendukunng

1    RAM (Random Access Memory) 

Raspberry Pi Pico dilengkapi dengan 264KB SRAM on-chip. Kapasitas RAM yang lebih besar ini memungkinkan Pico menjalankan aplikasi yang lebih kompleks dan menyimpan data lebih banyak. 

2.   Memori Flash Eksternal

Raspberry Pi Pico tidak memiliki ROM tradisional. Sebagai gantinya, ia menggunakan memori flash eksternal. Kapasitas memori flash ini dapat bervariasi, umumnya antara 2MB hingga 16MB, tergantung pada konfigurasi. Memori flash ini digunakan untuk menyimpan firmware dan program pengguna. Penggunaan memori flash eksternal pada Pico memberikan fleksibilitas lebih besar dalam hal kapasitas penyimpanan program.

3    Crystal Oscillator

Raspberry Pi Pico menggunakan crystal oscillator untuk menghasilkan sinyal clock yang stabil. Sinyal clock ini penting untuk mengatur kecepatan operasi mikrokontroler dan komponen lainnya.

4.     Regulator Tegangan

Untuk memastikan pasokan tegangan yang stabil ke mikrokontroler.

5.      Pin GPIO (General Purpose Input/Output):

Untuk menghubungkan Pico ke berbagai perangkat eksternal seperti sensor, motor, dan LED.


     9.  LCD 16x2

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.

 

Gambar 14. LCD16x2

 

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 :


 

Gambar 15. Struktur LCD


    10. Beardbord


Gambar 19. Beardboard

        Breadboard terdiri dari lubang yang digunakan untuk menempatkan terminal komponen dan kemudian lubang ini dihubungkan satu sama lain menggunakan berbagai kabel/kawat.  Dua baris pertama (atas) dan dua baris terakhir (bawah) papan breadboard digunakan untuk positif (satu baris pertama dan terakhir dua) dan untuk negatif (baris lain dari dua pertama dan terakhir). Pada gambar breadboar di atas, dua baris pertama (atas) dan terakhir (bawah) papan breadboard terdiri dari 5 lubang di setiap kolom (total 10 kolom) saling terhubung secara horizontal satu sama lain secara internal. Jika terminal sumber daya terhubung dalam satu lubang satu kolom di baris atas atau bawah (salah satu dari dua baris), maka daya listrik yang sama dapat diambil dari lima lubang berturut-turut di kolom yang sama.

11. 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.

12. rtc

RTC (Real-Time Clock) adalah perangkat elektronik yang berfungsi untuk mengukur dan melacak waktu saat ini. Berbeda dengan timer internal pada mikrokontroler, RTC beroperasi secara independen dan terus menjaga waktu meskipun catu daya utama sistem dimatikan. Hal ini biasanya dicapai dengan adanya sumber daya khusus yang kecil, seperti baterai koin.

RTC pada dasarnya adalah sirkuit terpadu (IC) khusus yang berisi osilator (biasanya osilator kristal) dan sebuah penghitung. Osilator menghasilkan frekuensi yang sangat presisi, yang kemudian dibagi oleh penghitung untuk melacak detik, menit, jam, hari dalam seminggu, tanggal, bulan, dan tahun. Banyak RTC juga menyertakan fitur-fitur seperti fungsi alarm, keluaran gelombang persegi, dan kompensasi untuk variasi suhu guna menjaga akurasi.

13. led 

LED (Light Emitting Diode) adalah perangkat semikonduktor yang memancarkan cahaya ketika arus listrik melewatinya. Ini adalah jenis dioda, yang berarti ia hanya mengizinkan arus mengalir dalam satu arah. Ketika arus mengalir dari anoda (terminal positif) ke katoda (terminal negatif) LED, elektron bergabung kembali dengan hole di dalam material semikonduktor, melepaskan energi dalam bentuk foton (cahaya). Fenomena ini disebut elektroluminesensi.



LED sangat hemat energi dan memiliki umur yang panjang dibandingkan dengan lampu pijar tradisional. LED tersedia dalam berbagai warna, yang ditentukan oleh jenis material semikonduktor yang digunakan. Agar LED berfungsi dengan benar dan aman, resistor pembatas arus hampir selalu dihubungkan secara seri dengannya untuk mencegah arus berlebihan merusak perangkat.

14.Servo motor 180 derajat

Servo motor 180 derajat 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.

Teori Dasar

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 180 derajat 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 180 derajat 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 180 Derajat

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 aileron, elevator, 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.

 
2. Listing program 

TX

from machine import ADC, Pin, UART

from dht import DHT22

import utime

import ujson


# === Inisialisasi Sensor ===

soil = ADC(26)

ldr = ADC(28)

dht = DHT22(Pin(12))


# === Inisialisasi UART (TX = GPIO0, RX = GPIO1) ===

uart = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))

utime.sleep(1)  # beri waktu UART stabil


# === Fungsi Konversi ===

def adc_to_persen_float(adc_val):

    return (adc_val / 65535) * 100


def adc_to_lux(adc_val):

    return int((adc_val / 65535) * 30000)


# === Loop Utama ===

while True:

    try:

        dht.measure()

        utime.sleep_ms(500)


        suhu = dht.temperature()

        hum = dht.humidity()


        if suhu is None or hum is None:

            print("Sensor DHT error, lewati loop")

            continue


        lux = adc_to_lux(ldr.read_u16())

        soil_moist = adc_to_persen_float(soil.read_u16())


        # Format JSON

        data = {

            "suhu": round(suhu, 1),

            "hum": round(hum, 1),

            "lux": lux,

            "soil": round(soil_moist, 1)

        }


        json_data = ujson.dumps(data) + "\n"

        uart.write(json_data)

        print("[TX] Dikirim:", json_data.strip())


        utime.sleep(5)


    except Exception as e:

        print("!!! Error Sensor:", e)

        utime.sleep(3)

RX

import utime

import ujson

from machine import Pin, PWM, I2C, UART

from ds3231 import DS3231

from i2c_lcd import I2cLcd


# --- Konfigurasi UART ---

uart = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))


# --- Aktuator ---

servo = PWM(Pin(4))

servo.freq(50)

relay = Pin(17, Pin.OUT)


# --- LED Indikator ---

led_pins = [15, 14, 13, 12]

leds = [Pin(pin, Pin.OUT) for pin in led_pins]


# --- Inisialisasi LCD ---

try:

    i2c_lcd = I2C(0, sda=Pin(8), scl=Pin(9))

    lcd_devices = i2c_lcd.scan()

    if not lcd_devices:

        raise Exception("LCD tidak terdeteksi pada I2C0 (GP8, GP9).")

    lcd_addr = lcd_devices[0]

    lcd = I2cLcd(i2c_lcd, lcd_addr, 2, 16)

except Exception as e:

    print("Inisialisasi LCD gagal:", e)

    raise SystemExit


# --- Inisialisasi RTC ---

i2c_rtc = I2C(1, sda=Pin(18), scl=Pin(19))

rtc = DS3231(i2c_rtc)


# --- Fungsi Servo ---

def set_servo_deg(deg):

    duty = int(1638 + (deg / 180) * (8192 - 1638))

    servo.duty_u16(duty)


# --- Fungsi LED berdasarkan LUX ---

def kontrol_led(lux):

    leds[0].value(lux >= 12000)

    leds[1].value(lux >= 6000)

    leds[2].value(lux >= 4000)

    leds[3].value(lux <= 2000)


# --- Fungsi Matikan Semua Aktuator ---

def nonaktifkan_semua():

    relay.value(0)

    set_servo_deg(0)

    for led in leds:

        led.value(0)


# --- Buffer pembacaan UART ---

buffer = ""


# --- Jam Operasional ---

JAM_MULAI = 7

JAM_SELESAI = 15  # 15:00 malam


# --- Loop utama ---

while True:

    try:

        if uart.any():

            char = uart.read(1)

            if not char:

                continue

            char = char.decode()


            if char == '{':

                buffer = char

            elif buffer:

                buffer += char

                if char == '}':

                    try:

                        print("Diterima:", buffer)

                        sensor = ujson.loads(buffer)


                        suhu = float(sensor.get("suhu", -1))

                        hum = float(sensor.get("hum", -1))

                        lux = float(sensor.get("lux", -1))

                        tanah = float(sensor.get("tanah", sensor.get("soil", -1)))  # fallback "soil"


                        # Validasi rentang

                        if not (0 <= suhu <= 100 and 0 <= hum <= 100 and 0 <= lux <= 30000 and 0 <= tanah <= 100):

                            raise ValueError("Nilai sensor di luar batas logis.")


                        jam, menit, detik = rtc.get_time()


                        if JAM_MULAI <= jam < JAM_SELESAI:

                            relay.value(1 if tanah < 40 else 0)

                            set_servo_deg(90 if suhu > 30 and hum < 60 else 0)

                            kontrol_led(lux)


                            lcd.clear()

                            lcd.putstr(f"T:{suhu:.1f}C H:{hum:.0f}%")

                            lcd.move_to(0, 1)

                            lcd.putstr(f"L:{int(lux)} {jam:02}:{menit:02}")

                        else:

                            nonaktifkan_semua()

                            lcd.clear()

                            lcd.putstr("Diluar Jadwal")

                            lcd.move_to(0, 1)

                            lcd.putstr(f"{jam:02}:{menit:02}")


                    except Exception as e:

                        print("❌ Parsing Error:", e)

                        lcd.clear()

                        lcd.putstr("Data Error")

                        lcd.move_to(0, 1)

                        lcd.putstr(str(e)[:16])

                    finally:

                        buffer = ""


    except Exception as e:

        print("❗ Error utama:", e)

        utime.sleep(2)

 

2. Rangkaian skema 



3. Rangkaian percobaan 
4. prinsip kerja

Rangkaian ini terdiri dari dua Raspberry Pi Pico yang terhubung melalui UART, di mana Pico 1 bertindak sebagai node sensor (transmitter) dan Pico 2 sebagai node aktuator (receiver). Pada Pico 1, terdapat beberapa sensor yaitu sensor kelembaban tanah (soil moisture) yang menggunakan ADC pada GPIO 26, sensor cahaya (LDR) pada GPIO 28, dan sensor suhu dan kelembaban udara DHT22 pada GPIO 12. Setiap 5 detik, Pico 1 membaca seluruh data sensor, mengubah nilai ADC menjadi satuan persentase dan lux, lalu mengemas data dalam format JSON, dan mengirimkannya melalui UART (TX = GPIO 0, RX = GPIO 1).

Sementara itu, Pico 2 menerima data JSON dari UART yang sama (GPIO 0 dan 1), kemudian memproses informasi suhu, kelembaban udara, intensitas cahaya (lux), dan kelembaban tanah. Pico 2 juga terhubung dengan beberapa perangkat aktuator, yaitu servo motor pada GPIO 4 untuk membuka/tutup, relay pada GPIO 17 untuk mengontrol pompa atau beban lainnya, dan 4 buah LED indikator pada GPIO 12–15 untuk menunjukkan tingkat cahaya. Pico 2 juga dilengkapi dengan LCD I2C (terhubung ke GPIO 8 dan 9) untuk menampilkan informasi real-time, serta modul RTC DS3231 pada I2C1 (GPIO 18 dan 19) sebagai acuan waktu.

Selama waktu operasional antara pukul 07.00 hingga 15.00, Pico 2 akan mengaktifkan relay jika kelembaban tanah kurang dari 40%, dan memutar servo ke 90° jika suhu lebih dari 30°C dan kelembaban udara di bawah 60%, sebagai reaksi terhadap kondisi panas dan kering. LED menyala sesuai dengan nilai lux (indikator intensitas cahaya lingkungan), sedangkan LCD menampilkan data sensor dan waktu. Di luar jam tersebut, seluruh aktuator dimatikan, dan LCD menampilkan pesan "Diluar Jadwal". Keseluruhan sistem ini bekerja secara otomatis dan saling terkoordinasi melalui komunikasi serial UART berbasis data JSON.

8. Download File[Kembali]

HTML

Rangkaian Simulasi Pi pico  [KliK]

Rangkaian Skematik [KliK]

Datasheet Sensor  soil moisture [KliK]

Datasheet Sensor ldr [KliK]

Datasheet Sensor dht22 [KliK]

Datasheet pompa [KliK]

Datasheet Raspberry pi pico [KliK]

Datasheet Motor Servo [KliK]

Datasheet LCD 16x2 i2c [KliK]

















\








Tidak ada komentar:

Posting Komentar

     BAHAN PRESENTASI     MATA KULIAH ELEKTRONIKA 2022 Oleh Zahara 2210953017 DOSEN PENGAMPU DR. DARWISON, M.T. Referensi  1. Darwison, 2010...

Postingan Populer