注釈
こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。
参加する理由は?
エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。
学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。
独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。
特別割引:最新製品の独占割引をお楽しみください。
祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。
👉 私たちと一緒に探索し、創造する準備はできていますか?[ここ]をクリックして今すぐ参加しましょう!
8.9 Blynkを利用した侵入通知システム¶
このプロジェクトでは、PIRモーションセンサー(HC-SR501)を使用したシンプルな自宅侵入検出システムを紹介します。 Blynkアプリを通じてシステムを「外出」モードに設定すると、PIRセンサーが動きを監視します。 検出された動きはBlynkアプリに通知を送り、ユーザーに潜在的な侵入を警告します。
必要な部品
このプロジェクトでは、以下のコンポーネントが必要です。
全てのキットを購入することは非常に便利です。リンクはこちらです:
名前 |
このキットのアイテム |
リンク |
---|---|---|
ESP32 Starter Kit |
320+ |
以下のリンクから個別に購入することもできます。
コンポーネントの紹介 |
購入リンク |
---|---|
1. 回路組立¶
2. Blynkの設定¶
2.1 Blynkの初期化
BLYNK ページにアクセスし、 Sign Up FREE または Enterprise Solution を選択します。
登録プロセスを開始するために、メールアドレスを入力します。
メールを確認し、メール内の Create Password リンクをクリックしてパスワードを設定します。
確認後、 Blynk Tour が始まり、Blynkの主要な機能について簡単に学ぶことができます。
Blynk Tourを完了すると、Blueprintsを探索するか、Quick Startをクリックしてデバイスを迅速に接続するかを選択できるウィンドウが表示されます。ただし、今回は「Have a look around first」を選択します。
2.2 テンプレートの作成
Blynkでテンプレートを作成することから始めます。 Intrusion Alert System テンプレートを設定する手順に従います。
テンプレートに名前を付け、 ESP32 をハードウェアとして選択し、 WiFi を 接続タイプ として選択し、 Done をクリックします。
テンプレートに入り、次のステップが表示されます。 Configure template をクリックしてカバー画像をアップロードし、説明を強化します。残りの3つのステップに従ってセットアップを完了します。
2.3 データストリームの設定
新しく作成されたテンプレートを開き、データストリーム設定ページに移動します。
New Datastream をクリックし、ポップアップで Virtual Pin を選択します。
Virtual Pin V0 を AwayMode と名付け、 データタイプ を Integer に設定し、 MIN および MAX の値を 0 および 1 に設定します。
同様に、 Virtual Pin をもう一つ作成し、 Current Status と名付け、 データタイプ を String に設定します。
2.4 ウェブダッシュボードの設定
Switch widget と Label widget の両方を ウェブダッシュボード にドラッグ&ドロップします。
ウィジェットの上にカーソルを置くと、3つのアイコンが表示されます。 設定 アイコンを使用してウィジェットのプロパティを構成します。
Switch widget を AwayMode(V0) データストリームにリンクするように設定し、 ONLABEL と OFFLABEL をそれぞれ "away home" と "at home" に設定します。
Label widget**の設定で、 **Current Status(V1) データストリームにリンクします。
2.5 イベントの設定
Events & Notifications をクリックし、次に Create Event をクリックします。
イベントに名前を付け、そのコードを指定します。タイプ に Warning を選択し、通知メールの簡単な説明を提供します。通知頻度を希望に応じて調整します。
注釈
イベントコード が
intrusion_detected
に設定されていることを確認してください。ここでの変更は、対応するコードの調整が必要です。Notifications セクションに移動して通知を有効にし、メール設定を構成します。
Settings で、イベントが通知をトリガーする頻度を定義し、希望に応じて間隔を設定します。設定を保存するために Create をクリックすることを忘れないでください。
2.6 テンプレートの保存
2.7 デバイスの作成
3. コードの実行¶
コードを実行する前に、Arduino IDEの Library Manager から
Blynk
ライブラリをインストールしてください。iot_9_intrusion_alert_system.ino
ファイルを開きます。このファイルは、esp32-starter-kit-main\c\codes\iot_9_intrusion_alert_system
ディレクトリ内にあります。内容をArduino IDEにコピーすることもできます。BLYNK_TEMPLATE_ID
、BLYNK_TEMPLATE_NAME
、BLYNK_AUTH_TOKEN
のプレースホルダーを独自のIDに置き換えてください。#define BLYNK_TEMPLATE_ID "TMPxxxxxxx" #define BLYNK_TEMPLATE_NAME "Intrusion Alert System" #define BLYNK_AUTH_TOKEN "xxxxxxxxxxxxx"
また、WiFiネットワークの
ssid
とpassword
を入力する必要があります。char ssid[] = "your_ssid"; char pass[] = "your_password";
正しいボード(ESP32 Dev Module)とポートを選択し、 Upload ボタンをクリックしてください。
シリアルモニターを開き(ボーレートを115200に設定)、成功した接続メッセージが表示されるのを待ちます。
接続に成功したら、Blynkでスイッチをアクティブにすると、PIRモジュールの監視が開始されます。動きが検出されると(状態が1になる)、"誰かがここにいる!"と表示され、あなたのメールにアラートが送信されます。
4. コードの説明¶
設定とライブラリ
ここでは、Blynkの定数と資格情報を設定します。また、ESP32とBlynkに必要なライブラリを含めます。
/* Comment this out to disable prints and save space */ #define BLYNK_PRINT Serial #define BLYNK_TEMPLATE_ID "xxxxxxxxxxx" #define BLYNK_TEMPLATE_NAME "Intrusion Alert System" #define BLYNK_AUTH_TOKEN "xxxxxxxxxxxxxxxxxxxxxxxxxxx" #include <WiFi.h> #include <WiFiClient.h> #include <BlynkSimpleEsp32.h>
WiFi設定
あなたのWiFiの資格情報を入力してください。
char ssid[] = "your_ssid"; char pass[] = "your_password";
PIRセンサー設定
PIRセンサーが接続されているピンを設定し、状態変数を初期化します。
const int sensorPin = 14; int state = 0; int awayHomeMode = 0; BlynkTimer timer;
setup()関数
この関数はPIRセンサーを入力として初期化し、シリアル通信を設定し、WiFiに接続し、Blynkを設定します。
setup()
でtimer.setInterval(1000L, myTimerEvent)
を使用してタイマーの間隔を設定します。ここではmyTimerEvent()
関数を毎 1000ms 実行するように設定しています。timer.setInterval(1000L, myTimerEvent)
の最初のパラメータを変更することでmyTimerEvent
実行の間隔を変更できます。
void setup() { pinMode(sensorPin, INPUT); // Set PIR sensor pin as input Serial.begin(115200); // Start serial communication at 115200 baud rate for debugging // Configure Blynk and connect to WiFi Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass); timer.setInterval(1000L, myTimerEvent); // Setup a function to be called every second }
loop()関数
loop関数はBlynkとBlynkタイマー関数を継続的に実行します。
void loop() { Blynk.run(); timer.run(); }
Blynkアプリとのやり取り
これらの関数は、デバイスがBlynkに接続したとき、またはBlynkアプリの仮想ピンV0の状態に変更があったときに呼び出されます。
デバイスがBlynkサーバーに接続するたび、またはネットワーク状況が悪いために再接続するたびに、
BLYNK_CONNECTED()
関数が呼び出されます。Blynk.syncVirtual()
コマンドは単一の仮想ピン値のリクエストを行います。指定された仮想ピンはBLYNK_WRITE()
コールを実行します。BLYNKサーバー上の仮想ピンの値が変更されると、
BLYNK_WRITE()
がトリガされます。
// This function is called every time the device is connected to the Blynk.Cloud BLYNK_CONNECTED() { Blynk.syncVirtual(V0); } // This function is called every time the Virtual Pin 0 state changes BLYNK_WRITE(V0) { awayHomeMode = param.asInt(); // additional logic }
データ処理
myTimerEvent()
関数は毎秒sendData()
を呼び出します。Blynkで外出モードが有効になっている場合、PIRセンサーをチェックし、動きが検出された場合にBlynkに通知を送ります。ラベルのテキストを変更するには、
Blynk.virtualWrite(V1, "Somebody in your house! Please check!");
を使用します。イベントをBlynkに記録するには、
Blynk.logEvent("intrusion_detected");
を使用します。
void myTimerEvent() { sendData(); } void sendData() { if (awayHomeMode == 1) { state = digitalRead(sensorPin); // Read the state of the PIR sensor Serial.print("state:"); Serial.println(state); // If the sensor detects movement, send an alert to the Blynk app if (state == HIGH) { Serial.println("Somebody here!"); Blynk.virtualWrite(V1, "Somebody in your house! Please check!"); Blynk.logEvent("intrusion_detected"); } } }
参考文献