Skocz do zawartości

Jak najlepiej wyprowadzić wejście do programowania ESP8266 12 na PCB?


crbjsfso

Pomocna odpowiedź

Planuje aktualizację jednego ze swoich projektów i chciałbym stworzyć dla niego nową, autorską płytkę PCB. Zamiast modułu ESP8266 (ESP-01 / ESP-01S) chciałbym wykorzystać ESP8266 (ESP-12S / ESP-12E / ESP-12F). I tu nasuwa się pytanie, jak najlepiej jest wyprowadzić wejście do programowania układu na PCB? Chciałbym to rozwiązać tak, aby na PCB nie znajdowały się zbędne elementy, które będą wykorzystywane tylko i wyłącznie do programowania ESP i żeby to programator zawierał wszystkie niezbędne do programowania podzespoły. Zastanawiałem się nad wykorzystaniem w roli programatora modułu WeMos D1 mini po wcześniejszym odlutowaniu od niego ESP. Na pierwszy rzut oka wydaje mi się to dość dobrym rozwiązaniem, ponieważ taka płytka to właściwie gotowy programator do ESP z samym modułem ESP i posiada już wszystkie niezbędne elementy. Czy da się to rozwiązać jakoś inaczej, może lepiej? To będzie prototyp i częste zmiany w kodzie będą raczej bardzo częste.

Sama płytka będzie się składała z:

  • Gniazdo USB C - zasilanie 5V ze standardowej ładowarki impulsowej 2A+, zasilanie diod WS2812;
  • stabilizator / przetwornica napięcie 3.3V - do zasilania ESP;
  • ESP8266 12 - jeszcze nie wybrałem wersji, raczej będzie to 12F, "mózg" dla PCB;
  • Czujnik dotyku TTP223, lub inny podobny element - do włączania lampki dotknięciem. Zrobiłem pierwsze testy tego układu i całkiem nieźle działa przez cienkie szkło.
Link do komentarza
Share on other sites

Samo programowanie tych ESP wymaga tylko rx,tx,gnd,gpio0 i zasilania..

 

Na pcb podciągnij gpio15 do masy, gpio0 podciągnij przez dzielnik napięcia do plusa przed stabilizatorem 5V.. Na płycie wyciąg 4 piny  rx,tx,gnd i 3v3 po stabilizatorze,  Kup jakiś konwerter USB - UART z wyjściem 3V3.

 

Każde podłączenie przez wyprowadzone piny rx,tx,gnd,3V3 wprowadzi esp w tryb programowania. Warunek ze nie podłączone 5V z usb...  A każde podłączenie przez USB działanie normalne...

 

Praktycznie tylko dojdzie jeden rezystor na PCB....

Edytowano przez Jarewa
  • Pomogłeś! 1
Link do komentarza
Share on other sites

Przejrzałem kilka stron odnośnie programowania ESP8266 12 przy użyciu konwertera USB/UART i zastanawiam się, dlaczego czasami występują różnice w schematach. Na przykład w poniższym przypadku pominięto GPIO15 i użyto GPIO0 poprzez rezystor i przycisk podłączony do GND.

Flashing-ESP8266-Programming-Wiring-ESP8266-FTDI-USB-TTL-UART-01.thumb.jpg.f0174d5cd0f40a74082f5fd1eb8451d2.jpg

Źródło: https://www.14core.com/wiring-programming-esp8266-1212e-nodemcu-wifi-remote-clientserver-mode/

Tutaj zaś do masy jest zwarty GPIO15 i GPIO0.

ESP8266-Remote-Soil-Moisture-Monitoring-Webbase-Flashing-Guide-01-768x516.thumb.jpg.b25c610979bd45933aae022e31e5f1d7.jpg

Źródło: https://www.14core.com/wiring-the-esp8266-12e-remote-soil-moisture-temperature-humidity-monitor/

Czyli:

  • GPIO1 to TX czyli wysyłanie danych;
  • GPIO3 to RX czyli odbiór danych;
  • GPIO0 to FLASH czyli podczas programowania ten pin musi być zwarty do masy? Przełączanie układu w tryb programowania? Dlaczego w jednym przykładzie przez rezystor i przycisk, a w drugim nie?
  • GPIO15 to TX2 czyli druga linia wysyłania danych? Dlaczego na jednym przykładzie jest zwarta do masy, a na innym nie?
  • VCC to zasilanie 3.3V;
  • GND to masa.

ESP8266-ESP-12E-chip-pinout-gpio-pin.thumb.png.4233848eb1f72f7826512453799f0b2a.png

Źródło: https://randomnerdtutorials.com/esp8266-pinout-reference-gpios/

Link do komentarza
Share on other sites

7 godzin temu, crbjsfso napisał:

Przejrzałem kilka stron odnośnie programowania ESP8266 12 przy użyciu konwertera

To jeszcze przejrzyj kilka stron dotyczących roli poszczególnych pinów - trochę mnie dziwi fakt, że bierzesz się za programowanie układu nie wiedząc do czego służy która noga, ale widocznie to dziś taka moda... w każdym razie bez tej wiedzy możesz się bardzo mocno naciąć.

Przede wszystkim: przy pinach 0, 2 i 15 ważny jest stan w momencie uruchamiania układu (reset) - w tym czasie działają jako wybór źródła programu, po uruchomieniu działają tak, jak normalne piny GPIO.

Do startu w trybie programowania (nie w czasie programowania) GPIO0 ma być w stanie niskim (niekoniecznie zwarty do masy). Ponieważ przełączanie może odbyć się w czasie pracy układu, kiedy GPIO0 może być ustawiony jako wyjście i być w stanie wysokim - lepiej zrobić to przez rezystor. Jeśli uważnie przeczytałeś ten akapit to znajdziesz tam odpowiedź na pytanie "dlaczego przez przycisk".

Tak, że GPIO15 przez rezystor do masy i GPIO2 do Vcc cały czas, a nie tylko w trybie programowania.

Niektórzy uważają, że rezystory podciągające nie są potrzebne. Ja się do nich nie zaliczam, i zawsze dają 10k do Vcc dla GPIO0 i 2 oraz 10k do masy dla GPIO15. Dodatkowo dość często używam adaptera na 2.5mm, który ma już rezystory na GPIO15 i ENABLE.

Oczywiście GPIO15 nie trzeba wyprowadzać do programowania, natomiast reset by się przydał.

 

 

 

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Tyle, że aby korzystać z tej doktryny musiałbyś wiedzieć, czego masz się uczyć. A skąd masz to wiedzieć, jeśli nie wiesz co będzie potrzebne? To może być dobre jeśli masz kogoś, kto Cię prowadzi za rączkę (jak pani w klasie na matmie). W przypadku samodzielnej nauki - jak widać po Twoich pytaniach - metoda raczej nie zdaje egzaminu.

  • Lubię! 1
Link do komentarza
Share on other sites

W pewnym sensie tak - ale nie całkiem. Nauczyciel w szkole realizuje pewien konkretny program. Tu uczysz się sam, a na forum możesz się co najwyżej doszkolić w tematach, które już jako-tako znasz czy uzyskać informację o potrzebnych materiałach. Nie ma żadnego "programu" - toteż nikt nie jest w stanie przewidzieć co koledze Iksińskiemu będzie jutro potrzebne i czego ma się dzisiaj nauczyć 🙂

  • Lubię! 1
Link do komentarza
Share on other sites

Jak byś gpio0 podciągnął do plusa 5V nie trzeba by było reseta wyciągać i poprawiać błąd .. 

 

A tak masz błąd musisz jeszcze wyciągnąć gpio0  do SW.. gpio0 ma machać H/L zależny czy chcemy wgrywać czy ma pracować...

 

Co do płytki nie lepiej wsunąć ESP a antenę to w pcb dać pole puste?? zawsze to nie wystaje...

Edytowano przez Jarewa
  • Lubię! 1
Link do komentarza
Share on other sites

Z ciekawości: jak toto przełączysz w tryb programowania?

A przy okazji: GPIO2 do Vcc przez rezystor.

I drobiazg trochę poza tematem - lepiej wykorzystać bibliotekę "NeoPixelBus by Makuna" zamiast Adafruit, ale to wymaga więcej kombinowania z płytką.

  • Lubię! 1
Link do komentarza
Share on other sites

4 godziny temu, Jarewa napisał:

Jak byś gpio0 podciągnął do plusa 5V nie trzeba by było reseta wyciągać i poprawiać błąd .. 

Podpięte pod 5V i usunięty reset.

4 godziny temu, Jarewa napisał:

Co do płytki nie lepiej wsunąć ESP a antenę to w pcb dać pole puste?? zawsze to nie wystaje...

Jeszcze nie siedziałem nad projektem płytki, sprawdziłem tylko czy da się ją wygenerować bez błędów, ale masz jak najbardziej rację.


antena_esp8266.thumb.png.2b0eb13c6751824483efbceda351ed4f.png

Źródło: http://wiki.ai-thinker.com/_media/esp8266/esp8266_series_modules_user_manual_v1.1.pdf

11 minut temu, ethanak napisał:

Z ciekawości: jak toto przełączysz w tryb programowania?

Doskonałe pytanie, na które jeszcze nie mam odpowiedzi. Chociaż liczyłem na:

Dnia 15.02.2020 o 22:38, Jarewa napisał:

Na pcb podciągnij gpio15 do masy, gpio0 podciągnij przez dzielnik napięcia do plusa przed stabilizatorem 5V.. Na płycie wyciąg 4 piny  rx,tx,gnd i 3v3 po stabilizatorze,  Kup jakiś konwerter USB - UART z wyjściem 3V3.

Każde podłączenie przez wyprowadzone piny rx,tx,gnd,3V3 wprowadzi esp w tryb programowania. Warunek ze nie podłączone 5V z usb...  A każde podłączenie przez USB działanie normalne...

 

Dnia 16.02.2020 o 09:46, Jarewa napisał:

Screenshot_17.jpg

 

12 minut temu, ethanak napisał:

A przy okazji: GPIO2 do Vcc przez rezystor.

Zrobione.

13 minut temu, ethanak napisał:

I drobiazg trochę poza tematem - lepiej wykorzystać bibliotekę "NeoPixelBus by Makuna" zamiast Adafruit, ale to wymaga więcej kombinowania z płytką.

Dodane do ToDo, w wolnej chwili będę testował. A na czym tak właściwie polega różnica?

Link do komentarza
Share on other sites

4 minuty temu, crbjsfso napisał:

A na czym tak właściwie polega różnica?

NeoPixelBus nie wymaga zatrzymywania przerwań na czas przesyłania danych do diod - działa przez DMA lub UART (zależy co wybierzesz). Problemem jest to, że diody podłączasz do pinu Rx (DMA) lub Tx (UART), ale to już kwestia połączeń na płytce.

5 minut temu, crbjsfso napisał:

liczyłem na:

Dnia 15.02.2020 o 22:38, Jarewa napisał:

(...)

Każde podłączenie przez wyprowadzone piny rx,tx,gnd,3V3 wprowadzi esp w tryb programowania. Warunek ze nie podłączone 5V z usb...  A każde podłączenie przez USB działanie normalne...

Gdzie w ESP-12E jest USB? To nie NodeMCU czy inny wynalazek...

Wyprowadź tam normalny reset i GPIO0, dodaj przełącznik zwierający GPIO0 do GND przez np. 470Ω. Na 100% przyda się jak będziesz robić kolejne ustrojstwo.

  • Lubię! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.