みなさん

こんちゃ

 

前回ただいまボタンの必要なものをそろえる準備編を行いました!

 

今回は実装をしていきたいと思います!

 

マイコンとかボタンとか物品で必要なものは前回記載しましたが今回も一応入れておきます。

 

 

 

 

 

 

 
 

 

必要なものは以上ですがLINE Notifyの登録が必要なのでそれは前回のブログを参考にしてください。

 

 

さて、さっそく実装といきます。

Arduino IDEを入れていない人は下記を参考にして導入してください。

 

コードは簡単です。

 

  1. #include <WiFi.h>
  2. #include <WiFiClientSecure.h>
  3.  
  4. // WiFi設定
  5. const char* ssid = "your-ssid";
  6. const char* password = "your-wifi-password";
  7.  
  8. // LINE Notify設定
  9. const char* host = "notify-api.line.me";
  10. const char* token = "your-token";
  11. const char* message = "your-message";
  12.  
  13. // スイッチに使用するPinの設定
  14. int sw_pin = 34;
  15.  
  16. void setup()
  17. {
  18.     // スイッチPinを入力に設定
  19.     pinMode(sw_pin,INPUT);
  20.  
  21.     // シリアルモニタの通信速度
  22.     Serial.begin(115200);
  23.  
  24.     Serial.println();
  25.     Serial.print("Connecting to ");
  26.     Serial.println(ssid);
  27.  
  28.     // WiFi接続
  29.     WiFi.begin(ssid, password);
  30.  
  31.     // WiFiの接続状態を確認
  32.     while (WiFi.status() != WL_CONNECTED) {
  33.         delay(500);
  34.         Serial.print(".");
  35.     }
  36.  
  37.     Serial.println("");
  38.     Serial.println("WiFi connected.");
  39.     Serial.println("IP address: ");
  40.     Serial.println(WiFi.localIP());
  41. }
  42. // line通知
  43. void send_line() {
  44.   // HTTPSへアクセス(SSL通信)するためのライブラリ
  45.   WiFiClientSecure client;
  46.  
  47.   // サーバー証明書の検証を行わずに接続する場合に必要
  48.   client.setInsecure();
  49.   
  50.   Serial.println("Try");
  51.   
  52.   //LineのAPIサーバにSSL接続(ポート443:https)
  53.   if (!client.connect(host, 443)) {
  54.     Serial.println("Connection failed");
  55.     return;
  56.   }
  57.   Serial.println("Connected");
  58.  
  59.   // リクエスト送信
  60.   String query = String("message=") + String(message);
  61.   String request = String("") +
  62.                "POST /api/notify HTTP/1.1\r\n" +
  63.                "Host: " + host + "\r\n" +
  64.                "Authorization: Bearer " + token + "\r\n" +
  65.                "Content-Length: " + String(query.length()) + "\r\n" +
  66.                "Content-Type: application/x-www-form-urlencoded\r\n\r\n" +
  67.                 query + "\r\n";
  68.   client.print(request);
  69.  
  70.   // 受信完了まで待機
  71.   while (client.connected()) {
  72.     String line = client.readStringUntil('\n');
  73.     if (line == "\r") {
  74.       break;
  75.     }
  76.   }
  77.   
  78.   String line = client.readStringUntil('\n');
  79.   Serial.println(line);
  80. }
  81.  
  82. // スイッチの変数宣言
  83. int sw_val = 0;
  84.  
  85. void loop(){
  86.   // スイッチの状態を読み取る
  87.   sw_val = digitalRead(sw_pin);
  88.  
  89.   // スイッチがONのとき
  90.   if (sw_val) {
  91.  
  92.     // Lineにリクエストを送信する
  93.     send_line();
  94.   }
  95. }

 

コードはこれだけです。

下記4ヶ所だけはご自身の環境に合わせて変更をしてください。

// WiFi設定
ssid = "your-ssid";        //5行目
password = "your-wifi-password"; //6行目

// LINE Notify設定
token = "your-token";                  //10行目
message = "your-message";        //11行目

 

"token"はLINE Notifyで登録したときに発行されたトークンコードです。

"message"はLINEに通知が来たときにポップアップに表示される文字になります。

 

回路図は下記のようになっています。

回路図と実際に組んだ画像は少し配置が違いますがESP32はオープンソースでいろいろな会社が出しているためメーカーによってピンの配置が違うのでご自身のESP32のピンを確認してください。

使うピンはGNDと3V3とD34です。

 

コンパイル後、実際にボタンを押してみると。

 

このようにLINEの通知として届きます!

これで今回目標にしていたボタンを押したら通知が届くところまで完成しました!!

 

次回はボタンをセンサーに変更して人が通ったら通知が来るシステムに取り掛かろうと思います!

 

何か質問等あればコメントまでどうぞ~

それでは、ばいちゃ