- Componenti richiesti
- Software utilizzato
- Modulo trasmettitore e ricevitore RF 433 MHz
- Schema elettrico
- Creazione del progetto per Atmega 8 utilizzando CodeVision
- CODICE e spiegazione
- Carica il codice su Atmega8
Rendere i nostri progetti Wireless fa sempre sembrare cool e estende anche la gamma in cui può essere controllato. A partire dall'utilizzo di un normale LED IR per il controllo wireless a breve distanza fino a un ESP8266 per il controllo HTTP in tutto il mondo, ci sono molti modi per controllare qualcosa in modalità wireless. In questo progetto impariamo come costruire progetti wireless utilizzando un modulo RF a 433 MHz e un microcontrollore AVR.
In questo progetto facciamo le seguenti cose: -
- Usiamo Atmega8 per il trasmettitore RF e Atmega8 per la sezione Ricevitore RF.
- Interfacciamo un LED e un pulsante con i microcontrollori Atmega8.
- Sul lato trasmettitore, interfacciamo il pulsante con Atmega e trasmettiamo i dati. Sul lato ricevitore, riceveremo i dati in modalità wireless e mostreremo l'uscita sul LED.
- Usiamo encoder e decoder IC per trasmettere dati a 4 bit.
- La frequenza di ricezione è 433 Mhz utilizzando il modulo RF TX-RX disponibile sul mercato.
Componenti richiesti
- Microcontrollore Atmega8 AVR (2)
- Programmatore USBASP
- Cavo FRC a 10 pin
- Tagliere (2)
- LED (2)
- Pulsante (1)
- Coppia HT12D e HT12E
- Modulo RF RX-TX
- Resistori (10k, 47k, 1M)
- Cavi per ponticelli
- Alimentazione 5V
Software utilizzato
Usiamo il software CodeVisionAVR per scrivere il nostro codice e il software SinaProg per caricare il nostro codice su Atmega8 utilizzando il programmatore USBASP.
Puoi scaricare questi software dai link indicati:
CodeVisionAVR :
SinaProg:
Prima di addentrarci negli schemi e nei codici, comprendiamo il funzionamento del modulo RF con i CI Encoder-Decoder.
Modulo trasmettitore e ricevitore RF 433 MHz
Questi sono i moduli trasmettitore e ricevitore che stiamo utilizzando nel progetto. È il modulo più economico disponibile per 433 MHz. Questi moduli accettano dati seriali in un canale.
Se vediamo le specifiche dei moduli, il trasmettitore ha una tensione nominale di 3,5-12 V come tensione di ingresso e la distanza di trasmissione è di 20-200 metri. Trasmette nel protocollo AM (Audio Modulation) alla frequenza di 433 MHz. Possiamo trasferire dati a una velocità di 4KB / S con una potenza di 10 mW.
Nell'immagine in alto possiamo vedere il pin-out del modulo trasmettitore. Da sinistra a destra i pin sono VCC, DATA e GND. Possiamo anche aggiungere l'antenna e saldarla nel punto indicato nell'immagine sopra.
Per le specifiche del ricevitore, il ricevitore ha un valore nominale di 5 V cc e una corrente di riposo di 4 mA come ingresso. La frequenza di ricezione è 433,92 MHz con una sensibilità di -105DB.
Nell'immagine sopra possiamo vedere il pin-out del modulo ricevitore. I quattro pin sono da sinistra a destra, VCC, DATA, DATA e GND. Quei due pin centrali sono collegati internamente. Possiamo usarne uno o entrambi. Ma è buona norma utilizzarli entrambi per abbassare l'accoppiamento acustico.
Inoltre, una cosa non è menzionata nella scheda tecnica, l' induttore variabile o POT al centro del modulo viene utilizzato per la calibrazione della frequenza. Se non siamo riusciti a ricevere i dati trasmessi, ci sono possibilità che le frequenze di trasmissione e ricezione non siano abbinate. Questo è un circuito RF e dobbiamo sintonizzare il trasmettitore sul punto di frequenza di trasmissione perfetto. Inoltre, come il trasmettitore, questo modulo ha anche una porta antenna; possiamo saldare il filo in forma arrotolata per una ricezione più lunga.
Il raggio di trasmissione dipende dalla tensione fornita al trasmettitore e dalla lunghezza delle antenne su entrambi i lati. Per questo specifico progetto non abbiamo utilizzato un'antenna esterna e utilizzato 5V sul lato del trasmettitore. Abbiamo controllato con una distanza di 5 metri e ha funzionato perfettamente.
Ulteriori informazioni sulla coppia RF nel circuito del trasmettitore e del ricevitore RF. Puoi capire di più sul funzionamento della RF controllando i seguenti progetti che utilizzano la coppia RF:
- Robot controllato da RF
- Circuito convertitore da IR a RF
- LED telecomandati RF utilizzando Raspberry Pi
- Elettrodomestici a controllo RF
Schema elettrico
Schema del circuito per il lato del trasmettitore RF
- Pin D7 di atmega8 -> Pin13 HT12E
- Pin D6 di atmega8 -> Pin12 HT12E
- Pin D5 di atmega8 -> Pin11 HT12E
- Pin D4 di atmega8 -> Pin10 HT12E
- Pulsante al Pin B0 di Atmega.
- Resistenza da 1 M ohm tra i pin 15 e 16 di HT12E.
- Pin17 di HT12E al pin dati del modulo trasmettitore RF.
- Pin 18 di HT12E a 5V.
- Pin 1-9 GND e Pin 14 di HT12E e Pin 8 di Atmega.
Schema del circuito per il lato ricevitore RF
- Pin D7 di atmega8 -> Pin13 HT12D
- Pin D6 di atmega8 -> Pin12 HT12D
- Pin D5 di atmega8 -> Pin11 HT12D
- Pin D4 di atmega8 -> Pin10 HT12d
- LED al Pin B0 di Atmega.
- Pin14 di HT12D al pin dati del modulo ricevitore RF.
- Resistenza da 47Kohm tra i pin 15 e 16 di HT12D.
- Pin 1-9 GND di HT12D e Pin 8 di Atmega.
- LED al pin 17 di HT12D.
- 5V al pin 7 di Atmega e al pin 18 di HT12D.
Creazione del progetto per Atmega 8 utilizzando CodeVision
Dopo aver installato questi software, seguire i passaggi seguenti per creare il progetto e scrivere il codice:
Passaggio 1. Aprire CodeVision Fare clic su File -> Nuovo -> Progetto . Apparirà la finestra di dialogo di conferma. Fare clic su Sì
Passaggio 2. CodeWizard si aprirà. Fare clic sulla prima opzione, ad esempio AT90 , e fare clic su OK.
Passaggio 3. Scegli il tuo microcontrollore, qui prenderemo Atmega8 come mostrato.
Passaggio 4: - Fare clic su Porte. Nella parte Transmitter, Pushbutton è il nostro input e vengono emesse 4 linee dati. Quindi, dobbiamo inizializzare 4 pin di Atmega come output. Fare clic sulla porta D. Fare clic su Bit 7, 6, 5 e 4 come fuori.
Passaggio 5: - Fare clic su Programma -> Genera, salva ed esci . Ora più della metà del nostro lavoro è completato
Passaggio 6: - Crea una nuova cartella sul desktop in modo che i nostri file rimangano nella cartella altrimenti saranno sparsi su tutta la finestra del desktop. Assegna un nome alla cartella come desideri e ti suggerisco di utilizzare lo stesso nome per salvare i file di programma.
Avremo tre finestre di dialogo una dopo l'altra per salvare i file. Fai lo stesso con altre due finestre di dialogo che appariranno dopo aver salvato la prima.
Ora, il tuo spazio di lavoro ha questo aspetto.
La maggior parte del nostro lavoro viene completato con l'aiuto del mago. Ora, dobbiamo scrivere solo poche righe di codice per la parte trasmettitore e ricevitore e questo è tutto…
Segui gli stessi passaggi per creare file per la parte Ricevitore. Nella parte del ricevitore, solo il Led è la nostra uscita, quindi rendi Port B0 bit su out.
CODICE e spiegazione
Scriveremo il codice per attivare o disattivare il LED in modalità wireless utilizzando RF. Il codice completo sia per l'Atmega sul lato trasmettitore che sul lato ricevitore è fornito alla fine di questo articolo.
Codice Atmega8 per trasmettitore RF:
Prima includi il file di intestazione delay.h per utilizzare il ritardo nel nostro codice.
#includere
Ora, vieni alle ultime righe di codice dove troverai un ciclo while . Il nostro codice principale sarà in questo ciclo.
Nel ciclo While , invieremo 0x10 byte a PORTD quando viene premuto il pulsante e invieremo 0x20 quando il pulsante non è premuto. Puoi usare qualsiasi valore per inviare.
mentre (1) { if (PINB.0 == 1) { PORTD = 0x10; } se (PINB.0 == 0) { PORTD = 0x20; } } }
Codice Atmega per Ricevitore RF
Prima dichiara le variabili sopra la funzione principale void per memorizzare il carattere in arrivo dal modulo RF.
#includere
Ora vieni al ciclo while . In questo ciclo, memorizza i byte in arrivo in un byte variabile char e controlla se il byte in arrivo è lo stesso che scriviamo nella nostra parte trasmettitore. Se i byte sono uguali, impostare PortB.0 alto e NON prendere PORTB.0 per attivare il LED.
mentre (1) { byte = PIND; if (PIND.7 == 0 && PIND.6 == 0 && PIND.5 == 0 && PIND.4 == 1) { PORTB.0 = ~ PORTB.0; delay_ms (1000); }}}
Costruisci il progetto
Il nostro codice è completato. Ora dobbiamo costruire il nostro progetto . Fare clic sull'icona Crea il progetto come mostrato.
Dopo aver costruito il progetto, viene generato un file HEX nella cartella Debug-> Exe che si trova nella cartella che hai creato in precedenza per salvare il tuo progetto. Useremo questo file HEX per caricare in Atmega8 utilizzando il software Sinaprog.
Carica il codice su Atmega8
Collega i tuoi circuiti secondo lo schema dato per programmare Atmega8. Collega un lato del cavo FRC al programmatore USBASP e l'altro lato si connetterà ai pin SPI del microcontrollore come descritto di seguito:
- Pin1 del connettore femmina FRC -> Pin 17, MOSI di Atmega8
- Pin 2 collegato a Vcc di atmega8 ovvero Pin 7
- Pin 5 collegato a Reset di atmega8, ovvero Pin 1
- Pin 7 collegato a SCK di atmega8, ovvero Pin 19
- Pin 9 collegato a MISO di atmega8 ovvero Pin 18
- Pin 8 collegato a GND di atmega8, ovvero Pin 8
Collegare i restanti componenti sulla breadboard come da schema elettrico e aprire il Sinaprog.
Caricheremo il file Hex generato sopra utilizzando Sinaprog, quindi aprilo e scegli Atmega8 dal menu a discesa Dispositivo. Seleziona il file HEX dalla cartella Debug-> Exe come mostrato.
Ora, fai clic su Programma.
Hai finito e il tuo microcontrollore è programmato. Usa gli stessi passaggi per programmare un altro Atmega sul lato del ricevitore.
Di seguito sono riportati il codice completo e il video dimostrativo.