Walkie Talkie Talkie a lungo raggio basato su Arduino utilizzando nRF24L01

Condividi questo articolo:


Viviamo nell’era dei dispositivi 5G e 5G-enabled; tuttavia, le vecchie tecnologie come il sistema walkie-talkie e il sistema di comunicazione RF sono ancora di primaria importanza negli scenari in cui è richiesta una comunicazione remota, a breve distanza, economica e a basso costo. Ad esempio, se si dispone di un edificio o di un’impresa di costruzioni pesanti, allora i lavoratori devono comunicare tra loro per un lavoro coordinato. Con l’aiuto di un walkie-talkie, possono comunicare tra loro e diffondere brevi massaggi o istruzioni premendo semplicemente il pulsante “PTT” per trasmettere la voce agli altri lavoratori, per farli ascoltare e seguire le istruzioni. Un’altra applicazione potrebbe essere nei caschi intelligenti per comunicare tra un gruppo di motociclisti durante un lungo viaggio, il modello suggerito qui può comunicare tra sei persone alla volta. Se volete controllare altri tipi di progetti di trasmissione audio wireless a corto raggio, visitate il e il progetto utilizzando i link.

Il componente principale di questo progetto è il modulo RF NRF24L01 e Arduino Uno che è il cervello o il processore. Abbiamo già imparato come interfacciare Nrf24L01 con Arduino controllando un servomotore a distanza. Per questo progetto, il modulo RF NRF24L01 è stato scelto perché ha diversi vantaggi rispetto ad un mezzo di comunicazione digitale. Ha una banda ISM a 2,4 GHz ad altissima frequenza e la velocità di trasmissione dati può essere di 250kbps, 1Mbps, 2 Mbps. Ha 125 canali possibili tra 1Mhz di spaziatura, in modo che il modulo possa utilizzare 125 canali diversi, il che rende possibile avere una rete di 125 modem che lavorano indipendentemente in un unico posto.

La cosa più importante è che i segnali NRF24L01 non si sovrappongono o si interfacciano con altri sistemi walkie-talkie come il walkie-talkie della polizia e il walkie-talkie ferroviario e non disturbano gli altri walkie-talkie. Un singolo modulo nrf24l01 può comunicare con gli altri 6 moduli nrf24l01 in un momento in cui si trovano nello stato di ricezione. Inoltre, si tratta di un modulo a basso consumo energetico che rappresenta un ulteriore vantaggio. Ci sono due tipi di moduli NRF24L01 che sono ampiamente disponibili e comunemente usati, uno è NRF24L01+ e un altro è NRF24L01+PA+LNA (mostrato sotto) con antenna integrata.

L’NRF24L01+ ha un’antenna a bordo e una portata di soli 100 metri. È buona solo per uso interno e non è adatta per comunicazioni a lunga distanza all’aperto. Inoltre, se è presente un muro tra trasmettitore e ricevitore, la trasmissione del segnale è molto scarsa. L’NRF24L01 +PA+LNA con antenna esterna ha un PA che aumenta la potenza del segnale prima della trasmissione. LNA sta per Low Noise Amplifier. È chiaro, filtra il rumore e aumenta il livello estremamente debole e incerto del segnale ricevuto dall’antenna. Aiuta a rendere utili i livelli di segnale e ha un’antenna esterna da 2dB attraverso la quale può trasmettere 1000 metri di copertura del raggio d’azione, quindi è perfetto per i nostri progetti di comunicazione walkie-talkie all’aperto.

Componenti richiesti per il Walkie Talkie Talkie basato su Arduino

  • NRF24L01 +PA+LNA con antenna esterna 2DB (2 pezzi)
  • Arduino UNO o qualsiasi versione di Arduino
  • Amplificatore audio (2pz)
  • Circuito del microfono: Potete realizzarlo voi stessi (ne parleremo più avanti) o acquistare un modulo sensore sonoro.
  • Modulo booster di step-up da DC a DC (2pz)
  • Modulo regolatore di tensione 3,3V AMS1117
  • Indicatore di potenza LED (2pz)
  • 470 ohm di resistenza (2 pezzi)
  • Un altoparlante da 4 pollici (2pz)
  • pulsante (per il pulsante PTT)
  • 104 PF per la realizzazione del pulsante PTT (2pz)
  • Condensatore da 100 NF per NRF24L01 (2pz)
  • Resistenza 1k per il pulsante PTT (2pz)
  • 2 set di batterie agli ioni di litio
  • Modulo di carica e protezione della batteria agli ioni di litio (2pz)
  • Qualche filo di ponticello, perno di testata maschio, scheda Vero tratteggiata
  • Diagramma del circuito di Arduino Walkie Talkie

Lo schema circuitale completo dell’Arduino Walkie Talkie Talkie è mostrato nell’immagine sottostante. Lo schema circuitale mostra tutti i collegamenti, compreso il pulsante PTT, il circuito del microfono e l’uscita audio stereo.

Importante: Il campo di tensione di ingresso del modulo NRF24L01 è compreso tra 1,9v e un massimo di 3,6 volt e per la stabilità di tensione e corrente è necessario utilizzare un condensatore da 100nf nel +VCC e – GND, mentre gli altri pin del modulo nrf24l01 possono tollerare livelli di segnale a 5 volt.

Fase 1: Ho iniziato con la realizzazione di PCB personalizzati fatti in casa e scheda Arduino Atmega328p. Avevo messo l’IC Atmega328p sul programmatore, l’ho fatto lampeggiare e poi ho caricato il codice. Poi, ho aggiunto il cristallo a 16 MHz su Atmega328p IC su (PB6, PB7) pin 9 e 10. Le immagini del mio PCB personalizzato e della scheda assemblata con l’IC programmato sono mostrate qui sotto.

Fase 2: Ho collegato i moduli NRF24L01 come indicato nello schema elettrico nell’ordine seguente. CE al pin digitale numero 7, CSN al pin numero 8, SCK al pin digitale 13, MOSI al pin digitale 11, MISO al pin digitale 12 e IRQ al pin digitale 2.

Per l’alimentazione, è necessario abbassare prima la tensione da 5 volt a 3,3v con una buona stabilità di corrente. Inoltre, si deve mettere un condensatore da 100nF sul VCC e sulla massa del modulo nrf24l01. Così, ho usato AMS1117 che è un regolatore di tensione a 3,3 volt, il modulo riduce anche le dimensioni del vostro progetto e lo rende compatto.

Se si vuole fare questa scheda regolatore di tensione da soli, si può acquistare solo 3,3-volt regolatore IC e può farlo aggiungendo alcuni tappi, resistenza in ingresso e in uscita in quanto è molto importante per il vostro modulo RF perché è un dispositivo sensibile. Oppure potete usare il regolatore di tensione variabile LM317 per costruire un circuito regolato a 3,3V come abbiamo fatto nel progetto di alimentazione della Breadboard.

Fase 3: Potete acquistare un sensore sonoro o realizzare un semplice circuito microfonico come mostrato nello schema elettrico. Esso consiste di un solo transistor – 2n3904 NPN. L’immagine sottostante mostra il circuito microfonico fatto in casa costruito su una scheda Vero. Potete anche controllare questo semplice circuito di preamplificazione audio per maggiori informazioni.

Per una migliore comprensione, ho fatto un’altra rappresentazione dell’intera connessione con i valori dei componenti, come potete vedere qui sotto

Fase 4: Per, fare un collegamento dal vostro microcontrollore digitale pin numero 9 e 10 al vostro amplificatore audio, ho usato l’amplificatore audio stereo PAM8403 perché di default l’uscita audio di Arduino è molto bassa (di solito si può sentire solo il suono usando solo le cuffie, non un altoparlante, quindi abbiamo bisogno di uno stadio di amplificazione). Il modulo può pilotare facilmente due altoparlanti per laptop ed è disponibile ad un costo molto basso. Inoltre, viene fornito con un amplificatore audio molto potente in un pacchetto SMD che richiede pochissimo spazio. Il modulo amplificatore audio PAM8403 è mostrato di seguito.

 

Il collegamento è molto semplice, è necessaria un’alimentazione da 3,7V a 5V per alimentare l’amplificatore audio. L’ingresso audio del canale sinistro e del canale destro del pin 9 e 10 di Arduino, insieme al pin di terra, deve essere dato come ingresso per questo modulo amplificatore, come mostrato nello schema elettrico. Nel mio caso, ho usato un singolo altoparlante da 4 pollici e 8 ohm e ho usato solo l’uscita del canale destro. Se volete, potete usare due altoparlanti con questo modulo.

Fase 5: Successivamente, ho costruito il PTT switch usando un semplice pulsante. Ho aggiunto un condensatore da 104PF o 0.1uf per evitare il rimbalzo dell’interruttore o segnali erratici quando l’interruttore viene premuto. Il pin 4 è ora collegato direttamente con il pin D3 di Arduino Digital, poiché un pin interrotto è assegnato alla codifica.

 

Il NRF24L01 + PA+LNA quando trasmette un segnale audio o pacchetti DATA consuma più energia, quindi consuma più corrente. Quando si preme il tasto PTT improvvisamente, il consumo di corrente aumenta. Per gestire questo carico improvvisamente aumentato, è necessario utilizzare un condensatore da 100nF su +vcc e terra per la stabilità di trasmissione del modulo NRF24L01+PA+LNA.

Quando si preme l’interruttore, la scheda Arduino riceve un Arduino Interrupt sul suo pin D3. Nel programma, dichiareremo il pin digitale 3 di Arduino controllando costantemente la sua tensione di ingresso. Se la tensione di ingresso è bassa, mantiene il walkie-talkie in modalità di ricezione e se il pin digitale numero 3 è alto, commuta il walkie-talkie in modalità di trasmissione per l’invio del segnale vocale raccolto dal processo microfonico attraverso il microcontrollore e trasmette attraverso NRF24L01+PA+LNA con un’antenna esterna.

Fase 6: Per l’alimentazione ho scelto questa batteria agli ioni di litio. Per l’alimentazione, tutti i componenti come Arduino IC Atmega328p, NRF24L01+PA+LNA, amplificatore audio, pulsante PTT e circuito microfonico, ho utilizzato 2 set di batterie agli ioni di litio per questo progetto come mostrato di seguito.

Una buona cella ha un livello di tensione da 3,8v a 4,2 volt e la tensione di carica è solo da 4v a 4,2 volt. Per saperne di più sulle batterie al litio potete controllare l’articolo collegato. Queste batterie sono molto popolari nei dispositivi elettronici portatili e nei veicoli elettrici. Ma le celle delle batterie agli ioni di litio non sono così robuste come le altre batterie, hanno bisogno di essere protette da sovraccariche e scariche troppo veloci, il che significa che la corrente e la tensione di carica e di scarico devono essere mantenute entro limiti di sicurezza. Pertanto, ho utilizzato il modulo di ricarica per batterie agli ioni di litio a più elica – TP4056. Abbiamo già utilizzato questo modulo per la costruzione di un Portable Power Bank, potete verificare che per maggiori dettagli su questa scheda.

Fase 7: Ho usato un modulo booster step up da 2 Amp dc a dc perché Arduino atmega328p, amplificatore audio, circuito microfonico, pulsante PTT tutto ha bisogno di 5 volt ma la mia batteria può fornire solo 3,7V a 4,2V, quindi ho bisogno di un convertitore boost per raggiungere 5V con più di 1 Amp di potenza stabile in uscita.

Dopo aver costruito il circuito, è possibile assemblarlo in un piccolo contenitore. Ho usato una scatola di plastica e ho posizionato i miei circuiti come mostrato nell’immagine qui sotto

Walkie Talkie Codice Arduino

Il programma completo per il tuo walkie talkie Arduino si trova in fondo a questa pagina. In questa sezione, parliamo di come funziona il programma. Prima di arrivare, è necessario includere alcune biblioteche che sono elencate di seguito.

Iniziare la programmazione includendo le intestazioni della Radio e dell’Audioteca come mostrato di seguito

#include <RF24.h>
#include <SPI.h>
#include <RF24Audio.h>
#include "printf.h"    // General includes for radio and audio lib

Inizializzare la Radio RF sui pin 7 e 8 e impostare il numero della radio audio su 0. Inoltre, inizializzare il pulsante ppt sul pin 3.

RF24 radio(7,8);    // Set radio up using pins 7 (CE) 8 (CS)
RF24Audio rfAudio(radio,0); // Set up the audio using the radio, and set to radio number 0
int talkButton = 3;

All’interno della funzione di setup, avviare il monitor seriale a 115200 baudrate per il debug. Quindi inizializzare il pulsante ppt connect al pin 3 come pin di interrupt.

void setup() {     
  Serial.begin(115200);
  printf_begin();
  radio.begin();
  radio.printDetails();
  rfAudio.begin();
  pinMode(talkButton, INPUT);//sets interrupt to check for button talk abutton press
  attachInterrupt(digitalPinToInterrupt(talkButton), talk, CHANGE);  //sets the default state for each module to receive
  rfAudio.receive();
}

Successivamente, abbiamo una funzione chiamata talk() che viene chiamata in risposta all’interruzione. Il programma controlla lo stato del pulsante se il pulsante viene premuto e tenuto premuto entra in modalità di trasmissione per inviare l’audio. Se il pulsante viene rilasciato entra in modalità di ricezione.

void talk()
{
  if (digitalRead(talkButton)) rfAudio.transmit();
  else rfAudio.receive();
}
void loop()
{
}

Il lavoro completo di questo progetto si può trovare nel video collegato qui sotto. Il Walkie Talkie produce un certo rumore durante il funzionamento, questo è il rumore della frequenza portante del modulo nRF24L01. Può essere ridotto utilizzando un buon sensore sonoro o un modulo microfonico. Se avete domande su questo progetto potete lasciarle nella sezione commenti qui sotto. Potete anche utilizzare i nostri forum per ottenere risposte rapide alle vostre altre domande tecniche


Per ulteriori informazioni visita il sito: immagi.net

Condividi questo articolo: