W budowie urządzenia zastosowano moduł Bluetooth typu BT222. Może on komunikować się z systemem nadrzędnym za pośrednictwem różnych interfejsów, ale ze względu na łatwość obsługi oraz implementacji oprogramowania do tego celu jest polecany UART. Do poprawnej komunikacji za pośrednictwem UART nie jest wymagana obsługa sygnałów RTS i CTS, ale wtedy należy wprowadzić niewielkie opóźnienia czasowe pomiędzy bajtami danych wysyłanymi do modułu.
Należy bardzo ostrożnie zmieniać parametry komunikacji interfejsu UART, ponieważ niewłaściwe ustawienie może zablokować dostęp do modułu, a nie ma sposobu na przywrócenie ustawień bez poprawnej komunikacji z modułem. Uwaga! Moduł wymaga zasilania napięciem 3,3 V i nie toleruje napięcia 5 V na wejściach, więc przy współpracy z typowym Arduino musi być wyposażony w translator poziomu napięcia.
Arduino i BTM222
Płytka Arduino ma sprzętowy interfejs szeregowy UART, ale jest on połączony z konwerterem USB i dlatego bardzo przydaje się w czasie uruchamiania programów. Z tego powodu do komunikacji z modułem Bluetooth zostanie wykorzystany UART wykonany programowo.
Po dołączeniu interfejsu USB dioda CONN na płytce AVT1635 powinna migać. Już teraz moduł Bluetooth będzie widziany przez inne urządzenia jako Serial Adapter i można go sparować np. ze smartfonem podając w trakcie tej operacji PIN 1234.
Program testowy
Pierwszy program posłuży do sprawdzenia poprawności połączeń i komunikacji z płytką AVT1635. Na początku dołączana jest biblioteka SoftwareSerial.h, deklarowane są zmienne, dwa bufory i dwa znaczniki odebranych komunikatów.
Ostatecznie w sekcji setup() program uruchamia dwa interfejsy szeregowe, jeden programowy do komunikacji z modułem Bluetooth, drugi sprzętowy do śledzenia przebiegu programu i komunikatów z i do modułu.
W pętli głównej program sprawdza czy zostały odebrane jakieś dane i umieszcza je w buforach, funkcje baseReceive() i blueReceive(). W przypadku komunikacji po USB pierwsze wystąpienie znaku nowej linii \n jest traktowane jako koniec komunikatu, co naturalnie pokrywa się z wciśnięciem klawisza ENTER na klawiaturze, natomiast moduł BTM222 każdy komunikat poprzedza i kończy znakiem nowej linii, dlatego odebranie komunikatu następuje po drugim znaku nowej linii (blueComplete >=2).
Ważną funkcją jest blueSend(), która odpowiada za wysyłanie komunikatów do modułu. Po wysłaniu każdego znaku wstawiona jest przerwa delay(50). Dodatkowo, znak nowej linii \n jest zamieniany na znak \r, ponieważ moduł BTM222 wymaga, aby każda komenda zakończona była najpierw właśnie tym znakiem.
Po zaprogramowaniu płytki Arduino należy uruchomić dostępny w pasku narzędzi monitor szeregowy, ustawić prędkość komunikacji na 19200, a obok ustawić „nowa linia”. Teraz w pasku wyślij należy wpisać AT i przycisnąć Enter, a moduł powinien odpowiedzieć OK. Tak można wysłać każdą z komend modułu BTM222 np. ATB?, która powoduje odesłanie sprzętowego identyfikatora układu.