【Raspberry Pi Pico】振動スイッチAT-407で傾きを検知する

at407-result1 Raspberry Pi

本記事の内容

Raspberry Pi Picoで超小型振動スイッチ(AT-407)を使用して、傾きを検知する装置を作成します。思いのほか安価で簡単に作れますので、是非試してみてください。

必要なもの

振動スイッチ(AT-407)は秋月電子で購入しました。一つ100円と、とてもお手頃価格なことに驚きです。

振動(傾斜)スイッチ(丸型)AT-407: 計測器・センサ・ロガー 秋月電子通商-電子部品・ネット通販
電子部品,通販,販売,半導体,IC,LED,マイコン,電子工作振動(傾斜)スイッチ(丸型)AT-407秋月電子通商 電子部品通信販売

紙一枚ですが参考資料も付属しているので、とてもありがたいです。

振動スイッチ(AT-407)の仕組み

安いのもそのはず、振動スイッチ(AT-407)はびっくりするくらいシンプルな構造でできています。

円筒形の内部は空洞になっていて、金属の球体が入っています。素子が-30度以下の状態では、球体が片側に寄って端子と接続しないため、両端はOFFとなっています。(左)

一方で素子が30度以上に傾くと、球体が逆側に移動して端子と接続し、両端がONになります。(右)

ご想像に値しますが、傾けたタイミングで瞬間的にONとOFFが繰り返すチャタリングが発生しやすいです。チャタリングを防止する場合は、コンデンサを挟む必要がありますので、電圧に応じたコンデンサを用意してください。

Raspberry Pi Picoで振動スイッチを使用する

LEDで検知した振動を表示

まずは簡単に、検知した振動をLEDに表示したいと思います。こちらは、Raspberry Pi Picoも不要なくらい簡単な回路です。

GP14から振動スイッチ⇒赤色LED⇒1kΩ抵抗を介して、GNDに繋いでいます。(本当は3V3から繋げば良いのですが、あいにく画面右側は別の配線が残っているため、GP14を使用しました。)

以下のプログラムコードでGP14に3.3Vを出力すると、振動スイッチの傾きに応じてLEDが点灯・消灯します。

from machine import Pin
led=Pin(14,Pin.OUT)
led.value(1)

Shell上に検知した振動を表示

続いて、検知した振動をThonnyのシェル上に表示させたいと思います。Pin.PULL_UPでGP14のプルアップ抵抗を有効にして、GNDとの接続有無を検知する方法になります。

回路としては、LEDを介さずに、GP14⇒振動スイッチ⇒1kΩ抵抗⇒GNDとなっています。どこが変わったのか分からないので、先ほどとの違いは赤丸で示しました。

プログラムコードは以下の通りです。horizontalとdiagonalに深い意味はありませんが、状態が変わったことを表示させるようにしました。

from machine import Pin
import time
Switch = machine.Pin(14, Pin.IN, Pin.PULL_UP)

while True:
    time.sleep(1)
    if Switch.value() == 1:
        print("horizontal")
    else:
        print("diagonal")

余談ですが、振動スイッチを介したGP14を、GNDでなく3V3と接続した場合は、Pin.PULL_DOWNとなります。この辺はYoutube動画で丁寧な解説がありますので、こちらも参考にしてみてください。

最後に

以上、振動スイッチAT-407で傾きを検知する方法でした。今一つ使用例が思いつきませんでしたが、振動スイッチを使うとしたら、きわどい角度に固定して揺れを検知する地震計などでしょうか、、、?

(地震計としても、揺れの角度によっては検知できないこともありそうなので、なんか微妙ですが、、、)

面白い使用方法が思いつき次第、記事にしてみますので、ひとまず今回は振動スイッチの使い方の紹介にとどめておきます。

コメント