Spisu treści:

Komunikacja bezprzewodowa przy użyciu tanich modułów RF 433 MHz i mikrokontrolerów Pic. Część 2: 4 kroki (ze zdjęciami)
Komunikacja bezprzewodowa przy użyciu tanich modułów RF 433 MHz i mikrokontrolerów Pic. Część 2: 4 kroki (ze zdjęciami)

Wideo: Komunikacja bezprzewodowa przy użyciu tanich modułów RF 433 MHz i mikrokontrolerów Pic. Część 2: 4 kroki (ze zdjęciami)

Wideo: Komunikacja bezprzewodowa przy użyciu tanich modułów RF 433 MHz i mikrokontrolerów Pic. Część 2: 4 kroki (ze zdjęciami)
Wideo: Wireless Doorbell Hacking 2024, Lipiec
Anonim
Komunikacja bezprzewodowa przy użyciu tanich modułów RF 433 MHz i mikrokontrolerów Pic. Część 2
Komunikacja bezprzewodowa przy użyciu tanich modułów RF 433 MHz i mikrokontrolerów Pic. Część 2

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

Modyfikacje nadajnika
Modyfikacje nadajnika
Modyfikacje nadajnika
Modyfikacje nadajnika
Modyfikacje nadajnika
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

Modyfikacje odbiornika: dodanie PIC16F887 i HD44780 LCD
Modyfikacje odbiornika: dodanie PIC16F887 i HD44780 LCD
Modyfikacje odbiornika: dodanie PIC16F887 i HD44780 LCD
Modyfikacje odbiornika: dodanie PIC16F887 i HD44780 LCD
Modyfikacje odbiornika: dodanie PIC16F887 i HD44780 LCD
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: