버저(Buzzer)를 이용한 작은별 동요 실행 > IoT 사물인터넷 유무선제어

본문 바로가기

[실습] 버저(Buzzer)를 이용한 작은별 동요 실행

필기자
2024-04-29 12:27 192 0

본문

버저(Buzzer)를 이용한 작은별 동요 실행

목 적
  • 라즈베리파이에 버저(Buzzer) 액추레이터 사용법을 이해한다.
  • 버저(Buzzer) 액추레이터를 응용하여 단음 작은별 동요를 실행한다.
목 차
1. 버저(Buzzer) 액츄레이터 모듈 설치
2. 버저(Buzzer) 액츄레이터 구동 및 응용

1. 버저(Buzzer) 액츄레이터 모듈 설치
  • 액티브 버저 모듈
    • 액티브 버저 모듈은 전기 신호를 받았을 때 소리를 내는 장치임.
    • 내장된 발진 회로를 가지고 있어서 단순히 전원을 공급하면 특정 주파수로 소리를 낼 수 있음.
    • 액티브 버저는 로봇, 알람 시스템, 사용자 인터페이스 피드백 등 다양한 응용 프로그램에 사용됨.
  • 기본 사양
    • 전원 공급: 일반적으로 3.3V 또는 5V DC
    • 소비 전류: 약 30mA
    • 작동 주파수: 주로 2kHz 내외
    • 소리 크기: 약 85 dB 정도
  • GPIO 연결
    • VCC : 3.3V 또는 5V Power(핀 1 또는 2)
    • GND : Ground 접지(핀 2)
    • IN : 입력 핀으로 LOW 또는 HIGH 신호에 따라 버저가 활성화됨
      • GPIO 17(핀 11)
20240429122726_87d9c0e1b61d6d070da10a1e5902a40a_zp7d.png

20240429122909_87d9c0e1b61d6d070da10a1e5902a40a_8bui.png

2. 버저(Buzzer) 액츄레이터 구동 및 응용
  • 기본 구동 프로그램 : 라즈베리파이 가상환경에서 파이썬 코딩
    • VSCode에서 buzzer.py 파일 생성
    • GPIO 17핀(핀 11)을 출력 모드로 설정
    • GPIO 17핀을 순회하면 On/Off 코딩

20240429123609_87d9c0e1b61d6d070da10a1e5902a40a_ghti.png


import RPi.GPIO as GPIO
import time

# GPIO 모드 설정
GPIO.setmode(GPIO.BCM)

# 사용할 GPIO 핀의 번호를 설정한다. 여기서는 17번 핀을 사용한다.
BUZZER_PIN = 17
GPIO.setup(BUZZER_PIN, GPIO.OUT)

try:
    while True:
        # 부저를 켠다.
        GPIO.output(BUZZER_PIN, GPIO.HIGH)
        print("Buzzer on")
        time.sleep(1) # 1초 동안 대기

        # 부저를 끈다.
        GPIO.output(BUZZER_PIN, GPIO.LOW)
        print("Buzzer off")
        time.sleep(1) # 1초 동안 대기

except KeyboardInterrupt:
    # 프로그램 종료 시 GPIO 핀 상태를 초기화한다.
    GPIO.cleanup()

 
  • 계이름 응용 구동 프로그램 : 라즈베리파이 가상환경에서 파이썬 코딩
    • VSCode에서 buzzer_melody.py 파일 생성
    • 주파수 대역과 음 지속 시간을 이용하여 계이름(도레미파...시도) 소리 출력

import RPi.GPIO as GPIO
import time

# GPIO 모드 설정
GPIO.setmode(GPIO.BCM)

# Buzzer 핀 설정
BUZZER_PIN = 17
GPIO.setup(BUZZER_PIN, GPIO.OUT)

# PWM 인스턴스 생성 및 초기 주파수 설정
pwm = GPIO.PWM(BUZZER_PIN, 100)
pwm.start(0)

# 주요 음표의 주파수 (단위: Hz)
notes = {
    'C4': 261.63,
    'D4': 293.66,
    'E4': 329.63,
    'F4': 349.23,
    'G4': 392.00,
    'A4': 440.00,
    'B4': 493.88,
    'C5': 523.25  # 추가된 높은 도 음표
}

# 간단한 멜로디 (음표와 지속 시간)
melody = [('C4', 0.5), ('D4', 0.5), ('E4', 0.5), ('F4', 0.5),
          ('G4', 0.5), ('A4', 0.5), ('B4', 0.5), ('C5', 0.5)]  # 마지막 음을 높은 도로 변경

def play(note, duration):
    pwm.ChangeFrequency(notes[note])
    pwm.ChangeDutyCycle(50)  # 켜짐
    time.sleep(duration)  # 음표 지속 시간
    pwm.ChangeDutyCycle(0)  # 꺼짐

try:
    for note, duration in melody:
        play(note, duration)
        time.sleep(0.1)  # 음표 사이의 간격

finally:
    pwm.stop()
    GPIO.cleanup()
  • 다음 작은별 악보를 보고 부저 프로그램을 완성하여라.

20240429124528_87d9c0e1b61d6d070da10a1e5902a40a_es32.png

 

댓글목록0

등록된 댓글이 없습니다.
게시판 전체검색