2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

M5NanoC6、WebServerでリレーのオン、オフ。

Posted at

参考

↓クリック

↑クリック

x 過去ログを見よ!!
x 3.0.7
x Arduino IDE
x Grove自作クロスケーブル
x ロジカラプログ様のプログラムを非営利、研究調査目的で引用しました。

修正箇所は、1か所


const char ssid[] = "自宅のWi-FiルーターのSSIDを設定";  // 接続先SSID
const char pass[] = "自宅のWi-Fiルーターのパスワードを設定"; // 接続先パスワード

o_coq575.jpg

o_coq576.jpg

o_coq577.jpg



#include "Arduino.h"
#include <WiFi.h>       // Wi-Fi接続用
#include <WebServer.h>  // サーバー設定用
#include <ESPmDNS.h>    // ドメインネームでIPアドレス取得用

#define BLUE_LED_PIN 7  // 青色LED端子番号
#define BTN_PIN 9       // 本体ボタン端子番号
#define OUT_PIN 2       // 外部出力端子番号

// 変数宣言
bool state = false; // ボタン状態保持用

// Wi-Fiローカル接続先設定
const char ssid[] = "自宅のWi-FiルーターのSSIDを設定";  // 接続先SSID
const char pass[] = "自宅のWi-Fiルーターのパスワードを設定"; // 接続先パスワード
const char mdnsName[] = "nano1";  // mDNS Name(mdnsName.localで接続可能)

// サーバー設定ポート80で接続
WebServer server(80);

// htmlメイン画面データ ※R"この中の文字列は改行は無視され連続した文字列として扱われる"
char html[] = R"(
  <!DOCTYPE html>
  <html lang="jp">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>REMOTE-SWITCH</title>
    <style>
      body { display: flex; justify-content: center; height: 100vh; }
      .container { margin-top: 20px;text-align: center; }
      button { height:50px }
    </style>
  </head>
  <body>
    <div class="container">
      <h1>REMOTE-SWITCH</h1>
      <div>
        <button onclick="location.href='/get/btn_on'"> ON </button>
        <button onclick="location.href='/get/btn_off'"> OFF </button>
      </div>
    </div>
  </body>
  </html>
)";

/******************サーバーリクエスト時処理関数 ******************/
// ルートアクセス時の応答関数
void handleRoot() {
  server.send(200, "text/html", html);  //レスポンス200を返しhtml送信
}
// エラー(Webページが見つからない)時の応答関数
void handleNotFound() {
  server.send(404, "text/plain", "404 Not Found!");  //text送信
}
// ブラウザONボタン処理
void btnOn() {
  digitalWrite(BLUE_LED_PIN, HIGH); // 本体LED点灯
  digitalWrite(OUT_PIN, HIGH);      // 外部出力ON
  Serial.println("get:/get/btn_on");
  server.send(200, "text/html", html);  //レスポンス200を返しhtml送信
}
// ブラウザOFFボタン処理
void btnOff() {
  digitalWrite(BLUE_LED_PIN, LOW);  // 本体LED消灯
  digitalWrite(OUT_PIN, LOW);       // 外部出力OFF
  Serial.println("get:/get/btn_off");
  server.send(200, "text/html", html);  //レスポンス200を返しhtml送信
}

// 初期設定 ---------------------------------------------------
void setup() {
  Serial.begin(9600); // シリアル通信初期化(ArduinoIDEの「USB CDC On Boot:」設定は"Enable"にしておく)
  // Wi-Fi接続開始
  while (WiFi.localIP()[0] == 0) { // IPアドレスが取得されるまで繰り返し
    WiFi.begin(ssid, pass);        //ローカル Wi-Fi接続実行
    delay(3000); // 再接続待ち
  }

  // mDNS設定(mdnsName.localでアクセス)
  MDNS.begin(mdnsName);

  // 接続情報シリアル出力表示
  Serial.print("IP:");
  Serial.println(WiFi.localIP());       // IPアドレス(配列)表示
  Serial.printf("mDNS:%S\n", mdnsName); // mDNS名表示

  // サーバー設定
  server.on("/", handleRoot);         //ルートアクセス時の応答関数を設定
  server.onNotFound(handleNotFound);  //Webページが見つからない時の応答関数を設定
  server.on("/get/btn_on", btnOn);    //ボタンオン受信処理
  server.on("/get/btn_off", btnOff);  //ボタンオフ受信処理
  server.begin();                     //Webサーバー開始

  // 入力設定
  pinMode(BTN_PIN, INPUT_PULLUP);  // 本体ボタン

  // 出力設定
  pinMode(BLUE_LED_PIN, OUTPUT); // 本体LED青
  pinMode(OUT_PIN, OUTPUT);      // 外部出力
}

// メイン -----------------------------------------------------
void loop() {
  if (digitalRead(BTN_PIN) == LOW && state == false) { // 本体ボタンがON で stateがfalseなら
    digitalWrite(BLUE_LED_PIN, HIGH); // 本体LED点灯
    digitalWrite(OUT_PIN, HIGH);      // 外部出力ON
    state = true;   // stateをtrueへ
  }
  if (digitalRead(BTN_PIN) == HIGH && state == true) {  // 本体ボタンがOFFなら
    digitalWrite(BLUE_LED_PIN, LOW);  // 本体LED消灯
    digitalWrite(OUT_PIN, LOW);       // 外部出力OFF
    state = false;  // stateをfalseへ
  }
  server.handleClient();  //クライアントからのアクセス確認
  delay(100);             //遅延時間(ms)
}


2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?