LA 2
1. Prosedur [kembali]
1. Siapkan alat dan bahan yang akan digunakan pada saat praktikum seperti harga STM32f103c8t6, IR sensor, touch sensor, jumper, breadboard, resistor, switch, buzzer
2. Rangkai sesuai gambar percobaan
3. Buka software STM32CubeIDE pada bagian main.h dan main.c copy listing program yang ada di modul kemudian paste ke main.h dan main.c di STM32CubeIDE
4. Kemudian sambungkan STM32f103c8t6ke laptop
5. Run program di STM32CubeIDE kemudian simulasikan rangkaian apakah sudah sesuai dengan kondisi yang diinginkan
- STM32 NUCLEO-G474RE
- Infrared Sensor
- Buzzer
- Push Button
- LED RGB
- Resistor
- Switch
3. Rangkaian Simulasi Dan Prinsip Kerja [kembali]
Rangkaian berbasis mikrokontroler STM32 ini murni beroperasi sebagai sistem indikator keamanan real-time yang digerakkan oleh prinsip logika AND dari dua input utama: switch (pin PA0) sebagai saklar pengaktif dan sensor IR (pin PA1) sebagai pemindai rintangan. Sistem ini sangat kaku dan hanya mengenal dua status operasional. Status "Aman" memiliki syarat mutlak, di mana sistem hanya akan menyalakan LED hijau (sementara LED merah dan buzzer mati) jika switch menyala (logika 1) DAN jalur sensor IR benar-benar bersih dari objek (logika 1). Sebaliknya, begitu sistem mendeteksi sedikit saja kecacatan dari syarat aman tersebut—entah karena switch sengaja dimatikan (OFF) ATAU sensor IR menabrak objek (logika 0)—status "Bahaya" akan langsung terpicu seketika, memaksa STM32 untuk mematikan LED hijau, menyalakan LED merah, dan membunyikan alarm buzzer. Singkatnya, rangkaian ini bertindak sebagai penjaga gerbang tanpa kompromi yang hanya mengizinkan kondisi normal terjadi jika sistem diaktifkan dan sama sekali tidak ada gangguan di hadapan sensor.
4. Flowchart dan Listing Program [kembali]
- Flowchart
Listing Program:
#include "main.h"
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
while (1)
{
if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET)
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);
}
else
{
if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1) == GPIO_PIN_RESET)
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);
}
else
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);
}
}
HAL_Delay(50);
}
}
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK |
RCC_CLOCKTYPE_SYSCLK
| RCC_CLOCKTYPE_PCLK1;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) !=
HAL_OK)
{
Error_Handler();
}
}
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2;
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)
{
}
}
#ifndef __MAIN_H
#define __MAIN_H
#ifdef __cplusplus
extern "C" {
#endif
#include "stm32c0xx_hal.h"
void Error_Handler(void);
#define BUTTON_REVERSE_Pin GPIO_PIN_0
#define BUTTON_REVERSE_GPIO_Port GPIOA
#define IR_SENSOR_Pin GPIO_PIN_1
#define IR_SENSOR_GPIO_Port GPIOA
#define LED_GREEN_Pin GPIO_PIN_0
#define LED_GREEN_GPIO_Port GPIOB
#define LED_RED_Pin GPIO_PIN_1
#define LED_RED_GPIO_Port GPIOB
#define BUZZER_Pin GPIO_PIN_2
#define BUZZER_GPIO_Port GPIOB
#ifdef __cplusplus
}
#endif
#endif
5. Video Demo [kembali]
6. Kondisi [kembali]
7. Video Simulasi [kembali]
8. Download File [kembali]
- Download Analisa modul 1 (klik disini)
- Download Video Penjelasan Rangkaian (klik disini)
- Download Datasheet Sensor Infrared (klik disini)
- Download Datasheet Resistor (klik disini)
- Download Datasheet LED RGB (klik disini)
- Download Datasheet Buzzer (klik disini)
- Download Datasheet Relay (klik disini)
Komentar
Posting Komentar