- Moduł nadajnika i odbiornika RF 433 MHz:
- Potrzeba kodera i dekoderów:
- Wymagane składniki:
- Schemat obwodu:
- Objaśnienie kodu:
Witam wszystkich, Dzisiaj w tym projekcie połączymy moduł odbiornika i nadajnika RF z mikrokontrolerem PIC i będziemy komunikować się bezprzewodowo między dwoma różnymi mikrokontrolerami pic.
W tym projekcie będziemy robić następujące rzeczy: -
- Użyjemy PIC16F877A dla nadajnika i PIC18F4520 dla sekcji Odbiornik.
- Połączymy klawiaturę i wyświetlacz LCD z mikrokontrolerem PIC.
- Po stronie nadajnika połączymy klawiaturę z PIC i prześlemy dane. Po stronie odbiornika bezprzewodowo otrzymamy dane i pokażemy, który klawisz jest wciśnięty na LCD.
- Będziemy używać kodera i dekodera IC do przesyłania 4-bitowych danych.
- Częstotliwość odbioru wyniesie 433 MHz przy użyciu taniego modułu RF TX-RX dostępnego na rynku.
Zanim przejdziemy do schematów i kodów, przyjrzyjmy się działaniu modułu RF z układami scalonymi enkodera-dekodera. Przejrzyj również poniższe dwa artykuły, aby dowiedzieć się, jak połączyć wyświetlacz LCD i klawiaturę z mikrokontrolerem PIC:
- Połączenie LCD z mikrokontrolerem PIC przy użyciu MPLABX i XC8
- Interfejs klawiatury 4x4 Matrix z mikrokontrolerem PIC
Moduł nadajnika i odbiornika RF 433 MHz:
To są moduły nadajnika i odbiornika, których używamy w projekcie. Jest to najtańszy moduł dostępny dla 433 MHz. Moduły te przyjmują dane szeregowe w jednym kanale.
Jeśli widzimy specyfikacje modułów, nadajnik jest przystosowany do pracy 3,5-12 V jako napięcie wejściowe, a odległość transmisji wynosi 20-200 metrów. Nadaje w protokole AM (Audio Modulation) z częstotliwością 433 MHz. Możemy przesyłać dane z prędkością 4KB / S przy mocy 10mW.
Na górnym obrazku widać wyprowadzenie modułu nadajnika. Od lewej do prawej piny to VCC, DATA i GND. Możemy też dodać antenę i przylutować ją w miejscu zaznaczonym na powyższym obrazku.
Dla specyfikacji odbiornika, odbiornik ma znamionowe napięcie 5 V DC i prąd spoczynkowy 4MA jako wejście. Częstotliwość odbioru wynosi 433,92 MHz z czułością -105DB.
Na powyższym obrazku widzimy wyprowadzenie modułu odbiornika. Cztery piny są od lewej do prawej, VCC, DATA, DATA i GND. Te dwa środkowe piny są wewnętrznie połączone. Możemy użyć jednego lub obu. Ale dobrą praktyką jest użycie obu do obniżenia sprzężenia szumowego.
Ponadto w arkuszu danych nie wspomniano o jednej rzeczy, zmienna cewka indukcyjna lub POT w środku modułu służy do kalibracji częstotliwości. Jeśli nie mogliśmy odebrać przesłanych danych, istnieje możliwość, że częstotliwości nadawcze i odbiorcze nie są dopasowane. To jest obwód RF i musimy dostroić nadajnik do punktu idealnie nadawanej częstotliwości. Podobnie jak nadajnik, ten moduł ma również port anteny; możemy przylutować drut w kręgach dla dłuższego odbioru.
Zasięg transmisji zależy od napięcia dostarczanego do Nadajnika i długości anten po obu stronach. W tym konkretnym projekcie nie użyliśmy anteny zewnętrznej i zastosowaliśmy 5 V po stronie nadajnika. Sprawdziliśmy z odległością 5 metrów i działało idealnie.
Moduły RF są bardzo przydatne w komunikacji bezprzewodowej na duże odległości. Tutaj pokazano podstawowy obwód nadajnika i odbiornika RF. Zrealizowaliśmy wiele projektów z wykorzystaniem modułu RF:
- Urządzenia domowe sterowane radiowo
- Samochodzik sterowany przez Bluetooth za pomocą Arduino
- Zdalnie sterowane diody LED za pomocą Raspberry Pi
Potrzeba kodera i dekoderów:
Ten czujnik RF ma kilka wad: -
- Komunikacja w jedną stronę.
- Tylko jeden kanał
- Bardzo zakłócenia hałasu.
Z powodu tej wady zastosowaliśmy układy scalone kodera i dekodera, HT12D i HT12E. D oznacza dekoder, który będzie używany po stronie odbiornika, a E oznacza koder, który będzie używany po stronie nadajnika. Te układy scalone zapewniają 4 kanały. Również ze względu na kodowanie i dekodowanie poziom szumów jest bardzo niski.
Na powyższym obrazku lewy to HT12D dekoder, a prawy HT12E, koder. Oba układy scalone są identyczne. A0 do A7 są używane do specjalnego kodowania. Możemy użyć pinów mikrokontrolera do sterowania tymi pinami i ustawiania konfiguracji. Te same konfiguracje należy dopasować po drugiej stronie. Jeśli obie konfiguracje są dokładne i dopasowane, możemy otrzymać dane. Te 8 pinów można podłączyć do Gnd lub VCC lub pozostawić otwarte. Niezależnie od konfiguracji, które robimy w koderze, musimy dopasować połączenie w dekoderze. W tym projekcie zostawimy otwarte 8 pinów zarówno dla kodera, jak i dekodera. 9 i 18 pin to odpowiednio VSS i VDD. Możemy użyć pin VT wHT12D jako cel powiadamiania. W tym projekcie go nie wykorzystaliśmy. TE kołek transmisji włączyć lub wyłączyć PIN.
Ważną częścią jest pin OSC gdzie musimy podłączyć rezystory to zapewnienie oscylacji do enkodera i dekodera. Dekoder wymaga większych oscylacji niż dekoder. Zwykle wartość rezystora enkodera będzie wynosić 1Meg, a wartość dekodera to 33k. Użyjemy tych rezystorów w naszym projekcie.
Pin DOUT jest pinem danych nadajnika RF na HT12E, a pin DIN w HT12D służy do podłączenia pin danych modułu RF.
W HT12E, AD8 do AD11 to czterokanałowe wejście, które jest konwertowane i przesyłane szeregowo przez moduł RF, a dokładnie odwrotna rzecz dzieje się w HT12D, dane szeregowe są odbierane i dekodowane, i otrzymujemy 4-bitowe wyjście równoległe na 4 pinach D8 do D11.
Wymagane składniki:
- 2 - Deska do chleba
- 1 - LCD 16x2,5
- 1 - Klawiatura
- Para HT12D i HT12E
- Moduł RF RX-TX
- 1-10K preset
- Rezystor 2 - 4,7 k
- Rezystor 1- 1 M.
- 1- Rezystor 33k
- 2- kondensatory ceramiczne 33pF
- Kryształ 1 - 20 MHz
- Bergsticks
- Kilka drutów jednożyłowych.
- PIC16F877A MCU
- PIC18F4520 MCU
- Śrubokręt do sterowania potencjometrem częstotliwości musi być odizolowany od ludzkiego ciała.
Schemat obwodu:
Schemat obwodu po stronie nadajnika (PIC16F877A):
Użyliśmy PIC16F877A do celów nadawczych. Klawiatura Hex połączone przez PORTB i 4 kanałów połączonym przez ostatnie 4 bity PORTD. Dowiedz się więcej o podłączaniu klawiatury 4x4 Matrix tutaj.
Rozłóż w następujący sposób-
1. AD11 = RD7
2. AD10 = RD6
3. AD9 = RD5
4. AD8 = RD4
Schemat obwodu po stronie odbiornika (PIC18F4520):
Na powyższym obrazku pokazano obwód odbiornika. Wyświetlacz LCD jest podłączony przez PORTB. Użyliśmy wewnętrzny oscylator z PIC18F4520 dla tego projektu. W 4 kanały są połączone w ten sam sposób co poprzednio w układzie nadajnika. Dowiedz się więcej o podłączaniu wyświetlacza LCD 16x2 do mikrokontrolera PIC.
To jest strona nadajnika -
A strona odbiornika w oddzielnym makiet -
Objaśnienie kodu:
Istnieją dwie części kodu, jedna dotyczy nadajnika, a druga odbiornika. Możesz pobrać pełny kod stąd.
Kod PIC16F877A dla nadajnika RF:
Jak zawsze najpierw musimy ustawić bity konfiguracyjne w mikrokontrolerze pic, zdefiniować kilka makr, w tym biblioteki i częstotliwość kryształu. Port AD8-AD11 enkodera ic jest zdefiniowany jako RF_TX w PORTD. Możesz sprawdzić kod dla wszystkich w pełnym kodzie podanym na końcu.
Użyliśmy dwóch funkcji, void system_init (void) i void encode_rf_sender (dane char).
System_init służy do inicjalizacji pin i klawiatury inicjalizacji. Inicjalizacja klawiatury jest wywoływana z biblioteki klawiatury.
Port manipulatora jest również zdefiniowany w manipulatorze. H. Zrobiliśmy PORTD jako wyjście używając TRISD = 0x00 i ustawiliśmy port RF_TX jako 0x00 jako stan domyślny.
void system_init (void) { TRISD = 0x00; RF_TX = 0x00; keyboard_initialization (); }
W encode_rf_sender zmieniliśmy stan 4 pinów w zależności od wciśniętego przycisku. Stworzyliśmy 16 różnych wartości szesnastkowych lub stanów PORTD w zależności od ( 4x4) 16 wciśniętych różnych przycisków.void encode_rf_sender (dane znaków) { if (dane == '1') RF_TX = 0x10; if (dane == '2') RF_TX = 0x20; if (data == '3') …………... …. …
W funkcji głównej najpierw otrzymujemy dane wciśnięte klawiszem klawiatury za pomocą funkcji switch_press_scan () i przechowujemy dane w zmiennej kluczowej. Następnie zakodowaliśmy dane za pomocą funkcji encode_rf_sender () i zmieniliśmy status PORTD.
Kod PIC18F4520 dla odbiornika RF:
Jak zawsze, najpierw ustawiamy bity konfiguracyjne w PIC18f4520. Trochę różni się od PIC16F877A, możesz sprawdzić kod w załączonym pliku zip.
Dołączyliśmy plik nagłówkowy LCD. Zdefiniowano połączenie portu D8-D11 układu scalonego dekodera przez PORTD przy użyciu linii #define RF_RX PORTD, połączenie jest takie samo, jak używane w sekcji Encoder. Deklaracja portu LCD jest również wykonywana w pliku lcd.c.
#zawierać
Jak stwierdzono wcześniej używamy wewnętrznego oscylatora dla 18F4520 użyliśmy systemu _ startowych funkcji gdzie skonfigurowany do OSCON rejestr 18F4520 ustawienie wewnętrznego oscylatora na 8 MHz. Ustawiliśmy również bit TRIS dla obu pinów LCD i pinów dekodera. Ponieważ HT - 12D zapewnia wyjście na portach D8-D11, musimy skonfigurować PORTD jako wejście, aby odebrać wyjście.
void system_init (void) { OSCCON = 0b01111110; // 8Mhz,, intosc // OSCTUNE = 0b01001111; // Włącz PLL, Max prescaler 8x4 = 32Mhz TRISB = 0x00; TRISD = 0xFF; // Ostatnie 4 bity jako bit wejściowy. }
Skonfigurowaliśmy rejestr OSCON na 8 MHz, ustawiliśmy również port B jako wyjście, a port D jako wejście.
Poniższa funkcja jest wykonana przy użyciu dokładnej logiki odwrotnej używanej w poprzedniej sekcji nadajnika. Tutaj otrzymujemy tę samą wartość szesnastkową z portu D i na podstawie tej wartości szesnastkowej identyfikujemy, który przełącznik został wciśnięty w sekcji nadajnika. Potrafimy zidentyfikować każde naciśnięcie klawisza i przesłać odpowiedni znak do wyświetlacza LCD.
void rf_analysis (unsigned char recived_byte) { if (recived_byte == 0x10) lcd_data ('1'); if (recived_byte == 0x20) lcd_data ('2'); if (recived_byte == 0x30) ……. ….. …… ………..
Lcd_data nazywa z lcd.c pliku.
W funkcji głównej najpierw inicjalizujemy system i LCD. Wzięliśmy zmiennej bajt, a przechowywana wartość hex otrzymane od portu D. Następnie za pomocą funkcji rf_analysis możemy wydrukować znak na LCD.
void main (void) { bajt bez znaku = 0; system_init (); lcd_init (); while (1) { lcd_com (0x80); lcd_puts ("CircuitDigest"); lcd_com (0xC0); bajt = RF_RX; rf_analysis (bajt); lcd_com (0xC0); } powrót; }
Przed uruchomieniem dostroiliśmy obwód. Najpierw wcisnęliśmy przycisk „ D ” na klawiaturze. Tak więc 0xF0 jest stale przesyłany przez nadajnik RF. Następnie dostroiliśmy obwód odbiornika, aż na wyświetlaczu LCD pojawi się litera „ D ”. Czasami moduł jest odpowiednio dostrojony od producenta, innym razem nie. Jeśli wszystko jest prawidłowo podłączone i nie uzyskuje się naciśnięcia przycisku na wyświetlaczu LCD, istnieje możliwość, że odbiornik RF nie jest dostrojony. Użyliśmy izolowanego śrubokręta, aby zmniejszyć możliwości złego dostrojenia z powodu indukcyjności naszego ciała.
W ten sposób można połączyć moduł RF z mikrokontrolerem PIC i bezprzewodowo komunikować się między dwoma mikrokontrolerami PIC za pomocą czujnika RF.
Możesz pobrać pełny kod nadajnika i odbiornika stąd, a także obejrzeć poniższy film demonstracyjny.