Sommario:

Comunicazione wireless utilizzando moduli RF a 433 MHz economici e microcontrollori Pic. Parte 2: 4 passaggi (con immagini)
Comunicazione wireless utilizzando moduli RF a 433 MHz economici e microcontrollori Pic. Parte 2: 4 passaggi (con immagini)

Video: Comunicazione wireless utilizzando moduli RF a 433 MHz economici e microcontrollori Pic. Parte 2: 4 passaggi (con immagini)

Video: Comunicazione wireless utilizzando moduli RF a 433 MHz economici e microcontrollori Pic. Parte 2: 4 passaggi (con immagini)
Video: Touchscreen based temperature monitoring and controlling with set limit 2024, Dicembre
Anonim
Comunicazione wireless utilizzando moduli RF a 433 MHz economici e microcontrollori Pic. Parte 2
Comunicazione wireless utilizzando moduli RF a 433 MHz economici e microcontrollori Pic. Parte 2

Nella prima parte di questa istruzione, ho dimostrato come programmare un PIC12F1822 utilizzando MPLAB IDE e il compilatore XC8, per inviare una semplice stringa in modalità wireless utilizzando moduli TX/RX 433MHz economici.

Il modulo ricevitore è stato collegato tramite un cavo adattatore da USB a UART TTL a un PC e i dati ricevuti sono stati visualizzati su RealTerm. La comunicazione è stata effettuata a 1200 baud e la portata massima raggiunta è stata di circa 20 metri attraverso i muri. I miei test hanno mostrato che per le applicazioni in cui non è necessaria un'elevata velocità di trasmissione dei dati e un lungo raggio, e per la trasmissione continua, questi moduli hanno funzionato eccezionalmente bene.

La seconda parte di questo progetto mostra come aggiungere un microcontrollore PIC16F887 e un modulo LCD 16×2 caratteri sul ricevitore. Inoltre, sul trasmettitore, viene seguito un semplice protocollo con l'aggiunta di alcuni byte di preamp. Questi byte sono necessari al modulo RX per regolare il suo guadagno prima di ottenere il payload effettivo. Dal lato del ricevitore, il PIC è responsabile dell'acquisizione e della convalida dei dati visualizzati sullo schermo LCD.

Passaggio 1: modifiche al trasmettitore

Modifiche al trasmettitore
Modifiche al trasmettitore
Modifiche al trasmettitore
Modifiche al trasmettitore
Modifiche al trasmettitore
Modifiche al trasmettitore

Nella prima parte, il trasmettitore inviava una semplice stringa ogni pochi ms utilizzando otto bit di dati, un bit di inizio e uno di arresto a 1200 bit al secondo. Poiché la trasmissione era quasi continua, il ricevitore non ha avuto problemi ad adattare il suo guadagno ai dati ricevuti. Nella seconda parte, il firmware viene modificato in modo che la trasmissione venga eseguita ogni 2,3 secondi. Ciò si ottiene utilizzando l'interruzione del timer del watchdog (impostato su 2.3s) per riattivare il microcontrollore, che viene messo in modalità di sospensione tra ogni trasmissione.

Affinché il ricevitore abbia il tempo di mettere a punto il suo guadagno, alcuni byte di preambolo con tempi LO brevi "(0Xf8)(0Xf8)(0Xf8)(0Xf8)(0Xf8)(0Xfa)" vengono inviati prima dei dati effettivi. Il carico utile viene quindi indicato da un byte di inizio '&' e un byte di arresto '*'.

Quindi, il protocollo semplice è descritto come segue:

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

Inoltre, viene aggiunto un condensatore al tantalio di disaccoppiamento da 10uF tra V+ e GND del modulo RF per eliminare l'ondulazione causata dal modulo step-up dc-dc.

Il baud rate è rimasto lo stesso, ma i miei test hanno mostrato che anche a 2400 baud la trasmissione era efficiente.

Passaggio 2: modifiche al ricevitore: aggiunta di PIC16F887 e LCD HD44780

Modifiche al ricevitore: aggiunta di PIC16F887 e HD44780 LCD
Modifiche al ricevitore: aggiunta di PIC16F887 e HD44780 LCD
Modifiche al ricevitore: aggiunta di PIC16F887 e HD44780 LCD
Modifiche al ricevitore: aggiunta di PIC16F887 e HD44780 LCD
Modifiche al ricevitore: aggiunta di PIC16F887 e HD44780 LCD
Modifiche al ricevitore: aggiunta di PIC16F887 e HD44780 LCD

Il design del ricevitore era basato su PIC16F887, ma è possibile utilizzare un PIC diverso con piccole modifiche. Nel mio progetto ho usato questo μC a 40 pin, poiché avrò bisogno di pin aggiuntivi per progetti futuri basati su questo design. L'uscita del modulo RF è collegata al pin rx UART, mentre un lcd 16x2 caratteri (HD44780) è collegato tramite i pin PORTB b2-b7 per visualizzare i dati ricevuti.

Come per la Parte 1, i dati ricevuti vengono visualizzati anche su RealTerm. Ciò si ottiene utilizzando il pin tx UART che è collegato tramite un cavo adattatore da USB a UART TTL a un PC.

Esaminando il firmware, quando si verifica un interrupt UART, il programma controlla se il byte ricevuto è un byte di inizio ('&'). Se sì, inizia a registrare i byte successivi, finché non viene catturato un byte di stop ('*'). Non appena l'intera frase è ottenuta, e se è conforme al semplice protocollo descritto prima, viene quindi inviata allo schermo lcd, oltre che alla porta tx UART.

Prima di ricevere il byte di inizio, il ricevitore ha già regolato il suo guadagno utilizzando i precedenti byte di preambolo. Questi sono fondamentali per il buon funzionamento del ricevitore. Viene eseguito un semplice controllo dell'overrun e degli errori di frame, tuttavia questa è solo un'implementazione di base della gestione degli errori UART.

In termini di hardware, sono necessarie alcune parti per il ricevitore:

1 x PIC16F887

1 x HD44780

1 x modulo RF Rx 433 Mhz

1 x condensatore al tantalio da 10 μF (disaccoppiamento)

1 x 10 K trimmer (luminosità caratteri LCD)

1 x resistenza da 220 1/4 W (retroilluminazione LCD)

1 x 1 KΩ 1/4 W

1 x Antenna 433Mhz, 3dbi

In pratica, il ricevitore ha funzionato eccezionalmente bene a distanze fino a 20 metri attraverso i muri.

Passaggio 3: alcuni riferimenti…

Ci sono molti blog sul web che danno suggerimenti sulla programmazione PIC e sulla risoluzione dei problemi oltre al sito web ufficiale di Microschip. Ho trovato molto utile quanto segue:

www.romanblack.com/

0xee.net/

www.ibrahimlabs.com/

picforum.ric323.com/

Fase 4: Conclusioni e lavoro futuro

Spero che questo tutorial ti abbia aiutato a capire come utilizzare i moduli RF e i microcontrollori Pic. Puoi adattare il firmware alle tue esigenze e includere CRC e crittografia. Se vuoi rendere il tuo design ancora più sofisticato, puoi utilizzare la tecnologia Keeloq di Microschip. Nel caso in cui la tua applicazione necessiti di dati bidirezionali, dovresti avere una coppia di TX/RX su entrambi i microcontrollori, oppure puoi usare un ricetrasmettitore più sofisticato moduli. Tuttavia, utilizzando questo tipo di moduli economici a 433 MHz, è possibile ottenere solo una comunicazione half duplex. Oltre a ciò, al fine di rendere la comunicazione più affidabile, è necessario disporre di una qualche forma di handshake tra TX e RX.

Nella prossima istruzione, ti mostrerò un'applicazione pratica in cui viene aggiunto al trasmettitore un sensore ambientale con temperatura, pressione barometrica e umidità. Qui, i dati trasmessi includeranno crc e avranno una crittografia di base.

Il sensore utilizzerà la porta i2c del PIC12F1822, mentre l'implementazione sia del trasmettitore che del ricevitore sarà esposta tramite schemi e file PCB. Grazie per avermi letto!

Consigliato: