Raspberry Pi Pico WでWi-Fiドアベルを作る

Raspberry Pi Pico Wプロジェクト WiFiドアベルと通知機能

Raspberry Pi Pico Wに接続されたボタンが押されると、メールが送信される(または携帯電話に通知が表示される)ようにする方法を理解するための、シンプルで実用的なチュートリアルです。Pico WをWi-Fiドアベルとして使うことができます!

このプロジェクトを通して、IFTTTエンドポイントに接続するためのHTTPリクエストの作り方を学ぶ。

ビデオ

必要な部品

Raspberry Pi ピコW ヘッダー付き

Raspberry Piの配線

ラズベリーパイ・ピコWボタン

Raspberry Pi Pico Wをボタンに接続する:

  • ボタンの片側をGPIO14に接続する。
  • ボタンの反対側を3.3Vピンに接続する

なお、ボタンには4つの突起があるものと、2つの突起があるものがある。

4極のボタンがある場合は、ジャンパーワイヤーを対角線上に接続し、反対側になるようにします。

2本ピンの場合は、反対側のピンを接続すればよい。

メールを送信するIFTTTの設定

IFTTT通知

IFTTTとは IF T彼のことだ、 T雌鳥 T帽子

自分でコードを書く代わりに、IFTTTを使ってすべてを簡単にする。

ここをクリック IFTTT.com をクリックし、アカウントにサインアップする。

サインアップしたら、「作成」をクリックします。

If This "の部分で、"Add "をクリックしてイベントを設定する。これにより、通知を送信する "Then That "部分のトリガーに必要な条件が設定されます。

次の画面の "Choose a service "に "Webhooks "と入力してクリックする。

次に、"Receive a web request "をクリックする。

イベント名を入力 ピコ_w_リクエスト をクリックし、下にスクロールして「トリガーを作成」する。

If This Then That」の画面に戻ります。Then That」の部分を設定する時なので、クリックしてください。

Gmailを検索してクリックする。そして「自分にメールを送る」をクリックする。

Eメールを選択してください。

そして、件名を入力する。私たちは "誰かがドアベルを鳴らした!"と書いた。

本文では、サブジェクトのメッセージとほぼ同じことを書いた。

{{OccurredAt}} をクリックすると、そのトリガーがかかった時刻が表示される。

クリック "アクションの作成".次の画面で "Continue "をクリックする。

次にアプレットの名前を入力します。ここでは "Pico W to Gmail "とした。

かっこいい!Finish "をクリックしてください。

電話アプリに通知を送るIFTTTの設定

IFTTTを使えば、誰かがドアベルを鳴らすたびにアプリに通知を送ることもできる。

このプロセスは、Eメールによる通知プロセスと非常によく似ている。

If This "の部分で、サービスとして "Webhooks "を選択し、"Receive a web request "を選択する。イベント名を入力する。ここでは "door_bell_rang "とした。

それから」の部分については、ここが違う。

代わりに「通知」サービスを選択し、「IFTTTアプリから通知を送信」する。

If This "と "Then That "の両方を入力したら、"continue "をクリックします。アプレットタイトルを入力し、「完了」をクリックします。

IFTTTの認証情報を見つける

これでIf-Thenアプレットがセットアップされたので、Pico WがIFTTTに接続できるように、認証情報を見つける作業に進むことができる。

そのためには

  • 右上のプロフィール写真をクリック
  • マイサービス」をクリック
  • Webhooksをクリック
  • Documentationボタンをクリックしてください。

このページには、秘密鍵を含むいくつかの情報が表示されます。

Raspberry Pi Pico WをIFTTTに接続する

すべて 私たちのコードはGithubのリポジトリにあります。こちらでご覧いただけます。

コードをダウンロードし、解凍します。コードをRaspberry Pi Pico Wにコピーする。

を変更する必要があります。 秘密.py.

交換 sid にWiFiネットワークのSSIDを入力し、パスワードを pw フィールド

前のセクションで得たキーを使い、それを ifttt_keyの値である。

ドアベルのコード

ドアベルのコード これまでのチュートリアルを基礎とする.要するに、このコードがやっていることはこうだ:

  • 必要なパッケージのインポート
  • WiFiを設定し、ネットワークに接続する

これがドアベル固有のコードだ:

door_bell = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)

last_state = False
current_state = False

while True:
    current_state = door_bell.value()
    if last_state == False and current_state == True:
        # Make a GET request to trigger webhook on IFTTT
        # ifttt_url = 'https://maker.ifttt.com/trigger/pico_w_request/with/key/'+secrets['ifttt'_key']
        ifttt_url = 'https://maker.ifttt.com/trigger/door_bell_rang/with/key/'+secrets['ifttt_key']
        request = requests.get(ifttt_url)
        print(request.content)
        request.close()
        time.sleep(2)
    last_state = current_state

覚えていると思うが、ボタンをGPIO14に接続した。したがって、そのGPIOの値を読み取るオブジェクトを作りたい。

door_bell = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)

IFTTTが通知を送信するのは、状態が次のように変化した場合だけである。 にしています。 . また、ボタンが一度押されただけで、IFTTTが複数の通知を送るのを避けたい。

それゆえ、このようなセーフガードがあるのだ:

last_state = False
current_state = False

while True:
    current_state = door_bell.value()
    if last_state == False and current_state == True:
        # Make a GET request to trigger webhook on IFTTT
        # ifttt_url = 'https://maker.ifttt.com/trigger/pico_w_request/with/key/'+secrets['ifttt'_key']
        ifttt_url = 'https://maker.ifttt.com/trigger/door_bell_rang/with/key/'+secrets['ifttt_key']
        request = requests.get(ifttt_url)
        print(request.content)
        request.close()
        time.sleep(2)
    last_state = current_state

ここで問題になるのは、ボタンを押したとき、それに気づかずにしばらく押し続けてしまうことだ。あなたにとっては1回押しただけかもしれないが、ピコWにとっては5回押したことになる。だから、5回も通知が来るのは避けたい。

そこで 最後の状態 そして 現在の状態 変数が入ってくる。

ボタンを押すと 現在の状態 になる。 .

これはIFTTTと接続するコードをトリガーする。

それが終わると、2秒間の間がある。 time.sleep(2)。

それからだ、 最後の状態 になる。 の値を取るからだ。 現在の状態.

従って、これ以上録音されたプレスが通知をトリガーすることはない。 このセリフのせいだ:

  if last_state == False and current_state == True:

余分なプレスが過ぎれば 最後の状態 がFalseに戻り、したがって をクリックして、IFTTTへの接続を再度トリガーする。

通知方法を選択する

さあ、ここで自分の道を選ぶのだ。

Eメール送信通知を作成した場合は、この行のコメントを外してください:

 # ifttt_url = 'https://maker.ifttt.com/trigger/pico_w_request/with/key/'+secrets['ifttt'_key']

これは、あなたがイベントに "pico_w_request "という名前を付けたと仮定しています。そうでなければ、URLのその部分をあなたがつけた名前に変更してください。

アプリの通知が欲しい場合は、次の行を使う必要がある:

 ifttt_url = 'https://maker.ifttt.com/trigger/door_bell_rang/with/key/'+secrets['ifttt_key']

ここからどこへ行くのか?

このシンプルなプロジェクトで、あなたは遠くまで行くことができる。

APIとのやりとりに慣れれば、ボタンはさまざまなことを引き起こすのに使える。

例えば、Spotify APIにヒットして音楽を停止したり、トラックをスキップするようにボタンをプログラムすることができる。

ニュースや他のピコ・プロジェクトの最新情報をご希望ですか?ここをクリックしてください:

このPico Wi-Fiドアベルをあなたのニーズに合わせてどのようにセットアップしますか?

4コメント

  1. Tom on 8月 12, 2022 at 3:06 am となります。

    ご挨拶

    RPIのPico Wプロジェクト、IFTT send mailとウェブページ・プロジェクトをいくつか試したかったのですが、問題が発生しました。IFTTのサンプルを実行すると、micropythonプログラムが'sockets'モジュールを探しているという問題が発生しました。プログラムが正しく機能するためのソケットモジュールが見つかりませんでした。この問題を解決するためのアドバイスをお願いします。

  2. 参考したサイト:Raspberry Pi Pico W Wi-Fi Doorbell チュートリアル(HTTPリクエストとIFTTT) [...] [...]

  3. [このプロジェクトは、昨年7月に紹介した「Pico Wドアベルのチュートリアル」とそれほど変わりません。[...]

  4. [...] 家をもっとスマートにしたいとお考えですか?Raspberry Piは、あらゆるものを自動化する中心機器としても周辺機器としても機能します。例えば、監視カメラやセキュリティシステムに変身させたり、音声アシスタントとして使ったり、スマートミラーを作ったり、スマート照明に使ったりできます。植物への水やりや庭の鳥の監視、スマート・ドアベルに使うこともできる![...]

コメントを残す