- Instalowanie pakietów wymaganych do komunikacji Bluetooth:
- Parowanie urządzeń z Raspberry Pi przez Bluetooth:
- Schemat obwodu:
- Sterowanie urządzeniem AC za pomocą aplikacji na Androida BlueTerm:
- Objaśnienie programowania:
Raspberry Pi jest bardzo popularne w projektach IoT ze względu na możliwość bezproblemowej komunikacji bezprzewodowej przez Internet. Raspberry Pi 3 ma wbudowane Wi-Fi i Bluetooth, a Bluetooth jest bardzo popularnym protokołem komunikacji bezprzewodowej. Więc dzisiaj zamierzamy sterować urządzeniami domowymi za pomocą smartfona za pomocą Raspberry Pi 3 i Bluetooth.
Tutaj używamy Raspberry Pi 3, które ma wbudowany Bluetooth, więc nie musimy używać żadnego zewnętrznego klucza USB Bluetooth. Poza tym potrzebujemy tylko modułów przekaźnikowych do tego projektu bezprzewodowej automatyki domowej. Tutaj używamy protokołu RFCOMM Bluetooth do komunikacji bezprzewodowej.
Programowanie dla Bluetooth w Pythonie jest zgodne z modelem programowania gniazd, a komunikacja między urządzeniami Bluetooth odbywa się za pośrednictwem gniazda RFCOMM. RFCOMM (komunikacja radiowa) to protokół Bluetooth, który zapewnia emulowane porty szeregowe RS-232, nazywany również emulacją portu szeregowego. Profil portu szeregowego Bluetooth jest oparty na tym protokole. RFCOMM jest bardzo popularny w aplikacjach Bluetooth ze względu na szerokie wsparcie i publicznie dostępne API. Jest powiązany z protokołem L2CAP.
Jeśli masz Raspberry Pi 2, musisz użyć zewnętrznego klucza Bluetooth lub modułu Bluetooth HC-06. Sprawdź nasze poprzednie projekty dotyczące korzystania z tych zewnętrznych urządzeń Bluetooth: Sterowanie GPIO Raspberry Pi za pomocą aplikacji Android przez Bluetooth i diody LED sterowane głosem za pomocą Raspberry Pi. Sprawdź także nasze poprzednie projekty Raspberry Pi oraz kilka dobrych projektów IoT.
Instalowanie pakietów wymaganych do komunikacji Bluetooth:
Przed rozpoczęciem musimy zainstalować oprogramowanie do konfiguracji komunikacji Bluetooth w Raspberry Pi. Powinieneś mieć zainstalowaną kartę pamięci Raspbian Jessie z Raspberry Pi. Przeczytaj ten artykuł, aby zainstalować Raspbian OS i rozpocząć pracę z Raspberry Pi. Więc teraz musimy najpierw zaktualizować Raspbian za pomocą poniższych poleceń:
sudo apt-get update sudo apt-get upgrade
Następnie musimy zainstalować kilka pakietów związanych z Bluetooth:
sudo apt-get install bluetooth blueman bluez
Następnie uruchom ponownie Raspberry Pi:
sudo reboot
BlueZ to projekt open source i oficjalny stos protokołów Bluetooth w systemie Linux. Obsługuje wszystkie podstawowe protokoły Bluetooth i teraz staje się częścią oficjalnego jądra Linuksa.
Blueman zapewnia interfejs Desktop do zarządzania i sterowania urządzeniami Bluetooth.
Wreszcie potrzebujemy biblioteki Python do komunikacji Bluetooth, abyśmy mogli wysyłać i odbierać dane przez RFCOMM przy użyciu języka Python:
sudo apt-get install python-bluetooth
Zainstaluj także biblioteki obsługujące GPIO dla Raspberry Pi:
sudo apt-get install python-rpi.gpio
Skończyliśmy z instalacją wymaganych pakietów do komunikacji Bluetooth w Raspberry Pi.
Parowanie urządzeń z Raspberry Pi przez Bluetooth:
Parowanie urządzeń Bluetooth, takich jak telefon komórkowy, z Raspberry Pi jest bardzo łatwe. Tutaj sparowaliśmy nasz smartfon z Androidem z Raspberry Pi. Wcześniej zainstalowaliśmy BlueZ w Pi, które udostępnia narzędzie wiersza poleceń o nazwie „bluetoothctl” do zarządzania naszymi urządzeniami Bluetooth.
Teraz otwórz narzędzie bluetoothctl za pomocą poniższego polecenia:
sudo bluetoothctl
Możesz sprawdzić wszystkie polecenia narzędzia bluetoothctl , wpisując „pomoc” . Na razie musimy wprowadzić poniższe komendy w podanej kolejności:
# włączenie # włączenie agenta # wykrywanie podczas # sparowanie podczas # skanowanie włączone
Po ostatnim poleceniu „skanuj” na liście zobaczysz swoje urządzenie Bluetooth (telefon komórkowy). Upewnij się, że Twój telefon komórkowy ma włączony Bluetooth i jest widoczny dla pobliskich urządzeń. Następnie skopiuj adres MAC swojego urządzenia i sparuj go za pomocą polecenia:
para
Następnie zostaniesz poproszony o podanie kodu dostępu lub kodu PIN w konsoli terminala, a następnie wpisz tam hasło i naciśnij klawisz Enter. Następnie po wyświetleniu monitu wpisz to samo hasło w telefonie komórkowym, a teraz pomyślnie sparujesz z Raspberry Pi. Wyjaśniliśmy również cały ten proces w filmie wideo podanym w poprzednim samouczku sterowania GPIO. Oto bezpośredni link do YouTube.
Jak wspomniano wcześniej, do sparowania telefonu komórkowego można również użyć interfejsu pulpitu. Po zainstalowaniu Blueman zobaczysz ikonę Bluetooth po prawej stronie pulpitu Raspberry Pi, jak pokazano poniżej, za pomocą której możesz łatwo wykonać parowanie.
Schemat obwodu:
Schemat obwodu dla tej opartej na Raspberry Pi automatyki domowej sterowanej przez Bluetooth jest bardzo prosty, właśnie podłączyliśmy pin sygnału wejściowego modułu przekaźnikowego do PIN 40 (GPIO 21) Raspberry Pi i pozostałe dwa styki (Vcc i GND modułu przekaźnika) do pinów 2 i 6 Raspberry Pi 3. Następnie podłączyliśmy żarówkę AC CFL do przekaźnika, jak pokazano na schemacie obwodu:
Jeśli jesteś nowy w Relay i chcesz dowiedzieć się więcej o Relay i jego połączeniach z urządzeniem AC, sprawdź ten artykuł.
Sterowanie urządzeniem AC za pomocą aplikacji na Androida BlueTerm:
Teraz po sparowaniu telefonu komórkowego musimy zainstalować aplikację na Androida do komunikacji z Raspberry Pi za pomocą adaptera szeregowego Bluetooth, abyśmy mogli kontrolować piny GPIO Raspberry Pi. Jak wspomniano wcześniej, protokół RFCOMM / SPP emuluje komunikację szeregową przez Bluetooth, dlatego zainstalowaliśmy tutaj aplikację BlueTerm, która obsługuje ten protokół.
Możesz także użyć dowolnej innej aplikacji terminala Bluetooth, która obsługuje komunikację przez gniazdo RFCOMM.
Teraz po pobraniu i zainstalowaniu aplikacji BlueTerm uruchom poniższy program w języku Python z terminala i jednocześnie podłącz sparowane urządzenie raspberrypi z aplikacji BlueTerm.
Po udanym połączeniu w prawym górnym rogu aplikacji zobaczysz połączony: raspberrypi, jak pokazano poniżej:
Teraz możesz po prostu wpisać „1” lub „0” z aplikacji BlueTerm, aby pin GPIO był odpowiednio WYSOKI i NISKI, co z kolei wyzwala moduł przekaźnika podłączony do tego pinu, który dodatkowo kontroluje żarówkę AC podłączoną do przekaźnika. Naciśnij 'q', aby wyjść z programu. Możesz używać klawiatury Google do pisania głosowego, aby sterować GPIO za pomocą głosu. Sprawdź pełną wersję demonstracyjną w filmie podanym na końcu.
W ten sposób możesz bezprzewodowo sterować urządzeniem AC za pomocą aplikacji na Androida przez Bluetooth. Zobacz także Jak korzystać z Bluetooth z Arduino.
Objaśnienie programowania:
Program Python do sterowania Raspberry Pi GPIO za pomocą aplikacji na Androida jest bardzo prosty i intuicyjny. Tylko musimy się trochę dowiedzieć o kodzie związanym z komunikacją Bluetooth RFCOMM. Najpierw musimy zaimportować bibliotekę gniazd Bluetooth, która pozwoli nam kontrolować Bluetooth za pomocą języka Python; zainstalowaliśmy bibliotekę do tego samego w poprzedniej sekcji.
importuj Bluetooth
Poniżej kod odpowiedzialny za komunikację Bluetooth:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM) port = 1 server_socket.bind (("", port)) server_socket.listen (1) client_socket, address = server_socket.accept () print "Accepted connection from", adres podczas 1: data = client_socket.recv (1024)
Tutaj możemy je zrozumieć wiersz po wierszu:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM): Tworzenie gniazda do komunikacji Bluetooth RFCOMM.
server_socket.bind (("", port): - Serwer wiąże skrypt na hoście '' z portem.
server_socket.listen (1) : serwer nasłuchuje, aby zaakceptować jedno połączenie na raz.
client_socket, address = server_socket.accept () : serwer akceptuje żądanie połączenia klienta i przypisuje adres mac do zmiennej adresu, client_socket to gniazdo klienta
data = client_socket.recv (1024): Odbierz dane przez gniazdo klienta client_socket i przypisz je do zmiennej data . Jednocześnie można odebrać maksymalnie 1024 znaki.
Na koniec po zakończeniu programowania zamknij połączenie klienta i serwera za pomocą poniższego kodu:
client_socket.close () server_socket.close ()
Cały inny kod jest łatwy i zrozumiały. Sprawdź pełny kod poniżej. Spróbuj zmodyfikować ten projekt i możesz go użyć do bezprzewodowego sterowania wieloma innymi rzeczami, samochodu robota przez telefon z Androidem lub możesz użyć głosu do sterowania światłami.
Sprawdź również nasze wiele typów projektów automatyki domowej wykorzystujących różne technologie i mikrokontrolery, takie jak: