GPIOポートに圧電ブザーを接続してPythonでプログラムを書いて音を鳴らしてみます。LED同様にGPIOから信号をコントロールして音を鳴らしたり消したりします。Pythonのプログラムの解説も行います。
使用する部品
- Raspberry Pi 3 Model B × 1
- 電源アダプター5V 2.5A × 1
- ブレットボード × 1
- アクティブブザー × 1
- 抵抗 1kΩ × 1
- NPNトランジスター(S8050)×1
- ジャンプワイヤー(オス/オス) × 4
※これらの部品はFabshopがふるさと納税で提供している「ふるさと納税Raspberry Piスターターキット」もしくは当サイトで購入可能な「Raspberry Pi スターターキット」の電子工作キットに同梱されています。
実体配線図
3本足のトランジスタの役割
Lesson1のLEDの点滅のときと同様に、ブザーの両端に最初から3.3Vをかけておくことで、電位差をなくして音がならないようにする接続になっています。
今回の回路には3本足のトランジスタを使っています。それぞれ足に名前がついていて間違えないように配線しましょう。トランジスタは電子回路の中でスイッチの役割や信号の増幅などの役割を持つ半導体です。
このトランジスタの発見により私達の生活の中に計算機やコンピュータなど電子機器が急速に発展していきました。
今回はブザーの音が小さくて効きづらくなることが予想されるため、小さい音を大きな音に増幅するための役割として接続してあります。
プログラムのコピーと保存
【Lessoon1】のときと同じように、この下にある「Buzzerのプログラム」の枠右上に並んだアイコンの内、右から2番目のアイコンをクリックします。(マウスをアイコンに近づけると”Copy”の表示が現れます)
すると、プログラムの文字列が全て選択されるので、「Ctrl」と「C」キーを同時に押してコピーします。
import RPi.GPIO as GPIO import time BeepPin = 11 def setup(): GPIO.setmode(GPIO.BOARD) GPIO.setup(BeepPin, GPIO.OUT) GPIO.output(BeepPin, GPIO.HIGH) def loop(): while True: GPIO.output(BeepPin, GPIO.LOW) time.sleep(0.1) GPIO.output(BeepPin, GPIO.HIGH) time.sleep(0.1) def destroy(): GPIO.output(BeepPin, GPIO.HIGH) GPIO.cleanup() if __name__ == '__main__': print ('Press Ctrl+C to end the program...') setup() try: loop() except KeyboardInterrupt: destroy()
プログラムの解説
このプログラムはLesson1で作ったLEDのランプを光らせて点滅させるプログラムとほとんど一緒です。11番のピンに信号を入れてLEDを光らすのか、音を鳴らすかの違いです。
time.sleepのパラメータが0.1になっていますが、ここの数値を変えることで音がなる時間が変わります。
プログラムを強制的に止めたい場合は「Ctrl」+「C」キーを押すことでプログラムを強制終了できます。