I am doing home automation project using blynk app with three 230 V bulb and 1 AC fan , this worked really well, but I connected manual switch (for bulbs & fan) to ESP8266, after connected the switch the ESP8266 keeps restarting and disconnects from WiFi , do I need to give extra power supply to switch , if I have to give the power supply do I need to use relay or I can directly connect to 230 v supply
one has to be very careful connecting mains voltages to microcontrollers - usualy done thru opto-isolators
could you upload a schematic of your circuir and the code?
I have given a connection like this, I have given power to ESP8266 from USB cable, do i need to give ac supply for the switch through relay like i given to bulb
#include <BlynkSimpleEsp8266.h>
#include <ESP8266WiFi.h>
#define BLYNK_TEMPLATE_ID "TMPL3On5pdO-u"
#define BLYNK_TEMPLATE_NAME "HOME AUTOMATION"
#define BLYNK_AUTH_TOKEN "1QpA2HJ66oMMAnBSUaTpXLYraqTDIooP"
char ssid[] = "OPPO A77s";
char pass[] = "elai@2333";
bool fetch_blynk_state = true;
#define RelayPin1 5 //D1
#define RelayPin2 4 //D2
#define RelayPin3 14 //D5
#define RelayPin4 12 //D6
#define SwitchPin1 10 //SD3
#define SwitchPin2 0 //D3
#define SwitchPin3 13 //D7
#define SwitchPin4 3 //RX
#define wifiLed 16 //D0
#define VPIN_BUTTON_1 V1
#define VPIN_BUTTON_2 V2
#define VPIN_BUTTON_3 V3
#define VPIN_BUTTON_4 V4
bool toggleState_1 = LOW;
bool toggleState_2 = LOW;
bool toggleState_3 = LOW;
bool toggleState_4 = LOW;
bool SwitchState_1 = LOW;
bool SwitchState_2 = LOW;
bool SwitchState_3 = LOW;
bool SwitchState_4 = LOW;
int wifiFlag = 0;
char auth[] = BLYNK_AUTH_TOKEN;
BLYNK_WRITE(VPIN_BUTTON_1) {
toggleState_1 = param.asInt();
digitalWrite(RelayPin1, !toggleState_1);
}
BLYNK_WRITE(VPIN_BUTTON_2) {
toggleState_2 = param.asInt();
digitalWrite(RelayPin2, !toggleState_2);
}
BLYNK_WRITE(VPIN_BUTTON_3) {
toggleState_3 = param.asInt();
digitalWrite(RelayPin3, !toggleState_3);
}
BLYNK_WRITE(VPIN_BUTTON_4) {
toggleState_4 = param.asInt();
digitalWrite(RelayPin4, !toggleState_4);
}
BLYNK_WRITE(VPIN_BUTTON_C) {
all_SwitchOff();
}
void all_SwitchOff() {
toggleState_1 = 0;
digitalWrite(RelayPin1, HIGH);
Blynk.virtualWrite(VPIN_BUTTON_1, toggleState_1);
delay(100);
toggleState_2 = 0;
digitalWrite(RelayPin2, HIGH);
Blynk.virtualWrite(VPIN_BUTTON_2, toggleState_2);
delay(100);
toggleState_3 = 0;
digitalWrite(RelayPin3, HIGH);
Blynk.virtualWrite(VPIN_BUTTON_3, toggleState_3);
delay(100);
toggleState_4 = 0;
digitalWrite(RelayPin4, HIGH);
Blynk.virtualWrite(VPIN_BUTTON_4, toggleState_4);
delay(100);
}
void manual_control() {
if (digitalRead(SwitchPin1) == LOW && SwitchState_1 == LOW) {
digitalWrite(RelayPin1, LOW);
toggleState_1 = HIGH;
SwitchState_1 = HIGH;
Blynk.virtualWrite(VPIN_BUTTON_1, toggleState_1);
Serial.println("Switch-1 on");
}
if (digitalRead(SwitchPin1) == HIGH && SwitchState_1 == HIGH) {
digitalWrite(RelayPin1, HIGH);
toggleState_1 = LOW;
SwitchState_1 = LOW;
Blynk.virtualWrite(VPIN_BUTTON_1, toggleState_1);
Serial.println("Switch-1 off");
}
if (digitalRead(SwitchPin2) == LOW && SwitchState_2 == LOW) {
digitalWrite(RelayPin2, LOW);
toggleState_2 = HIGH;
SwitchState_2 = HIGH;
Blynk.virtualWrite(VPIN_BUTTON_2, toggleState_2);
Serial.println("Switch-2 on");
}
if (digitalRead(SwitchPin2) == HIGH && SwitchState_2 == HIGH) {
digitalWrite(RelayPin2, HIGH);
toggleState_2 = LOW;
SwitchState_2 = LOW;
Blynk.virtualWrite(VPIN_BUTTON_2, toggleState_2);
Serial.println("Switch-2 off");
}
if (digitalRead(SwitchPin3) == LOW && SwitchState_3 == LOW) {
digitalWrite(RelayPin3, LOW);
toggleState_3 = HIGH;
SwitchState_3 = HIGH;
Blynk.virtualWrite(VPIN_BUTTON_3, toggleState_3);
Serial.println("Switch-3 on");
}
if (digitalRead(SwitchPin3) == HIGH && SwitchState_3 == HIGH) {
digitalWrite(RelayPin3, HIGH);
toggleState_3 = LOW;
SwitchState_3 = LOW;
Blynk.virtualWrite(VPIN_BUTTON_3, toggleState_3);
Serial.println("Switch-3 off");
}
if (digitalRead(SwitchPin4) == LOW && SwitchState_4 == LOW) {
digitalWrite(RelayPin4, LOW);
toggleState_4 = HIGH;
SwitchState_4 = HIGH;
Blynk.virtualWrite(VPIN_BUTTON_4, toggleState_4);
Serial.println("Switch-4 on");
}
if (digitalRead(SwitchPin4) == HIGH && SwitchState_4 == HIGH) {
digitalWrite(RelayPin4, HIGH);
toggleState_4 = LOW;
SwitchState_4 = LOW;
Blynk.virtualWrite(VPIN_BUTTON_4, toggleState_4);
Serial.println("Switch-4 off");
}
}
void setup()
{
Serial.begin(11520);
WiFi.begin(ssid, pass);
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.print("\nConnected to ");
Serial.println(ssid);
Serial.print("IP address:100.67.247.217 ");
Serial.println(WiFi.localIP());
pinMode(RelayPin1, OUTPUT);
pinMode(RelayPin2, OUTPUT);
pinMode(RelayPin3, OUTPUT);
pinMode(RelayPin4, OUTPUT);
pinMode(wifiLed, OUTPUT);
pinMode(SwitchPin1, INPUT_PULLUP);
pinMode(SwitchPin2, INPUT_PULLUP);
pinMode(SwitchPin3, INPUT_PULLUP);
pinMode(SwitchPin4, INPUT_PULLUP);
//During Starting all Relays should TURN OFF
digitalWrite(RelayPin1, !toggleState_1);
digitalWrite(RelayPin2, !toggleState_2);
digitalWrite(RelayPin3, !toggleState_3);
digitalWrite(RelayPin4, !toggleState_4);
digitalWrite(wifiLed, HIGH);
//Blynk.begin(auth, ssid, pass);
WiFi.begin(ssid, pass);
Blynk.config(auth);
delay(1000);
if (!fetch_blynk_state){
Blynk.virtualWrite(VPIN_BUTTON_1, toggleState_1);
Blynk.virtualWrite(VPIN_BUTTON_2, toggleState_2);
Blynk.virtualWrite(VPIN_BUTTON_3, toggleState_3);
Blynk.virtualWrite(VPIN_BUTTON_4, toggleState_4);
}
}
void loop()
{
manual_control();
Blynk.run();
}
Your diagram indicates an external 5V supply.
No, switches that can switch 240V AC can also switch 3.3V DC. Switches connected like in your diagram require almost zero power.
#define SwitchPin4 3 //RX
You cannot use RX pin for a switch. Can you not use D4?
first, i have connected one switch to check that time also it worked well, after connecting 4 switches this problem arriving that's why I thought switch needs an external power supply
What's the trouble noted in the Crash Log ?
.....................................................................
Connected to AMhd
IP address: 192.168.160.1
ets Jan 8 2013,rst cause:4, boot mode:(3,6)
wdt reset
load 0x4010f000, len 3424, room 16
tail 0
chksum 0x2e
load 0x3fff20b8, len 40, room 8
tail 0
chksum 0x2b
csum 0x2b
v00046670
~ld
� �n� r��n|�l�l b b r l�nb�n l
� r l�l ��.......
Connected to AMhd
IP address: 192.168.160.1
rll�r $ �n�l�b|�� �r b�b �nn lnn bb p�$b lrlp�n �l� bn�n�� b��nn'l� l � nnl
nr���nbl� p�n r� b bn�n b��nn'l
� nnl nr���nb �
r��nb � � ��� l
��n� � �n� r��n|�l�l
b b r l�nb�n l` � r l�l ��.............
Connected to AMhd
IP address: 192.168.160.1
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x4010f000, len 3424, room 16
tail 0
chksum 0x2e
load 0x3fff20b8, len 40, room 8
tail 0
chksum 0x2b
csum 0x2b
v00046670
~ld
� �n� r��n|�l�l b b r l�nb�n l
� r l�l ��.............
Connected to AMhd
IP address: 192.168.160.1
wdt reset
load 0x4010f000, len 3424, room 16
tail 0
chksum 0x2e
load 0x3fff20b8, len 40, room 8
tail 0
chksum 0x2b
csum 0x2b
v00046670
~ld
� �n� r��n|�l�l b b r l�nb�n l
� r l�l ��.............
Connected to AMhd
IP address: 192.168.160.1
Showing like this
i have changed this line from my code , its working well now, thank you.
n #define SwitchPin1 10 //SD3
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.