wersja mobilna | kontakt z nami

Zastosowanie modułu Wi-Fi ESP-12 (2). Wirtualny interfejs szeregowy

Numer: Sierpień/2016

UART jest jednym z interfejsów używanych do komunikacji. Jest on łatwy w obsłudze programowej i użyciu, szczególnie w wypadku komunikacji z komputerem PC. Dla uzyskania podstawowej funkcjonalności jest przyłączenie jedynie 3 linii: RxD, TxD oraz masy. Ileż prościej by było, gdyby można zastosować taki interfejs bez używania żadnych kabli. Pozwoliłoby to na bezproblemową komunikację komputera z systemem wbudowanym, bez konieczności ciągnięcia ? niekiedy bardzo długiej ? wiązki kabli. W artykule zaprezentowano rozwiązanie bazujące na module ESP-12, realizujące bezprzewodową wersję interfejsu szeregowego UART.

Pobierz PDFMateriały dodatkowe

rys-1

Jak sama nazwa mówi, jest to transmisja szeregowa polegająca na wysyłaniu ciągu bitów, które są następnie składane w paczkę danych. Pojedyncza paczka danych składa się z bitu start, danych, bitu stopu i ewentualnie bitu parzystości, jeżeli transmisja jest tak skonfigurowana. Słówko Asynchronous w nazwie informuje, że jest to transmisja asynchroniczna, co oznacza, iż zegar taktujący rytm wysyłania danych nie jest przesyłany do odbiornika, tak jak ma to miejsce np. w SPI czy I2C. Dlatego każdorazowo należy ustawić odpowiednią prędkość w nadajniku i odbiorniku – oczywiście, musi ona być taka sama. Efektem ustawienia różnych prędkości będzie odczytanie błędnych danych z interfejsu.

ESP-12 i wirtualny UART

Moduł ESP-12 ma sprzętowy interfejs portu szeregowego, co oznacza, że na wyjściu będą same dane wysłane przez nadajnik. Nie trzeba martwić się o bity startu, stopu itd. Jedyne, co należy zrobić, to skonfigurować ten port. Program źródłowy przedstawiony na listingu 1 jest rozwiązaniem dla przewodowego UART. Algorytm funkcjonowania programu zaprezentowano na na schemacie blokowym zamieszczonym na rysunku 1.

Wszystkie dane, które zostaną odebrane w pakiecie UDP od razu są wysyłane przez port szeregowy. Analogicznie, wszystkie dane, które nie zawierają znaku „+” są pakowane do pakietu UDP i wysyłane do odbiorcy.

Komunikacja UDP została zastosowana z powodu prostoty oraz szybkości wysyłania danych. Testy wykazały, że przy większej ilości danych wysyłanych pakietami TCP, w pewnym momencie następowało przepełnienie, gdyż czas potrzebny na: nawiązanie połączenia TCP, wysłanie pakietu, oczekiwanie na potwierdzenie, ewentualną retransmisję pakietu oraz zamknięcie połączenia, powodował zgromadzenie zbyt dużej ilości danych oczekujących w buforze. Przy wykorzystaniu transmisji UDP, każdy znak odczytany z interfejsu jest natychmiastowo wysyłany pakietem. W wypadku UDP nie nawiązuje się połączenia oraz nie trzeba go zamykać. Wadą tego rozwiązania jest możliwość „zagubienia” pakietu danych. Kontrolę błędów transmisji należałoby wykonać programowo, np. wysyłając na koniec ciągu znaków sumę kontrolną CRC.

Firmware interpretuje i realizuje 9 komend AT. Każda komenda rozpoczyna się członem „+AT_” i musi być zakończona znakiem końca linii. Dopiero wtedy moduł zaakceptuje komendę i będzie próbować ją przetworzyć. Wysyłanie danych za pomocą UDP nie wymaga znaku końca linii, jeżeli przed danymi nie wystąpił znak „+”, to dane będą przesyłane paczkami UDP do odbiornika.

W tabeli 1 wymieniono komendy realizowane przez moduł Wi-Fi ESP-12. Nie są one specjalnie skomplikowane, a w razie wątpliwości warto sięgnąć albo do źródła programu z tego odcinka cyklu, albo do dokumentacji samego modułu.

Program sterujący pokazano na listingu 1. Jedynym ograniczeniem jest brak możliwości stosowania znaku „+” w wiadomościach. Komentarze są przy każdej ważniej części.


Wykorzystanie w praktyce – bezprzewodowy czujnik

Do testu użyjemy modułu ESP-12 realizującego program z listingu 1. Do tego będzie nam potrzebne Arduino Uno R3 oraz potencjometr. Odbiornikiem będzie komputer pracujący jako serwer UDP na porcie 8080. Odbiornikiem może być każde urządzenie mogące obsłużyć protokół UDP, jednak najlepiej sprawowałby się tutaj bliźniaczy moduł ESP-12 z wgranym programem wirtualnego portu szeregowego.

Mikrokomputer Arduino będzie mierzył napięcie na wejściu przetwornika A/C i wysyłał za pomocą interfjesu szeregowego, więc zmiany będzie można zaobserwować w programie ustawionym na nasłuchiwanie transmisji odbywającej się przez port 8080.

tabela

Najpierw jednak należy skonfigurować wirtualny UART. Dla tego celu trzeba wysłać dwie komendy: komendę ustanawiającą połączenie z siecią Wi-Fi (bez tego żadne połączenie nie zostanie nawiązane). Następnie ustawiamy adres odbiornika i możemy zacząć wysyłać dane. W tym przykładzie dane będą tylko wysyłane, nic nie będzie odbierane przez UART. Przykładowy program pokazano na listingu 2.

Przed wgraniem wsadu nie należy przyłączać modułu ESP-12 do Arduino, ponieważ zajmiemy wyprowadzenia RxD i TxD, co może zakłócić wgrywanie wsadu do pamięci modułu – najlepiej zrobić to tuż po wgraniu. Po zaprogramowaniu modułu należy zrestartować Arduino. Efektem działania programu będą dane odebrane przez program, który nasłuchuje na odpowiednim porcie.

Program sprawuje się bardzo dobrze, wysyła każdy znak w formie pakietu. Teraz wystarczy złożyć te dane w jedną zmienną, aby łatwo zrealizować pomiar ze zdalnego przetwornika A/C. Należy w tym wypadku zwrócić szczególną uwagę na to, że sam kod czujnika był bardzo krótki. Właściwie zawierał tylko konfigurację interfejsu, wykonywał pomiary i przesyłał je przez interfejs szeregowy. Całą komunikacją zajmuje się moduł ESP-12.

Oprogramowanie jest na tyle uniwersalne, że możemy podłączyć każdy mikroprocesor i/lub czujnik z interfejsem szeregowym. Program ma też wadę. Jest nią brak możliwości wstawiania znaków „+” w paczki danych, jeżeli to nie jest komenda AT. Można też ustawić wysyłanie danych dopiero po otrzymaniu znaku potwierdzenia.

Jest wiele możliwości zmian w programie i dzięki dostępności źródła każdy może przygotować odpowiedni dla systemu, który jest przygotowywany.

Jakub Kisiel
www.microgeek.eu

 

Uwaga: listingi są dostępne w załącznikach (materiałach dodatkowych).

Pozostałe artykuły

System sterowania DMX512 dla każdego (4). Kontrolowanie urządzeń

Numer: Wrzesień/2016

W kolejnej części kursu obsługi urządzeń z interfejsem DMX512 kontynuujemy opis programu sterującego. Teraz zajmiemy się szczegółowym opisem jego funkcji, korzystając przy tym z wcześniej nabytej wiedzy. Będziemy też sterowali naszym układem demonstracyjnym z diodami LED powodując zmiany parametrów ich świecenia. Będzie to wstępem do komponowania obrazów świetlnych, tzw. Cue.

System sterowania DMX512 dla każdego (3) Adresowanie urządzeń

Numer: Sierpień/2016

W kolejnej części kursu obsługi urządzeń z interfejsem DMX512 wykonamy próbne sterowanie oświetleniem w postaci diod LED RGB. Zainstalujemy też program pomocniczy, ułatwiający adresowanie urządzeń DMX i chroniący przed popełnianiem błędów.

Programowanie paneli HMI (4)

Numer: Lipiec/2016

Praca z nowym urządzeniem zawsze zaczyna się od prostego przykładu. Takim przykładem zazwyczaj jest Hello world, czyli tak naprawdę sprawdzenie poprawności działania urządzenia. W tym odcinku kursu HMI wykonamy nieskomplikowany ekran wizualizacji z napisem "Hello world!".

System sterowania DMX512 dla każdego (2). Konfigurowanie urządzeń oraz okablowanie sieci

Numer: Lipiec/2016

W kolejnej części kursu obsługi urządzeń z interfejsem DMX512 zajmiemy się skonfigurowaniem urządzeń w sieci DMX512. Podamy też uwagi, które pozwolą na wykonanie poprawnego okablowania oraz uzyskanie wymaganego zasięgu transmisji danych. Jest to szczególnie ważne przy tworzeniu rozległych instalacji scenicznych.

Podstawy programowania STM32F746G-DISCO (3). Jak zbudować oscyloskop z FFT z użyciem STM32F746G-DISCO

Numer: Lipiec/2016

W ostatniej części artykułu poświęconego aplikacji próbkującej i wyświetlającej sygnał z wejścia liniowego zostaną omówione pakiet BSP, biblioteki graficzna STemWin, matematyczna ARM CMSIS DSP oraz moduł do wykrywania podstawowych gestów wykonanych przez użytkownika na panelu dotykowym.

Mobilna
Elektronika
Praktyczna

Elektronika Praktyczna

Wrzesień 2017

PrenumerataePrenumerataKup w kiosku wysyłkowym

Elektronika Praktyczna Plus

lipiec - grudzień 2012

Kup w kiosku wysyłkowym