abhishake_jamwal
Created July 1, 2022

ESP8266 touch switch board with voice control

This IoT-based project is specially designed to both work on manual and controllable through WiFI with the help of alexa

IntermediateFull instructions provided115
ESP8266 touch switch board with voice control

Things used in this project

Hardware components

NodeMCU ESP8266 Breakout Board
NodeMCU ESP8266 Breakout Board
×1
capactive touch switch 4 channel
×1
Jumper wires (generic)
Jumper wires (generic)
×1
Relay Module (Generic)
×1
Resistor 221 ohm
Resistor 221 ohm
×1
1N4007 – High Voltage, High Current Rated Diode
1N4007 – High Voltage, High Current Rated Diode
×1
General Purpose Transistor NPN
General Purpose Transistor NPN
×1
Echo Dot
Amazon Alexa Echo Dot
×1

Hand tools and fabrication machines

Soldering iron (generic)
Soldering iron (generic)
Solder Wire, Lead Free
Solder Wire, Lead Free
PCB, For DMB-4775
PCB, For DMB-4775

Story

Read more

Schematics

print_vOlj8k2xZo.PNG

NODE MCU PIN OUT

CAPACITIVE TOUCH SWITCH CONNECTIONS

NODE MCU PIN OUT

Code

code

C/C++
#include <EspalexaDevice.h>
#ifdef ARDUINO_ARCH_ESP32
#include <WiFi.h>
#else
#include <ESP8266WiFi.h>
#endif
#include <Espalexa.h>
// define the GPIO connected with Relays
#define RelayPin1 16  //D0
#define RelayPin2 5  //D1
#define RelayPin3 4 //D2
#define RelayPin4 0 //D3


#define SwitchPin1 14   //D5  
#define SwitchPin2 12   //D6  
#define SwitchPin3 13   //D7
#define SwitchPin4 15   //D8



int toggleState_1 = 0; //integer to remember the toggle state for relay 1
int toggleState_2 = 0;//integer to remember the toggle state for relay 2
int toggleState_3 = 0;//integer to remember the toggle state for relay 3
int toggleState_4 = 0;//integer to remember the toggle state for relay 4


void relayOnOff(int relay) {

  switch (relay) {
    case 1:
      if (toggleState_1 == 0) {
        digitalWrite(RelayPin1, LOW); // turn off relay 1
        Serial.println("Device1 OFF");
        toggleState_1 = 1;
      }
      else {
        digitalWrite(RelayPin1, HIGH); // turn on relay 2
        Serial.println("Device1 ON");
        toggleState_1 = 0;
      }
      break;

    case 2:
      if (toggleState_2 == 0) {
        digitalWrite(RelayPin2, LOW); // turn off relay 3
        Serial.println("Device2 OFF");
        toggleState_2 = 1;
      }
      else {
        digitalWrite(RelayPin2, HIGH); // turn on relay 4
        Serial.println("Device2 ON");
        toggleState_2 = 0;
      }
      break;

    case 3:
      if (toggleState_3 == 0) {
        digitalWrite(RelayPin3, LOW); // turn off relay 1
        Serial.println("Device3 OFF");
        toggleState_3 = 1;
      }
      else {
        digitalWrite(RelayPin3, HIGH); // turn on relay 1
        Serial.println("Device3 ON");
        toggleState_3 = 0;
      }
      break;
    
    case 4:
      if (toggleState_4 == 0) {
        digitalWrite(RelayPin4, LOW); // turn off relay 1
        Serial.println("Device4 OFF");
        toggleState_4 = 1;
      }
      else {
        digitalWrite(RelayPin4, HIGH); // turn on relay 1
        Serial.println("Device4 ON");
        toggleState_4 = 0;
      }
      break;

    default : break;
  }
}




void manual_control() {
  //Manual Switch Control
  if (digitalRead(SwitchPin1) == HIGH) {
    relayOnOff(1);
  }
  if (digitalRead(SwitchPin2) == HIGH) {
    relayOnOff(2);
  }
  if (digitalRead(SwitchPin3) == HIGH) {
    relayOnOff(3);
  }
  if (digitalRead(SwitchPin4) == HIGH) {
    relayOnOff(4);
  }
  
}


// prototypes
boolean connectWifi();

//callback functions
void firstLightChanged(uint8_t brightness);
void secondLightChanged(uint8_t brightness);
void thirdLightChanged(uint8_t brightness);
void fourthLightChanged(uint8_t brightness);

// WiFi Credentials
const char* ssid = "type_your_ssid_here";
const char* password = "type_you_rpassword_here";

// device names
String Device_1_Name = "Room light";
String Device_2_Name = "Blue bulb";
String Device_3_Name = "Yellow bulb";
String Device_4_Name = "Red bulb";

boolean wifiConnected = false;

Espalexa espalexa;

void setup()
{
  Serial.begin(115200);

  pinMode(RelayPin1, OUTPUT);//declariing pin as output pins
  pinMode(RelayPin2, OUTPUT);//
  pinMode(RelayPin3, OUTPUT);//
  pinMode(RelayPin4, OUTPUT);//
 
  pinMode(SwitchPin1, INPUT);//declaring pins as input pins
  pinMode(SwitchPin2, INPUT);
  pinMode(SwitchPin3, INPUT);
  pinMode(SwitchPin4, INPUT);
 
  // Initialise wifi connection

  
  wifiConnected = connectWifi();

  if (wifiConnected)
  {
    // Define your devices here.
    espalexa.addDevice(Device_1_Name, firstLightChanged); //simplest definition, default state off
    espalexa.addDevice(Device_2_Name, secondLightChanged);
    espalexa.addDevice(Device_3_Name, thirdLightChanged);
    espalexa.addDevice(Device_4_Name, fourthLightChanged);
   

    espalexa.begin();
  }
  
}

void loop()
{
  manual_control();
  espalexa.loop();
  delay(100);
}





















//our callback functions
void firstLightChanged(uint8_t brightness)
{
  //Control the device
  if (brightness == 255)
    {
      digitalWrite(RelayPin1, HIGH);
      Serial.println("Device1 ON");
      toggleState_1 = 0;
    }
  else
  {
    digitalWrite(RelayPin1, LOW);
    Serial.println("Device1 OFF");
    toggleState_1 = 1;
  }
}

void secondLightChanged(uint8_t brightness)
{
  //Control the device 
  if (brightness == 255)
    {
      digitalWrite(RelayPin2, HIGH);
      Serial.println("Device2 ON");
      toggleState_2 = 0;
    }
  else
  {
    digitalWrite(RelayPin2, LOW);
    Serial.println("Device2 OFF");
    toggleState_2 = 1;
  }
}

void thirdLightChanged(uint8_t brightness)
{
  //Control the device  
  if (brightness == 255)
    {
      digitalWrite(RelayPin3, HIGH);
      Serial.println("Device3 ON");
      toggleState_3 = 0;
    }
  else
  {
    digitalWrite(RelayPin3, LOW);
    Serial.println("Device3 OFF");
    toggleState_3 = 1;
  }
}

void fourthLightChanged(uint8_t brightness)
{
  //Control the device 
  if (brightness == 255)
    {
      digitalWrite(RelayPin4, HIGH);
      Serial.println("Device4 ON");
      toggleState_4 = 0;
    }
  else
  {
    digitalWrite(RelayPin4, LOW);
    Serial.println("Device4 OFF");
    toggleState_4 = 1;
  }
}















// connect to wifi  returns true if successful or false if not























boolean connectWifi()
{
  boolean state = true;
  int i = 0;

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.println("");
  Serial.println("Connecting to WiFi");

  // Wait for connection
  Serial.print("Connecting...");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    if (i > 20) {
      state = false; break;
    }
    i++;
  }
  Serial.println("");
  if (state) {
    Serial.print("Connected to ");
    Serial.println(ssid);
    Serial.print("IP address: ");
    Serial.println(WiFi.localIP());
  }
  else {
    Serial.println("Connection failed.");
  }
  return state;
}

proteus file

pgSQL
No preview (download only).

Credits

abhishake_jamwal
1 project • 0 followers

Comments