- Wprowadzenie do ESP8285
- Schemat obwodu płytki rozwojowej ESP
- Wykonanie naszej płyty deweloperskiej ESP8285
- Zamawianie PCB w PCBWay
- Montaż i programowanie płyty ESP8285
- Testowanie za pomocą prostego szkicu migania diod LED
- Testowanie szkicu serwera WWW na ESP8285
Sterowniki ESP firmy Espressif stają się bardzo popularnym wyborem w projektach opartych na IoT. Na rynku dostępnych jest wiele rodzajów modułów ESP i płytek rozwojowych, wśród których najpopularniejszym jest NodeMCU. Oprócz tego popularne są również ESP-12E, ESP01. Ale jeśli chcesz, aby Twój projekt był bardziej elastyczny i kompaktowy, istnieje szansa, że musimy zaprojektować nasz własny moduł ESP z poziomu chipa, zamiast bezpośrednio korzystać z łatwo dostępnego modułu. W tym artykule dowiemy się, jak zaprojektować obwód i płytkę PCB do bezpośredniego korzystania ze sterowników ESP (ESP8285) bez użycia modułu.
W tym projekcie użyliśmy ESP8285, ponieważ jest to bardzo interesujący mały chip. To malutki SoC (System on Chip) z IoT (Internetem rzeczy) i funkcjami głębokiego uśpienia. Ma taką samą moc, jak jego starszy brat ESP8266, a jako bonus ma wbudowaną pamięć flash 1 MB z wieloma GPIO. Możesz również użyć ESP8266 jako alternatywy, a większość rzeczy omówionych w tym artykule pozostanie taka sama.
W poprzednim artykule pokazałem, jak zaprojektować własną antenę PCB na 2,4 GHz, używając tego samego układu ESP8285 jako przykładu. Możesz przeczytać ten artykuł, aby dowiedzieć się o konstrukcji anteny dla ESP8266 / ESP8285.
W tym artykule omówię, jak działają wszystkie obwody, a na koniec pojawi się film wyjaśniający to wszystko. Opisałem również szczegółowo całą procedurę projektowania i zamawiania płytek PCB firmy PCBWay do projektowania naszego modułu ESP.
Wprowadzenie do ESP8285
Jeśli nie wiesz o tym wszechstronnym układzie ESP8285, oto krótkie wyjaśnienie z listą funkcji. ESP8285 to mały układ z wbudowaną pamięcią 1M i pamięcią RAM, jest dość podobny do modułu ESP8286, ESP-01, ale wewnętrzna pamięć flash sprawia, że jest znacznie bardziej kompaktowy i tańszy.
Ten układ zawiera 32-bitowy procesor rdzeniowy Tensilica L106 Diamond i to samo dotyczy również ESP8266, dlatego cały kod ESP8266 można przesłać bezpośrednio do tego układu bez żadnych modyfikacji i ma ten sam stos sieciowy co dawka ESp8266.
ESP8285 integruje przełączniki antenowe, balun RF, wzmacniacz mocy, wzmacniacz odbioru o niskim poziomie szumów, filtry i moduły zarządzania energią. Kompaktowa konstrukcja minimalizuje rozmiar PCB i wymaga minimalnej liczby obwodów zewnętrznych. Jeśli chcesz dowiedzieć się więcej o tym układzie scalonym, zawsze możesz sprawdzić arkusz danych ESP8285 urządzenia w Espressif Systems.
Schemat obwodu płytki rozwojowej ESP
Obwód jest bardzo prosty i podzieliłem go dla lepszego zrozumienia. Poniższy schemat ESP pokazuje cały obwód, jak widać jest osiem bloków funkcjonalnych, przejdę przez każdy z nich i wyjaśnię każdy blok.
ESP8285 SOC:
Sercem projektu jest ESP8285 SoC, tutaj zdefiniowane są wszystkie GPIO i inne niezbędne połączenia.
Filtr mocy: na tym układzie scalonym znajduje się 7 pinów zasilania, pierwszy to pin zasilania dla ADC i IO. Skręciłem je razem i używam kondensatora filtru mocy 47 uF i kondensatora odsprzęgającego 0,1 uF do filtrowania wejścia 3,3 V DC.
Filtr PI: Filtr PI jest jednym z najważniejszych bloków tego projektu, ponieważ jest odpowiedzialny za zasilanie wzmacniacza RF i LNA, każdy szum wewnętrzny lub zewnętrzny może być opisowy dla tej sekcji, więc w tym przypadku sekcja RF nie będzie działać. Dlatego bardzo ważny jest filtr dolnoprzepustowy dla sekcji LNA. Możesz dowiedzieć się więcej o filtrach PI, klikając łącze.
Oscylator kwarcowy: Oscylator kwarcowy 40 MHz służy jako źródło zegara dla układu SoC ESP8285, a kondensatory odsprzęgające 10 pF zostały dodane zgodnie z zaleceniami zawartymi w arkuszu danych.
Sekcja LNA: Kolejną najważniejszą sekcją tego obwodu jest sekcja LNA; w tym miejscu antena PCB zostaje podłączona do fizycznego pinu ESP. Zgodnie z zaleceniami zawartymi w arkuszu danych zastosowano kondensator 5,6 pF, który powinien działać dobrze jako obwód dopasowujący. Ale dodałem dwa symbole zastępcze dla dwóch cewek, tak jakby na wypadek, gdyby pasujący obwód zadziałał, zawsze mogę wstawić kilka cewek, aby dostosować wartości, aby pasowały do impedancji anteny.
Sekcja LNA ma również dwie zworki do PCB ze złączem UFL. Antena PCB jest ustawiona fabrycznie, ale jeśli aplikacja wymaga trochę większego zasięgu, można wylutować zworkę PCB i zewrzeć zworkę dla złącza UFL i tak po prostu podłączyć antenę zewnętrzną.
Złącze wejściowe akumulatora:
Jak widać powyżej, umieściłem równolegle trzy typy złączy akumulatora, ponieważ jeśli nie mogłeś znaleźć jednego, zawsze możesz włożyć inny.
Nagłówki GPIO i nagłówki programowania:
Nagłówki GPIO umożliwiają dostęp do pinów GPIO, a nagłówek programowania służy do flashowania głównego pliku Soc.
Obwód automatycznego resetowania:
W tym bloku dwa tranzystory NPN, MMBT2222A tworzą obwód automatycznego resetowania po naciśnięciu przycisku wysyłania w Arduino IDE, narzędzie Python otrzymuje połączenie, to narzędzie Python jest narzędziem flash dla urządzeń ESP, to narzędzie pi daje sygnał do konwertera UART, aby zresetować płytkę, trzymając pin GPIO do masy. Następnie rozpoczyna się proces przesyłania i weryfikacji.
Dioda LED zasilania, wbudowana dioda LED i dzielnik napięcia:
Dioda LED zasilania: Dioda LED zasilania ma zworkę na płytce drukowanej. Jeśli używasz tej płytki, tak jak w przypadku aplikacji zasilanej bateryjnie, możesz lutować tę zworkę DE, aby zaoszczędzić sporo energii.
Wbudowana dioda LED: Wiele płyt deweloperskich na rynku ma wbudowaną diodę LED i ta płyta nie jest wyjątkiem; GPIO16 układu scalonego jest podłączony do wbudowanej diody LED. Oprócz tego istnieje element zastępczy dla rezystora 0 Ohm poprzez wypełnienie rezystora 0 Ohm, podłączasz GPIO16 do resetu i jak być może wiesz, jest to bardzo ważny krok, aby wprowadzić ESP w tryb głębokiego uśpienia.
Dzielnik napięcia: Jak zapewne wiesz, maksymalne napięcie wejściowe ADC wynosi 1 V. Tak więc, aby zmienić zakres wejścia na 3,3 V, stosuje się dzielnik napięcia. Konfiguracja jest tak wykonana, że zawsze można dodać rezystor szeregowo z pinem, aby zmienić zakres na 5V.
HT7333 LDO:
Regulator napięcia LDO lub niskiego spadku napięcia służy do regulacji napięcia do ESP8285 z akumulatora przy minimalnych stratach mocy.
Maksymalne napięcie wejściowe HT7333 LDO wynosi 12 V i służy do konwersji napięcia akumulatora na 3,3 V, wybrałem ten HT7333 LDO, ponieważ jest to urządzenie o bardzo niskim prądzie spoczynkowym. Kondensatory odsprzęgające 4,7uF służą do stabilizacji LDO.
Przycisk trybu programowania:
Przycisk jest podłączony do GPIO0, jeśli twój konwerter UART nie ma pinów RTS lub DTR, możesz użyć tego przycisku do ręcznego przyciągnięcia GPIO0 do masy.
Rezystory pullup i pulldown:
Rezystory pullup i pulldown są dostępne zgodnie z zaleceniami arkusza danych.
Poza tym podczas projektowania PCB przestrzegano wielu norm i wytycznych projektowych. Jeśli chcesz dowiedzieć się więcej na ten temat, możesz znaleźć to w przewodniku projektowania sprzętu dla ESP8266.
Wykonanie naszej płyty deweloperskiej ESP8285
Schemat jest gotowy i możemy przystąpić do układania PCB. Użyliśmy oprogramowania Eagle PCB do wykonania PCB, ale możesz zaprojektować PCB za pomocą preferowanego oprogramowania. Nasz projekt PCB wygląda tak po zakończeniu.
Pliki BOM i Gerber są dostępne do pobrania z następujących łączy:
- ESP8282 Dev-Board Pliki Gerber
- ESP8282 Dev-Board BOM
Teraz, gdy nasz projekt jest gotowy, nadszedł czas, aby wyprodukować PCB przy użyciu. Aby to zrobić, po prostu wykonaj poniższe czynności:
Zamawianie PCB w PCBWay
Krok 1: Wejdź na https://www.pcbway.com/, zarejestruj się, jeśli to Twój pierwszy raz. Następnie w zakładce Prototyp PCB wprowadź wymiary swojej płytki PCB, liczbę warstw i liczbę potrzebnych PCB.
Krok 2: Kontynuuj, klikając przycisk „Cytuj teraz”. Zostaniesz przeniesiony na stronę, na której możesz ustawić kilka dodatkowych parametrów, takich jak typ płytki, warstwy, materiał na PCB, grubość i więcej, większość z nich jest wybierana domyślnie, jeśli decydujesz się na określone parametry, możesz wybrać to słychać.
Jak widać, potrzebowaliśmy czarnych płytek PCB! więc wybrałem czarny w sekcji kolorów soldermaski.
Krok 3: Ostatnim krokiem jest załadowanie pliku Gerber i kontynuacja płatności. Aby upewnić się, że proces przebiega bezproblemowo, PCBWAY sprawdza, czy plik Gerber jest prawidłowy przed przystąpieniem do płatności. W ten sposób możesz być pewien, że Twoja płytka drukowana jest przyjazna dla produkcji i dotrze do Ciebie zgodnie z zobowiązaniem.
Montaż i programowanie płyty ESP8285
Po kilku dniach otrzymaliśmy PCB w schludnym pudełku, a jakość PCB była jak zawsze dobra. Poniżej pokazano górną i dolną warstwę płyty:
Po otrzymaniu płytki od razu przystąpiłem do jej lutowania. Użyłem stacji na gorące powietrze i dużo topnika do lutowania głównego procesora, a pozostałe elementy na PCB są lutowane za pomocą lutownicy. Zmontowany moduł pokazano poniżej.
Gdy to zrobiłem, podłączyłem mój zaufany moduł FTDI, aby przetestować płytkę, przesyłając szkic, Podłączone piny i obraz płytki pokazany poniżej:
Moduł FTDI płyty deweloperskiej ESP8285
3,3 V -> 3,3 V.
Tx -> Rx
Rx -> Tx
DTR -> DTR
RST -> RST
GND -> GND
Raz, wszystkie niezbędne połączenia są zakończone, mam skonfigurować Arduino IDE wybierając Generic ESP8285 Board z Narzędzia > Spółki > Generic ESP8285 Module .
Testowanie za pomocą prostego szkicu migania diod LED
Następnie nadszedł czas, aby przetestować płytkę migając diodą LED, do tego użyłem następującego kodu:
/ * Miganie ESP8285 Migotanie niebieskiej diody LED na module ESP828285 * / #define LED_PIN 16 // Zdefiniuj migającą diodę LED pin void setup () {pinMode (LED_PIN, OUTPUT); // Zainicjuj pin LED jako wyjście} // funkcja pętli działa w kółko w nieskończoność void loop () {digitalWrite (LED_PIN, LOW); // Włącz diodę LED (zwróć uwagę, że LOW to poziom napięcia) delay (1000); // Poczekaj na sekundę digitalWrite (LED_PIN, HIGH); // Wyłącz diodę LED, ustawiając WYSOKIE opóźnienie (1000); // Poczekaj dwie sekundy}
Kod jest bardzo prosty, najpierw zdefiniowałem pin LED dla tej płyty i jest na GPIO 16. Następnie ustawiłem ten pin jako wyjście w sekcji konfiguracji. I wreszcie, w sekcji pętli, włączałem i wyłączałem pin z jednosekundowym opóźnieniem.
Testowanie szkicu serwera WWW na ESP8285
Gdy wszystko działało dobrze, czas przetestować szkic HelloServer z przykładu ESP8266WebServer. Używam przykładu ESP8266, ponieważ większość kodu jest kompatybilna z chipem esp8285. Przykładowy kod można również znaleźć na dole tej strony.
Ten kod jest również bardzo prosty, najpierw musimy zdefiniować wszystkie niezbędne biblioteki, #zawierać
następnie musimy wprowadzić nazwę i hasło hotspotu.
#ifndef STASSID #define STASSID "twój-ssid" #define STAPSK "twoje-hasło" #endif const char * ssid = STASSID; const char * hasło = STAPSK;
Następnie musimy zdefiniować obiekt ESP8266WebServer. Poniższy przykład definiuje go jako serwer (80), a (80) to numer portu.
Następnie musimy zdefiniować pin dla diody LED w moim przypadku był to pin nr 16.
const int led = 16;
Następnie definiowana jest funkcja handleRoot () . Ta funkcja zostanie wywołana, gdy wywołanie adresu IP z naszej przeglądarki.
void handleRoot () {digitalWrite (led, 1); server.send (200, "text / plain", "hello from esp8266!"); digitalWrite (led, 0); }
Następnie funkcja konfiguracji, słyszymy, że musimy zdefiniować wszystkie niezbędne parametry, takie jak:
pinMode (led, WYJŚCIE); // zdefiniowaliśmy pin LED jako wyjście Serial.begin (115200); // uruchomiliśmy połączenie szeregowe z 115200 bodów WiFi.mode (WIFI_STA); // ustawiliśmy tryb Wi-Fi na stację WiFi.begin (ssid, hasło); następnie rozpoczynamy połączenie Wi-Fi Serial.println (""); // ta linia daje dodatkową spację while (WiFi.status ()! = WL_CONNECTED) {opóźnienie (500); Serial.print („.”); } / * w pętli while testujemy stan połączenia, w którym ESP jest w stanie połączyć się z hotspotem, pętla będzie hamować * / Serial.println (""); Serial.print („Połączony z”); Serial.println (ssid); Serial.print ("adres IP:"); Serial.println (WiFi.localIP ());
Następnie drukujemy nazwę i adres IP podłączonego identyfikatora SSID do okna monitora szeregowego.
server.on ("/", handleRoot); // metoda włączenia obiektu serwera jest wywoływana do handlu z funkcją root server.on ("/ inline", () {server.send (200, "text / plain", "to też działa");}); // ponownie wywołaliśmy metodę włączania dla przykładu / inline server.begin (); // następnie uruchamiamy serwer metodą początkową Serial.println ("serwer HTTP uruchomiony"); // i na koniec wypisujemy instrukcję na monitorze szeregowym. } // co oznacza koniec funkcji konfiguracyjnej void loop (void) {server.handleClient (); }
W funkcji pętli wywołaliśmy metody handleClient () , aby poprawnie obsługiwać esp.
Gdy to zostało zrobione, płytce ESP8285 zajęło trochę czasu, aby połączyć się z serwerem internetowym i pomyślnie działało zgodnie z oczekiwaniami, co oznaczało koniec tego projektu.
Pełne działanie tablicy można również znaleźć na poniższym filmie. Mam nadzieję, że podobał Ci się ten artykuł i nauczyłeś się z niego czegoś nowego. Jeśli masz jakiekolwiek wątpliwości, możesz zapytać w komentarzach poniżej lub skorzystać z naszych forów w celu szczegółowej dyskusji.