How to control 8 relays with remote control using esp 8266

Controlling the relay via remote control and ESP8266

How to control 8 relays with remote control using esp 8266

 This video demonstrates how to control a 8-channel relay via remote control using an ESP8266 board. The presenter explains the pin configuration of the ESP8266 and the relay, and then walks through the process of connecting the components and writing a simple code to control the relay. The video is a good introduction for beginners who want to learn how to use relays with ESP8266 boards.
ESP8266 with 8ch relay board - Home Automation

relay 8-ch via remote control and ESP8266

Code :

Esp8266 IR Code


#define IR_RECEIVE_PIN      2     // D4
#define DECODE_NEC

#include <Arduino.h>
#include <IRremote.hpp>

void OnIRDataRecv() {
  if (IrReceiver.decode()) {
    uint16_t received = IrReceiver.decodedIRData.command;
    if (received) {
      Serial.print("Command: 0x");
      Serial.println(received, HEX);
      delay(250);
    }
    IrReceiver.resume();
  }
}
 
void setup() {
  Serial.begin(74880);
  delay(2500);
  IrReceiver.begin(IR_RECEIVE_PIN)
  IrReceiver.registerReceiveCompleteCallback(OnIRDataRecv);
}

void loop() {
  if (IrReceiver.decode()) {
    uint16_t received = IrReceiver.decodedIRData.command;
    if (received) {
      Serial.print("Command: 0x");
      Serial.println(received, HEX);
      delay(250);
    }
    IrReceiver.resume();
  }
  delay(10);
}

Esp8266 Relay


#define IR_RECEIVE_PIN      2     // D4
#define DECODE_NEC

#include <Arduino.h>
#include <IRremote.hpp>

#define relay_1 0x8E
#define relay_2 0x86
#define relay_3 0x8F
#define relay_4 0x92
#define relay_5 0x87
#define relay_6 0x93
#define relay_7 0x96
#define relay_8 0x82

int relay_pin[8] = {5, 4, 0, 15, 13, 12, 14, 16};
bool relay_state[8];

void SetCommand(uint8_t Comd) {
  switch(Comd) {
    case relay_1:
      relay_state[0] = !relay_state[0];
      digitalWrite(relay_pin[0], relay_state[0]);
      (relay_state[0]) ? Serial.println("Relay 1 On") : Serial.println("Relay 1 Off");
      break;
    case relay_2:
      relay_state[1] = !relay_state[1];
      digitalWrite(relay_pin[1], relay_state[1]);
      (relay_state[1]) ? Serial.println("Relay 2 On") : Serial.println("Relay 2 Off");
      break;
    case relay_3:
      relay_state[2] = !relay_state[2];
      digitalWrite(relay_pin[2], relay_state[2]);
      (relay_state[2]) ? Serial.println("Relay 3 On") : Serial.println("Relay 3 Off");
      break;
    case relay_4:
      relay_state[3] = !relay_state[3];
      digitalWrite(relay_pin[3], relay_state[3]);
      (relay_state[3]) ? Serial.println("Relay 4 On") : Serial.println("Relay 4 Off");
      break;
    case relay_5:
      relay_state[4] = !relay_state[4];
      digitalWrite(relay_pin[4], relay_state[4]);
      (relay_state[4]) ? Serial.println("Relay 5 On") : Serial.println("Relay 5 Off");
      break;
    case relay_6:
      relay_state[5] = !relay_state[5];
      digitalWrite(relay_pin[5], relay_state[5]);
      (relay_state[5]) ? Serial.println("Relay 6 On") : Serial.println("Relay 6 Off");
      break;
    case relay_7:
      relay_state[6] = !relay_state[6];
      digitalWrite(relay_pin[6], relay_state[6]);
      (relay_state[6]) ? Serial.println("Relay 7 On") : Serial.println("Relay 7 Off");
      break;
    case relay_8:
      relay_state[7] = !relay_state[7];
      digitalWrite(relay_pin[7], relay_state[7]);
      (relay_state[7]) ? Serial.println("Relay 8 On") : Serial.println("Relay 8 Off");
      break;
    default:
      break;
  }
}

void OnIRDataRecv() {
  if (IrReceiver.decode()) {
    uint16_t received = IrReceiver.decodedIRData.command;
    if (received) {
      Serial.print("Command: 0x");
      Serial.println(received, HEX);
      SetCommand(received);
      delay(250);
    }
    IrReceiver.resume();
  }
}
void setup() {
  Serial.begin(74880);
  for ( int j=0; j<8;j++) {
    pinMode(relay_pin[j], OUTPUT);
    relay_state[j] = false;
    digitalWrite(relay_pin[j], LOW);
  }
  IrReceiver.begin(IR_RECEIVE_PIN);
  IrReceiver.registerReceiveCompleteCallback(OnIRDataRecv);
}

void loop() {
  // Chill
}

 

Arduino libraries:

       https://github.com/Arduino-IRremote/Arduino-IRremote

No comments:

Post a Comment