Spisu treści:
- Krok 1: Modyfikacje nadajnika
- Krok 2: Modyfikacje odbiornika: dodanie PIC16F887 i HD44780 LCD
- Krok 3: Kilka referencji…
- Krok 4: Wnioski i przyszła praca
Wideo: Komunikacja bezprzewodowa przy użyciu tanich modułów RF 433 MHz i mikrokontrolerów Pic. Część 2: 4 kroki (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
W pierwszej części tej instrukcji zademonstrowałem, jak zaprogramować PIC12F1822 za pomocą MPLAB IDE i kompilatora XC8, aby wysłać prosty ciąg bezprzewodowo za pomocą tanich modułów TX/RX 433 MHz.
Moduł odbiornika został podłączony przez przejściówkę kabla USB do UART TTL do komputera PC, a otrzymane dane były wyświetlane w RealTerm. Komunikacja odbywała się z prędkością 1200 bodów, a maksymalny osiągnięty zasięg to około 20 metrów przez ściany. Moje testy wykazały, że w zastosowaniach, w których nie ma potrzeby dużej przepływności i dużego zasięgu oraz ciągłej transmisji, moduły te sprawdzają się wyjątkowo dobrze.
Druga część tego projektu pokazuje, jak dodać mikrokontroler PIC16F887 i moduł LCD 16×2 znaków do odbiornika. Co więcej, w nadajniku stosuje się prosty protokół z dodatkiem kilku bajtów przedwzmacniacza. Bajty te są niezbędne, aby moduł RX wyregulował wzmocnienie przed uzyskaniem rzeczywistego ładunku. Po stronie odbiornika PIC jest odpowiedzialny za pobieranie i weryfikację danych wyświetlanych na ekranie LCD.
Krok 1: Modyfikacje nadajnika
W pierwszej części nadajnik wysyłał prosty ciąg co kilka ms, używając ośmiu bitów danych, bitu startu i bitu stopu z szybkością 1200 bitów na sekundę. Ponieważ transmisja była prawie ciągła, odbiorca nie miał problemów z dopasowaniem wzmocnienia do odbieranych danych. W drugiej części oprogramowanie jest modyfikowane tak, aby transmisja odbywała się co 2,3 sekundy. Osiąga się to za pomocą przerwania zegarowego watchdoga (ustawionego na 2,3 s) w celu wybudzenia mikrokontrolera, który przechodzi w tryb uśpienia pomiędzy każdą transmisją.
Aby odbiornik miał czas na dostrojenie wzmocnienia, kilka bajtów preambuły z krótkimi czasami LO "(0Xf8)(0Xf8)(0Xf8)(0Xf8)(0Xf8)(0Xfa)" jest wysyłanych przed rzeczywistymi danymi. Ładunek jest następnie wskazywany przez bajt startu „&” i bajt stopu „*”.
Stąd prosty protokół jest opisany następująco:
(0Xf8)(0Xf8)(0Xf8)(0Xf8)(0Xf8)(0Xfa)&Witaj InstWorld!*
Co więcej, między V+ i GND modułu RF dodawany jest kondensator tantalowy odsprzęgający 10uF, aby pozbyć się tętnienia spowodowanego przez moduł podwyższający napięcie DC-DC.
Szybkość transmisji pozostała taka sama, jednak moje testy wykazały, że również przy 2400 bodach transmisja była wydajna.
Krok 2: Modyfikacje odbiornika: dodanie PIC16F887 i HD44780 LCD
Konstrukcja odbiornika została oparta na PIC16F887, ale można użyć innego PIC z niewielkimi modyfikacjami. W moim projekcie użyłem tego 40-pinowego μC, ponieważ będę potrzebował dodatkowych pinów do przyszłych projektów opartych na tym projekcie. Wyjście modułu RF jest podłączone do pinu UART rx, natomiast wyświetlacz LCD 16x2 (HD44780) jest podłączony przez piny PORTB b2-b7 do wyświetlania odbieranych danych.
Podobnie jak w części 1, otrzymane dane są również wyświetlane w RealTerm. Osiąga się to za pomocą pinu UART tx, który jest podłączony przez przejściówkę kabla USB do UART TTL do komputera PC.
Zaglądając do oprogramowania układowego, gdy ma miejsce przerwanie UART, program sprawdza, czy odebrany bajt jest bajtem startowym ('&'). Jeśli tak, zaczyna zapisywać kolejne bajty, aż do przechwycenia bajtu stopu ('*'). Gdy tylko uzyskamy całe zdanie i jeśli jest ono zgodne z opisanym wcześniej prostym protokołem, jest ono wysyłane na ekran lcd, a także na port tx UART.
Przed odebraniem bajtu startowego odbiornik dostosował już swoje wzmocnienie za pomocą poprzedzających bajtów preambuły. Mają one kluczowe znaczenie dla płynnego działania odbiornika. Przeprowadzane jest proste sprawdzenie błędów przepełnienia i ramkowania, jednak jest to tylko podstawowa implementacja obsługi błędów UART.
Pod względem sprzętowym do odbiornika potrzeba kilku części:
1 x PIC16F887
1xHD44780
1 x moduł RF Rx 433Mhz
Kondensator tantalowy 1 x 10 μF (odsprzęganie)
Trymer 1 x 10 K (jasność czcionki LCD)
1 x rezystor 220 Ω 1/4 W (podświetlenie LCD)
1x1 KΩ 1/4 W
1 x Antena 433Mhz, 3dbi
W praktyce odbierany sprawdzał się wyjątkowo dobrze w zasięgu do 20 metrów przez ściany.
Krok 3: Kilka referencji…
Istnieje wiele blogów w sieci, które zawierają wskazówki dotyczące programowania PIC i rozwiązywania problemów poza oficjalną stroną Microschip. Bardzo pomocne okazały się:
www.romanblack.com/
0xee.net/
www.ibrahimlabs.com/
picforum.ric323.com/
Krok 4: Wnioski i przyszła praca
Mam nadzieję, że ta instrukcja pomogła ci zrozumieć, jak korzystać z modułów RF i mikrokontrolerów Pic. Możesz dostosować oprogramowanie do własnych potrzeb i uwzględnić CRC i szyfrowanie. Jeśli chcesz, aby Twój projekt był jeszcze bardziej wyrafinowany, możesz skorzystać z technologii Keeloq firmy Microschip. Jeśli Twoja aplikacja potrzebuje danych dwukierunkowych, będziesz potrzebować pary nadajników TX/RX na obu mikrokontrolerach lub możesz użyć bardziej wyrafinowanego nadajnika-odbiornika moduły. Jednak przy użyciu tego rodzaju tanich modułów 433 MHz można osiągnąć tylko komunikację półdupleksową. Ponadto, aby komunikacja była bardziej niezawodna, potrzebna byłaby jakaś forma uzgadniania między TX i RX.
W następnej instrukcji pokażę praktyczną aplikację, w której do nadajnika dodaje się czujnik środowiskowy z temperaturą, ciśnieniem barometrycznym i wilgotnością. Tutaj przesyłane dane będą zawierały crc i będą miały podstawowe szyfrowanie.
Czujnik będzie korzystał z portu i2c PIC12F1822, podczas gdy implementacja zarówno nadajnika, jak i odbiornika zostanie ujawniona za pomocą schematów i plików PCB. Dziękuję za przeczytanie mnie!
Zalecana:
Neopixel Ws2812 Rainbow LED Glow z M5stick-C - Uruchamianie Rainbow na Neopixel Ws2812 przy użyciu M5stack M5stick C przy użyciu Arduino IDE: 5 kroków
Neopixel Ws2812 Rainbow LED Glow z M5stick-C | Uruchamianie Rainbow na Neopixel Ws2812 Używając M5stack M5stick C Używając Arduino IDE: Cześć chłopaki, w tej instrukcji dowiemy się, jak używać neopikselowych ws2812 LED lub taśmy LED lub matrycy LED lub pierścienia LED z płytką rozwojową m5stack m5stick-C z Arduino IDE i zrobimy wzór tęczy z nim
Tania bezprzewodowa sieć czujników w paśmie 433 MHz: 5 kroków (ze zdjęciami)
Niskokosztowa bezprzewodowa sieć czujników w paśmie 433 MHz: Wielkie podziękowania dla Teresy Rajby za uprzejme wyrażenie zgody na wykorzystanie danych z ich publikacji w tym artykule. sieci? Prosta definicja
Prosty miernik obrotów przy użyciu tanich modułów: 8 kroków
Prosty miernik RPM wykorzystujący tanie moduły: Jest to bardzo interesujący projekt i wymaga bardzo mniejszego wysiłku. Dzięki temu jest bardzo prosty miernik RPM (w moim przypadku Round Per Seceond)
Komunikacja szeregowa przy użyciu ARM Cortex-M4: 4 kroki
Komunikacja szeregowa przy użyciu ARM Cortex-M4: Jest to projekt oparty na płytce prototypowej, który wykorzystuje ARM Cortex-M4 (Texas Instruments EK-TM4C123GXL) do komunikacji szeregowej przy użyciu wirtualnego terminala. Wyjście można uzyskać na ekranie LCD 16x2, a wejście do komunikacji szeregowej można podać w
Bezprzewodowa karta sieciowa Weatherized przy użyciu butelki z wodą: 4 kroki (ze zdjęciami)
Wyczerpana bezprzewodowa karta sieciowa przy użyciu butelki z wodą: Podczas pobytu w Iraku użyłem butelki z wodą do zwietrzenia mojej bezprzewodowej karty sieciowej. Jest to prosta procedura, ale bardzo skuteczna. Oczywiście ta instrukcja będzie najbardziej przydatna dla mężczyzn i kobiet na Bliskim Wschodzie, ale może być również użyteczna