LA Percobaan 5 (Modul 3)




1. Prosedur
[Kembali]
    1. Rangkai semua komponen pada breadboard yang terhubung ke devboard Raspberry Pi Pico dan STM32F103C8T6.
    2. Buat program untuk mikrokontroler Raspberry Pi Pico di software Thonny dan STM32F103C8T6 di software STM32 IDE.
    3. Inputkan program ke dalam mikrokontroler melalui Micro USB ke Raspberry Pi Pico.
    4. Setelah program diinputkan, uji rangkaian yang telah dirangkai sesuai dengan output yang ditentukan.
    5. Selesai.

2. Hardware dan Diagram Blok [Kembali]
    a) Hardware
     a) Raspberry Pi Pico 

   
     b) STM32F103C8 

    
    c) LED



    d) Push Button 



    e) Buzzer
    f) Infra Red Sensor

Infrared Sensor Module

    b) Diagram Blok


3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]
    a) Rangkaian Simulasi
    
    b) Prinsip Kerja
        Sistem ini mengintegrasikan Raspberry Pi Pico sebagai master dan STM32F103C8T6 sebagai slave melalui komunikasi SPI untuk mengendalikan perangkat input dan output secara terkoordinasi. Sensor infrared (IR) terhubung ke Pico mendeteksi keberadaan objek. Saat IR sensor mendeteksi objek, Pico mengirimkan sinyal melalui SPI ke STM32 untuk menyalakan RGB LED, dan jika tidak, untuk mematikannya. Sebaliknya, push button yang terhubung ke STM32 memungkinkan STM32 mengirimkan sinyal ke Pico melalui SPI untuk mengaktifkan atau menonaktifkan buzzer yang terhubung ke Pico, tergantung pada status tombol. Dengan demikian, kedua mikrokontroler saling bertukar data melalui SPI untuk mengontrol perangkat output berdasarkan input yang diterima, menciptakan sistem interaktif yang responsif.

4. Flowchart dan Listing Program [Kembali]
    a) Flowchart
    b) Listing Program
-) Untuk Raspberry Pi Pico (Master / Control)
from machine import Pin, SPI
import time

# Inisialisasi pin dan SPI
spi = SPI(0, baudrate=1000000, polarity=0, phase=0, sck=Pin(18), mosi=Pin(19),
miso=Pin(16))
cs = Pin(17, Pin.OUT)

# Pin sensor dan push button
ir_sensor = Pin(14, Pin.IN) # IR sensor
push_button = Pin(15, Pin.IN) # Push button

def send_data(data):
    cs.value(0)
    spi.write(bytes([data]))
    cs.value(1)

while True:
    # Cek status IR sensor
    if ir_sensor.value() == 1:
        send_data(1) # IR terdeteksi, kirim '1'
        print("IR Detected - LED ON")
    else:
        send_data(0) # IR tidak terdeteksi, kirim '0'
        print("No IR - LED OFF")

# Cek status push button
    if push_button.value() == 1:
        send_data(2) # Tombol ditekan, kirim '2'
        print("Button Pressed - Buzzer ON")
    else:
        send_data(3) # Tombol tidak ditekan, kirim '3'
        print("Button Released - Buzzer OFF")
    
    time.sleep(0.1)

-) Untuk STM32F103C8T6 (Slave / Peripheral)
#include "stm32f1xx.h"

void SPI1_Init(void);
void GPIO_Init(void);
uint8_t SPI1_Receive(void);

int main(void) {
    GPIO_Init();
    SPI1_Init();
    while (1) {
        uint8_t data = SPI1_Receive();
        
        switch (data) {
            case 1:
            // LED ON (IR Detected)
            HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
            break;
            case 0:
            // LED OFF
            HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
            break;
            case 2:
            // Buzzer ON (Button Pressed)
            HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
            break;
            case 3:
            // Buzzer OFF
            HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
            break;
        }
    }
}

void SPI1_Init(void) {
    __HAL_RCC_SPI1_CLK_ENABLE();
    __HAL_RCC_GPIOA_CLK_ENABLE();
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    GPIO_InitStruct.Pin = GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
    SPI_HandleTypeDef hspi1;
    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_SOFT;
    hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;
    hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
    hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
    hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
    HAL_SPI_Init(&hspi1);
}
uint8_t SPI1_Receive(void) {
    uint8_t received_data = 0;

    return received_data;
}

void GPIO_Init(void) {
    __HAL_RCC_GPIOA_CLK_ENABLE();
    __HAL_RCC_GPIOC_CLK_ENABLE();
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    // LED (PC13)
    GPIO_InitStruct.Pin = GPIO_PIN_13;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
    // Buzzer (PA5)
    GPIO_InitStruct.Pin = GPIO_PIN_5;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}

5. Video Rangkaian [Kembali]

6. Analisa [Kembali]
7. Link Download [Kembali]
Video Percobaan [Download]
Datasheet Mikrokontroler Raspberry Pi Pico [Download
Datasheet Mikrokontroler STM32F103C8 [Download]
Datasheet Motor Stepper [Download]
Datasheet Push Button [Download]
Datasheet RGB LED [Download]
Datasheet Resistor [Download]
Datasheet Buzzer [Download]

Komentar

Postingan populer dari blog ini

Modul 1: Gerbang Logika Dasar, Monostable Multivibrator, & Flip flop

Tugas Besar

Tugas Pendahuluan Modul 2 (Percobaan 1 Kondisi 21)