.. note:: こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。 **参加する理由は?** - **エキスパートサポート**:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。 - **学び&共有**:ヒントやチュートリアルを交換してスキルを向上させましょう。 - **独占的なプレビュー**:新製品の発表や先行プレビューに早期アクセスしましょう。 - **特別割引**:最新製品の独占割引をお楽しみください。 - **祭りのプロモーションとギフト**:ギフトや祝日のプロモーションに参加しましょう。 👉 私たちと一緒に探索し、創造する準備はできていますか?[|link_sf_facebook|]をクリックして今すぐ参加しましょう! 3. @IFTTTを使用したセキュリティシステム ============================================ このプロジェクトでは、侵入者や迷い込んだ動物が自宅に侵入した場合に検出するPIRセンサーを使用したセキュリティデバイスを作成します。そのような場合には、メールで警告が届きます。 最も基本的なサービスとしてWebhookが使用されます。 Raspberry Pi Pico WからIFTTTのサービスにPOSTリクエストが送信されます。 IFTTTを使用して、Webhookを傍受し、メールを送信するAppletを作成します。 **1. 必要なコンポーネント** このプロジェクトで必要なコンポーネントは以下の通りです。 便利なのは、キット全体を購入することです。リンクはこちら: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - 名前 - キット内容 - リンク * - ケプラーキット - 450+ - |link_kepler_kit| 以下のリンクから個々に購入することも可能です。 .. list-table:: :widths: 5 20 5 20 :header-rows: 1 * - SN - コンポーネント - 数量 - リンク * - 1 - :ref:`cpn_pico_w` - 1 - |link_picow_buy| * - 2 - マイクロUSBケーブル - 1 - * - 3 - :ref:`cpn_breadboard` - 1 - |link_breadboard_buy| * - 4 - :ref:`cpn_wire` - 数本 - |link_wires_buy| * - 5 - :ref:`cpn_transistor` - 1(S8050) - |link_transistor_buy| * - 6 - :ref:`cpn_resistor` - 2(1KΩ, 10KΩ) - |link_resistor_buy| * - 7 - :ref:`cpn_button` - 1 - |link_button_buy| * - 8 - アクティブ :ref:`cpn_buzzer` - 1 - * - 9 - :ref:`cpn_lipo_charger` - 1 - * - 10 - 18650バッテリー - 1 - * - 11 - バッテリーホルダー - 1 - * - 12 - :ref:`cpn_pir` - 1 - |link_pir_buy| **2. 回路を作成する** .. warning:: Li-po Charger Moduleが図に示されているように接続されていることを確認してください。それ以外の場合は、ショートが発生し、バッテリーと回路が損傷する可能性があります。 .. image:: img/wiring/3.ifttt_mail_bb.png :width: 800 **3. IFTTTの設定** IFTTTは、さまざまなデータサービスを連携する多様な方法を提供する無料のサービスです。 ここでは、IFTTTにデータを送信するWebhook(カスタムURL)に反応するAppletを作成します。 その後、IFTTTが代わりにメールを送信します。 以下の手順でIFTTTで設定してください。 1. |link_ifttt| にアクセスして、ログインまたはアカウントを作成します。 .. image:: img/ifttt-1.png :width: 500 2. **Create(作成)** をクリックします。 .. image:: img/ifttt-2.png :width: 500 3. **If This(これが起きたら)** イベントを追加します。 .. image:: img/ifttt-3.png :width: 500 4. **Webhooks(ウェブフック)** を検索します。 .. image:: img/ifttt-4.png :width: 500 5. **Receive a web request(ウェブリクエストを受け取る)** をタップします。 .. image:: img/ifttt-5.png :width: 500 6. イベント名(例:SecurityWarning)を入力し、 **Create trigger(トリガーを作成)** をクリックします。 .. image:: img/ifttt-6.png :width: 500 7. **Then That(それがあれば)** イベントを追加します。 .. image:: img/ifttt-7.png :width: 500 8. Emailを検索します。 .. image:: img/ifttt-8.png :width: 500 9. **Send me an email(私にメールを送る)** をクリックします。 .. image:: img/ifttt-9.png :width: 500 10. **Subject(件名)** と **Body(本文)** を入力し、 **Create action(アクションを作成)** をクリックします。 .. image:: img/ifttt-10.png :width: 500 11. **Continue(続ける)** をクリックして、設定を完了します。 .. image:: img/ifttt-11.png :width: 500 12. タイトル名を変更して、完了です。 .. image:: img/ifttt-12.png :width: 500 13. 自動的にApplet詳細ページにリダイレクトされ、Appletが現在接続されていること、およびスイッチを切り替えて開始/終了することができることが確認できます。 .. image:: img/ifttt-13.png :width: 500 **4. スクリプトの実行** #. すでにIFTTTのAppletを作成したわけですが、Pico WがIFTTTにアクセスするためにはAPIキーも必要です。これは |link_webhooks| から取得できます。 .. image:: img/ifttt-14.png :width: 500 #. それをRaspberry Pi Pico W内の ``secrets.py`` スクリプトにコピーします。 .. image:: img/3_ifttt4.png .. note:: Pico Wに ``do_connect.py`` と ``secrets.py`` スクリプトがない場合は、 :ref:`iot_access` を参照してそれらを作成してください。 .. code-block:: python :emphasize-lines: 4 secrets = { 'ssid': 'SSID', 'password': 'PASSWORD', 'webhooks_key': 'WEBHOOKS_API_KEY' } #. ``kepler-kit-main/iot`` ディレクトリ下の ``3_ifttt_mail.py`` ファイルを開き、 **File(ファイル)** -> **Save as(名前を付けて保存)** をクリックするか、 ``Ctrl+Shift+S`` を押します。 .. image:: img/3_ifttt1.png #. ポップアップウィンドウで **Raspberry Pi Pico** を選択します。 .. image:: img/3_ifttt2.png #. ファイル名を ``main.py`` に設定します。同じファイルがすでにPico Wに存在する場合は、プロンプトが表示されます。 .. image:: img/3_ifttt3.png #. USBケーブルを抜いて、Li-poチャージャーモジュールでRaspberry Pi Pico Wに電源を供給できるようにします。スクリプトが実行されているときにブザーの音が聞こえます。PIRモジュールが通り過ぎる人物/生物を検出すると、ブザーが鳴り続け、警告のメールが送信されます。ボタンを押してスクリプトを再起動できます。 **仕組みについて** Raspberry Pi Pico Wはインターネットに接続する必要があります。その詳細は :ref:`iot_access` に記載されています。このプロジェクトでは、それをそのまま使用します。 .. code-block:: python from do_connect import * do_connect() PIRモジュールからのデータを読み取り、何かが通り過ぎると検出された場合には ``motion_detected()`` 関数を呼び出します(データは0から1)。 .. code-block:: python import machine sensor = machine.Pin(17, machine.Pin.IN) sensor.irq(trigger = machine.Pin.IRQ_RISING, handler = motion_detected) 次にPico WがIFTTTにデータを送信します。IFTTTに送信する ``message`` はURLの文字列であることがわかります。 IFTTTは ``secrets['webhooks_key']`` で送信者を識別し、 ``event`` でトリガーされるイベントを識別します。 したがって、それらが正確であることを確認してください。 .. code-block:: python import urequests from secrets import * event = 'SecurityWarning' message = f"https://maker.ifttt.com/trigger/{event}/with/key/{secrets['webhooks_key']}" def motion_detected(pin): urequests.post(message) print(message) global warn_flag warn_flag = True sensor.irq(handler = None) ``motion_detected()`` が呼び出されると、変数 ``warn_flag`` が ``True`` に設定され、ブザーが鳴り続けます。 .. code-block:: python while True: if warn_flag == True: alarm.toggle() time.sleep_ms(50) ここでのボタンの目的は、スクリプトを再起動することです。 .. code-block:: python button = machine.Pin(16, machine.Pin.IN) def reset_device(pin): machine.reset() button.irq(trigger = machine.Pin.IRQ_RISING, handler = reset_device)