- Power supply 5V DC menyalakan Arduino Master, Arduino Slave, sensor api, dan relay.
- Arduino Master dan Slave melakukan inisialisasi pin input/output dan komunikasi antar Arduino.
- Sensor api mendeteksi keberadaan nyala api.
- Sinyal sensor dikirim ke Arduino Master sebagai input digital/analog.
-
Jika tidak ada api:
- LED indikator mati.
- Master mengirim perintah OFF ke Slave.
-
Jika api terdeteksi:
- LED indikator menyala.
- Master mengirim perintah ON ke Slave.
- Data perintah dikirim dari Master ke Slave melalui jalur komunikasi yang telah ditentukan.
- Slave menerima perintah dari Master.
- Slave mengaktifkan relay jika perintah ON diterima.
- Relay menghubungkan catu daya ke kipas DC.
- Kipas menyala untuk membantu pendinginan atau pemadaman.
- Sistem terus memantau kondisi sensor api secara real-time.
- Jika api hilang, kipas dan LED akan otomatis mati.
2. Hardware dan Diagram Blok[Kembali]
1. STM32F103C8
Warna | Panjanggelombang [nm] | Material semikonduktor | |
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
.jpeg)
4. Buzzer
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
- 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

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.
3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]
Rangkaian Simulasi :
Prinsip Kerja :
Sistem ini bekerja dengan memanfaatkan sensor LDR (Light Dependent Resistor) sebagai pendeteksi intensitas cahaya yang dihasilkan oleh sumber tertentu, seperti nyala api atau cahaya terang. Perubahan intensitas cahaya akan menyebabkan nilai resistansi LDR berubah, kemudian dikonversi menjadi sinyal tegangan dan dibaca oleh Arduino Nano yang berperan sebagai Master. Arduino Master mengolah data dari sensor LDR untuk menentukan kondisi sistem. Apabila intensitas cahaya yang diterima LDR melebihi ambang batas yang telah ditentukan, Arduino Master akan menyalakan LED sebagai indikator dan mengirimkan sinyal perintah ke Arduino Nano Slave melalui jalur komunikasi. Arduino Slave kemudian menerima perintah tersebut dan mengaktifkan modul relay, sehingga kipas DC dapat menyala untuk melakukan pendinginan atau respons otomatis terhadap kondisi cahaya yang terdeteksi. Sebaliknya, jika intensitas cahaya berada di bawah ambang batas, Arduino Master akan mematikan LED dan mengirimkan perintah untuk menonaktifkan relay, sehingga kipas DC dalam keadaan mati. Proses ini berlangsung secara terus-menerus sehingga sistem mampu bekerja secara real-time dan otomatis.
4. Flowchart dan LIsting Program[Kembali]
Flowchart
MASTER
Listing Program :
#include "main.h"
ADC_HandleTypeDef hadc1;
SPI_HandleTypeDef hspi1;
uint8_t txData[2];
uint32_t ldrValue;
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_ADC1_Init(void);
static void MX_SPI1_Init(void);
/*=========================================================*/
uint32_t Read_LDR(void)
{
HAL_ADC_Start(&hadc1);
HAL_ADC_PollForConversion(&hadc1,100);
return HAL_ADC_GetValue(&hadc1);
}
/*=========================================================*/
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_ADC1_Init();
MX_SPI1_Init();
while (1)
{
ldrValue = Read_LDR();
if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)==GPIO_PIN_RESET)
txData[0] = 1;
else
txData[0] = 0;
if(ldrValue < 1500)
txData[1] = 1;
else
txData[1] = 0;
HAL_SPI_Transmit(&hspi1, txData, 2, 100);
HAL_Delay(200);
}
}
/*=========================================================*/
void SystemClock_Config(void)
{ }
/*=========================================================*/
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_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}
/*=========================================================*/
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;
HAL_ADC_Init(&hadc1);
sConfig.Channel = ADC_CHANNEL_9;
sConfig.Rank = ADC_REGULAR_RANK_1;
sConfig.SamplingTime = ADC_SAMPLETIME_71CYCLES_5;
HAL_ADC_ConfigChannel(&hadc1, &sConfig);
}
/*=========================================================*/
static void MX_SPI1_Init(void)
{
hspi1.Instance = SPI1;
hspi1.Init.Mode = SPI_MODE_MASTER;
hspi1.Init.Direction = SPI_DIRECTION_2LINES;
hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
hspi1.Init.NSS = SPI_NSS_HARD_OUTPUT;
hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;
hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
hspi1.Init.CRCPolynomial = 7;
HAL_SPI_Init(&hspi1);
}
#include "main.h"
SPI_HandleTypeDef hspi1;
uint8_t rxData[2];
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_SPI1_Init(void);
/*=========================================================*/
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_SPI1_Init();
while (1)
{
HAL_SPI_Receive(&hspi1, rxData, 2, HAL_MAX_DELAY);
if(rxData[0]==1)
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);
else
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);
if(rxData[1]==1)
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);
else
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET);
}
}
/*=========================================================*/
void SystemClock_Config(void)
{ }
/*=========================================================*/
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0|GPIO_PIN_1,
GPIO_PIN_RESET);
GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1;
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);
}
/*=========================================================*/
static void MX_SPI1_Init(void)
{
hspi1.Instance = SPI1;
hspi1.Init.Mode = SPI_MODE_SLAVE;
hspi1.Init.Direction = SPI_DIRECTION_2LINES;
hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
hspi1.Init.NSS = SPI_NSS_HARD_INPUT;
hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
hspi1.Init.CRCPolynomial = 7;
HAL_SPI_Init(&hspi1);
}
1. Download HTML [disini]
2. Download Rangkaian Proteus [klik disini]
3. Download Vidio Rangkaian [disini]
4.Download Vidio Demo [tekan disini]
5. Download Datasheet Sensor:
- datasheet Sensor Heart Beat [disini]
6. Download library Komponen:
- library Sensor Heart Beat [disini]
7. Download datasheet Motor [disini]
8. Download datasheet Led [disini]
9. Download listing program [disini]
10. Download data sheet stm32 [disini]
11. Download LA [disini]





.png)


Tidak ada komentar:
Posting Komentar