LoginSignup
0
0

More than 1 year has passed since last update.

ESP-NOWで三路スイッチモドキを作る(リレー側)

Posted at

ブログの日記にて三路スイッチのIOT化について書いたのですが、時々ご覧になる方が
いる様なので、リレー側の簡易コードをESP-NOWで書きましたので参考にして頂けたら幸いです。
三路スイッチ以外にもイロイロと使い道はあるのですが、その辺は日記の方で模索していきます。

#実行に必要なリソース
  ArduinoIDE開発環境
  ESP32/ESP8266
  ESP-NOWで三路スイッチモドキを作る(スイッチ側)
  "espnow_pack.h" : 記事「ESP-NOWの送受信関数群とサンプルです」で紹介

#機能
  ESP-NOWで「/TOGGLE」「/ON」「/OFF」のテキストコマンドを受け付けます。
  「/TOGGLE」 RELAYPINの出力を反転する
  「/ON」   RELAYPINの出力を1にする
  「/OFF」   RELAYPINの出力を0にする
  ##ソースでは#defineでRELAYPINを2に設定してあります##
  ##本機のMACアドレスはコンパイルログもしくは起動時のSTA MAC:ログにて確認できます。

ESPNOWRelay.ino
#if defined(ESP8266)
#include <ESP8266WiFi.h>    // ESP8266
#else
#include <WiFi.h>           // ESP32
#endif
#define RELAYPIN 2
#include "espnow_pack.h"
#define ESP_NOW_CH 0
int RELAYSTATUS;

void setup(){
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  if( esp_now_begin( ESP_NOW_CH )!=0 ){
    Serial.println("ESP-NOW Init Failed");
    ESP.restart();
  }
  Serial.printf("\n\nSTA MAC: %s\n", WiFi.macAddress().c_str() );
  pinMode( RELAYPIN, OUTPUT );
  RELAYSTATUS = 0;
  digitalWrite( RELAYPIN, RELAYSTATUS );
}

void loop() {
  delay(1);
  if( esp_now_receive!=true )    return;
  esp_now_receive = false;
  Serial.printf( "recv:%s\n", esp_now_receive_data );
  if( strcmp( "/TOGGLE", esp_now_receive_data )==0 ){
    RELAYSTATUS = ((RELAYSTATUS==1)?0:1);
    digitalWrite( RELAYPIN, RELAYSTATUS );
  }
  if( strcmp( "/ON", esp_now_receive_data )==0 ){
    RELAYSTATUS = 1;
    digitalWrite( RELAYPIN, RELAYSTATUS );
  }
  if( strcmp( "/OFF", esp_now_receive_data )==0 ){
    RELAYSTATUS = 0;
    digitalWrite( RELAYPIN, RELAYSTATUS );
  }
}

あとがき
 どなたか岡山:倉敷近辺でオッサンでも加入可能なそんなArduino系な集まり誘ってくれませんか? (ぷ

0
0
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
0
0