【電子工作】Python + pigpioでアクティブブザーを鳴らす(Raspberry Pi 4で遊ぼう日記 その13)

投稿日:2022年5月27日
最終更新日:2022年5月27日

pigpioとPythonでGPIOを制御してアクティブブザーを鳴らす

これまで、いろいろな方法でLEDを点滅させてきたが、さすがに飽きてきたので違う部品を使ってみたくなってきた。

ということで、今回は以下のキットについてきたアクティブブザーをPythonとpigpioを使って鳴らしてみたいと思う。

ちなみに、ブザーの型番などがわからないので仕様は不明だが、ブザーの内部を覗き込んだ感じだと電磁ブザーのようだ。ブザーは大きく分けると電磁ブザーと圧電ブザー(ピエゾブザー)の2種類あるが、見分け方はこちらを参考にさせて頂いた。

電磁ブザーと圧電ブザーの違い

また、このキットについてきたトランジスタS8550/S8050について仕様がイマイチわからなかったのだが、以下に記載があったので参考にさせて頂いた。

おもちゃに良く使われる海外トランジスタについて

 

実行環境

Raspberry Pi 4 Model B

Raspberry Pi OS (Bullseye)

pigpio 1.79-1+rpt1

Python 3.9.2

 

ブレッドボードに回路をつくる

一応キットの公式サイトにもPNPトランジスタを使ったリファレンス回路は載ってたのだが、この回路だとラズパイの起動中などGPIOが不定になったときにちょっと心配な感じ。

https://docs.sunfounder.com/projects/davinci-kit/en/latest/1.2.1_active_buzzer.html

ということで、今回はNPNトランジスタ(S8050)を使って回路図を作成した。ベースとエミッタ間に抵抗を追加してGPIOの出力が不定のときはベースの電位をLOWに落としている。

ブレッドボードでは以下のように接続する(ブザーの絵は実際の部品とはちょっと異なる)。ブザーは極性があるので、+と-を間違えないように注意。また、今回使用したトランジスタS8050はピンの並びがEBCになっているタイプだった。日本のメーカーのトランジスタはECBになっているものが多いので、他のトランジスタを使う場合はピンの並びにも注意。

実際に接続したのが以下の写真。

 

Pythonのコードを書く

今回はブザーを0.5秒ごとに鳴らすpigpio_buzzer.pyというコードを以下のように作成した。

#!/usr/bin/env python3

import pigpio
import time

buzzer_gpio = 19
gpio = pigpio.pi()
gpio.set_mode(buzzer_gpio, pigpio.OUTPUT)

while True:
    gpio.write(buzzer_gpio, 1)
    time.sleep(0.5)
    gpio.write(buzzer_gpio, 0)
    time.sleep(0.5)

実はこれ、以前Lチカの時に書いたコードから変数名を変えただけ。今回はGPIOをHIGH/LOWするだけなので、Lチカと同じ内容でOK。

pigpiodを起動して実行

Pythonパッケージでpigpioを使う時はpigpiodを起動してやる必要があるので、忘れずにやっておく。

sudo pigpiod

あとはコードが置いてあるディレクトリで以下を実行すればOK。

sudo python pigpio_buzzer.py

これで無事にブザーを鳴らすことができた。実際に鳴らした様子がこちら。

今回はアクティブブザーを使ったが、次回はパッシブブザーを使い、GPIOピンをpigpioでPWM制御してパッシブブザーの音を変えて鳴らしてみたい。

 

日記まとめ

ラズパイで遊んでみた軌跡を以下でまとめてます。

【電子工作】Raspberry Pi 4で遊ぼう日記 まとめ

 


投稿者: wakky

映画と旅行が大好きなエンジニア。お酒、ゲーム、読書も好き。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください