- 433MHz RF-sändare och mottagarmodul:
- Behov av kodare och avkodare:
- Komponenter som krävs:
- Kretsschema:
- Kodförklaring:
Hej allihopa, idag kommer vi i detta projekt att gränssnitt RF-mottagare och sändarmodul med PIC Microcontroller och kommunicera trådlöst mellan två olika pic-mikrokontroller.
I det här projektet kommer vi att göra följande saker: -
- Vi kommer att använda PIC16F877A för sändaren och PIC18F4520 för mottagarsektionen.
- Vi kommer att ansluta tangentbord och LCD med PIC-mikrokontroller.
- På sändarsidan kommer vi att ansluta tangentbordet med PIC och överföra data. På mottagarsidan kommer vi att ta emot data trådlöst och visa vilken knapp som trycks ned på LCD-skärmen.
- Vi kommer att använda kodare och avkodare IC för att sända 4-bitars data.
- Mottagningsfrekvensen kommer att vara 433Mhz med billig RF TX-RX-modul som finns på marknaden.
Innan vi går in i schemat och koder, låt oss förstå hur RF-modulen fungerar med IC-kodare-avkodare. Gå också igenom två artiklar för att lära dig hur man gränssnitt LCD och knappsats med PIC Microcontroller:
- LCD-gränssnitt med PIC-mikrokontroller med MPLABX och XC8
- 4x4 Matrix-knappsatsgränssnitt med PIC-mikrokontroller
433MHz RF-sändare och mottagarmodul:
Det är sändar- och mottagarmodulerna vi använder i projektet. Det är den billigaste modulen för 433 MHz. Dessa moduler accepterar seriell data i en kanal.
Om vi ser specifikationerna för modulerna klassas sändaren för 3,5-12V drift som ingångsspänning och sändningsavståndet är 20-200 meter. Det sänds i AM (Audio Modulation) -protokoll med 433 MHz- frekvens. Vi kan överföra data med en hastighet av 4KB / S med 10mW effekt.
I den övre bilden kan vi se uttaget på sändarmodulen. Från vänster till höger är stiften VCC, DATA och GND. Vi kan också lägga till antennen och löd den på den punkt som anges i bilden ovan.
För mottagarspecifikationen har mottagaren en klassificering på 5V likström och 4MA viloström som ingång. Mottagningsfrekvensen är 433,92 MHz med -105DB- känslighet.
I bilden ovan kan vi se uttaget på mottagarmodulen. De fyra stiften är från vänster till höger, VCC, DATA, DATA och GND. De två mellersta stiften är internt anslutna. Vi kan använda någon eller båda. Men det är bra att använda båda för att sänka bullerkopplingen.
En sak nämns inte i databladet, variabel induktor eller POT i mitten av modulen används för frekvenskalibrering. Om vi inte kunde ta emot de överförda uppgifterna finns det möjligheter att sändnings- och mottagningsfrekvensen inte matchas. Detta är en RF-krets och vi måste ställa in sändaren vid den perfekta sända frekvenspunkten. På samma sätt som sändaren har den här modulen också en antennport; vi kan lödtråd i lindad form för längre mottagning.
Sändningsområdet är beroende av spänningen som matas till sändaren och längden på antennerna på båda sidor. För detta specifika projekt använde vi inte extern antenn och använde 5V på sändarsidan. Vi kontrollerade med 5 meters avstånd och det fungerade perfekt.
RF-moduler är mycket användbara för trådlös kommunikation över långa avstånd. En grundläggande RF-sändare och mottagarkrets visas här. Vi har gjort många projekt med RF-modul:
- RF-kontrollerade hushållsapparater
- Bluetooth-kontrollerad leksaksbil med Arduino
- RF-fjärrstyrda lysdioder med Raspberry Pi
Behov av kodare och avkodare:
Denna RF-sensor har få nackdelar: -
- Envägskommunikation.
- Endast en kanal
- Mycket störande störningar.
På grund av denna nackdel har vi använt IC- kodare och avkodare, HT12D och HT12E. D står för avkodare som kommer att användas på mottagarsidan och E står för kodare som kommer att användas på sändarsidan. Dessa kretsar tillhandahåller fyra kanaler. Också på grund av kodning och avkodning är ljudnivån mycket låg.
I bilden ovan är vänster HT12D avkodaren och höger HT12E, kodaren. Båda IC: erna är identiska. A0 till A7 används för speciell kodning. Vi kan använda mikrocontrollerstift för att styra dessa stift och ställa in konfigurationer. Samma konfigurationer måste matchas på andra sidan. Om båda konfigurationerna är korrekta och matchade kan vi ta emot data. Dessa 8 stift kan anslutas till Gnd eller VCC eller lämnas öppna. Oavsett vilka konfigurationer vi gör i kodaren måste vi matcha anslutningen på avkodaren. I detta projekt lämnar vi de 8 stiften öppna för både kodare och avkodare. 9 och 18 stift är VSS respektive VDD. Vi kan använda VT- stiftet iHT12D som anmälningssyfte. För detta projekt använde vi det inte. Den TE stift är för sändning aktivera eller inaktivera pin.
Den viktiga delen är OSC- stiftet där vi behöver ansluta motstånd är att ge svängning till kodaren och avkodaren. Avkodaren behöver högre svängning än avkodaren. Kodarens motståndsvärde är vanligtvis 1Meg och avkodarvärdet är 33k. Vi kommer att använda dessa motstånd för vårt projekt.
DOUT- stift är RF-sändarens datapinne på HT12E och DIN- stift i HT12D används för att ansluta RF-modulens datapinne.
I HT12E är AD8 till AD11 fyra kanalsingångar som konverteras och sänds seriellt via RF-modulen och den exakta omvända saken händer i HT12D, den seriella data som tas emot och avkodas, och vi får 4 bitars parallellutgång över de 4 stiften D8 till D11.
Komponenter som krävs:
- 2 - Brödbräda
- 1 - LCD 16x2
- 1 - Knappsats
- HT12D och HT12E-par
- RX-TX RF-modul
- 1- 10K förinställd
- 2 - 4,7 k motstånd
- 1- 1M motstånd
- 1- 33k motstånd
- 2- 33pF keramiska kondensatorer
- 1 - 20Mhz kristall
- Bergsticks
- Få enkelsträngade ledningar.
- PIC16F877A MCU
- PIC18F4520 MCU
- En skruvmejsel för styrning av frekvensbehållaren måste isoleras från människokroppen.
Kretsschema:
Kretsschema för sändarsidan (PIC16F877A):
Vi har använt PIC16F877A för sändningsändamål. Den Hex knappsats ansluten över PORTB och de 4 kanalerna anslutna över sista 4 bitarna av PORTD. Läs mer om att ansluta 4x4 Matrix-knappsats här.
Sticka ut enligt följande-
1. AD11 = RD7
2. AD10 = RD6
3. AD9 = RD5
4. AD8 = RD4
Kretsschema för mottagarsidan (PIC18F4520):
I bilden ovan visas mottagarkretsen. Den LCD är ansluten över PORTB. Vi använde intern oscillator av PIC18F4520 för detta projekt. De fyra kanalerna är anslutna på samma sätt som vi gjorde tidigare i sändarkretsen. Läs mer om att ansluta 16x2 LCD med PIC Microcontroller här.
Det här är sändarsidan -
Och mottagarsidan i separat brädbräda -
Kodförklaring:
Det finns två delar av koden, en är för sändaren och en är för mottagaren. Du kan ladda ner fullständig kod härifrån.
PIC16F877A-kod för RF-sändare:
Som alltid först måste vi ställa in konfigurationsbitarna i pic-mikrokontrollern, definiera några makron, inklusive bibliotek och kristallfrekvens. Den AD8-AD11 sport hos Encoder IC definieras som RF_TX vid PORTD. Du kan kontrollera koden för alla dem i den fullständiga koden som ges i slutet.
Vi använde två funktioner, void system_init (void) och void encode_rf_sender (char data).
Den system_init används för stift initiering och tangentbords initieringar. Initiering av tangentbordet anropas från knappsatsbiblioteket.
Knappsatsporten definieras också i knappsatsen. H. Vi gjorde PORTD som utdata med TRISD = 0x00 och gjorde RF_TX- porten som 0x00 som standardläge.
ogiltigt system_init (ogiltigt) { TRISD = 0x00; RF_TX = 0x00; keyboard_initialization (); }
I encode_rf_sender har vi ändrat 4-poligt tillstånd beroende på vilken knapp som trycks ned. Vi har skapat 16 olika hex-värden eller PORTD- tillstånd beroende på ( 4x4) 16 olika knapptryckningar.ogiltigt encode_rf_sender (char data) { if (data == '1') RF_TX = 0x10; om (data == '2') RF_TX = 0x20; om (data == '3') …………... ……..
I huvudfunktion vi först får tangentbordet intryckt data med hjälp av switch_press_scan () funktion och lagra data i nyckelvariabel.Efter det har vi kodat data med hjälp av encode_rf_sender () -funktionen och ändrat PORTD- status.
PIC18F4520- kod för RF-mottagare:
Som alltid ställer vi först in konfigurationsbitarna i PIC18f4520. Det skiljer sig lite från PIC16F877A, du kan kontrollera koden i den bifogade zip-filen.
Vi inkluderade LCD-rubrikfilen. Definierade D8-D11- portanslutningen för avkodare IC över PORTD med #define RF_RX PORTD- linje, anslutningen är densamma som används i kodaravsnittet. LCD- portdeklarationen görs också i filen lcd.c.
#omfatta
Som tidigare nämnts använder vi intern oscillator för 18F4520, vi har använt system _ init- funktionen där vi konfigurerade OSFON- registret för 18F4520 för att ställa in den interna oscillatorn för 8 MHz. Vi ställer också in TRIS- biten för både LCD-stift och avkodarstift. Eftersom HT - 12D ger utdata på D8-D11- portar, måste vi konfigurera PORTD som ingång för att ta emot utdata.
ogiltigt system_init (ogiltigt) { OSCCON = 0b01111110; // 8Mhz,, intosc // OSCTUNE = 0b01001111; // PLL-aktiverad, Max prescaler 8x4 = 32Mhz TRISB = 0x00; TRISD = 0xFF; // Senaste 4 bitar som ingångsbit. }
Vi konfigurerade OSCON- registret vid 8 MHz, gjorde också port B som utgång och port D som ingång.
Nedanstående funktion görs med den exakta omvända logiken som användes i föregående sändaravsnitt. Här får vi samma hex-värde från porten D och med det hex-värdet identifierar vi vilken omkopplare som trycktes i sändarsektionen. Vi kan identifiera varje tangenttryckning och skicka korrespondentkaraktären till LCD-skärmen.
ogiltig rf_analysis (osignerad char recived_byte) { if (recived_byte == 0x10) lcd_data ('1'); if (recived_byte == 0x20) lcd_data ('2'); if (recived_byte == 0x30) ……. ….. …… ………..
Den lcd_data anropas från lcd.c filen.
I huvudfunktion vi först initiera systemet och LCD. Vi tog en variabel byte, och lagras hex värdet erhållits från port D. Sedan med funktionen rf_analysis kan vi skriva ut karaktären på LCD.
void main (void) { osignerad char byte = 0; system_init (); lcd_init (); medan (1) { lcd_com (0x80); lcd_puts ("CircuitDigest"); lcd_com (0xC0); byte = RF_RX; rf_analys (byte); lcd_com (0xC0); } returnera; }
Innan vi kör den har vi ställt in kretsen. Först har vi tryckt på D- knappen i knappsatsen. Så 0xF0 sänds kontinuerligt av RF-sändaren. Vi ställde sedan in mottagarkretsen tills LCD-skärmen visar tecknet ' D '. Ibland justeras modulen ordentligt från tillverkaren, ibland inte. Om allt är ordentligt anslutet och inte tryckt på knappen på LCD-skärmen finns det möjligheter att RF-mottagaren inte är inställd. Vi har använt den isolerade skruvmejseln för att minska felinställningsmöjligheter på grund av vår kroppsinduktans.
Så här kan du ansluta RF-modulen till PIC Microcontroller och kommunicera mellan två PIC-mikrokontroller trådlöst med RF-sensor.
Du kan ladda ner hela koden för sändare och mottagare härifrån, kolla även demonstrationsvideon nedan.