不惑にしてまだ何者でもない者のブログ

Arduino関連、Raspberry Pi関連、プログラミング学習

CrowPiレッスン5:サウンドセンサーを使用して音を検出する

2020-11-06 23:25:29 | CrowPi

Detect sound using the sound sensor.

レッスン5"サウンドセンサーを使用して音を検出する"をやっていく。

What will you learn

このレッスンを終了すると、次のことができるようになります。
  • サウンドセンサーモジュールを使用して音を検出する方法を学習します

What will you need

  • 初期設定後のCrowPiボード

Requires switching modules using the switch

  • いいえ

CrowPiのサウンドセンサーの位置


↑音の検出の閾値を調整するため、青の四角いとこのネジを回して、サウンドセンサーの感度を調整する必要がある。
  • 左に回すと閾値が低くなり、音を検出しやすくなる。
  • 右に回すと閾値が高くなり、音を検出しにくくなる。

サウンドセンサーからの入力の取得

このレッスンで使用するPythonスクリプトは以下の通り。

Examples/sound.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
# http://elecrow.com/

import RPi.GPIO as GPIO
import time

# define sound pin
sound_pin = 24
# set GPIO mode to GPIO.BOARD
GPIO.setmode(GPIO.BCM)
# setup pin as INPUT
GPIO.setup(sound_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)

try:
 while True:
  # check if sound detected or not
  if(GPIO.input(sound_pin)==GPIO.LOW):
   print('Sound Detected')
   time.sleep(0.1)
except KeyboardInterrupt:
 # CTRL+C detected, cleaning and quitting the script
 GPIO.cleanup()

例のごとく、GPIO.setmodeとpin番号を修正。

修正後
# define sound pin
sound_pin = 18
# set GPIO mode to GPIO.BOARD
GPIO.setmode(GPIO.BOARD)

このスクリプトを実行すると、センサーの近くで音を鳴らすとターミナルに“Sound Detected”と表示される。


無限ループとなるので、終了するには、CTRL+C。

CrowPiレッスン4:バイブレーションセンサーを使用してバイブレーションを送信する

2020-11-06 17:10:51 | CrowPi

Send vibration using the vibration sensor

レッスン4"バイブレーションセンサーを使用してバイブレーションを送信する"をやっていく。


↑vibration sensorが振動する。右スイッチ1をオンにするのを忘れずに。

What will you learn

このレッスンを終了すると、次のことができるようになります。
  • 振動センサーの制御と振動信号の送信方法

What will you need

  • 初期設定後のCrowPiボード

Requires switching modules using the switch

  • はい、右のスイッチ、ピン番号1-スイッチを入れてオンになっていることを確認します(センサーの切り替え方法を忘れた場合は、5ページを参照してください)


このレッスンで使用するPythonスクリプトは以下の通り。

Examples/vibration.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
# http://elecrow.com/

import RPi.GPIO as GPIO
import time

# define vibration pin
vibration_pin = 27

# Set board mode to GPIO.BOARD
GPIO.setmode(GPIO.BCM)

# Setup vibration pin to OUTPUT
GPIO.setup(vibration_pin, GPIO.OUT)

# turn on vibration
GPIO.output(vibration_pin, GPIO.HIGH)
# wait half a second
time.sleep(0.5)
# turn off vibration
GPIO.output(vibration_pin, GPIO.LOW)
# cleaup GPIO
GPIO.cleanup()

例のごとく、GPIO.setmodeとpin番号を修正。

修正後
# define vibration pin
vibration_pin = 13

# set board mode to GPIO.BOARD
GPIO.setmode(GPIO.BOARD)

このスクリプトを実行すると、vibration sensorが振動する。
※ 右側のスイッチのNo.1をオンにしておくことに注意。

CrowPiレッスン3:リレーのしくみとその制御方法

2020-11-06 16:05:43 | CrowPi

How Relay works and how to control it.

レッスン3"リレーのしくみとその制御方法"をやっていく。


↑スクリプトを実行するとここがカチャカチャ鳴る。
本来はここに何かしらの回路を接続してオンオフできる。

What will you learn

このレッスンを終了すると、次のことができるようになります。
  • リレーの制御方法-GPIO信号を使用してリレーを開閉します

What will you need

  • 初期設定後のCrowPiボード

Requires switching modules using the switch

  • いいえ


このレッスンで使用するPythonスクリプトは以下の通り。

Examples/relay.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
# http://elecrow.com/

import RPi.GPIO as GPIO
import time

# define relay pin
relay_pin = 21

# set GPIO mode as GPIO.BOARD
GPIO.setmode(GPIO.BCM)
# setup relay pin as OUTPUT
GPIO.setup(relay_pin, GPIO.OUT)

# Open Relay
GPIO.output(relay_pin, GPIO.LOW)
# Wait half a second
time.sleep(0.5)
# Close Relay
GPIO.output(relay_pin, GPIO.HIGH)
# Wait half a second
time.sleep(0.5)
# Close Relay
GPIO.output(relay_pin, GPIO.LOW)
GPIO.cleanup()

例のごとく、GPIO.setmodeとpin番号を修正。

修正後
# define relay pin
relay_pin = 40

# set board mode to GPIO.BOARD
GPIO.setmode(GPIO.BOARD)

動画では、羽を付けたモーターを回路とした例が紹介されているが、同様のモーターは付属していないので、同じことを再現することはできない。
また、動画は2種類あり、通常版とV2があるが、内容的には同じで、V2の方の動画でVer.2のrelay回路図が表示されるくらいのようである。
モーターをrelayにつなぐ部分が異なっており、小太り兄ちゃんが説明している動画に沿った回路となっているのだろう。

とりあえず、モーターなしで上記のスクリプトを実行すると、relayがカチッとなり、回路のオンオフが切り替わっているだろうことがわかる。
ここに何をどのようにつなぐかが重要だと思うので、その部分をもうちょっと詳しく教えてくれると良かったのだが。

CrowPiレッスン2:ボタンから入力を取得してブザーを制御する

2020-11-06 14:12:46 | CrowPi
Get input from button to control the Buzzer.
続いて、レッスン2”Get input from button to control the Buzzer.(ボタンから入力を取得してブザーを制御する)”を始める。

↑このボタンを押すとブザーが鳴る


What will you learn

このレッスンを終了すると、次のことができるようになります。
  • ボタンを押すとブザーが鳴ります

What will you need

  • 初期設定後のCrowPiボード

Requires switching modules using the switch

  • はい、左側のスイッチ-すべてのピンを上にしてオンにします(センサーの切り替え方法を忘れた場合は、5ページを参照してください)


このレッスンで使用するPythonスクリプトは以下の通り。

Examples/button_buzzer.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
# http://elecrow.com/

import RPi.GPIO as GPIO
import time

# configure both button and buzzer pins
button_pin = 26
buzzer_pin = 18


# set board mode to GPIO.BOARD
GPIO.setmode(GPIO.BCM)

# setup button pin asBu input and buzzer pin as output
GPIO.setup(button_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(buzzer_pin, GPIO.OUT)

try:
 while True:
  # check if button pressed
  if(GPIO.input(button_pin) == 0):
   # set buzzer on
   GPIO.output(buzzer_pin, GPIO.HIGH)
  else:
   # it's not pressed, set button off
   GPIO.output(buzzer_pin, GPIO.LOW)
except KeyboardInterrupt:
 GPIO.cleanup()

今回も同様に、GPIO.BCMをBOARDに修正。
それに伴いpin番号も修正。

Examples/button_buzzer.py(修正後)
# configure both button and buzzer pins
button_pin = 37
buzzer_pin = 12


# set board mode to GPIO.BOARD
GPIO.setmode(GPIO.BOARD)

上記のスクリプトを実行し、CrowPiボード上の対応するボタンを押すとブザーが鳴ることを確認。
上記のスクリプトでは、ボタンの入力を無限ループで取得しており、キーボード割り込みを例外処理して終了するので、Ctrl+Cを押す。

CrowPiレッスン1:ブザーをアラート通知として使用する

2020-11-06 13:50:51 | CrowPi

Using the buzzer as an alert notification

事前準備で既に動作は確認済みだが、レッスン1”Using the buzzer as an alert notification(ブザーをアラート通知として使用する)”を始めていこう。


↑このレッスンのスクリプトを実行するとこのブザーがビーッと鳴る。

What will you learn(学ぶこと)

  • このレッスンを終了すると、次のことができるようになります。
    • GPIO出力を使用してブザーモジュールを制御できる

What will you need(必要なもの)

  • 初期設定済みのCrowPi

Requires switching modules using the switch

  • なし

このレッスンで使用するPythonスクリプトは以下の通り。

Examples/buzzer.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
# http://elecrow.com/

import RPi.GPIO as GPIO
import time

buzzer_pin = 18

GPIO.setmode(GPIO.BCM)

GPIO.setup(buzzer_pin, GPIO.OUT)

# Make buzzer sound
GPIO.output(buzzer_pin, GPIO.HIGH)
time.sleep(0.5)
# Stop buzzer sound
GPIO.output(buzzer_pin, GPIO.LOW)

GPIO.cleanup()

前回のブログの最後で触れたが、GPIO Schemeは、GPIO.BCMではなく、GPIO.BOARDを使った方が良いとのことだったので、以下のように修正。

Examples/buzzer.py(修正後)
buzzer_pin = 12

GPIO.setmode(GPIO.BOARD)


修正前後で同じように動作することを確認した。
小太り兄ちゃんのLessonVideoでは、修正後のスクリプトになってるようだな。
time.sleep()関数の引数を0.5から2に変えて実行するデモも紹介されている。