- jeden moduł nadawczy umożliwia zdalne sterowanie czterema modułami odbiorczymi,
- nadajnik i odbiornik komunikują się w paśmie radiowym 433 MHz,
- przeznaczone do współpracy z komputerkiem Raspberry Pi,
- umożliwiają sterowanie dołączonymi urządzeniami poprzez komendy głosowe,
- zasilanie modułu nadawczego: 3,3 V, zasilanie modułu odbiorczego oraz dołączonego urządzenia: 230 V AC.
Moduł nadawczy
Schemat ideowy modułu nadawczego ZW-M1 został pokazany na rysunku 1. Złącze J1 służy do podłączenia napięcia zasilania o wartości 3,3 V, które jest filtrowane przez kondensatory C1 oraz C2. Do tego samego złącza należy podłączyć 4 sygnały sterujące, które trafiają do wejść scalonego enkodera U1 typu HT12E. Za pomocą 8-sekcyjnego przełącznika S1 ustawiany jest adres w enkoderze. Dzięki temu na sygnał enkodera będą reagowały tylko odbiorniki z ustawionym takim samym adresem. Rezystor R1 ustala częstotliwość pracy wbudowanego oscylatora.
Element oznaczony jako MOD1 to gotowy moduł radiowy nadajnika na pasmo 433 MHz, który zamienia sygnał dochodzący z enkodera na fale radiowe. Jeden moduł nadawczy umożliwia zdalne sterowanie czterema modułami odbiorczymi. Schemat płytki drukowanej modułu nadawczego został pokazany na rysunku 2.
Montaż nie jest skomplikowany i nie wymaga szczegółowego opisu, po zmontowaniu wygląda, jak na fotografii 1.
Moduł odbiorczy
Schemat ideowy modułu odbiorczego ZW-M2 został pokazany na rysunku 3. Do złącza J1 należy podłączyć napięcie sieciowe 230 V AC, które przez bezpiecznik F1 trafia na wejście kompaktowego modułu zasilacza U1 typu HLK-PM01. Napięcie wyjściowe z zasilacza ma wartość 5 V i jest dodatkowo filtrowane przez kondensatory C1 oraz C2. Element opisany jako MOD1 to gotowy moduł radiowy – odbiornik na pasmo 433 MHz. Odebrane sygnały trafiają do dekodera U2 typu HT12D. Przełącznik S1 służy do ustawienia adresu w dekoderze. Jeśli będzie taki sam jak w nadajniku, to urządzenia będą ze sobą współpracowały. Rezystor R1, podobnie jak w nadajniku, wyznacza częstotliwość pracy wbudowanego w układ U2 oscylatora.
Sygnał wyjściowy z dekodera trafia na przełącznik 4-sekcyjny S2. Załączenie jednej sekcji spowoduje, że odbiornik będzie reagował na odpowiadający mu sygnał sterujący doprowadzony do nadajnika. Za przełącznikiem sygnał trafia na rezystor R2 oraz tranzystor T1, który steruje pracą przekaźnika PK1. Zakłócenia generowane przez cewkę przekaźnika są tłumione przez diodę prostowniczą D1. Złącze J2 służy do podłączenia urządzenia, które będzie zdalnie sterowane. Będzie ono zasilane z tego samego napięcia, które doprowadzono na złącze J1.
Schemat płytki drukowanej modułu odbiorczego został pokazany na rysunku 4, a wygląd zmontowanego modułu odbiornika pokazuje fotografia 2.
Kształt płytki drukowanej jest dostosowany do wymiarów obudowy Z66 firmy Kradex.
Uruchomienie
Po zmontowaniu wszystkich modułów w pierwszej kolejności należy ustawić takie same adresy w enkoderze oraz dekoderze za pomocą przełączników 8-sekcyjnych. Następnie konieczne jest włączenie jednej z czterech sekcji przełącznika S2 w module odbiorczym – w ten sposób zostanie wybrany kanał sterujący. Przykładowe ustawienia pokazuje fotografia tytułowa.
Do modułu odbiorczego można już podłączyć urządzenie, które będzie sterowane zdalnie, a sam moduł należy dołączyć do zasilania. Moduł nadawczy należy połączyć z minikomputerem Raspberry Pi za pomocą przewodów zakończonych złączami żeńskimi. Zasilanie o napięciu 3,3 V jest dostępne na wyprowadzeniu nr 1, a masa np. na wyprowadzeniu nr 9 (rysunek 5). Wyprowadzenia sygnałów sterujących będzie definiowała docelowa aplikacja uruchomiona na Raspberry Pi.
Dla sprawdzenia działania i zademonstrowania możliwości zestawu uruchomimy na nim system sterowania komendami głosowymi. W tym celu dołączamy do komputerka mikrofon USB, a jedno z wejść modułu nadawczego łączymy z wyprowadzeniem nr 8 (GPIO14) komputerka. Przykładowy układ testowy prezentuje fotografia 3.
Aby komputer Raspberry Pi rozpoznawał polecenia głosowe, konieczne jest zainstalowanie odpowiednich bibliotek języka Python. W tym celu w terminalu wpisujemy polecenia:
pi@raspberrypi:~$ sudo pip3 install PyAudio
pi@raspberrypi:~$ sudo apt-get install flac
Teraz możemy pobrać program prezentujący działanie modułów zdalnego sterowania:
pi@raspberrypi:~/Desktop $ git clone https://github.com/ZW-Robotics/Moduly_zdalnego_sterowania.git
Na pulpicie pojawi się folder z programem testowym. Kod skryptu w Pythonie, który realizuje całą funkcjonalność, nie jest skomplikowany i został pokazany na listingu 1.
import speech_recognition as sr
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(14, GPIO.OUT)
while True:
r = sr.Recognizer()
with sr.Microphone() as źródło_dźwięku:
r.adjust_for_ambient_noise(źródło_dźwięku)
try:
print("Wydaj polecenie")
wypowiedziane_słowo = r.listen(źródło_dźwięku)
print("Przetwarzam ...")
print("Polecenie: \n" + r.recognize_google(wypowiedziane_słowo, language="pl-PL"))
except sr.UnknownValueError:
print("Nie rozpoznałem polecenia")
continue
polecenie = r.recognize_google(wypowiedziane_słowo, language="pl-PL")
if polecenie == "Włącz lampę":
GPIO.output(14, GPIO.LOW)
if polecenie == "Wyłącz lampę":
GPIO.output(14, GPIO.HIGH)
polecenie = ""
Aby algorytm rozpoznawania mowy działał poprawnie, komputer Raspberry Pi musi mieć aktywne połączenie z internetem. Więcej informacji na temat modułów zdalnego sterowania oraz film prezentujący ich działanie można znaleźć na mojej stronie internetowej www.zw-robotics.pl.
Zygmunt Wypich
zygmunt.wypich@zw-robotics.pl
- R1: 1 MΩ
- C1: 100 nF ceramiczny
- C2: 100 μF/16 V elektrolityczny
- U1: HT12E
- MOD1: nadajnik 433 MHz FS1000A
- J1: złącze goldpin męskie 6 pinów
- S1: przełącznik DIP switch 8 sekcji
- antena 433 MHz
- podstawka DIP 18 pin
- R1: 47 kΩ
- R2: 1 kΩ
- C1: 100 nF ceramiczny
- C2: 100 μF/16 V elektrolityczny
- D1: dioda prostownicza 1N4148
- T1: tranzystor BC337
- U1: zasilacz HLK-PM01
- U2: HT12D
- MOD1: odbiornik 433 MHz MX-RM-5V
- S1: przełącznik DIP switch 8 sekcji
- S2: przełącznik DIP switch 4 sekcje
- F1: złącze bezpiecznikowe PTF-78 szare + bezpiecznik 250 mA szybki
- J1, J2: złącze śrubowe 3 piny o rastrze 7,5 mm
- PK1: przekaźnik S3-5
- antena 433 MHz
- podstawka DIP 18 pin
- obudowa Kradex Z66
- wkręt do plastiku 2,5×8 mm
- wtyk sieciowy 230 V na przewód z uziemieniem
- gniazdo sieciowe 230 V na przewód z uziemieniem
- kabel 3×1,5 mm²