TUGAS PENDAHULUAN 1 : PERCOBAAN 2 KONDISI 3
1.) Prosedur [kembali]
- Siapkan komponen-komponen yang akan dirangkai sesuai percobaan
- Rangkai komponen pada software proteus
- Buka aplikasi STM32 pada laptop
- Masukkan Listing program
- Compile program ke dalam format HEX lalu
- Upload Listing program pada rangkaian
- Rangkaian sudah dapat dijalankan
2.) Hardware dan Diagram Blok [kembali]
A. Hardware
1. STM32F103C8
2. Resistor
Resistor atau penghambat merupakan komponen elektronik yang memiliki dua pin dan dirancang untuk mengatur tegangan listrik dan arus listrik. Resistor mempunyai nilai resistansi (tahanan) tertentu yang dapat memproduksi tegangan listrik di antara kedua pin di mana nilai tegangan terhadap resistansi tersebut berbanding lurus dengan arus yang mengalir, berdasarkan persamaan hukum Ohm:
V=I*R
3. Motor Stepper
Pada dasarnya, cara kerja motor stepper berbeda beda, tergantung pada konstruksi rotor dan stator serta sistem lilitan pada statornya. Namun setiap stepper digerakkan oleh pulsa digital yang diubah setiap waktu.
Kecepatan sinyal pulsa digital atau lebih tepatnya frekuensi sinyal mempengaruhi kecepatannya. Semakin cepat frekuensi sinyal, maka semakin cepat pula RPM pada stepper.
Sinyal digital ini dapat pula digunakan untuk menentukan posisi pada motor stepper. Misalnya saja, stepper dengan sudut step 1.8° maka untuk satu putaran penuh diperlukan 200 step, sehingga untuk setengah putaran stepper memerlukan 100 step dan untuk satu setengah putaran diperlukan 300 step. Hal inilah yang mejadikan stepper banyak dipakai pada mesin printer 3D dan CNC Engraving.
4. RGB LED
LED RGB atau “Light Emitting Diode Red Green Blue” adalah jenis LED yang mampu memancarkan cahaya dalam tiga warna dasar, yaitu merah (Red), hijau (Green), dan biru (Blue). LED RGB 4 Pin adalah LED RGB yang memiliki anoda dan katoda seperti LED biasa, hanya saja terdapat 3 anoda pada LED ini mewakili warna red, green, dan blue.
5. Soil Moisture Sensor
Pada Soil Moisture Sensor, terdapat beberapa pin yang harus diperhatikan sebelum memulai proyek. Berikut penjelasan singkat mengenai macam pin yang ada soil moisture sensor:
a.VCC
Pin VCC merupakan singkatan dari voltage at the common collector atau voltage at the collector of the common colllector. Dapat diartikan sebagai penginput daya atau tegangan ke suatu perangkat elektronik. Pin VCC ini biasanya akan dihubungkan pada 5V atau 3.3V. V disini diartikan sebagai Volt. Pin VCC merupakan pin bermuatan positif (+).
b.GND
Pin GND ini adalah pin dengan muatan negatif.(-). GND merupaan kepanjangn dari Ground. Pin ini digunakan sebagai tempat untuk catu daya. Pin GND pada soil moisture sensor dapat dikoneksikan dengan Pin GND pada mikrokotroler yang sama-sama bermuatan negatif.
c.A0
Pin ini disebut juga sebagai Keluaran Analog. Fungsinya untuk memberikan input atau masukkan berupa sinya analog.
d.D0
Pin ini disebut juga sebagai Keluaran Digital. Fungsinya adalah untuk memberikan output atau keluaran dari sinyal yang memiliki nilai biner. Nilai biner merupakan nilai yang hanya terdiri dari dua komponen saja yakni 0 dan 1. Nilai 0 biasanya untuk menandai off atau low, sedangkan nilai 1 untuk menandai on atau high.
6. Power Supply
Power supply adalah sebuah perangkat yang berisi rangkaian elektronika yang dapat digunakan untuk mengalirkan daya listrik ke rangkaian ataupun perangkat listrik dan elektronika lainnya. Dengan menggunakan sebuah power supply, perangkat listrik dan elektronik dapat beroperasi secara maksimal karena pasokan daya listrik yang dialirkan oleh power supply stabil sehingga dengan menggunakan power supply juga dapat mengurangi tingkat resiko kerusakan perangkat akibat perubahan tegangan listrik yang ekstrem.
7. ADC ULN2003A
B. Diagram Blok

3.) Rangkaian Simulasi dan Prinsip Kerja [kembali]
Prinsip Kerja:
Prinsip kerja rangkaian ini didasarkan pada input dari soil moisture sensor (sensor kelembapan tanah) yang mengukur tingkat kelembapan tanah dan menghasilkan sinyal analog atau digital sesuai kondisi tanah. Sinyal ini kemudian diproses oleh sebuah pengontrol (mikrokontroler atau sirkuit logika) yang telah dikalibrasi menggunakan resistor variabel (RV1 hingga RV506) untuk menetapkan ambang batas kondisi tanah, seperti basah, normal, atau kering.
Ketika sensor mendeteksi tanah dalam kondisi basah (resistansi rendah), pengontrol akan mengaktifkan LED RGB untuk menampilkan warna biru dengan mengatur kombinasi tegangan pada pin merah, hijau, dan biru. Pada kondisi kering (resistansi tinggi), LED RGB akan beralih ke warna merah, sedangkan kondisi normal (resistansi sedang) akan menyalakan warna hijau. Selain itu, pengontrol juga mengatur output lain berupa motor stepper. Misalnya, saat tanah kering, motor stepper dapat diaktifkan untuk menggerakkan sistem irigasi atau pompa air, sementara pada kondisi basah atau normal, motor dapat dimatikan atau diatur kecepatannya sesuai kebutuhan.
Sumber daya rangkaian disuplai oleh +3V, dan resistor variabel (RV) berperan dalam menyesuaikan sensitivitas sensor atau karakteristik respons rangkaian. Set Window Server merujuk pada antarmuka perangkat lunak untuk memantau atau mengkonfigurasi parameter operasional rangkaian. Dengan demikian, rangkaian ini bekerja secara otomatis berdasarkan data sensor, memberikan umpan balik visual melalui LED RGB, dan mengontrol tindakan fisik melalui motor stepper.
4.) Flowchart dan Listing Program [kembali]
Flowchart:
/* USER CODE BEGIN Header */
/**
******************************************************************************
* @file : main.c
* @brief : Main program body
******************************************************************************
* @attention
*
* Copyright (c) 2025 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "main.h"
#include "main.h"
#define LED_PORT GPIOB
#define Red GPIO_PIN_12
#define Green GPIO_PIN_13
#define Blue GPIO_PIN_14
ADC_HandleTypeDef hadc1;
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_ADC1_Init(void);
void Error_Handler(void);
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_ADC1_Init();
while (1)
{
HAL_ADC_Start(&hadc1);
if (HAL_ADC_PollForConversion(&hadc1, 10) == HAL_OK)
{
uint16_t adc_val = HAL_ADC_GetValue(&hadc1);
if (adc_val > 2500) // Tanah basah
{
HAL_GPIO_WritePin(LED_PORT, Blue, GPIO_PIN_SET); // Nyalakan hijau
HAL_GPIO_WritePin(LED_PORT, Green | Red, GPIO_PIN_RESET); // Matikan merah dan biru
}
else
{
// Tanah kering
HAL_GPIO_WritePin(LED_PORT, Red | Green | Blue, GPIO_PIN_RESET); // Matikan semua
}
}
HAL_Delay(200);
}
}
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
{
Error_Handler();
}
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC;
PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV2;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
{
Error_Handler();
}
}
static void MX_ADC1_Init(void)
{
ADC_ChannelConfTypeDef sConfig = {0};
hadc1.Instance = ADC1;
hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
hadc1.Init.ContinuousConvMode = DISABLE;
hadc1.Init.DiscontinuousConvMode = DISABLE;
hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
hadc1.Init.NbrOfConversion = 1;
if (HAL_ADC_Init(&hadc1) != HAL_OK)
{
Error_Handler();
}
sConfig.Channel = ADC_CHANNEL_0;
sConfig.Rank = ADC_REGULAR_RANK_1;
sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{
Error_Handler();
}
}
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
__HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
HAL_GPIO_WritePin(GPIOB, Red | Green | Blue, GPIO_PIN_RESET);
GPIO_InitStruct.Pin = Red | Green | Blue;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}
void Error_Handler(void)
{
__disable_irq();
while (1)
{
}
}
#ifdef USE_FULL_ASSERT
void assert_failed(uint8_t *file, uint32_t line)
{
}
#endif /* USE_FULL_ASSERT */
5.) Kondisi [kembali]
=> Buatlah rangkaian seperti gambar pada percobaan 2, buatlah ketika soil moisture sensor mendeteksi kelembapan tanah basah, LED RGB menampilkan warna Biru
6.) Video Simulasi [kembali]
7.) Download File [kembali]
Rangkaian [disini]
Listing Program [disini]
Datasheet STM32F103C8T6 [disini]
Datasheet Motor Stepper [disini]
Datasheet LED RGB [disini]
Datasheet ULN2003A [disini]
Datasheet Soil Moisture Sensor [disini]
Video Simulasi [disini]
Komentar
Posting Komentar