Proiect simplu butoane si Witty Cloud ESP8266-12E

Am inceput si folosit aplicatia pentru comanda a patru relee (modul relee cu optocuploare - active LOW) cu o placa Witty Cloud ESP8266-12E.

Din biblioteca Blynk am adaugat patru butoane, le-am declarat pini digitali astfel:
buton1 = GP5
buton 2 = GP16
buton 3 = GP14
buton 4 = GP2

La partea fizica, se folosesc contactele NO ale releelor. Acestea sunt legate in paralel cu cate un teleruptor ( 3 buc. pentru comanda iluminatului) si un buton al interfonului pentru comanda unui zavor electromagnetic. Atat TL-urile cat si butonul interfonului au nevoie doar de comanda de tip buton, fara automentinere.

Astfel ca, pentru fiecare buton din aplicatie am selectat modul “push” si valorile 1->0 ( in starea initiala HIGH, la atingere se comuta LOW = releu ON).

Totul functioneaza bine, pana la intreruperea alimentarii placii. La repornire apar urmatoarele situatii:

  1. doua relee sunt in pozitia dorita fara alimentare (nu comanda nimic - e ok, se asteapta comanda de pe telefon) - releele de pe GP5 si GP14
  2. la boot-ul placii, un releu se alimenteaza pentru scurt timp, apoi asteapta comanda de pe telefon (nu e ok deoarece da o comanda nedorita) - releul de pe GP4
  3. la cateva secunde dupa boot, un releu se alimenteaza si ramane ON pana se da o comanda din telefon. - GP16. Aici este cea mai mare problema - fiind din intamplare legata bobina zavorului, din cauza ca nu am observat la timp acest fenomen, a trebuit sa inlocuiesc tot zavorul…

In cazul 2) explicatia este simpla: GP2 este pinul pe care este si ledul incorporat, care la butare este LOW pentru scurt timp - rezolvarea este mutarea pe pinul GP4.

pentru cazul 3) nu stiu ce sa fac, mai ales ca acum dupa multe modificari, update la versiunea 5 a librariilor Blynk pentru Arduino, revenire la versiunea 4.8… incercare pe pini ramasi liberi (12,13,14) dar tot fara succes deoarece pentru acestia sunt alocate ledurile RGB si interfereaza cu releele, nu mai functioneaza nici ca la inceput.

Acum, dupa toate incercarile nereusite, la cateva secunde dupa boot, se conecteaza toate releele.

Aceasta este schema de montaj:

pinii pentru Wytti Cloud:

si acesta este codul:

#define BLYNK_PRINT Serial
#include "ESP8266WiFi.h"
#include "BlynkSimpleEsp8266.h" 

// You should get Auth Token in the Blynk App. 
// Go to the Project Settings (nut icon). 
char auth[] = "xxx"; 

// Your WiFi credentials. 
// Set password to "" for open networks.
 char ssid[] = "xx"; 
char pass[] = "x"; 

void setup()
 { 
// Debug console 
Serial.begin(9600); 

Blynk.begin(auth, ssid, pass); 

} 

void loop() 
{ 
 
Blynk.run(); 
}

versiune Arduino 1.8.0,
biblioteca Blynk 4.8,
versiune Blynk 2.13.3 (iphone),
server Blynk Cloud

Am inlocuit Witti Cloud cu WeMos D1 mini: acum trei relee sunt ok (pinii D1, D2 si D3), dar tot ramane problema cu cel care porneste la cateva secunde dupa boot.

Am incercat pe restul iesirilor, si este la fel (D0, D5, D6)

D4 este cuplat cu ledul de pe placa si nu poate fi folosit.

Am mai observat un lucru ciudat:

initial, cu aceasta placa, am setat asa:

buton1 = GP0
buton 2 = GP4
buton 3 = GP5
buton 4 = GP14

la iesirea comandata de GP14, butonul 4, apare problema

am schimbat pe GP16, la fel apare problema

apoi am modificat butoanele 2 si 4 astfel:

buton1 = GP0
buton 2 = GP14
buton 3 = GP5
buton 4 = GP4

si problema a aparul tot la butonul 4, cu toate ca pinul era schimbat - GP4 (alt releu sta pornit)

De mentionat ca solutia cu D1 mini nu este castigatoare, tensiunea data releelor nu este suficienta… aici mai trebuie sapat :slight_smile:

ok

in primul rand, hai sa punem la punct arduino ide si liburile.:

  • vad ca nu ai cea mai noua versiune de ide
  • ai zis ca apar ceva mesaje de warning la compilare
  1. fa un backup cu toate sketchurile si liburile arduino instalate
  2. dezinstaleaza arduino ide si sterge absolut toate liburile care ai instalat
  3. downloadeaza versiunea actuala de ide, si instaleaza in locatia default (c:\Program Files (x86)\Arduino)
  4. creaza un folder nou direct in c:\, cu numele ARDUINO
  5. in IDE, in setari, specifica acest folder ca si “sketchbook location”, salveaza si reporneste ide

  1. in folderul nou ARDUINO, trebuie sa ai in total 3 foldere: libraries, projects si tools. daca careva dintre astia nu exista, trebuie sa-l creezi manual. inchide ide.

  2. de acuma in colo, obligatoriu instalezi toate liburile in c:\ARDUINO\libraries, pui toate sketchurile existente in c:\ARDUINO\projects. astfel, ori de cate ori updatezi arduino ide, nu vei pierde setarile si liburile, si nu vei avea liburi duplicate.

  3. updatezi esp core pt arduino: in ide > files > preferences > additional boards manager urls, pui acest link: https://github.com/esp8266/Arduino/releases/download/2.4.0-rc2/package_esp8266com_index.json (daca ai alt link aici, referitor la esp8266, stergi, bine inteles)

  1. faci click pe ok si repornesti ide. in tools > board > board manager updatezi toate boardurile care gaseste automat. inchizi ide.

  1. downloadezi Blynk_Release_v0.5.0.zip de aici: https://github.com/blynkkk/blynk-library/releases/tag/v0.5.0 si continutul zipului pui astfel:
  • tot ce ai in zip in folder “libraries” copiezi in c:\ARDUINO\libraries
  • tot ce ai in zip folder “tools”, copiezi in c:\ARDUINO\tools
  1. cand repornesti arduino ide, trebuie sa ai in tools > “blynk:check for updates”. de acuma incolo, intotdeauna cand vrei sa-l updatezi blynk, faci click pe el si gata:

  1. repornesti ide, in file > preferences > setezi:
  • show verbose output during: compilation si upload
  • compiler warnings: all
  1. deschide sketchul pt relee: daca ai facut totul bine si ai copiat toate sketchurile in c:\ARDUINO\ projects, trebuie sa ai tot in file > sketchbook > projects

  1. compileaza codul, si vezi daca mai apar ceva warninguri relevante

daca ai ajuns pana aici, inseamna ca ai pus la punct toata structura de arduino ide si liburile, si ai updatat tot. de aici putem continua cu debugul propriu zis.

ok, am sa “resetez” arduino, dar te rog sa ai in vedere ceea ce am observat:

Blockquote
Am mai observat un lucru ciudat:
initial, cu aceasta placa, am setat asa:
buton1 = GP0
buton 2 = GP4
buton 3 = GP5
buton 4 = GP14
la iesirea comandata de GP14, butonul 4, apare problema
am schimbat pe GP16, la fel apare problema
apoi am modificat butoanele 2 si 4 astfel:
buton1 = GP0
buton 2 = GP14
buton 3 = GP5
buton 4 = GP4
si problema a aparul tot la butonul 4, cu toate ca pinul era schimbat - GP4 (alt releu sta pornit)

Do not power the relays from the ESP. It will not have enough current and can cause some of your problems. Use a separate 5v PSU and share the ground pins between PSU and ESP


Nu alimentați releele de la ESP. Nu va avea curent suficient și poate provoca unele probleme. Utilizați un alimentator separat de 5V și împărțiți știfturile de sol între PSU și ESP

we will check that at some point, but first he has to make some housekeeping and update / install properly the latest ide, esp core and libs (he is still using the ancient 2.3). besides this, apparently he has some messy duplicate blynk libraries installed.

Biblioteci multiple au fost g?site pentru "BlynkSimpleEsp8266.h"
Utilizat: C:\Users\user\Documents\Arduino\libraries\blynk-library-master
Nu se utilizeaz?: C:\Users\user\Documents\Arduino\libraries\blynk-library-0.5.0
Nu se utilizeaz?: C:\Users\user\Documents\Arduino\libraries\arduino_483529
Nu se utilizeaz?: C:\Users\user\Documents\Arduino\libraries\Blynk
Nu se utilizeaz?: C:\Users\user\Documents\Arduino\libraries\blynk-library-0.5.0
Nu se utilizeaz?: C:\Users\user\Documents\Arduino\libraries\arduino_483529
Nu se utilizeaz?: C:\Users\user\Documents\Arduino\libraries\Blynk
Nu se utilizeaz?: C:\Users\user\Documents\Arduino\libraries\blynk-library-0.5.0
Nu se utilizeaz?: C:\Users\user\Documents\Arduino\libraries\arduino_483529
Nu se utilizeaz?: C:\Users\user\Documents\Arduino\libraries\Blynk
Nu se utilizeaz?: C:\Users\user\Documents\Arduino\libraries\blynk-library-0.5.0
Nu se utilizeaz?: C:\Users\user\Documents\Arduino\libraries\arduino_483529
Nu se utilizeaz?: C:\Users\user\Documents\Arduino\libraries\Blynk
Utilizând libraria ESP8266WiFi la versiunea 1.0 În directorul: C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\ESP8266WiFi 
Utilizând libraria blynk-library-master la versiunea 0.5.0 În directorul: C:\Users\user\Documents\Arduino\libraries\blynk-library-master 
Schi?a folose?te 235689 bytes (54%) din spa?iul de stocare a programului. Maximul este de 434160 bytes.
Variabilele globale folosesc 34216 bytes (41%) din memoria dinamic?, l?sând 47704 bytes pentru variabilele locale. Maximul este de 81920 bytes.
Uploading 239840 bytes from C:\Users\user\AppData\Local\Temp\arduino_build_522542/butoane_reparat.ino.bin to flash at 0x00000000
................................................................................ [ 34% ]
................................................................................ [ 68% ]
...........................................................................      [ 100% ]
Bibliotec? invalid? ĂŽn C:\Users\user\Documents\Arduino\libraries\blynk-esp8266-RGB-LED-master: C:\Users\user\Documents\Arduino\libraries\blynk-esp8266-RGB-LED-master
Bibliotec? invalid? ĂŽn C:\Users\user\Documents\Arduino\libraries\Blynk_Release_v0.5.0: C:\Users\user\Documents\Arduino\libraries\Blynk_Release_v0.5.0
Bibliotec? invalid? ĂŽn C:\Users\user\Documents\Arduino\libraries\blynk-esp8266-RGB-LED-master: C:\Users\user\Documents\Arduino\libraries\blynk-esp8266-RGB-LED-master
Bibliotec? invalid? ĂŽn C:\Users\user\Documents\Arduino\libraries\Blynk_Release_v0.5.0: C:\Users\user\Documents\Arduino\libraries\Blynk_Release_v0.5.0

there is no point to repair the “roof” if the house didn’t has any solid foundation…

1 Like

Arduino este reinstalat si actualizat - multumesc @wanek (vin sau palinca :blush: )

Incarcarea pe Witty Cloud, e ok:

Utilizând libraria ESP8266WiFi la versiunea 1.0 În directorul: C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2\libraries\ESP8266WiFi
Utilizând libraria Blynk la versiunea 0.5.0 În directorul: C:\ARDUINO\libraries\Blynk
Schi?a folose?te 271859 bytes (62%) din spa?iul de stocare a programului. Maximul este de 434160 bytes.
Variabilele globale folosesc 35668 bytes (43%) din memoria dinamic?, l?sând 46252 bytes pentru variabilele locale. Maximul este de 81920 bytes.

Am setat butoanele si pinii:

buton1 = GP16 (1->0) (HIGH - LOW)
buton 2 = GP14 (1->0) (HIGH - LOW)
buton 3 = GP4 (1->0) (HIGH - LOW)
buton 4 = GP5 (1->0) (HIGH - LOW)

Dupa ~5sec de la boot GP14 = LOW (butonul 2)

am schimbat doar intre butoanele 2 si 3: (GP14<->GP4)

buton 2 = GP4 (1->0) (HIGH - LOW)
buton 3 = GP14 (1->0) (HIGH - LOW)

Dupa ~5sec de la boot GP4 = LOW ( tot butonul 2 dar cu alt pin)

in rest butoanele 1, 3, 4 functioneaza ok

Aici cred ca trebuie cercetat :wink:

pana aici pare in regula.
acum, posteaza te rog codul actual, care folosesti.

e acelasi cod, folosit intotdeauna:

#define BLYNK_PRINT Serial
#include "ESP8266WiFi.h"
#include "BlynkSimpleEsp8266.h" 

// You should get Auth Token in the Blynk App. 
// Go to the Project Settings (nut icon). 
char auth[] = "xxx"; 

// Your WiFi credentials. 
// Set password to "" for open networks.
 char ssid[] = "xx"; 
char pass[] = "x"; 

void setup()
 { 
// Debug console 
Serial.begin(9600); 

Blynk.begin(auth, ssid, pass); 

} 

void loop() 
{ 
Blynk.run(); 
}

posteaza te rog un screenshot din aplicatia blynk, despre configuratia butoanelor 2 si 3.

vezi ca butonul cu numele gp14 e legat pe gp4 si butonul cu numele gp4 e legat la gp14!

pai nu are legatura… am scris intentionat numele asa sa fie evident…

What @Gunner was trying to say is that consumul excesiv de alcool dauneaza grav sanatatii :slight_smile:

Do not connect the grounds between your relay board and Wemos. VCC on relay board should be connected with 5V Vin on ESP, and you should use two separate 5V power supplies, as suggested. One for MCU, the other one for relay board.

pune asta in setup, inainte de Blynk.begin(auth, ssid, pass);:

pinMode( 4, OUTPUT);
pinMode( 5, OUTPUT);
pinMode(14, OUTPUT);
pinMode(16, OUTPUT);

digitalWrite( 4, HIGH);
digitalWrite( 5, HIGH);
digitalWrite(14, HIGH);
digitalWrite(16, HIGH);

si vezi daca ajuta.

than how on earth should the optocoupler on the relay board work???

Connecting Vcc with Vin will do that.

ah, ok, i forgot the board uses “reverse” logic :slight_smile:
but even if the grounds are connected, it doesn’t influences the functionality.

Have you tried this setup? Power up relay board with 5V power supply on JD-VCC and GND, hook In to what GPIO you want, then hook VCC on relay board to separate power supply +5V that you are going to use for MCU. This is actually the only safe way to use relays. Not only optocoulper will work, but you also have galvanic isolation because you’re not sharing GND between mcu and relay board. This way, for exapmle, in shortcut scenario on relay board side, only one relay will be down, board will still be functioning, and Wemos will be untouched. So it does affect functionality after all, you don’t want to blow your mcu for nothing when you are already using two power supplies.

1 Like

@wanek :sunny:

totul este in regula. urmeaza sa mai fac teste, dar pana acum e ok.