Prosty moduł Bluetooth
Transkrypt
Prosty moduł Bluetooth
Projekty AVT Prosty moduł Bluetooth Pierwsze urządzenia bezprzewodowej transmisji danych były wykorzystywane do celów wojskowych. Dziś są bardzo popularne w rozwiązaniach konsumenckich. Obecnie większość mobilnych urządzeń powszechnego użytku ma wbudowany interfejs Bluetooth. Również w codziennym życiu konstruktora powstaje dużo projektów, z którymi trzeba się komunikować bezprzewodowo. Opisywane urządzenie jest prostym w obsłudze modułem, pozwalającym na wykorzystanie łączności Bluetooth z wykorzystaniem interfejsu UART. Układ umożliwia szybką zmianę prędkości transmisji dla modułu BTM-222 bez użycia dodatkowych narzędzi. Pozwala to na uproszczenie i przyśpieszenie realizacji połączenia pomiędzy urządzeniami. Można zapomnieć o problemach z konfiguracją i wysyłaniem komend AT. Należy wybrać tylko żądaną prędkość transmisji przez odpowiednie ustawienie mechanicznego obrotowego zadajnika oraz podłączyć zasilanie. Tabela 1 przedstawia możliwe prędkości transmisji. 3101 220 +3V3 100 nF C2 P$38_GND P$1_GND P$2_PVCC P$37_RF-IO-ANTENNA P$36_PIO(10) P$3_AIO(0) P$35_PIO(11) P$4_AIO(1) P$34_SPI-MISO P$5_PIO(0) P$33_SPI-CLK P$6_PIO(1) P$32_SPI-CSB P$7_PIO(2) P$31_SPI-MOSI P$8_PIO(3) P$30_UART-CTS P$9_PIO(4) P$29_GND P$10_GND P$11PIO(5) P$28_UART-RTS P$27_UART-TX P$12_PIO(6) P$26UART-RX P$13_PIO(7) P$25_PCM-CLK P$14_PIO(8) P$24_PCM-OUT P$15_PIO(9) P$16_RESET P$23_PCM-IN P$17_VCC P$22_PCM-SYNC P$18_GND P$21_USB-DN U6 P$20_USB-DP P$19_GND P$38 JP2 P$37 1 P$36 P$35 P$34 P$33 P$32 P$31 P$30 P$29 P$28 P$27 RA1_RX P$26 RA0_TX P$25 P$24 P$23 P$22 P$21 P$20 BTM-222 JP1 1 ZLACZE_TX MCLR 2 ZLACZE_RX 3 GND RA0_TX 4 RA1_RX 5 D6 POWER 6 M7 (1N4007- SMD) PIC12F1840 +3V3 1 8 VDD U4 VSS 7 RA0_TX C1 OSC1 2 OSC1 RA0/TX 6 RA1_RX OSC2 3 RA1/RX 100nF MCLR 4 OSC2 5 RA2 RA3/MCLR RA2 11.059200 MHz C3 OSC1 +3V3 OSC2 C4 2 x 22pF +3V3 ERD710RM RA2 1 1 2 C0 3 4 +3V3 Sierpień 2014 Q1 C9 1k 100nF 10uF 1 2 3 4 +3V3 C8 JP3 R11 U3 8 C1 2 6 5 4 5k1 D1 D5 5V1 R20 ZLACZE_RX P$1 P$2 P$3 P$4 P$5 P$6 P$7 P$8 P$9 P$10 P$11 P$12 P$13 P$14 P$15 P$16 P$17 P$18 P$19 4 +3V3 R9 2x BC847 U2 GND OUT 2 R2 1k1 RA0_TX OUT R1 1 IN 100nF +5V T3 3 10k T1 T2 2k2 R19 1k R18 2k2 R17 100k RA1_RX R21 T4 2k2 2 x BC847 22 R13 2k2 R12 100k 5V1 D4 R16 +3V3 +3V3 C10 +3V3 +3V3 +5V R15 ZLACZE_TX 220 C7 100nF 10uF LM1117IMP-3.3 wanych podczas transmisji w interfejsie RS-232. Sygnał zasilania trafia do bloku składającego się z dwóch głównych układów U1 oraz U2. Są to stabilizatory napięć LM1117MP-5.0 oraz LM1117MP-3.3. Dodatne napięcie zasilania, który może mieścić się w granicach od 6,5 VDC do 20 VDC, przez diodę D6 (zabezpieczenie przed R8 10k C6 4 +5V 3V3 U1 GND OUT +5V 2 D2 OUT L-934GD R5 1k 1 100nF IN R14 10k 3 D3 LM1117IMP-5.0 POWER C5 POWER Rys. 1 Prędkość transmisji [bps] 9600 19200 38400 57600 115200 230400 460800 R4 2k2 Układ składa się z bloku Ustawienie zasilania, bloku komunika- zadajnika cyjnego (transmisyjnego), 1 części logicznej, bloku 2 translatora napięć oraz złą3 czy. Schemat układu przed4 stawiono na rysunku 1. 5 Złącze JP3 służy do pod6 łączenia zasilania DC oraz 7 sygnałów transmisyjnych RX (ang. receive) oraz TX Tabela 1 (ang. transmit) wykorzysty- D7 3V3 Opis układu +3V3 E l e k t r o n i k a d l a Ws z y s t k i c h Projekty AVT Rys. 2 Rys. 3 odwrotnym podłączeniem zasilania) trafia Nóżki C0 oraz C1 są wewnętrznie do układu U1, gdzie na wyjściu uzyskuje połączone ze sobą na stałe. Po ustasię napięcie 5V. Następnie napięcie 5V wieniu liczby 1 na zadajniku, wewnątrz trafia na wejście układu U2 gdzie uzy- zostaje połączone wyprowadzenie 1 oraz Rys. 4 skuje się napięcie 3,3V. Kondensatory C. Gdy wybierzemy liczbę 3, wówczas C5–C10 służą do filtracji zakłóceń linii zostają wewnętrznie połączone wypro- Program napięć zasilających. Dioda LED D3 służy wadzenie 1, 2 oraz C, co pokazano na Cały kod programu został napisany do informacji, czy zostało podłączone rysunku 3. Aby zminimalizować liczbę w języku C przy użyciu nowego środonapięcie zasilania do złącza JP3. Zasto- pinów, wykorzystano rozwiązanie z dziel- wiska programistycznego firmy Microsowanie złącza JP1 do programowania nikiem napięcia, co przedstawia rysunek chip o nazwie MPLABX. Do kompilacji pamięci mikrokontrolera umożliwia wgra- 4. Rysunek 4a odpowiada konfiguracji wykorzystano kompilator HI-TECH. Kod nie nowego programu do mikrokontrolera dzielnika napięcia po wybraniu zadaj- źródłowy (do pobrania z Elportalu) jest po ewentualnych modyfikacjach obec- nikiem liczby 1, natomiast rysunek 4b bardzo prosty i składa się tylko z kilku odpowiada konfiguracji dzielnika napię- funkcji, dlatego wszystko zostało zawarte nego. Sercem urządzenia jest układ U4 PIC- cia po wybraniu zadajnikiem liczby 3. w pliku main.c oraz pliku nagłówkowym 12LF1840 – 8-bitowy mikrokontroler Dzięki temu powstają różne konfigura- hardef.h. Tabela 2 przedstawia opis funkfirmy Microchip w 8-pinowej obudowie. cje dzielnika napięciowego. Przy odpo- cji występujących w programie. Kondensator C1 o wartości 100nF służy do wiednim doborze rezystorów możemy Po podłączeniu zasilania jest uruchafiltracji zakłóceń. Rezystor R1 o wartości za pomocą przetwornika ADC odczytać miany mikrokontroler, który zaczyna rea10kΩ służy do wymuszenia wysokiego ustawioną na zadajniku liczbę. lizację zadań od ustawiania bitów konfiguUkład U6 służy do komunikacji bez- racyjnych za pomocą makra __CONFIG stanu logicznego na linii MCLR (Reset). Największą stabilność oraz dokładność przewodowej. Wykorzystano popularny i przejścia do funkcji main.c. W pierwpracy układu mikroprocesorowego uzysku- moduł BTM-222 firmy Rayson. Układ szej kolejności są konfigurowane wszystje się przy użyciu zewnętrznego rezonatora jest połączony z mikrokontrolerem za kie porty I/O zgodnie z ich funkcjami. kwarcowego. W urządzeniu zastosowano pomocą linii RX oraz TX. Diody D2 oraz Następnie jest inicjalizowany przetwornik rezonator kwarcowy 11,059200 MHz ze D7 zabezpieczają wejście modułu Blueto- analogowo-cyfrowy. Następnie jest dokowzględu na szeroki zakres prędkości trans- oth. Dioda LED D1 służy do sygnalizo- nywany pomiar napięcia (read_adc()). misji ustawianych w module Bluetooth wania nawiązania połączenia z układem Wartość liczbowa otrzymana z pomiaru BTM-222. Kondensatory C3 i C4 o warto- nadrzędnym. Kondensator C2 o wartości jest porównywana ze zdefiniowanymi staści 22pF dobrano zgodnie z dokumentacją 100nF filtruje zakłócenia zasilania. Złącze łymi w pliku harddef.h. Przy porównywadostarczoną przez producenta. JP2 służy do montażu anteny. niu zastosowano niewielką histerezę na Do wybrania prędkości transmisji Układ Bluetooth jest zasilany napię- wypadek drobnych odchyleń zmierzonego służy miniaturowy przełącznik kodujący ciem 3,3V. Założenie projektowe okre- napięcia. Dzięki temu znamy aktualną do montażu SMD. Układ zaprojektowa- ślało komunikację z układami zasilany- liczbę wybraną na zadajniku. W kolejnym no pod zadajnik kodu typu ERD710RM mi napięciem 5V. Dlatego zbudowano kroku jest sprawdzana prędkość transmi[1]. Schemat wyprowadzeń oraz wygląd dla linii RX, TX dwa translatory napięć sji, z którą aktualnie pracuje moduł BTMzadajnika przedstawia rysunek 2. z 3,3V na 5V. Każdy z nich składa się 222. Zaczynając od inicjalizacji interfejsu Zadajnik działa na zasadzie konwersji z dwóch tranzystorów BC847. Gdyby RS-232 w mikrokontrolerze na najniższą liczby z systemu dziesiętnego na binarny został użyty tylko jeden tranzystor, wów- prędkość 9600bps i następnie jest realizokod dziesiętny (ang. Binary Coded Deci- czas sygnał byłby zanegowany. Rezystory wane wywołanie funkcji odpytaj(), dzięki mal). Kod ten stanowi połączenie zalet R15, R20 o wartości 220Ω oraz diody D4, czemu otrzymujemy informację o prędkodwójkowego kodowania z czytelnością D5 służą do zabezpieczenia urządzenia ści modułu Bluetooth. Jeżeli moduł został liczb dziesiętnych. Zasada działania pole- przed uszkodzeniem. wcześniej ustawiony na tę prędkość, wówga na kodowaniu czas poprawnie nam „odpowie”. Wyśle cyfry dziesiętnej Tabela 2 nam określoną liczbę dla tej prędkości. za pomocą czteFunkcja Opis realizowanych zadań rech bitów. Nóżki init_adc() Funkcja odpowiedzialna za inicjalizację przetwornika analogowo-cyfrowego układu stanovoid init_rs232(unsigned int wart) Funkcja odpowiedzialna za inicjalizację transmisji szeregowej. Jako wią odpowiednie parametr przyjmuje wartość odpowiadającej prędkości transmisji wagi. Rysunek 3 unsigned int read_adc() Funkcja uruchamia pomiar napięcia i zwraca wartość cyfrową przedstawia stany void putch(unsigned char data) Funkcja wysyła znak za pomocą interfejsu RS-232 do modułu BTM-222 nóżek zadajnika Funkcja realizuje wysyłanie komend AT do modułu bluetooth z zapytaniem w zależności od unsigned char odpytaj() o aktualną prędkość wybranej cyfry. E l e k t r o n i k a d l a Ws z y s t k i c h Sierpień 2014 23 Projekty AVT K R1 C1 C3 C9 C4 Q1 C7 U1 U2 R11 D3 E D6 Projekt B D1 R 24 JP3 C5 C6 C10 C8 D5 R20 R15 R16 R13 R12 R17 R18 T1 D4 R19 W innym przypadku otrzymana odpowiedź z modułu będzie nieinterpretowana. Jeżeli odpowiedź modu- Rys. 5 Komenda Opis łu nie zgadza ATB? Zapytanie o adres interfejsu się z tym, co ATP Zmiana hasła modułu Tabela 3 było spodziewane, ATZ0 Przywrócenie ustawień domyślnych wówczas interfejs ATR0 Przejście do trybu Master RS-232 w mikro- Rys. 7 kontrolerze jest strona lutowania strona elementów T4 JP1 inicjalizowany na R21 C2 kolejną prędkość U4 T3 19200. Sytuacja BTM-222 się powtarza do U6 momentu, aż otrzyU3 mana z modułu R5 R9 R8 R4 odpowiedź odnośD2 D7 JP2 T2 R2 R14 nie do prędkości zgodzi się z zakładaną. Np. odpowiedź wysyłana do modułu za każdym razem, modułu wysłana na prędkości 19200 gdy podłączymy zasilanie. powinna wynosić 2 [2]. Jeżeli to się zgadza, wówczas jest realizowany ostat- Zmiany, modyfikacje ni krok: Porównanie liczby ustawionej Jeżeli wystąpi konieczność większych na zadajniku, która odpowiada nowej zmian w konfiguracji modułu, wówczas prędkości wybranej przez użytkownika, do złącza JP3 podłączamy konwerter z aktualną ustawioną prędkością pracy USB/UART (np. kit AVT-1775) i używamodułu. Jeżeli prędkość żądana zgadza jąc np. terminalu Putty, ustawiamy odposię z aktualną, wówczas konfiguracja wiednie parametry komendami AT. Tabezostaje zakończona. W innym przypad- la 3 przedstawia najważniejsze komendy ku moduł jest konfigurowany na nową AT modułu BTM-222. prędkość przez wysłanie odpowiedniego ciągu komend AT. Rysunek 5 przed- Montaż i uruchomienie stawia proces konfiguracji. Widzimy, że Rysunek 6 przedstawia obie strony płytki. moduł poprzednio pracował na prędko- W Elportalu, wśród materiałów dodatkości 38400bps (na zapytanie o prędkość wych do tego numeru, została umieszczokomendą ATL? zwrócił 3) i następnie na dokumentacja płytki (EAGLE) oraz został skonfigurowany na prędkość oprogramowanie. Montaż nie jest trudny, ale wyma9600bps (wysłanie komendy ATL1). W programie jest zdefiniowana stała ga dokładności i staranności. Wykonanie symboliczna NAZWA. Pozwala ona na takiej dwustronnej płytki PCB w domu zmianę aktualnej nazwy modułu na nową. może być kłopotem, ponieważ przelotki Należy zmienić wartość z 0 na 1 tej stałej są także pod modułem Bluetooth. To staoraz zmienić aktualną nazwę modułu na nowi problem do połączenia obu warstw nową. Wówczas trzeba ponownie zapro- metodą lutowania drucika z każdej strony. gramować mikrokontroler, co spowoduje Przy montażu i lutowaniu układów trzeba wysłanie odpowiedniego ciągu komend zastosować metodę od najmniejszego do AT do modułu. Ostatni krok to ponowna największego. Istnieje możliwość zamonzmiana stałej symbolicznej NAZWA z 1 towania zadajnika przewlekanego. Należy na 0 i zaprogramowanie mikrokontrolera w pierwszej kolejności zagiąć nóżki pod jeszcze raz. Dzięki temu nazwa nie będzie spód układu, a następnie przylutować. Są L A M Wykaz elementów R1, R8 ������������������������������������������������ 10kW R2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1,1kW R4, R13, R16, R18, R21 . . . . . . . . . . 2,2kW R5, R11, R19���������������������������������������� 1kW R7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 R9 . . . . . . . . . . . . . . . . . . . . . . . . . . . 5,1kW R12, R17 ��������������������������������������������� 100k R14 . . . . . . . . . . . . . . . . . . . . . . . . . . 10kW R15, R20 ����������������������������������������������� 220 C1, C2, C5, C6, C8, C10 ������������������ 100nF C3, C4������������������������������������������������� 22pF C7, C9������������������������������������������������� 10uF D1, D3���������������������������������������������������LED D2, D7��������������������������������������������������3,3V D4, D5���������������������������������������������������5V1 D6 . . . . . . . M7=1N4007SMD lub podobna T1, T2, T3, T4�������������������������������������BC847 Q1 . . . . . . . . . . . . . . . . . . . . 11.059200MHz JP1, JP2, JP3����������������������������������� Pinhead U1 . . . . . . . . . . . . . . . . . . . LM1117IMP-5.0 U2 . . . . . . . . . . . . . . . . . . . LM1117IMP-3.3 U3 . . . . . . . . . . . . . . . . . . . . . . ERD710RM U4 . . . . . . . . . . . . . . . . . . . . . . PIC12F1840 U6 . . . . . . . . . . . . . . . . . . . . . . . . BTM-222 Komplet podzespołów z płytką jest dostępny w sieci handlowej AVT jako kit szkolny AVT-3101. różne wersje wyprowadzeń zadajników. Należy zwrócić uwagę, aby były takie same. Po zmontowaniu całego układu należy zaprogramować mikrokontroler, pamiętając o możliwości zaprogramowania nowej nazwy. Po tej operacji układ jest gotowy do pracy. Należy pamiętać, że do pinu 1 w złączu JP3 podłączamy sygnał TX, a do pinu 2 sygnał RX. Jeżeli urządzenie, do którego podłączymy układ, wysyła dane zaraz po włączeniu zasilania, wówczas może to spowodować błąd przy zmianie prędkości transmisji modułu. Wówczas należy odłączyć linie RX, TX przed włączeniem zasilania. Po chwili można linie ponownie podłączyć. Pamiętać trzeba, że domyśle hasło modułu to 1234. Tomasz Gilewski [email protected] Literatura: [1] http://download.maritex.com.pl/pdfs/ re/ERD710RMZ.pdf [2] dokumentacja BTM-222 A Sierpień 2014 E l e k t r o n i k a d l a Ws z y s t k i c h