- Wymagane materiały:
- Programowanie mikrokontrolera PIC:
- Funkcje w bibliotece ESP8266:
- Przykładowy program:
- Wynik symulacji:
- Weryfikacja wyjścia:
- Dodawanie funkcji do biblioteki ESP8266:
W tym artykule omówimy, jak połączyć moduł WIFI ESP8266 z mikrokontrolerem PIC. Do tej pory mogłeś używać modułu ESP8266 jako samodzielnego mikrokontrolera lub mogłeś używać go z biblioteką Arduino. Ale jeśli chodzi o hardkorowe projekty systemów wbudowanych, powinniśmy wiedzieć, jak używać go również z mikrokontrolerami PIC. Pomoże Ci to dostosować projekty w perspektywie projektowej, a jednocześnie sprawi, że będą tanie.
Moduły ESP8266 są dostarczane z załadowanym domyślnym oprogramowaniem układowym, dlatego możemy programować moduł za pomocą poleceń AT. Te polecenia muszą być przesyłane przez kanał komunikacji szeregowej. Ten kanał jest ustanawiany między PIC a modułem ESP8266 za pomocą modułu USART w mikrokontrolerze PIC . Cała praca będzie monitorowana i raportowana użytkownikowi za pomocą wyświetlacza LCD 16x2. Dlatego w tym samouczku założono, że masz podstawową wiedzę o module USART w PIC, łączeniu LCD z PIC i używaniu poleceń AT w ESP8266. Jeśli tego nie zrobisz, możesz wrócić do połączonych samouczków, aby wcześniej się ich nauczyć.
Wymagane materiały:
Aby ukończyć ten samouczek, potrzebujesz następującego sprzętu
- PIC16F877A
- Oscylator kwarcowy 20 MHz
- 7805
- LM317
- ESP8266
- Wyświetlacz LCD 16 * 2
- Programator PicKit3
- Rezystory (1K, 220ohm, 360ohm)
- Kondensatory (1uF, 0,1uF, 33pF)
- Przewody połączeniowe
- Adapter 12 V do zasilania modułu PIC i ESP
Sprzęt komputerowy:
Pełny schemat projektu przedstawiono poniżej
Schemat składa się z dwóch obwodów regulatora napięcia, jeden to regulator + 5 V, który służy do zasilania mikrokontrolera PIC, a drugi to regulator 3,3 V, który zasila moduł ESP8266. Napięcie +5 V jest regulowane za pomocą 7805 (układ scalony liniowego regulatora napięcia). Napięcie 3,3 V jest regulowane za pomocą LM317 (regulatora zmiennego napięcia). Moduł ESP8266 pobiera dużo prądu (~ 800mA), dlatego jeśli projektujesz własny zasilacz, upewnij się, że może on dostarczać tak duży prąd. Upewnij się również, że styki masy PIC i modułu ESP8266 są połączone ze sobą.
Więc teraz wiemy, że PIC działa na + 5 V, a ESP8266 działa przy napięciu 3,3 V. W celu ustanowienia komunikacji USART między tymi dwoma modułami potrzebujemy obwodu konwertera logicznego 5 V - 3,3 V, jak pokazano na powyższym rysunku. Ten obwód jest niczym innym jak potencjalnym dzielnikiem, który po prostu przekształca przychodzące + 5V na 3,3V. Zapobiegnie to uzyskaniu + 5V przez tolerowany 3,3 V pin RX w ESP8266.
Zrobiłem moduły PIC i ESP na dwóch oddzielnych płytach perf, jak pokazano w tych samouczkach. W ten sposób mogę używać ich uniwersalnie do bardziej podobnych projektów
- Sprzęt LED wykorzystujący PIC
- Pierwsze kroki z ESP8266
Możesz postępować zgodnie z tym samym lub zbudować własną płytkę w swoim stylu lub po prostu podłączyć powyższy obwód do płytki prototypowej.
Programowanie mikrokontrolera PIC:
W celu zaprogramowania mikrokontrolera PIC do seryjnego wysyłania „komend AT” za pomocą USART do modułu ESP8266 musimy skorzystać z biblioteki. Ta biblioteka pozwoli zaoszczędzić wiele kłopotów, takich jak używanie modułów instrukcji ESP8266 do sprawdzania każdego polecenia AT, a następnie znajdowanie sposobu na przesłanie ich do modułu ESP. Ta biblioteka jest wolnym oprogramowaniem pierwotnie opracowanym przez Camil Staps, a później została ulepszona i zmodyfikowana przez Circuit Digest, dzięki czemu może być używana z naszym mikrokontrolerem PIC16F877A. Możesz go pobrać tutaj
Biblioteka jest nadal w fazie rozwoju, ale można używać większości ważnych poleceń AT w oprogramowaniu układowym ESP8266. Jeśli okaże się, że brakuje któregoś z potrzebnych poleceń, daj mi znać w sekcji komentarzy, a spróbuję dodać je za Ciebie. W tym samouczku wyjaśniono wszystkie polecenia (do tej pory), które mogą być używane przez tę bibliotekę. Ponadto poprowadzi Cię przez dodanie własnych funkcji do biblioteki.
Funkcje w bibliotece ESP8266:
- Initialize_ESP8266 (): Ta funkcja zainicjuje moduł USART PIC do komunikacji z modułem ESP8266. Ustawia prędkość transmisji na 115200 i przygotowuje pin Rx i Tx PIC do komunikacji USART.
- _esp8266_putch (): Ta funkcja służy do szeregowego wysyłania pojedynczego znaku do modułu ESP8266. Na przykład _esp8266_putch ('a') wyśle znak a szeregowo do modułu ESP.
- _esp8266_getch (): Ta funkcja jest używana do pobrania pojedynczego znaku z modułu ESP. Na przykład, jeśli ESP wyświetla „OK” i używamy char a = _esp8266_getch (). Następnie znak „o” zostanie zapisany w zmiennej a.
- ESP8266_send_string (): Ta funkcja jest wersją ciągu _esp8266_putch (). Może wysłać jeden kompletny ciąg do modułu ESP8266. Na przykład ESP8266_send_string („AT / r / n”) wyśle polecenie „AT” do modułu ESP8266.
- esp8266_isStarted (): Służy do sprawdzania, czy PIC może komunikować się z modułem ESP. Wysyła polecenie „AT” i czeka na „OK”, jeśli zostanie odebrane, zwraca true, w przeciwnym razie zwraca false.
- esp8266_restart (): resetuje moduł ESP8266 i zwraca wartość true, jeśli zresetowanie się powiodło, a jeśli nie, zwraca false.
- esp8266_mode (): Służy do ustawiania trybu pracy modułu ESP8266. Jak wiemy, może pracować w trzech różnych trybach.
Tryb stacji |
|
Tryb Soft AP |
|
Tryb stacji i AP |
- esp8266_connect (): Umożliwia połączenie z sygnałem Wi-Fi. Na przykład esp8266_connect („home”, „12345678”) umożliwi modułowi połączenie się z sygnałem Wi-Fi o nazwie home, którego hasło to 12345678.
- esp8266_disconnect (): Ta funkcja odłącza moduł od dowolnego połączenia Wi-Fi, które było wcześniej podłączone
- esp8266_ip (): Pobiera adres IP i zwraca go. Użyj tej funkcji, jeśli chcesz poznać adres IP modułu ESP8266.
- esp8266_start (): Ta funkcja jest używana do uruchamiania komunikacji TCP lub UDP. Na przykład esp8266_start ( "TCP", "192.168.101.110", 80) . Uruchomi sieć TCP pod tym adresem IP i portem 80.
- esp8266_send (): Ta funkcja służy do wysyłania informacji do sieci TCP / UDP. Skrypt HTML zostanie wysłany za pomocą tego polecenia. Wtedy ten skrypt pojawi się w adresie IP, pod którym wcześniej nawiązano komunikację.
- esp8266_config_softAP (): Ta funkcja służy do konfigurowania softAP. Na przykład esp8266_config_softAP („biuro”, „12345678”); utworzy sygnał Wi-Fi o nazwie office i aby uzyskać do niego dostęp, należy użyć hasła 12345678.
- esp8266_get_stationIP (): Ta funkcja zwraca adresy IP / MAC klientów, którzy są podłączeni do twojego softAP.
Przykładowy program:
Teraz, gdy zrozumieliśmy funkcje każdego polecenia w bibliotece, przyjrzyjmy się małemu przykładowemu programowi. W tym programie sprawdzimy, czy połączenie między ESP8266 i PIC się powiodło, a następnie utworzymy sieć WIFI (SoftAP) z preferowaną nazwą i hasłem. Pełny program i jego symulacja zostaną wyjaśnione dla zrozumienia.
Ponownie, jeśli nie czytałeś naszego przewodnika dotyczącego interfejsu PIC z LCD i PIC USART, przeczytaj, zanim przejdziesz dalej, ponieważ tylko wtedy będzie to miało dla Ciebie sens.
Ponieważ dopiero zaczynamy łączyć PIC z ESP8266, użyłem wyświetlacza LCD, aby upewnić się, że wszystko działa poprawnie.
do {Lcd_Set_Cursor (1,1); Lcd_Print_String ("Nie znaleziono ESP"); } while (! esp8266_isStarted ()); // czekaj, aż ESP odeśle "OK" Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP jest podłączony"); __delay_ms (1500); Lcd_Clear ();
Kiedy wysyłamy „AT” do modułu ESP8266, odpowiada on „OK”. To gwarantuje nam, że moduł ESP8266 został pomyślnie podłączony. Do tego celu służy funkcja esp8266_isStarted (). Wysyłamy sygnał AT z PIC i czekamy, aż moduł ESP ożyje i wyślemy nam OK. Jeśli otrzymamy OK, wyświetlimy na LCD komunikat „ESP jest podłączony”.
esp8266_mode (2); Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP ustawione jako AP"); __delay_ms (1500); Lcd_Clear ();
Powyższe linie kodu służą do ustawienia modułu ESP do pracy w trybie „soft AP”. Funkcja esp8266_mode (2); wysyła komendy AT „AT + CWMODE = 3” do modułu i czeka, aż moduł odpowie „OK”
/ * Skonfiguruj nazwę i hasło AP * / esp8266_config_softAP ("CircuitDigest", "619007123"); Lcd_Set_Cursor (1,1); Lcd_Print_String („skonfigurowano AP”); __delay_ms (1500); Lcd_Clear (); / * AP skonfigurowany * /
Ten segment kodu służy do konfigurowania softAP. Tutaj nazwaliśmy identyfikator SSID „CircuitDigest”, a hasło „619007123”. Aby wskazać, że proces się zakończył, poczekamy, aż moduł odpowie „OK”, a następnie wydrukujemy skonfigurowane AP na ekranie LCD.
To wszystko, teraz połączyliśmy moduł ESP8266 z MCU PIC i skonfigurowaliśmy softAP z wybraną nazwą i hasłem. Jak zwykle zasymulujmy ten kod i zobaczmy, jak działa.
Wynik symulacji:
Używamy oprogramowania Proteus do symulacji wyjścia. Plik projektu dla tego samego można znaleźć w załączniku.
Ponieważ nie mamy modułu ESP8266 w bibliotece Proteus, korzystamy z terminala szeregowego i odpowiadamy jako użytkownik na moduł PIC. Po zakończeniu symulacji ekran będzie wyglądał jak poniżej
Wynik naszego kodu jest wyświetlany w terminalu wirtualnym. Pełne działanie symulacji zostanie wyjaśnione na poniższym filmie.
Weryfikacja wyjścia:
Gdy program zostanie zweryfikowany za pomocą symulacji, zrzuć go do mikrokontrolera PIC. Wykonaj połączenia zgodnie z powyższym schematem (sekcja Sprzęt). Powinieneś być w stanie śledzić swoje postępy na wyświetlaczu LCD.
Gdy na wyświetlaczu LCD pojawi się informacja, że AP jest skonfigurowany, możemy to sprawdzić za pomocą ustawień WIFI w telefonie lub laptopie. Mój laptop pokazuje następujący sygnał zgodnie z naszym programem.
To znaczy, chłopaki, z powodzeniem połączyliśmy moduł ESP8266 z mikrokontrolerem PIC. Jest to bardzo prosty interfejs i jeśli chcesz wykonywać skomplikowane projekty przy użyciu ESP8266, być może będziesz musiał dodać własne biblioteki lub przynajmniej dodać własne funkcje. Zaufaj mi, jest to bardzo łatwe, podam krótki wgląd w to samo.
Dodawanie funkcji do biblioteki ESP8266:
Dodanie własnej funkcji pomoże Ci wysłać dowolne polecenie „AT” do modułu ESP8266. Aby kontynuować, należy przeczytać dokumentację zestawu instrukcji modułu ESP8266. Możesz bezpośrednio wysłać dowolne polecenie AT, które znajdziesz w tej instrukcji zestawu instrukcji. Ale zawsze pamiętaj o dodaniu „/ r / n” na końcu każdego polecenia AT. Na przykład, jeśli chcesz nawiązać wiele połączeń z modułem ESP. Następnie otwórz dokumentację zestawu instrukcji i znajdź nasze polecenie AT, które wykona to zadanie za Ciebie. Tutaj polecenie „AT + CIPMUX = 1” pozwoli ci na ustanowienie wielu połączeń z modułem ESP.
Teraz wszystko, co musisz zrobić, to wysłać to „AP + CIPMUX = 1” do modułu ESP8266 za pomocą portu szeregowego. Najcięższym sposobem na to jest użycie polecenia
_esp8266_print ("AT + CIPMUX = 1 \ r \ n" ")
To zadziała, ale nie jest najlepszym sposobem na zrobienie tego. Musisz przeczytać, co twój ESP8266 odpowiada na twoje polecenie. W naszym przypadku odpowie „OK”. Trzeba więc odczytać dane przychodzące z modułu ESP8266 i potwierdzić, że jest „OK”. Możesz również utworzyć tę funkcję, w której „1” lub „0” będą mogły być przekazywane jako argumenty.
Śmiało i spróbuj stworzyć własne funkcje dla biblioteki. Ale jeśli potrzebujesz pomocy, skorzystaj z sekcji komentarzy, a ja ci pomogę.