Cuprins:

Comunicare wireless folosind module RF 433MHz ieftine și microcontrolere Pic. Partea 2: 4 pași (cu imagini)
Comunicare wireless folosind module RF 433MHz ieftine și microcontrolere Pic. Partea 2: 4 pași (cu imagini)

Video: Comunicare wireless folosind module RF 433MHz ieftine și microcontrolere Pic. Partea 2: 4 pași (cu imagini)

Video: Comunicare wireless folosind module RF 433MHz ieftine și microcontrolere Pic. Partea 2: 4 pași (cu imagini)
Video: Transmițător si receptor wireless 2024, Noiembrie
Anonim
Comunicare wireless folosind module RF 433MHz ieftine și microcontrolere Pic. Partea 2
Comunicare wireless folosind module RF 433MHz ieftine și microcontrolere Pic. Partea 2

În prima parte a acestui instructable, am demonstrat cum să programez un PIC12F1822 utilizând compilatorul MPLAB IDE și XC8, pentru a trimite un șir simplu fără fir folosind module TX / RX 433MHz ieftine.

Modulul receptor a fost conectat printr-un adaptor de cablu USB la UART TTL la un computer, iar datele primite au fost afișate pe RealTerm. Comunicația a fost efectuată la 1200 baud și intervalul maxim realizat a fost de aproximativ 20 de metri prin pereți. Testele mele au arătat că pentru aplicațiile în care nu este nevoie de o rată de date mare și de o rază lungă de acțiune, precum și pentru transmiterea continuă, aceste module au funcționat excepțional de bine.

A doua parte a acestui proiect demonstrează cum să adăugați un receptor PIC16F887 și un modul LCD de 16 × 2 caractere pe receptor. Mai mult, pe transmițător, este urmat un protocol simplu, cu adăugarea câtorva octeți de preamplu. Acești octeți sunt necesari pentru ca modulul RX să își ajusteze câștigul înainte de a obține sarcina utilă reală. Pe partea receptorului, PIC este responsabil de obținerea și validarea datelor care sunt afișate pe ecranul LCD.

Pasul 1: Modificări ale emițătorului

Modificări ale emițătorului
Modificări ale emițătorului
Modificări ale emițătorului
Modificări ale emițătorului
Modificări ale emițătorului
Modificări ale emițătorului

Pe prima parte, transmițătorul trimitea un șir simplu la fiecare câteva ms folosind opt biți de date, un start și un bit de oprire la 1200 biți pe secundă. Deoarece transmisia a fost aproape continuă, receptorul nu a avut probleme cu ajustarea câștigului la datele primite. În a doua parte, firmware-ul este modificat astfel încât transmisia să fie efectuată la fiecare 2,3 secunde. Acest lucru se realizează folosind întreruperea temporizatorului de pază (setată la 2,3s) pentru a trezi microcontrolerul, care este pus în modul de repaus între fiecare transmisie.

Pentru ca receptorul să aibă timp să regleze câștigul, câțiva octeți de preambul cu scurte perioade LO "(0Xf8) (0Xf8) (0Xf8) (0Xf8) (0Xf8) (0Xfa)" sunt trimise înainte de datele reale. Sarcina utilă este apoi indicată printr-un octet de pornire „&” și un oprit „*”.

Prin urmare, protocolul simplu este descris după cum urmează:

(0Xf8) (0Xf8) (0Xf8) (0Xf8) (0Xf8) (0Xfa) & Hello InstWorld! *

Mai mult, un condensator de tantal de decuplare de 10 uF este adăugat între modulul RF + V + și GND pentru a scăpa de ondulația cauzată de modulul DC-DC.

Rata de transmisie a rămas aceeași, totuși testele mele au arătat că și la 2400 de transmisii de transmisie, transmisia a fost eficientă.

Pasul 2: Modificări ale receptorului: adăugarea LCD-urilor PIC16F887 și HD44780

Modificări ale receptorului: adăugarea LCD-urilor PIC16F887 și HD44780
Modificări ale receptorului: adăugarea LCD-urilor PIC16F887 și HD44780
Modificări ale receptorului: adăugarea LCD-urilor PIC16F887 și HD44780
Modificări ale receptorului: adăugarea LCD-urilor PIC16F887 și HD44780
Modificări ale receptorului: adăugarea LCD-urilor PIC16F887 și HD44780
Modificări ale receptorului: adăugarea LCD-urilor PIC16F887 și HD44780

Designul receptorului a fost bazat pe PIC16F887, dar puteți utiliza un PIC diferit cu mici modificări. În proiectul meu am folosit acest 40 pin μC, deoarece voi avea nevoie de pini suplimentari pentru proiectele viitoare bazate pe acest design. Ieșirea modulului RF este conectată la pinul UART rx, în timp ce un LCD de 16x2 caractere (HD44780) este conectat prin pinii PORTB b2-b7 pentru a afișa datele primite.

Ca și în partea 1, datele primite sunt afișate și pe RealTerm. Acest lucru se realizează utilizând pinul UART tx care este conectat la un computer printr-un adaptor de cablu USB la UART TTL.

Privind în firmware, când are loc o întrerupere UART, programul verifică dacă octetul primit este un octet de pornire („&”). Dacă da, începe să înregistreze octeții următori, până când este captat un octet de oprire („*”). De îndată ce se obține întreaga propoziție și dacă este conformă cu protocolul simplu descris anterior, este apoi trimisă pe ecranul LCD, precum și către portul UART tx.

Înainte de a primi octetul de pornire, receptorul și-a ajustat deja câștigul folosind octeții de preambul anterior. Acestea sunt esențiale pentru buna funcționare a receptorului. Se efectuează o simplă verificare a erorilor de depășire și încadrare, însă aceasta este doar o implementare de bază pentru tratarea erorilor UART.

În ceea ce privește hardware-ul, sunt necesare câteva piese pentru receptor:

1 x PIC16F887

1 x HD44780

1 x modul RF Rx 433Mhz

1 x 10 μF condensator de tantal (decuplare)

1 x 10 K tundere (luminozitate font LCD)

1 rezistor de 220 Ω 1/4 W (iluminare de fundal LCD)

1 x 1 KΩ 1/4 W

1 x antenă 433Mhz, 3dbi

În practică, recepția a funcționat excepțional de bine în domenii de până la 20 de metri prin pereți.

Pasul 3: câteva referințe …

Există multe bloguri pe web care oferă sfaturi despre programarea și depanarea PIC, pe lângă site-ul oficial Microschip. Am găsit următoarele foarte utile:

www.romanblack.com/

0xee.net/

www.ibrahimlabs.com/

picforum.ric323.com/

Pasul 4: Concluzii și lucrări viitoare

Sper că acest instructable te-a ajutat să înțelegi cum să folosești modulele RF și microcontrolerele Pic. Puteți să vă ajustați firmware-ul în funcție de nevoile dvs. și să includeți CRC și criptare. Dacă doriți ca designul dvs. să fie și mai sofisticat, puteți utiliza tehnologia Keeloq de la Microschip. În cazul în care aplicația dvs. are nevoie de date bidirecționale, ar trebui să aveți o pereche de TX / RX la ambele microcontrolere sau puteți utiliza un transceiver mai sofisticat. module. Cu toate acestea, folosind acest tip de module ieftine de 433 MHz, se poate realiza doar comunicarea pe jumătate duplex. În plus, pentru a face comunicarea mai fiabilă, ar trebui să aveți o formă de strângere de mână între TX și RX.

În următoarea instruire, vă voi arăta o aplicație practică în care se adaugă un senzor de mediu cu temperatură, presiune barometrică și umiditate pe transmițător. Aici, datele transmise vor include crc și vor avea o criptare de bază.

Senzorul va folosi portul i2c al PIC12F1822, în timp ce implementarea atât a transmițătorului, cât și a receptorului va fi expusă prin schemă și fișiere PCB. Mulțumesc pentru citirea mea!

Recomandat: