logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Wemos D1 Mini, projekt PCB: trudności z uruchomieniem ESP po zlutowaniu

mtbchn 18 Lis 2023 19:19 1668 8
REKLAMA
  • #1 20821302
    mtbchn
    Poziom 3  
    Posty: 130
    Ocena: 5
    Cześć,

    zaprojektowałem płytkę PCB z Wemos D1 Mini. W skrócie: ESP steruje pięcioma tranzystorami MOSFET oraz jednym optotriakiem (MOC3021). Całość zasilana jest z HLK-5M03. Nadmienię, że wszystkie moduły (sterowanie triakiem, sterowanie mosfetami) testowałem, zanim przeniosłem koncepcję na schemat i na PCB. Po zlutowaniu płytki miałem problemy z uruchomieniem układu.

    Problem objawiał się tym, że ESP nie startował. Podejrzałem przez UART, że wypluwał po resecie ciąg "krzaków" i nie przechodził do połączenia z siecią. Działo się tak, gdy D1 Mini był osadzony w płytce PCB. Po wyjęciu z płytki i podłączeniu ESP przez kabel do kompa, D1 normalnie startował (łączył się z siecią i wykonywał program).

    Podłączenie modułu D1 przez kabel do kompa (przy jednoczesnym osadzeniu D1 w PCB) i zasilanie przez USB (przy odłączonym HLK-5M03) dawało taki sam efekt jak wyżej - ESP na starcie wypluwał kilka krzaków i się zatrzymywał, nie przechodząc do procedury łączenia z siecią WiFi.

    W D1 Mini wykorzystuję takie piny jak: D1, D2, D3, D5, D6, D7.

    Zacząłem się zastanawiać czy przypadkiem obciążenia (mosfety, do których podczas pierwszych testów nic nie podłączałem) nie powodują problemów ze startem ESP. Podłączyłem więc ESP na PCB "w powietrzu", łącząc tylko 3,3 V i GND. Okazało się, że układ działa.

    Na ten moment jestem w stanie uruchomić układ w taki sposób:
    1) Uruchamiam zaprojektowaną płytkę bez D1 Mini.
    2) Wkładam D1 Mini do gniazda w płytce zaczynając od tylnych pinów, tak by najpierw połączyć 3,3 V z 3,3 V i GND z GND.
    3) Odczekuję sekundę, D1 Mini łączy się z siecią, wkładam go do końca w gniazdo i cały układ z PCB działa tak jak należy, czyli zgodnie z założeniami.

    Wniosek więc jest taki, że mam problem z wystartowaniem ESP podczas gdy jego wyprowadzenia (D1, D2, D3, D5, D6, D7) są na starcie połączone z mosfetami i optotriakiem. Jednak gdy już ESP przejdzie start, później działa w PCB należycie.

    Co mogę zrobić z tym fantem? Jak rozwiązać ten problem i sprawić, by ESP startował bez "kombinacji"? Jestem w stanie zrobić coś programowo lub sprzętowo bez większej ingerencji? Jedyne co mi przychodzi na myśl, to sekwencer zasilania: po podłączeniu napięcia, najpierw uruchamia się ESP, a dopiero później inne układy (czyli np. masa do mosfetów i optotriaka). Tylko, że na tym etapie jest już na to za późno - płytka gotowa.

    Poniżej zamieszczam elementy schematu: D1 Mini, sterowanie mosfetami (5 sztuk), sterowanie optotriakiem.

    Proszę o ewentualne podpowiedzi, wskazówki, wyjaśnienie przyczyn takiego zachowania ESP oraz o ewentualne sugestie w kwestii rozwiązania problemu. Z góry dzięki.

    Fragment schematu elektronicznego z tranzystorem MOSFET Schemat połączeń Wemos D1 Mini z kondensatorami i masą. Schemat sterowania optotriakiem MOC3021 z rezystorami i pinami.
  • REKLAMA
  • #2 20821388
    elezibi
    Poziom 21  
    Posty: 609
    Pomógł: 18
    Ocena: 122
    Sprawdź czy może jak któryś pin w czasie startu jest ściągnięty do masy (220r+led) to nie wchodzi procek w jakiś tryb.
  • #3 20821427
    TvWidget
    Poziom 39  
    Posty: 4394
    Pomógł: 472
    Ocena: 694
    "Strapping pins" można użyć ale muszą mieć odpowiedni stan w chwili włączania zasilania. Zobacz gdzie są podłączone.
  • REKLAMA
  • #4 20821600
    urkotrebor
    Poziom 21  
    Posty: 335
    Pomógł: 37
    Ocena: 80
    Kiedyś miałem problem z ESP32 CAM , jak u Ciebie po włożeniu modułu do płytki układ nie działał lub działał niekoniecznie tak jak chciałem .
    Okazało się że moja płytka skutecznie ekranowała ESP przed światem , dodanie antenki uratowało sytuacje .
    Spróbuj uruchomić układ bez odpalania WIFI , jednocześnie wszystkie operacje raportuj w terminalu będziesz wiedział gdzie się zatrzymuje .
    Możesz też mieć problem z zasilaniem .
  • REKLAMA
  • #5 20821624
    mtbchn
    Poziom 3  
    Posty: 130
    Ocena: 5
    Panowie, dziękuję za wszystkie odpowiedzi.
    Niestety, problemem jest pin D3 (GPIO0) - connected to FLASH button, boot fails if pulled LOW. U mnie pin ten podłączony jest do optotriaka, czyli ściągam go (jak kolega wyżej sugerował) przez rezystor i wbudowaną w optotriak diodę do masy. Tym samym ESP wchodzi w tryb flashowania. Widać to na załączonych zdjęciach w pierwszym poście.

    Obawiam się, że programowo nic nie wskóram, bo aby program był czytany, musi najpierw wystartować ESP - a tu, jak już wiadomo, wchodzi w tryb flashowania.

    W dokumentacji Wemos D1 Mini widzę, że D3 (GPIO0) jest podciągnięty do 3,3 V przez rezystor 12 k (nic więc dziwnego, że skutecznie go ściągam do masy swoim 330 R - na schemacie omyłkowo pozostała wartość 220 R, właściwa dla napięcia 5 V).

    Czy mogę z tym coś jeszcze zrobić? Tak, żeby układ mógł normalnie startować i po ręcznym resecie znowu nie wchodził w tryb flashowania? Teoretycznie mógłbym to tak zostawić, ale.. każdorazowy zanik napięcia sieciowego spowoduje konieczność zabawy z kombinowanym wkładaniem D1 do układu a co za tym idzie, fizyczną ingerencję.

    Jestem otwarty na wszelkie sugestie/rozwiązania/podpowiedzi.
    Schemat połączenia GPIO0 i GPIO2 z rezystorami podciągającymi do 3,3 V.
    Załączam wspomniany fragment z dokumentacji D1 Mini.
  • REKLAMA
  • #6 20821634
    tos18
    Poziom 42  
    Posty: 7067
    Pomógł: 1097
    Ocena: 1830
    W wemosie niektóre piny mają określone funkcje podczas startu i nie mogą być obciążane
    https://randomnerdtutorials.com/esp8266-pinout-reference-gpios/

    stawiam na D3

    ...
    spóźniłem się ...
    możesz podłączyć diodę optotriaka między + 3V a D3 - nie będziesz go wówczas ściągał do masy.

    Schemat podłączenia optotriaka do pinu D3 na ESP8266.
  • #7 20821667
    mtbchn
    Poziom 3  
    Posty: 130
    Ocena: 5
    Dzięki za podpowiedź. Płytka składa się w większości z elementów SMD. Wyjątek stanowią gniazda, Hi-Link i Wemos D1 Mini. D1 jest osadzony w gnieździe goldpinowym. Myślę, że najprościej będzie jeśli:

    - obetnę goldpin D3 z D1 Mini (wtyk),
    - w gnieździe zrobię mostek między D8 a D3
    - wykorzystam D8 na ścieżce sterującej optotriakiem (Boot fails if pulled HIGH - dla D8, sprawdzałem i uruchamia się bez problemu).

    Celowo użyłem pinów, które nie powinny być problematyczne (sekcja OUTPUT), sugerując się poniższą tabelą. Niestety, przeoczyłem komentarz do D3. Trudno, wyciągm wnioski na przyszłość.

    Tabela pokazująca konfigurację GPIO dla pinów mikrokontrolera, z opisem ich funkcji wejścia i wyjścia oraz notatek dotyczących zachowania podczas bootowania.
  • #8 20837840
    kmarkot
    Poziom 31  
    Posty: 1369
    Pomógł: 127
    Ocena: 359
    tos18 napisał:
    stawiam na D3

    A ja na D1
  • #9 20839242
    mtbchn
    Poziom 3  
    Posty: 130
    Ocena: 5
    kmarkot napisał:
    A ja na D1


    Błędne obstawienie. Problem już dawno rozwiązany - wyżej. Oczywiście przyczyna leżała w pinie D3 i jego specyficznych wymaganiach.

Podsumowanie tematu

✨ Użytkownik zaprojektował płytkę PCB z modułem Wemos D1 Mini, który steruje pięcioma tranzystorami MOSFET i optotriakiem MOC3021, zasilanym z HLK-5M03. Po zlutowaniu płytki wystąpiły problemy z uruchomieniem ESP, które nie startowało, a po podłączeniu do komputera działało poprawnie. Problemy były związane z pinem D3 (GPIO0), który był podłączony do optotriaka, co powodowało, że ESP wchodziło w tryb flashowania. Użytkownik rozważał modyfikacje, takie jak odcięcie pinu D3 i użycie pinu D8 do sterowania optotriakiem, co pozwoliłoby na normalne uruchamianie układu.
Wygenerowane przez model językowy.
REKLAMA