LAPORAN AKHIR PRATIKUM 2



1. Prosedur [Kembali]

1. Persiapan Alat dan Bahan

Sesuai modul :

  • STM32 Nucleo G474RE
  • Sensor LDR
  • Motor Servo
  • Push Button
  • Breadboard
  • Adaptor / supply

2. Perancangan Rangkaian

Buat rangkaian seperti gambar yang kamu kirim:

  • LDR → PA0 (ADC)
  • Servo → PA6 (PWM TIM3)
  • Push button → PB1 (input)
  • VCC dan GND terhubung dengan benar

3. Konfigurasi Sistem

Lakukan konfigurasi:

  • ADC untuk membaca nilai LDR
  • PWM (TIM3) untuk mengontrol posisi servo
  • GPIO untuk tombol

4. Penentuan Kondisi Cahaya

Tambahkan 3 kategori intensitas cahaya dari nilai ADC

5. Algoritma Sistem

Alur kerja:

  1. Baca nilai LDR dari ADC
  2. Bandingkan dengan threshold
  3. Tentukan posisi servo:
    • Gelap → masuk atap
    • Sedang → setengah
    • Terang → keluar
  4. Kirim PWM ke servo
  5. Ulangi terus

2. Hardware dan Diagram Blok[Kembali]

 1 STM32G474RE

Microcontroller

STM32G474RE (ARM Cortex-M4F)

Operating Voltage

3.3 V

Input Voltage (recommended)

5 V via USB (ST-LINK) atau 7–12 V via VIN

Input Voltage (limit)

4.5  15 V (VIN board Nucleo)

Digital I/O Pins

±51 GPIO pins (tergantung konfigurasi fungsi)

PWM Digital I/O Pins

Hingga 24 channel PWM (advanced, general-purpose, dan high-resolution timers)

Analog Input Pins

Hingga 24 channel ADC (12-bit / 16-bit dengan oversampling)

DC Current per I/O Pin

Maks. 20 mA per pin (disarankan  8 mA)

DC Current for 3.3V Pin

Hingga ±500 mA (tergantung regulator & sumber daya)

Flash Memory

512 KB internal Flash

SRAM

128 KB SRAM (termasuk CCM RAM)

Clock Speed

Hingga 170 MHz

 2. Sensor LDR



  1. Spesifikasi Sensor Cahaya LDR

     

    1. Supply : 3.3 V – 5 V (arduino available)

    2. Output Type: Digital Output (0 and 1) 

    3. Inverse output

    4. Include IC LM393 voltage comparator

    5. Sensitivitasnya dapat diatur 

    6. Dimensi PCB size: 3.2 cm x 1.4 cm

     

    Modul sensor cahaya ini memudahkan Anda dalam menggunakan sensor LDR (Light Dependent Resistor) untuk mengukur intensitas cahaya. Modul LDR ini memiliki pin output analog dan pin output digital dengan label AO dan DO pada PCB. Nilai resistansi LDR pada pin analog akan meningkat apabila intensitas cahaya meningkat dan menurun ketika intensitas cahaya semakin gelap. Pada pin digital, pada batas tertentu DO akan high atau low, yang dikendalikan sensitivitas nya menggunakan on-board potensiometer.

    • Input Voltage: DC 3.3V - 5V

    • Output: Digital - Sensitivitas bisa diatur, dan analog

    • Ukuran PCB : 33 mm x 15 mm 

     

    LDR atau Light Dependent Resistor merupakan salah satu komponen jenis resistor dengan nilai resistansi yang terus berubah sesuai intensitas cahaya yang mengenai sensor. Semakin banyak cahaya yang mengenai sensor LDR, maka akan semakin menurun nilai resistansinya. Nah, semakin sedikit cahaya yang mengenai sensor (gelap), maka nilai resistansinya akan semakin besar, jadi arus listrik yang mengalir akan terhambat.

     

    Pada umumnya, sensor LDR mempunyai nilai resistansi sebesar 200 KOhm di tengah kegelapan dan akan turun menjadi 500 Ohm saat terkena banyak cahaya. Oleh karena itu, menjadi hal biasa apabila komponen elektronika yang peka cahaya ini sering digunakan untuk lampu alarm, kamar tidur, penerangan jalan dan lain sebagainya.

     

    LDR memiliki peran sebagai sensor cahaya di dalam aneka rangkaian elektronika seperti saklar otomatis berdasarkan cahaya. Jadi jika sensor terkena cahaya, maka arus listrik akan mengalir (ON) dan jika sensor berada di dalam kondisi minim cahaya alias gelap, maka aliran listrik akan terhambat (OFF). LDR sering digunakan untuk sensor lampu kamar tidur, penerangan jalan otomatis, alarm dan lain sebagainya




  2. Motor Servo



  3. Push Button


    Spesifikasi Teknis Push Button Switch

    Karakteristik Listrik

    • Rating Tegangan (Voltage): Menunjukkan batas maksimum tegangan yang bisa ditangani, misalnya 12V DC atau 250V AC.

    • Rating Arus (Current): Menunjukkan seberapa besar arus yang bisa dialirkan tanpa merusak kontak, biasanya berkisar antara 1A hingga 5A.

    • Tipe Kontak: Bisa NO (Normally Open), NC (Normally Closed), atau kombinasi keduanya (SPDT / Single Pole Double Throw).



2.  LED 
Light Emitting Diode atau sering disingkat dengan LED adalah komponen elektronika yang dapat memancarkan  cahaya monokromatik ketika diberikan tegangan maju. LED merupakan keluarga Dioda yang terbuat dari bahan semikonduktor. Warna-warna Cahaya yang dipancarkan oleh LED tergantung pada jenis bahan semikonduktor yang dipergunakannya. LED juga dapat memancarkan sinar inframerah yang tidak tampak oleh mata seperti yang sering kita jumpai pada Remote Control TV ataupun Remote Control perangkat elektronik lainnya.


Tabel. Warna dan Material LED

Warna
Panjanggelombang [nm]
Material semikonduktor

λ > 760
Gallium arsenide (GaAs)Aluminium gallium arsenide (AlGaAs)

610 < Î» < 760
Aluminium gallium arsenide (AlGaAs)Gallium arsenide phosphide (GaAsP)Aluminium gallium indium phosphide (AlGaInP)Gallium(III) phosphide (GaP)

590 < Î» < 610
Gallium arsenide phosphide (GaAsP)Aluminium gallium indium phosphide (AlGaInP)Gallium(III) phosphide (GaP)

570 < Î» < 590
Gallium arsenide phosphide (GaAsP)Aluminium gallium indium phosphide (AlGaInP)Gallium(III) phosphide (GaP)

500 < Î» < 570
Indium gallium nitride (InGaN) / Gallium(III) nitride (GaN)Gallium(III) phosphide (GaP)Aluminium gallium indium phosphide (AlGaInP)Aluminium gallium phosphide (AlGaP)

450 < Î» < 500
Zinc selenide (ZnSe)Indium gallium nitride (InGaN)

400 < Î» < 450
Indium gallium nitride (InGaN)

multiple types
Dual blue/red LEDs,
blue with red phosphor,
or white with purple plastic

λ < 400
Diamond (235 nm) Boron nitride (215 nm) Aluminium nitride (AlN) (210 nm) Aluminium gallium nitride (AlGaN)Aluminium gallium indium nitride (AlGaInN) – (down to 210 nm)

multiple types
Blue with one or two phosphor layers:
yellow with red, orange or pink phosphor added afterwards,
or white with pink pigment or dye.

White
Broad spectrum
Blue/UV diode with yellow phosphor


Bagian bagian

Komponen LED tampak seperti lampu yang dipakai dalam sebuah rangkaian elektronika, walaupun sejatinya dia adalah Diode yang berpendar.

Yang harus diperhatikan adalah kaki sebuah LED, dibuat berbeda panjangnya.

Kaki yang panjang menunjukkan kutub positif, sementara yang pendek menunjukkan kutub negatif

3. Resistor

Resistor adalah komponen Elektronika Pasif yang memiliki nilai resistansi atau hambatan tertentu yang berfungsi untuk membatasi dan mengatur arus listrik dalam suatu rangkaian Elektronika (V=I R). 
Jenis Resistor yang digunakan disini adalah Fixed Resistor, dimana merupakan resistor dengan nilai tetap terdiri dari film tipis karbon yang diendapkan subtrat isolator kemudian dipotong berbentuk spiral. Keuntungan jenis fixed resistor ini dapat menghasilkan resistor dengan toleransi yang lebih rendah.
Cara menghitung nilai resistor:
Tabel warna

Contoh :
Gelang ke 1 : Coklat = 1
Gelang ke 2 : Hitam = 0
Gelang ke 3 : Hijau   = 5 nol dibelakang angka gelang ke-2; atau kalikan 105
Gelang ke 4 : Perak  = Toleransi 10%
Maka nilai resistor tersebut adalah 10 * 105 = 1.000.000 Ohm atau 1 MOhm dengan toleransi 10%.

Spesifikasi

4. Buzzer

Buzzer adalah sebuah komponen elektronika yang berfungsi untuk mengubah getaran listrik menjadi getaran suara. Buzzer biasa digunakan sebagai indikator bahwa proses telah selesai atau terjadi suatu kesalahan pada sebuah alat (alarm).

Bagian - bagian


5. Sensor Heart Beat
 





  1. Pulse Sensor Features and Specifications

    • Biometric Pulse Rate or Heart Rate detecting sensor
    • Plug and Play type sensor
    • Operating Voltage: +5V or +3.3V
    • Current Consumption: 4mA
    • Inbuilt Amplification and Noise cancellation circuit.
    • Diameter: 0.625”
    • Thickness: 0.125” Thick

6. Vcc / Batrey



Spesifikasi

  • Input voltage: ac 100~240v / dc 10~30v
  • Output voltage: dc 1~35v
  • Max. Input current: dc 14a
  • Charging current: 0.1~10a
  • Discharging current: 0.1~1.0a
  • Balance current: 1.5a/cell max
  • Max. Discharging power: 15w
  • Max. Charging power: ac 100w / dc 250w
  • Jenis batre yg didukung: life, lilon, lipo 1~6s, lihv 1-6s, pb 1-12s, nimh, cd 1-16s
  • Ukuran: 126x115x49mm
  • Berat: 460gr

7. Push Button




Spesifikasi:





Cara-Kerja-Push-Button

Prinsip kerja push button pada dasarnya adalah untuk menghubungkan dan memutuskan aliran listrik. Namun, tombol tekan tidak memiliki kunci dan akan kembali ke posisi semula setelah ditekan.

Ketika tombol tekan ditekan, nilainya menjadi HIGH dan mengalirkan arus listrik. Namun, setelah dilepas, tombol akan bernilai LOW dan memutuskan arus listrik.

Namun, bagaimana tombol tekan bekerja bisa berbeda tergantung dari jenis tombol tersebut, apakah itu NO atau NC.

Oleh karena itu, penting untuk memahami konsep dasar dan spesifikasi dari tombol tekan yang akan digunakan pada setiap proyek.


Blok Diagram



3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]

Rangkaian Simulasi :







Prinsip Kerja

Prinsip kerja sistem jemuran otomatis ini dimulai ketika mikrokontroler STM32 dihidupkan dan melakukan inisialisasi seluruh peripheral yang digunakan, yaitu GPIO, ADC, dan PWM (timer). Sensor LDR yang terhubung ke pin analog (PA0) berfungsi sebagai pendeteksi intensitas cahaya lingkungan. Nilai cahaya yang diterima oleh LDR akan diubah menjadi sinyal analog, kemudian dikonversi oleh ADC 12-bit menjadi data digital dengan rentang nilai 0 hingga 4095.

Selanjutnya, mikrokontroler secara terus-menerus membaca nilai ADC dari sensor LDR menggunakan fungsi read_LDR(). Nilai digital ini merepresentasikan tingkat pencahayaan di sekitar jemuran. Semakin kecil nilai ADC, maka kondisi lingkungan semakin gelap (cahaya rendah), sedangkan semakin besar nilai ADC menunjukkan kondisi semakin terang. Nilai tersebut kemudian dibandingkan dengan dua batas ambang (threshold), yaitu LDR_RENDAH dan LDR_SEDANG, yang telah ditentukan sebelumnya melalui proses kalibrasi.

Berdasarkan hasil perbandingan tersebut, sistem akan menentukan posisi jemuran dalam tiga kondisi. Jika nilai LDR lebih kecil dari LDR_RENDAH, maka dianggap kondisi gelap atau mendung sehingga jemuran akan masuk ke dalam atap untuk menghindari hujan atau kondisi tidak optimal. Jika nilai LDR berada di antara LDR_RENDAH dan LDR_SEDANG, maka kondisi dianggap cahaya sedang sehingga jemuran diposisikan setengah terbuka sebagai posisi aman. Sedangkan jika nilai LDR lebih besar dari LDR_SEDANG, maka kondisi dianggap sangat terang sehingga jemuran akan keluar sepenuhnya untuk memaksimalkan proses penjemuran.

Untuk menggerakkan jemuran, digunakan motor servo yang dikendalikan menggunakan sinyal PWM dari timer TIM3 pada pin PA6. Lebar pulsa (pulse width) PWM menentukan sudut putar servo. Pada program ini, nilai pulsa 1000 digunakan untuk posisi 0 derajat (jemuran masuk), 1500 untuk posisi 90 derajat (setengah terbuka), dan 2000 untuk posisi 180 derajat (jemuran keluar). Fungsi set_servo() akan mengatur nilai PWM tersebut sesuai dengan kondisi cahaya yang telah ditentukan.

Proses ini berlangsung secara terus-menerus di dalam loop utama dengan jeda waktu tertentu, sehingga sistem dapat merespons perubahan intensitas cahaya secara real-time. Dengan demikian, jemuran dapat bergerak otomatis menyesuaikan kondisi lingkungan tanpa intervensi pengguna, sehingga meningkatkan efisiensi dan keamanan dalam proses penjemuran pakaian.


4. Flowchart dan LIsting Program[Kembali]

Flowchart 






Listing Program :



#include "main.h" /* Private variables ---------------------------------------------------------*/ ADC_HandleTypeDef hadc1; TIM_HandleTypeDef htim3; /* USER CODE BEGIN PV */ #define LDR_THRESHOLD 2000 uint8_t manual_mode = 0; uint8_t posisi_servo = 0; /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_ADC1_Init(void); static void MX_TIM3_Init(void); /* USER CODE BEGIN 0 */ // ================= SERVO ================= void set_servo(uint8_t state) { if (state == 0) __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, 1000); else __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, 2000); } // ================= ADC ================= uint16_t read_LDR(void) { HAL_ADC_Start(&hadc1); HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY); return HAL_ADC_GetValue(&hadc1); } /* USER CODE END 0 */ int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_ADC1_Init(); MX_TIM3_Init(); HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1); while (1) { /* MODE OTOMATIS */ if (!manual_mode) { uint16_t ldr = read_LDR(); if (ldr < LDR_THRESHOLD) posisi_servo = 0; // gelap → masuk else posisi_servo = 1; // terang → keluar set_servo(posisi_servo); } HAL_Delay(100); } } /* ================= CALLBACK INTERRUPT ================= */ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if (GPIO_Pin == GPIO_PIN_1) { HAL_Delay(50); // debounce manual_mode = !manual_mode; posisi_servo = !posisi_servo; set_servo(posisi_servo); } } /* ================= CLOCK ================= */ void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1_BOOST); RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; RCC_OscInitStruct.HSIState = RCC_HSI_ON; RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV4; RCC_OscInitStruct.PLL.PLLN = 85; RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2; RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2; HAL_RCC_OscConfig(&RCC_OscInitStruct); RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4); } /* ================= ADC ================= */ static void MX_ADC1_Init(void) { ADC_ChannelConfTypeDef sConfig = {0}; hadc1.Instance = ADC1; hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4; hadc1.Init.Resolution = ADC_RESOLUTION_12B; hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE; hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV; hadc1.Init.ContinuousConvMode = DISABLE; HAL_ADC_Init(&hadc1); sConfig.Channel = ADC_CHANNEL_1; sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5; HAL_ADC_ConfigChannel(&hadc1, &sConfig); } /* ================= PWM ================= */ static void MX_TIM3_Init(void) { TIM_OC_InitTypeDef sConfigOC = {0}; htim3.Instance = TIM3; htim3.Init.Prescaler = 169; htim3.Init.CounterMode = TIM_COUNTERMODE_UP; htim3.Init.Period = 19999; HAL_TIM_PWM_Init(&htim3); sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = 1500; sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1); HAL_TIM_MspPostInit(&htim3); } /* ================= GPIO ================= */ static void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; __HAL_RCC_GPIOA_CLK_ENABLE(); GPIO_InitStruct.Pin = GPIO_PIN_1; GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); HAL_NVIC_SetPriority(EXTI1_IRQn, 0, 0); HAL_NVIC_EnableIRQ(EXTI1_IRQn); } /* ================= ERROR ================= */ void Error_Handler(void) { __disable_irq(); while (1) {} }


5. Video Demo [Kembali]

6. Analisa[Kembali]







7. Video Simulasi[Kembali]


8. Download File [Kembali]


1. Download HTML [disini]

2. Download Rangkaian Proteus  [disini]

3. Download Vidio Rangkaian [disini]

4. Download Datasheet Sensor: 

5. Download library Komponen: 

6. Download datasheet Relay [disini]

7. Download datasheet Motor [disini]

8. Download datasheet Led [disini]

9. Download listing program [disini]

10. Download data sheet [disini]

    Video Rangkaian [tekan disini]

Download LA [disini]

File Rangkaian Proteus [klik disini]

Datasheet Sensor: 






LAPORAN AKHIR PRATIKUM 2

[KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Prosedur 2. Hardware dan Diagram Blok 3. Rangkaian Simulasi dan Prinsip Kerja 4. F...