ESP8266 a rele modul.

Raspberry, Arduino, Mini-PC a další

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
Le_Ze
Příspěvky: 775
Registrován: 24 črc 2014, 00:00
Bydliště: Ano, mam

ESP8266 a rele modul.

#1 Příspěvek od Le_Ze »

Dobrý den.
ESP8266 NodeMcu V3 a 4 rele modul.
https://www.aliexpress.com/item/33038634587.html

4 rele modul na 3,3V jsem na ali nenašel, a 3,3V jsou o dost dražši než 5V.
V šupliku jsem vyhrabal 5V.
ESP napajim trafem přes VIN a u rele jsem oddělal tu žlutou propojku a rele take napajím 5V.
Logiku ovladam přes GPIO 3,3V a funguje jak ma.
Při zapnutí ESP, mi však rele procvaknou.

Je nějake řešení?
Děkují.
Naposledy upravil(a) Le_Ze dne 15 úno 2024, 08:34, celkem upraveno 1 x.
Uživatelský avatar
pocitujlasku
Příspěvky: 2764
Registrován: 12 pro 2005, 00:00
Bydliště: SR, Poprad

#2 Příspěvek od pocitujlasku »

pozriet si, v datasheete, v akom stave su piny na esp. A pouzit tie, ktore ti budu vyhovovat. lebo niektore su pocas startu v low, ine v high a niektore dokonca len tak v lufte.

Kód: Vybrat vše

Pins HIGH at Boot

There are certain pins that output a 3.3V signal when the ESP8266 boots. This may be problematic if you have relays or other peripherals connected to those GPIOs. The following GPIOs output a HIGH signal on boot:

    GPIO16
    GPIO3
    GPIO1
    GPIO10
    GPIO9


Kód: Vybrat vše

Pins used during Boot

The ESP8266 can be prevented from booting if some pins are pulled LOW or HIGH. The following list shows the state of the following pins on BOOT:

    GPIO16: pin is high at BOOT
    GPIO0: boot failure if pulled LOW
    GPIO2: pin is high on BOOT, boot failure if pulled LOW
    GPIO15: boot failure if pulled HIGH
    GPIO3: pin is high at BOOT
    GPIO1: pin is high at BOOT, boot failure if pulled LOW
    GPIO10: pin is high at BOOT
    GPIO9: pin is high at BOOT
No vidis, a tak si sa bal
Uživatelský avatar
Le_Ze
Příspěvky: 775
Registrován: 24 črc 2014, 00:00
Bydliště: Ano, mam

#3 Příspěvek od Le_Ze »

Ano, to první. Použivat tyto GPIO.
https://randomnerdtutorials.com/esp8266 ... nce-gpios/

Pins HIGH at Boot.
Ty rele se ale spinají, když je na GPIO LOW. Při HIGH jsou rozeple.
Uživatelský avatar
Valdano
Příspěvky: 3117
Registrován: 01 led 2023, 00:00
Bydliště: Česká Lípa

#4 Příspěvek od Valdano »

Zde je článek popisující chování různých GPIO při spouštění. Jsou tam i záznamy z logického analyzátoru a osciloskopu.

Po startu v programu použitém při těch testech nastavuje GPIO na LOW. Z toho co je tam vidět zkuste za účelem odstranění cvaknutí při zapnutí použít pro daný účel GPIO tam označený jako D2 a k tomu použijte relé, které bude spínat když bude GPIO ve stavu HIGH a ve stavu LOW bude rozepnuté. V setup části programu nastavte zmíněný GPIO na LOW což bude implicitně rozepnutý stav relé.

Pokud používáte relé, které je ve stavu LOW sepnuté tak vám to vždy při zapnutí cvakne, protože relé zřejmě zareaguje dříve než na GPIO naběhne stav HIGH. Některá relé jako třeba tyto mají propojky jimiž lze zvolit zda mají reagovat na HIGH nebo LOW.
Uživatelský avatar
bu2520
Příspěvky: 4922
Registrován: 16 črc 2007, 00:00
Bydliště: u HK

#5 Příspěvek od bu2520 »

Nevím jestli to souvisí, ale podobnou věc mi dělal bootloader u arduina. Až po jeho vynechání a nahrávání programu přes SPI problém ustal.
Uživatelský avatar
Valdano
Příspěvky: 3117
Registrován: 01 led 2023, 00:00
Bydliště: Česká Lípa

#6 Příspěvek od Valdano »

Le_Ze píše:Při zapnutí ESP, mi však rele procvaknou.
Ty relé se ale spínají, když je na GPIO LOW. Při HIGH jsou rozeplé.

Ještě mne napadá spínat 5V napájení relé přes tranzistor z pinu D2 na ESP, a to se zpožděním. Až naběhne ESP a piny z nichž ovládáte jednotlivá relé budou v setup části programu bezpečně nahozeny do implicitního stavu HIGH tak za to vložit zpoždění třeba delay(500); tj. 500ms a teprve pak nahodit do stavu HIGH i pin D2 a tím zapnout 5V napájení relé. Pak už by relé při zapínání procvaknout neměly, protože v době přechodných stavů na ostatních pinech ESP budou relé bez napájení jelikož pin D2 na ESP je po zapnutí ve stavu LOW.
Naposledy upravil(a) Valdano dne 13 úno 2024, 14:42, celkem upraveno 1 x.
Uživatelský avatar
pocitujlasku
Příspěvky: 2764
Registrován: 12 pro 2005, 00:00
Bydliště: SR, Poprad

#7 Příspěvek od pocitujlasku »

bu2520 píše:Nevím jestli to souvisí, ale podobnou věc mi dělal bootloader u arduina. Až po jeho vynechání a nahrávání programu přes SPI problém ustal.

pri klasickom arduine musis dat pull_up odpory, lebo po zapnuti su nastavene ako vstupne bez internerneho pull_up. a ten bootloader tam ma nejaky maly delay, ktory caka na pripadne data zo serioveho portu a az potom startuje program. to je o.i. spominane aj v arduino dokumentacii.
No vidis, a tak si sa bal
Uživatelský avatar
Le_Ze
Příspěvky: 775
Registrován: 24 črc 2014, 00:00
Bydliště: Ano, mam

#8 Příspěvek od Le_Ze »

By byl dotaz.

https://randomnerdtutorials-com.transla ... _x_tr_hl=c

Jak docilim toho, aby se web stranka překreslovala třeba každou vteřinu?
Už jsem to jednou řešil, ale marně hledam :(
Děkují.
Uživatelský avatar
Valdano
Příspěvky: 3117
Registrován: 01 led 2023, 00:00
Bydliště: Česká Lípa

#9 Příspěvek od Valdano »

Tady je ukázka použití meta tagu refresh, který by měla podporovat většina současných webových prohlížečů. Vkládá se to do hlavičky v rámci celého HTML, který posílá ESP32 nebo ESP8266. Nicméně perioda 1s je příliš krátká a může to způsobovat problém s dostupností různých funkcionalit pro uživatele pokud budou ve stránce nějaké prvky k ovládání uživatelem. Potenciální problém s tím je zmíněn i v odkazovaném popisu zmíněného meta tagu na w3schools.com. Takže doporučují raději delší periodu třeba 5s.

Kód: Vybrat vše

<html>
<head>
  <title>Titulek stranky</title>
  <meta http-equiv="refresh" content="5">
</head>
<body>
  ... tady budou data  pro zobrazení ve stránce ... 
</body>
</html>
Uživatelský avatar
Le_Ze
Příspěvky: 775
Registrován: 24 črc 2014, 00:00
Bydliště: Ano, mam

#10 Příspěvek od Le_Ze »

Děkují, už vyřešene takto.
client.println("<meta http-equiv=\"refresh\" content=\"1\">");

Kde je problem u tohoto?
client.println("<meta http-equiv="refresh" content="30">");

Compilation error: unable to find string literal operator 'operator""refresh' with 'const char [27]', 'unsigned int' arguments
Uživatelský avatar
Dumitru
Příspěvky: 254
Registrován: 11 pro 2015, 00:00
Bydliště: Slovensko,Bratislava
Kontaktovat uživatele:

#11 Příspěvek od Dumitru »

Le_Ze píše:Děkují, už vyřešene takto.
client.println("<meta http-equiv="refresh" content="1">");

Kde je problem u tohoto?
client.println("<meta http-equiv="refresh" content="30">");

Compilation error: unable to find string literal operator 'operator""refresh' with 'const char [27]', 'unsigned int' arguments


Kód: Vybrat vše

client.println("<meta http-equiv="refresh" content="30">");


skús takto

Edit : úvodzovky je špeciálny znak medzi ktorého s vkladá string a ked je ich tam viac kompilátor nevie kde je začiatok a kde koniec
Uživatelský avatar
Valdano
Příspěvky: 3117
Registrován: 01 led 2023, 00:00
Bydliště: Česká Lípa

#12 Příspěvek od Valdano »

Další možnost je použít uvnitř řetězce tj. mezi klasickými uvozovkami pouze apostrofy, u kterých překladač předcházející lomítko nepotřebuje a webové prohlížeče to podporují.

Kód: Vybrat vše

client.println("<meta http-equiv='refresh' content='30'>");
Odpovědět

Zpět na „Miniaturní počítače (Arduino, Raspberry a další)“