Raspberry Pi Pico Wでtiltセンサーを使う#12

CircuitPython

Raspberry Pi Pico Wが発売されました

Raspberry Pi Pico Wが2023年3月23日ようやく技適を取得し日本国内での販売が開始されました。それまでwifiを使うにはESP32を使うしかありませんでした。Adafruit社は技適取得に消極的で、素晴らしいESP32マイクロコントローラを開発しているにもかかわらず日本国内では使用することができません。

今回のPico Wの発売にともないようやく単体のマイクロコントローラでIoTを実現できることはとても喜ばしいことです。

AT407(tiltセンサー)の使い方

AT407という傾斜センサーを使います。傾きや振動を検知してくれるセンサーです。

接続はこんな感じ。LEDの抵抗は220Ω AT407の抵抗は10kΩを使用しています。

LEDはGP15に、抵抗を挟んで接続。tiltセンサーは3Vから10kΩを挟んでAT407そしてGNDへ。信号は抵抗とAT407のところからGP28へ出力します。

AT407をREPLモードで接続

Macのターミナルから

ls dev/tty.*

と打ち込むと /dev/tty.BLTH  /dev/tty.usbmodem14233101 /dev/tty.Bluetooth-Incoming-Portとみっつのttyを教えてくれます。pico wはusbmodem14233101です。

screen /dev/tty.usbmodem14233101

と打ち込むと

コード実行完了

REPLに入るため、エンターキーを押す。リーロードするため、Ctl-Dを入力する。

こんな風に表示されます。returnキーを押すと>>>と表示されます。REPLモードになりました。

>>> import board
>>> import digitalio
>>> button = digitalio.DigitalInOut(board.GP28)
>>> button.switch_to_input(pull=digitalio.Pull.UP)
>>> button.value

Falseが返ってきます。今度はAH407を少し傾けてbutton.valueを見てください。今度はTrueが返ってきます。このセンサーは中にボールが仕込まれていて、そのボールが筒の底から離れると反応してくれるものなのです。耳を済ませてセンサーを傾けると、かすかに音がするはずです。

スポンサーリンク

AT407で振動を検知する

次のプログラムを書き込んでみましょう。CIRCUITPYのフォルダにcode.pyの名前で書き込んでください。

# Raspberry Pi Pico WでAH407センサーを使う
import time
import board
import digitalio
#GP28から入力
button = digitalio.DigitalInOut(board.GP28)
button.switch_to_input(pull=digitalio.Pull.UP)
#ledはGP15に接続
led = digitalio.DigitalInOut(board.GP15)
led.direction = digitalio.Direction.OUTPUT
while True:
    if button.value:
        print("なんか動いた")
        time.sleep(0.5)
        for i in range(5):
            led.value = True
            time.sleep(0.2)
            led.value = False
            time.sleep(0.2)

if button.value:はもしbutton.valueがTrueなら以下の処理を実行します。「なんか動いた!」と表示して0.5秒待ってから5回LEDを点滅させます。侵入検知ならこのあとブザーを鳴らしたり、NeoPIxelを派手に光らせて威嚇してもいいですね。来客に対してなら優しくNeoPixelを光らせてもいいでしょう。

センサーの反応が悪いようならAH407を少し傾けてみるのもいいです。足が細いので折ってしまわないように注意してみましょう。

タイトルとURLをコピーしました