Dzisiaj chciałbym przedstawić swój ostatni mini projekt jakim jest programator ESP. Po co powstał? Dlaczego odrzuciłem gotowe rozwiązania i w czym jest on od nich lepszy? Postaram się to wszystko pokrótce opisać 🙂
W swoich projektach bardzo chętnie korzystam z mikrokontrolerów ESP32 czy ESP8266, głównie z powodu łatwości użycia, dostępu do WiFi oraz dużej ilości pamięci. Ich programowanie odbywa się poprzez UART, potrzebny jest więc nam konwerter USB<-> UART.
Płytki testowe posiadają zazwyczaj wbudowany konwerter z chipem CH340G czy CP2102 więc z nimi nie ma problemu. Niemniej ja w swoich projektach wolę stawiać na własne PCB i tutaj często korzystam z zewnętrznego konwertera. Nie wszystkie konwertery posiadają wyprowadzone niezbędne sygnały do automatycznego programowania mikrokontrolera, czyli DTR i RTS. Oczywiście można kupić takie gdzie te sygnały są wyprowadzone, niemniej ich umiejscowienie, sposób podłączenia nie był dla mnie wygodny.
Dlatego też powstał ten projekt dedykowanej płytki, która zawiera wszystko to, czego potrzebuję czyli:
- Złącze microUSB do połączenia z komputerem
- Złącze programowania z wyprowadzonymi sygnałami: TXD, RXD, DTR, RTS oraz GND
- Złącze zasilania z napięciami 3,3V, 5V oraz pinem GND
- Wbudowany stabilizator liniowy dla napięcia 3,3V
- 3 diody LED: POWER, TXD, RXD
CH340G – serce konwertera
Jako główny chip, na którym opera się płytka wybrałem popularny CH340G. Wybrałem go właśnie z powodu dużej dostępności, ale też przyjaznej do lutowania obudowy. Jego niska cena również była sporym atutem. Nie wymaga on wielu zewnętrznych elementów, w zasadzie najbardziej znaczącym jest oscylator kwarcowy 12MHz. Układ pracuje przy napięciu zasilania 3,3V i takie też produkuje poziomy logiczne – dedykowane do ESP32/ESP8266.
Złącze programowania
Niby co tu omawiać na temat złącza? Ha! To w zasadzie najbardziej znaczący element w kontekście wygody użytkowania tego programatora. Złącze programowania opera się na gnieździe i wtyku typu 403/404. Zawiera ono wyprowadzone niezbędne sygnały, czyli nie tylko komunikację TXD i RXD ale również sygnały DTR i RTS, które wykorzystywane są do automatycznego restartu oraz przełączania układów w tryb wgrywania wsadu.
W gotowych modułach konwerterów USB<->UART sygnały te są często wyprowadzone na złącza goldpin. Musimy więc podłączyć odpowiednie kabelki w odpowiednie miejsca… Zatem wymaga to od nas uwagi, trzeba dokładnie spojrzeć aby podłączyć je odpowiednio i się nie pomylić. A jak to przy goldpinach bywa, kabelki wyrabiają się, luzują, potrafią nie stykać. Tutaj zastosowałem jedno złącze, którego nie da się włożyć odwrotnie, zatem nie trzeba się zastanawiać, co do czego połączyć. Na moich płytach w projektach z ESP stosuję takie same złącza w wersjach uproszczonych (TXD, RXD, GND) oraz pełnych również z DTR i RTS. Wystarczy jedynie zastosować odpowiedni kabelek zakończony z jednej strony wtykiem 5 pin (programator) a z drugiej strony wtykiem 3 pin (wersja uproszczona) lub 5 pin (wersja pełna). Nie ma możliwości by zamienić kolejność sygnałów 🙂
Schemat i płytka PCB
Schemat „programatora” jest banalnie prosty, mamy chip CH340G, kwarc, stabilizator liniowy AMS1117, złącza oraz kilka kondensatorów i rezystorów. Warto jednie zwrócić uwagę, że układ CH340G jest zasilany napięciem 3,3V z stabilizatora jak również jego pin V3 jest do niego podłączony. Wszystko po to, aby wymusić korzystanie z poziomów logicznych 3,3V.
Zdecydowałem się nie wykonywać płytki w domu lecz zamówić ją w Chinach w firmie PCBWay. Dzięki temu jest ona estetycznie wykonana i mogła być mniejsza ze względu na to, że jest dwuwarstwowa. Swoją drogą zamówienie płytki w PCBWay jest teraz jeszcze bardziej opłacalne ze względu na nową formę dostawy – Aliexpress Standard Shipping. Dzięki temu nie musimy obawiać się kontroli celnej przesyłki w Polsce gdyż VAT jest opłacany już przy składaniu zamówienia. Oszczędza to nam dodatkowych kosztów za odprawę celną realizowaną przez Pocztę Polską.
Gdyby ktoś chciał na własną rękę zamówić tą płytkę np. właśnie w PCBWay, na końcu artykułu zamieściłem pliki gerbera, których można użyć w zamówieniu.
Do polutowania elementów na płytce użyłem pasty Relife RL-403s kupionej na Allegro (aczkolwiek jest to chiński produkt sprowadzony przez importera). Lutowanie przy pomocy hot air i pasty z cyną jest naprawdę satysfakcjonujące 😀 Rezystory, które pod wpływem napięcia powierzchniowego same się pozycjonują… miodzio!
Obudowa
Obudowa zaprojektowałem w DesignSpark Mechanical a wydrukowałem na drukarce 3D Ender 3 V2 z białego PLA. Nie jest zbyt piękna, nie było to moim priorytetem (nie, wcale nie chodzi o moje umiejętności a raczej ich brak 😛 ). Jej zadaniem jest osłaniać płytkę i uchronić ją przed przypadkowym zwarciem. Wieczko wpasowane jest na wcisk i zamyka się całkiem solidnie. Gdyby kogoś zainteresowała, w załączniku poniżej znajdziecie plik STL do wydruku we własnym zakresie.
Programator ESP – przydatny bardziej niż się wydaje
Dla mnie osobiście był to bardzo potrzebny projekt. Wygoda programowania moich płytek z ESP32 czy to ESP8266 wzrosła znacząco. Nie muszę już zwracać uwagi na to gdzie jaki kabelek podłączyć a i bez problemu działa mi automatyczny reset z poziomu Arduino. Od teraz zawsze na swoich płytkach stosuję złącze programowania w tym „standardzie”, jeśli nie w wersji pełnej to chociaż tej uproszczonej.
Pliki do pobrania
Obudowa (.stl) (422 pobrania )
Pliki gerber płytki PCB (375 pobrań )
0 komentarzy