Restartujący się esp32 z esphome na pokładzie i zajętymi wszystkimi pinami

Cześć,

Mam taką zagwozdkę związaną z esp32.
Mam moduł do sterowania oświetleniem i ogrzewanie domku letniskowego.
Podłączony przez wifi do HA, a do esp są podłączane przekaźniki.

Dziwne rzeczy się z nim dzieją, podczas załączenia np. 4 przekaźników do ogrzewania esp potrafi się zrestartować. Samo z siebie. Teraz się tak zawiesił że nie ma do niego dostęp.
Zasilanie jest zrobione w taki sposób że zasilacz buforowy 12v pulsar z akumulatorem, do niego przetwornika 5v 8a, i pod przetwornice esp32 i kilka modułów esp8266 z czujnikami temp.
Czyjnik się nie restartują więc zakładam że to nie jest problem z zasilaniem.

Wydaje mi się że to może być problem z wykorzystaniem dużą ilościa pinów.
Kod dot. pinów wygląda następująco:

#Konfiguracja przekaźników

#Restart switch
  - platform: gpio
    pin: 27
    name: Przekaznik_switch_kamery
    id: Przekaznik_switch_kamery
    on_turn_on:
      - delay: 5000ms
      - switch.turn_off: Przekaznik_switch_kamery
      
#Restart termometry zasilanie
  - platform: gpio
    pin: 26
    name: Przekaznik_czujnik_temp_restart
    id: Przekaznik_czujnik_temp_restart
    on_turn_on:
      - delay: 5000ms
      - switch.turn_off: Przekaznik_czujnik_temp_restart
      
#Bojler
  - platform: gpio
    pin: 22
    name: Przekaznik_bojler
    id: Przekaznik_bojler

#Oświetlenie
  - platform: gpio
    pin: 4
    name: Przekaznik_swiatlo_ganek
    id: Przekaznik_swiatlo_ganek
    
  - platform: gpio
    pin: 16
    name: Przekaznik_swiatlo_garaz
    id: Przekaznik_swiatlo_garaz
    
  - platform: gpio
    pin: 17
    name: Przekaznik_swiatlo_taras
    id: Przekaznik_swiatlo_taras

  - platform: gpio
    pin: 18
    name: Przekaznik_swiatlo_drzwi_wejsciowe
    id: Przekaznik_swiatlo_drzwi_wejsciowe
    
  - platform: gpio
    pin: 19
    name: Przekaznik_swiatlo_zewnatrz_sciana
    id: Przekaznik_swiatlo_zewnatrz_sciana
    
#Ogrzewanie
#  - platform: gpio
#    pin: 32
#    name: Przekaznik_podlogowka_ganek
#    id: Przekaznik_podlogowka_ganek
  
  - platform: gpio
    pin: 33
    name: Przekaznik_podlogowka_sypialnia
    id: Przekaznik_podlogowka_sypialnia
    
  - platform: gpio
    pin: 25
    name: Przekaznik_podlogowka_duzy_maly_pokoj
    id: Przekaznik_podlogowka_duzy_maly_pokoj
    
#  - platform: gpio
#    pin: 26
#    name: Przekaznik_podlogowka_maly_pokoj
#    id: Przekaznik_podlogowka_maly_pokoj
    
  - platform: gpio
    pin: 21
    name: Przekaznik_podlogowka_salon
    id: Przekaznik_podlogowka_salon
    
  - platform: gpio
    pin: 23
    name: Przekaznik_podlogowkaa_lazienka_dol
    id: Przekaznik_podlogowka_lazienka_dol
    

#Konfiguracja klawiszy    
binary_sensor:

  - platform: gpio
    pin:
      number: 14
      inverted: true
      mode:
        input: true
        pullup: true
    name: "Klawisz światło ganek"
    on_press:
      - switch.toggle: Przekaznik_swiatlo_ganek
      
  - platform: gpio
    pin:
      number: 32
      inverted: true
      mode:
        input: true
        pullup: true
    name: "Klawisz światło drzwi wejściowe"
    on_click:
    - min_length: 50ms
      max_length: 350ms
      then:
      - switch.toggle: Przekaznik_swiatlo_drzwi_wejsciowe
    - min_length: ${min_press}
      max_length: ${max_press}
      then:
        - switch.toggle: Przekaznik_swiatlo_garaz
        
  - platform: gpio
    pin:
      number: 5
      inverted: true
      mode:
        input: true
        pullup: true
    name: "Klawisz światło zewnątrz ściana"
    on_click:
    - min_length: 150ms
      max_length: 550ms
      then:
        - switch.toggle: Przekaznik_swiatlo_zewnatrz_sciana
      
  - platform: gpio
    pin:
      number: 15
      inverted: true
      mode:
        input: true
        pullup: true
    name: "Klawisz światło taras"
    on_click:
    - min_length: 100ms
      max_length: 350ms
      then:
        - switch.toggle: Przekaznik_swiatlo_taras

Może to być spowodowane tym iż są zajęte piny które wg esphome nie powinny być ?

Popatrzyłbym jednak na to zasilanie. Jak masz oscyloskop to podepnij do zasilania i popatrz czy nie dzieje się nic złego przy załączaniu/wyłączaniu zewnętrznych urządzeń. Jeżeli pojawią się “piki” w górę lub w dół, to tu może być pies pogrzebany. No i kwestie konstrukcyjne - na ile blisko są te ogrzewania i oświetlenia, bo może “sieją” i coś-gdzieś się wzbudza. Na początku zobaczyłbym czy ekranowanie coś da (byle folią aluminiową owinąć), izolacja galwaniczna (transoptory) też może zrobić dobrą robotę.

Czarna magia to o czym piszesz :slight_smile:
Na początku myślałem że to zasilanie, dałem osoby zasilacz do ESP, po USB, po pinach, z ładowarki do telefonu.
ESP siedzi w module od easyswitch.

Różne sposoby zasilania były testowane.
Wsyztsko to jest w szafce elektrycznej oddzielone od siebie o wysokość szyn din.
A czy np może tak być że pod przekaźnik jest podłączony pin który np nie może być?
U domu mam to tak samo rozwiązanie tylko do ESP jest dodany ekspander i pod niego mam podłączone wszystkie klawisze czy przekaźniki

Może być, ale przy kompilacji miałbyś ostrzeżenia na wstępie, patrzysz na logi przy kompilacji?
Oczywiście można to na piechotę posprawdzać w/g dokumentacji, tu masz bryk, jak nie chcesz czytać encyklopedii

PS ja też stawiam na problem z zakłóceniami z bloku przekaźników, one mają oddzieleny zasilacz od ESP?

Z tego co pamiętam było ostrzeżenie że pin coś tam. Do końca nie pamiętam bo to we wrześniu było.

Z zasilaniem to jest tak że jest ta buforowa z pulsara, z niej na przetwornice step down i z przetwornicy na rozdzielne na din 5v. Z rozdzielki na 1x na ESP 2x na przekaźniki .

Jeśli chodzi o te zakłócenia to jak to wyeliminować ?

Na dobry początek podepnij zasilanie przekaźników z osobnego zasilacza (bo szukasz przyczyny problemu).
Bez schematu nie ujedziemy dalej, ale jeśli wiesz co robić, to to zrób.

to skompiluj ponownie i przechwyć logi, nie musisz flashować (chociaż pewnie update nie zaszkodzi)
warto znać całego YAMLa, a nie tylko kawałek, gdzie definiujesz wyjścia, ale w sumie to najistotniejsze jest jaki moduł deweloperski wykorzystałeś czy to jest w pełni projekt “od zera” z własnym PCB i na bazie “gołego” modułu ESP, a nie płytki deweloperskiej, a może jakiś gotowiec?

A odłączyłeś od obecnego?

może po prostu napisz który to model, masz jakiś schemat?

Bo ta płytka to taki “golas”, więc potrzeba reszty schematy z rzeczywistej realizacji

źródło obrazka

Magia jest prostsza niż myślisz :slight_smile: Chodzi o to, że w idealnym świecie jest idealne 3.3/5V. W nieidealnym - załączanie energożernych urządzeń (silniki, grzałki) może powodować zakłócenia na linii zasilającej - skoki w dół lub górę. A przy odrobinie pecha krótki impuls powodujący spadek napięcia z 5V do 4V może być szokiem dla cyfrówki. Dodatkowo, urządzenia mogą “dawać coś od siebie”, czy to sygnały po linii zasilającej czy to fale elektromagnetyczne, które indukują się na kablach (działających jak anteny) i problemy gotowe. Najprościej to zrobić ekranowanie (umieścić ESP w jakiejś zamkniętej metalowej puszce, wówczas prądy indukują się w tej puszce. Oraz odseparować wspólne połączenia z potencjalnie podejrzanymi urządzeniami, np. separując je galwanicznie.

Akurat tego nie mogę tam tak zrobić bo wszystko się schodzi do jednej szafy :slight_smile:

Czyli najlepiej jak to zrobić ? i najprościej

Jest to do zrobienia, tylko czy wtedy one nie muszą mieć wspólnej masy ? przekaźniki z esp?

Jak mi się uda dostać do esp to tak zrobię, tylko w tym przypadku sytuacja jest o tyle skomplikowana że to esp jest 600 km ode mnie :slight_smile:

To jest ESP32 DevKit ESP-WROOM-32 38-pin z tego co pamiętam.
Wsadzone jest właśnie w ES-7.02 ESP-32 NodeMCU Board
image

Schematu nie mam bo nie robiłem nigdy, ale po krótce to wygląda tak:

na wemosach mam czujniki temperatur i są one zasilane tez z tego zasilacza.
Czasem któryś z nich się restartuje
image
wiec to też może mieć jakieś znaczenie w tym temacie.
Może faktycznie to jakieś zakłócenia, jesli tak to jak te wykryć.
Głównie teraz to wykorzystuje do ogrzewania domku. Dodam jeszcze że jak nodered załączy grzanie w każdym pokoju (4 przekaźniki) to czasem się esp32 restartował.

Wydawało mi się wtedy że to wina tego że są wszystkie piny obsadzone w esp, bo jeszcze tam są włączniki itd, czasem w logach było widać pływanie na jakimś pin i czasem się załączyło światło. Ale ten pin zaakomodowałem i przestało pływać.
Moze to wszystko ma ze sobą coś wspólnego…

Schemat, tylko schemat, fajny rysunek, ale on nic nie daje bo nic z niego nie wynika…
Przy izolacji galwanicznej (transoptory) obwody są w 100% rozdzielone (wysterowanie LEDa w transoptorze stanem niskim gwarantuje możliwość rozdzielenia mas), a w każdym razie mogą być.
ALE nawet jeśli jest wspólna masa to eliminuje już większość problemów powiązanych ze wspólnym zasilaniem (takie połączenie może jednak nie eliminować wszelkich zakłóceń).

Daj chociaż prawdziwe schematy tych modułów przekaźników.

A schemat że schemat :slight_smile:
Nie wiem czy uda mi się znaleźć, ale to jest taki moduł ten chiński z optoizolacją właśnie sterowany stanem wysokim lub niskim. w moim przypadku jest ustawione na sterowanie stanem wysokim.


http://wiki.sunfounder.cc/index.php?title=8_Channel_5V_Relay_Module

Nie wiem czy to to co ja dokładnie mam bo nie mogę się odszukać tego, ale one wszystkie chyba są klepane na jedno kopyt

Właśnie nie są, jedne lepiej rozwiązane po stronie sterowanie, drugie gorzej. Już na tym schemacie masz kluczowe miejsce, na które należy zwrócić uwagę, gdyż albo jest izolacja galwaniczna, albo ją omijasz - złączka J2.

No są różne takie moduły, więc porównaj ten wstawiony schemat z tym co masz realnie zamontowane na płytkach.
Albo wrzuć zdjęcia makro tych swoich modułów (by były czytelne i rozpoznawalne modele i wartości elementów = nadruki na nich).

Jeśli płytki przekaźników są zgodne z tym schematem to masz zworkę między VCC a JD-VCC, tej zworki ma nie być.
VCC podpinasz do tego samego zasilania co MCU
natomiast JD-VCC jest wejściem zasilania z odrębnego zasilacza (“tylko dla przekaźników”).

Masa nie ma znaczenia przy takim połączeniu, bo jej nie podpinasz do płytki MCU - jak widać LEDy transoptorów wyzwalane są stanem niskim na GPIO MCU (które ma pracować w układzie otwartego drenu).

Niestety zajrzałem w YAMLa z 1 posta i on nie pasuje do tego sprzętu ze schematu powyżej, więc jeśli masz wybór na PCB przekaźników to

  1. powinieneś odseparować zasilanie części wykonawczej (samych przekaźników) od obwodu zasilania elektroniki sterującej
  2. wykorzystać konfigurację ze sterowaniem stanem niskim (to prawdopodobnie umożliwi separację mas, tzn. nie będziesz musiał łączyć masy płytki przekaźników z masą MCU)
    ale niestety musisz znaleźć schemat pasujący do płytek przekaźników (bo zdalna analiza na podstawie zdjęć jest trudna i może się nie udać jeśli ktoś z nas nie posiada identycznej płytki).

Druga kwestia to obciążalności tych zasilaczy i przetwornic, bo z rysunku, który wrzucałeś wcześniej masz to zdrowo przekombinowane.
W ogóle dysponując zasilaniem 12V należało użyć płytki przekaźników z optoizolacją w wersji 12V= (to ma znaczenie, bo im wyższe napięcie zasilania takiego samego mechanicznie przekaźnika tym mniejszy prąd potrzebny do jego zasilania, na wykorzystaną moc przekłada się to praktycznie 1:1 ale im mniejsze prądy w układzie tym łatwiej opanować zakłócenia w torze zasilania).

niestety nie mam możliwość zrobienia zdjęć tego co tam jest w tym momencie.
To jest instalacja bardzo daleko i nie mam możliwości się tam dostać :confused:

Ale to że jest coś nie tak na podstawie tego co pisałem może być powodem tego że się restartuje lub zawiesza esp ?

Czyli najlepiej by było zmienić moduł przekaźników na jakiś inny, 12v, pod 12v podłączyć esp przekaźniki a dopiero pod przetwornice wemosy z termometrami ?
Czy może pod pulsara 12x tylko esp32 z przekaźnikami a zastosować drugi osobny zasilacz do wemosów ?

Podlinkujecie jakieś sprawdzone moduły przekaźników? Jestem w stanie to przerobić wszystko od nowa żeby tylko było pewne i dobrze działało. Tak jak wspomniałem to jest w domku letniskowym daleka od domu. A teraz zima jest i trochę się boję że pozamarza woda. Tak to bym skompletował cały sprzęt który jest pewny i jechał na weekend to poprawić

Trudno oceniać na podstawie takich fragmencików informacji.
Masz tam HA z jakąkolwiek formą dostępu zdalnego (by się dostać do logów z tego ESP?).
Poszukaj po historii zakupów co tam konkretnie wykorzystałeś.
Założenia jak poprawiać masz.

Ten co podlikowałeś to nie ten, którego używasz.
Z opisu działania to raczej jest

Ze schematem zbliżonym do

Tak, mam ha działającego. logi sa możliwe, tylko czy ja odczytam logi z urządzenia które jest offline ?

Z historią zakupów jest ciężko, bo podzespoły które tam używałem zbierałem może z 5 lat :slight_smile: od czasu gdy w domu robiłem instalację w którym mieszkam

Zgadza się. na 99% to ten moduł. wygląda tak samo, kabelki tak sam się przykręca.

Z offline nie odczytasz, ale jest cień szansy, że mając połączenie do rzeczonego urządzenia ESP kanałem OTA z HA (mówiąc prosto - logi bezprzewodowo z dashboardu/IDE ESPHome) zobaczysz przyczynę restartu, gdy ESP wróci do online (wkrótce po restarcie). Jeśli zobaczysz tam wzmiankę o “brownout detector”, to przyczyna ewidentnie leży po stronie wadliwego zasilania, jeśli przyczyny restartu będą inne to się będziemy zastanawiać…

Jeśli masz permanentne offline to oczywiście się nie da (ale być może należy szukać jeszcze dodatkowo problemów w konfiguracji sieci?)

Czyli bez kupowania nowego sprzętu zmieniasz okablowanie tak jak sugerowałem, dając dedykowany zasilacz oddzielnie dla ESP (mogą być wszystkie 3 razem, na 3 sztuki ESP8266 bez osprzętu wystarcza spokojnie 1A, więc jeśli masz jakiś osprzęt zasilany z płytek ESP do dolicz też na ten osprzęt) oraz osobny dla modułów przekaźników - licz minimalnie po pół wata na każdy podpięty przekaźnik + dolicz ze 20% zapasu, dla takiej ilości jak na rysunku 5V 2A to minimum, ale jeśli uruchamiasz po kilka przekaźników równocześnie warto mieć znacznie większy zapas obciążalności.

PS Oczywiście nie daję na nic gwarancji, bo wymagasz od nas jakichś gwarancji - no sorry, ale nikt nie da takiej, projektując elektronikę powinieneś chociaż użyć multimetru by się dowiedzieć choćby w podstawowym zakresie co się dzieje w obwodzie. No i etap testów też jest ważny (bo można zbudować cokolwiek bazując na jakimś minimum wiedzy, ale trzeba to dogłębnie przetestować).

@szopen … konstrukcyjnie ten moduł przekaźników nie przewiduje rozdzielenia zasilania przekaźników. Mam ten moduł w łapie i myślę, że gdyby zamiast zworek do środkowego pina “com” podał zasilanie +5V z ESP a wejścia IN sterował stanem niskim.
W ten sposób można galwanicznie je oddzielić.

O w mordę…

Pomysł masz doskonały - faktycznie wystarczy wywalić zworki LO/HI (czy tam L/H) i zamiast zworki podać tam na każdy środkowy pin 5V (linia czerwona) z zasilacza dedykowanego ESP`(być może nawet 3V3 by wystarczyło, ale ze względu na szeregowy rezystor o dość dużej wartości 2k2 może być problem z niezawodnością załączenia - trzeba by to przemierzyć/przetestować).
Wtedy podanie zasilania z separowanego zasilacza, tego “tylko dla przekaźników” (niebieskie linie) zasili w tym układzie dokładnie to co chcemy.

Stosując transoptory z 2 przeciwstawnie działającymi LEDami Chińczyk uprościł konstrukcję płytki faktycznie do totalnego minimum.

To będę musiał tego przypilnować żeby te logi przechwycić.
szkoda że nie ma czegoś takieg(chyba że jest ale nie spotkałem jak szukałem) jak syslog. że loguje wszystko do jakiegoś zdalnego serwera.

Teraz gdy uruchamiam log z tego esp(gdy jest offline) to jedyne co mnie niepokoi trochę to taki zapis :

WARNING GPIO15 is a strapping PIN and should only be used for I/O with care.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See https://esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins
INFO Starting log output from esp32-rozdzielnia-bedzinko.local using esphome API

Mam wrażenie że on się zwiesił z jakiegoś powodu. Gdyby nie mógł się połączyć z wifi to by wyskoczyła sieć z jego nazwą. W jeden szafce mam tego esp i mikrotika z wifi więc raczej problemów z połączeniem nie ma.

Co do zasilacza to mam to rozwiązane tak
zasilacz buforowy + akumulator
https://www.eltrox.pl/zasilacz-buforowy-impulsowy-do-zabudowy-pulsar-psb-12v7a.html
Przetwornica
https://allegro.pl/oferta/przetwornica-step-down-300w-1-5-35v-8a-dc-12874188199

Podłączone pod to teraz jest:
1x esp32
2x moduł przekaźnikaów 8
6x wemos d1 mini z sht30
1x router mikrotik
1x router huawei

Może faktycznie za dużo ?
Teraz tak się zastanawiam, kurde nie wiem…

Niczego nie oczekuję :slight_smile: Ja tylko pytam i wymieniam doświadczenie, może ktoś ma jakieś sprawdzone moduły które są lepsze od tych chińskich.
U siebie w domu mam podobny zestaw akcesorii, 2xesp32, 4x moduł 8 przekaźników na takim samym zasilaczu i przetwornicy, i działa dlatego uznałem to za sprawdzone rozwiązanie. Ale może się myliłem…