- Walkie Talkie ved hjælp af nRF24L01 RF-modul
- Komponent påkrævet til Arduino-baseret Walkie Talkie
- Arduino Walkie Talkie-kredsløbsdiagram
- Walkie Talkie Arduino-kode
Vi lever i æraen med 5G og 5G-aktiverede enheder; gamle teknologier som walkie-talkie-systemet og RF-kommunikationssystemet er dog stadig vigtige i scenarier, hvor der kræves en fjernkommunikation, kort afstand, billig og billig kommunikation. For eksempel, hvis du har en bygning eller et tungt bærende byggefirma, så skal dine medarbejdere kommunikere med hinanden for koordineret arbejde. Ved hjælp af en walkie-talkie kan de kommunikere med hinanden og sprede kort massage eller instruktioner ved blot at trykke på “PTT” -knappen for at sende stemme til andre arbejdere, så de kan lytte og følge instruktionerne. En anden applikation kan være i de smarte hjelmefor at kommunikere mellem en rytterpakke under en lang køretur, kan den foreslåede model her kommunikere mellem seks personer ad gangen. Hvis du vil tjekke andre typer trådløse lydtransmissionsprojekter med kort rækkevidde, skal du besøge det IR-baserede trådløse lydtransmitter- og Li-Fi-lydtransmitterprojekt ved hjælp af linkene.
Walkie Talkie ved hjælp af nRF24L01 RF-modul
Hovedkomponenten i dette projekt er NRF24L01 RF-modulet og Arduino Uno, som er hjernen eller processoren. Vi har allerede lært, hvordan man interagerer Nrf24L01 med Arduino ved at styre en servomotor eksternt. Til dette projekt vælges NRF24L01 RF-modulet, fordi det har flere fordele i forhold til et digitalt kommunikationsmedium. Det har 2,4 GHz meget højfrekvent ISM-bånd, og datahastigheden kan være 250 kbps, 1 Mbps, 2 Mbps. Det har 125 mulige kanaler i mellem 1MHz afstand, så modulet kan bruge 125 forskellige kanaler, hvilket gør det muligt at have et netværk på 125 uafhængigt fungerende modemer ét sted.
Vigtigst er det, at NRF24L01-signaler ikke overlapper hinanden eller krydser grænsefladen med andre walkie-talkiesystemer som politiets walkie-talkie og jernbane-walkie-talkie, og det forstyrrer ikke andre walkie-talkies. Et enkelt nrf24l01-modul kan kommunikere med de andre 6 nrf24l01-moduler ad gangen, når de er i modtagertilstand. Det er også et modul til lavt strømforbrug, hvilket er en ekstra fordel. Der er to typer NRF24L01-moduler, der er bredt tilgængelige og almindeligt anvendte, den ene er NRF24L01 + og en anden er NRF24L01 + PA + LNA (vist nedenfor) med indbygget antenne.
Den NRF24L01 + har en indbygget antenne, og kun en 100 meters afstand. Den er kun god til indendørs brug og er ikke egnet til udendørs kommunikation over lang afstand. Desuden er signaloverførslen meget dårlig, hvis der er en mur til stede mellem sender og modtager. Den NRF24L01 + PA + LNA med en ekstern antenne har en PA, der øger effekten af det signal før transmissionen. LNA står for Low Noise Amplifier. Det er klart, filtrerer støj og øger det ekstremt svage og usikre lave niveau af signalet modtaget fra antennen. Det hjælper med at lave nyttige niveauer af signal, og det har en ekstern antenne på 2 dB, hvorigennem den kan transmittere 1000 meters dækning på luftområdet så det er perfekt til vores udendørs walkie-talkie kommunikationsprojekter.
Komponent påkrævet til Arduino-baseret Walkie Talkie
- NRF24L01 + PA + LNA med ekstern 2DB-antenne (2 stk)
- Arduino UNO eller en hvilken som helst version af Arduino
- Audioforstærker (2stk.)
- Mikrofonkredsløb: Du kan lave det selv (diskuteret senere) eller købe et lydsensormodul.
- DC til DC step-up boostermodul (2stk)
- 3.3V AMS1117 spændingsreguleringsmodul
- Strømindikator LED (2 stk)
- 470 ohm modstand (2stk)
- En 4-tommer højttaler (2 stk.)
- trykknap (til PTT-knap)
- 104 PF til fremstilling af PTT-knap (2 stk.)
- 100 NF kondensator til NRF24L01 (2 stk.)
- 1k modstand til PTT-knap (2 stk)
- 2 sæt li-ion batteri
- Li-ion batteriopladning og batteribeskyttelsesmodul (2stk.)
- Noget jumper wire, mandlig header pin, prikket vero board
Arduino Walkie Talkie-kredsløbsdiagram
Det komplette kredsløbsdiagram for Arduino Walkie Talkie er vist på billedet nedenfor. Kredsløbsdiagrammet viser alle forbindelser inklusive PTT-knappen, mikrofonkredsløbet og stereolydudgangen.
Vigtigt: NRF24L01-modulets spændingsindgangsområde er 1,9v til maksimalt 3,6 volt, og for spændings- og strømstabilitet skal du bruge en 100nf kondensator i + VCC og - GND, endnu andre stifter i nrf24l01-modulet tåler 5 volt signal niveauer.
Trin 1: Jeg startede med at lave hjemmelavet brugerdefineret PCB og Arduino Atmega328p-kort. Jeg havde sat IC Atmega328p på programmøren og blinkede den og derefter uploadet koden. Derefter tilføjede jeg 16 MHz krystal på Atmega328p IC på (PB6, PB7) pin 9 og 10. Billederne af min specialfremstillede print og det samlede kort med programmeret IC er vist nedenfor.
Trin 2: Jeg tilsluttede NRF24L01-moduler som vist i kredsløbsdiagrammet i følgende rækkefølge. CE til digital pin nummer 7, CSN til pin nummer 8, SCK til digital pin 13, MOSI til digital pin 11, MISO til digital pin 12 og IRQ til digital pin 2.
For strømforsyningen skal du droppe spændingen først fra 5 volt til 3,3 v med god strømstabilitet. Du skal også sætte en 100nF kondensator på VCC og jord på nrf24l01-modulet. Så jeg brugte AMS1117, som er en 3,3-volt spændingsregulator, modulet reducerer også din projektstørrelse og gør det kompakt.
Hvis du selv vil lave dette spændingsregulatorkort, kan du kun købe 3,3 volt regulator IC og kan gøre det ved at tilføje nogle hætter, modstand i input og output, da det er meget vigtigt for dit RF-modul, fordi det er en følsom enhed. Eller du kan bruge LM317 regulatoren til variabel spænding til at opbygge et 3.3V reguleret kredsløb, som vi gjorde i Breadboard-strømforsyningsprojektet.
Trin 3: Du kan købe en lydsensor eller oprette et simpelt mikrofonkredsløb som vist i kredsløbsdiagrammet. Den består kun af en transistor - 2n3904 NPN-transistor. Billedet nedenfor viser det hjemmelavede mikrofonkredsløb bygget på et Vero-kort. Du kan også tjekke dette enkle lydforforstærkerkredsløb for mere information.
For bedre forståelse har jeg lavet en anden repræsentation af hele forbindelsen med komponentværdier, som du kan se nedenfor
Trin 4: For at oprette forbindelse fra din mikrocontroller digitale pin nummer 9 & 10 til din lydforstærker har jeg brugt PAM8403 stereolydforstærkeren, fordi Arduino-lydudgangen som standard er meget lav (normalt kan du kun høre lyd ved hjælp af bare hovedtelefoner, ikke en højttaler, så vi har brug for et forstærkningstrin). Modulet kan nemt køre to bærbare højttalere og fås til en meget lav pris. Den leveres også med en meget kraftig lydforstærker i en SMD-pakke, som kræver meget lidt plads. PAM8403-lydforstærkermodulet er vist nedenfor.
Forbindelsen er meget enkel, en 3,7V til 5V strømforsyning er nødvendig for at få strøm til lydforstærkeren. Venstre kanal og højre kanal lydindgang fra Arduino pin 9 og 10 sammen med jordstiften skal gives som input til dette forstærkermodul som vist i kredsløbsdiagrammet. I mit tilfælde har jeg brugt en enkelt 4 tommer 8 ohm højttaler og kun brugt højre kanal output. Hvis du vil, kan du bruge to højttalere med dette modul.
Trin 5: Derefter byggede jeg PTT-kontakten ved hjælp af en simpel trykknap. Jeg tilføjede en 104PF eller 0.1uf kondensator for at forhindre switch, der springer eller uregelmæssige signaler, når der trykkes på kontakten. Pin 4 er nu direkte forbundet med Arduino Digital pin D3, da en afbrudt pin er tildelt kodningen.
NRF24L01 + PA + LNA, når der transmitteres et lydsignal eller DATA-pakker, bruger mere strøm, derfor bruger det mere strøm. Når du pludselig trykker på PTT-knappen, øges strømforbruget. For at håndtere denne pludselig øgede belastning skal du bruge en 100nF kondensator på + vcc og jord for transmissionens stabilitet af NRF24L01 + PA + LNA-modulet.
Når der trykkes på kontakten, modtager Arduino-kortet en Arduino Interrupt på sin pin D3. I programmet erklærer vi, at den digitale pin 3 i Arduino konstant kontrollerer dens indgangsspænding. Hvis indgangsspændingen er lav, holder den walkie-talkie i modtagelsestilstand, og hvis den digitale pin nummer 3 er høj, skifter den walkie-talkie til transmissionstilstand for at sende stemmesignal, der er samlet op af mikrofonprocessen via mikrocontroller og transmitterer NRF24L01 + PA + LNA med en ekstern antenne.
Trin 6: Til strømforsyningen har jeg valgt dette Li-ion-batteri. For at drive alle komponenter som Arduino IC Atmega328p, NRF24L01 + PA + LNA, lydforstærker, PTT-knap og mikrofonkredsløb brugte jeg 2 sæt Li-ion-batteri til dette projekt som vist nedenfor.
En god celle har et spændingsniveau 3,8 til 4,2 volt, og opladningsspændingen er kun 4 til 4,2 volt. For at vide mere om lithiumbatterier kan du tjekke den linkede artikel. Disse batterier bruges meget populært i bærbare elektroniske enheder og elektriske køretøjer. Men Li-ion-battericeller er ikke så robuste som andre batterier, de har brug for beskyttelse mod overopladning og afladning for hurtigt, hvilket betyder, at opladnings- / afladningsstrømmen og spændingen skal holdes inden for sikre grænser. Derfor brugte jeg det mest propel Li-ion batteriopladningsmodul - TP4056. Vi har tidligere brugt dette modul til at opbygge en bærbar strømbank, du kan tjekke det for flere detaljer om dette kort.
Trin 7: Jeg har brugt en 2 Amp dc til dc step up boostermodul , fordi Arduino atmega328p, lydforstærker, mikrofonkredsløb, PTT-knap alt har brug for 5 volt, men mit batteri kan kun levere 3,7V til 4,2V, så jeg har brug for en boost-konverter for at nå op på 5V med mere end 1 ampere med stabil effekt.
Når du har bygget kredsløbet, kan du samle det i en lille kabinet. Jeg brugte en plastikæske og placerede mine kredsløb som vist på billedet nedenfor
Walkie Talkie Arduino-kode
Det komplette program til din Arduino walkie talkie findes nederst på denne side. Lad os i dette afsnit diskutere, hvordan programmet fungerer. Inden du kommer dertil, skal du medtage nogle biblioteker, der er angivet nedenfor.
- nRF24 Bibliotek
- nRF24 lydbibliotek
- Maniaxbug RF24-bibliotek
Begynd programmeringen med at inkludere overskrifterne til radio- og lydbiblioteket som vist nedenfor
#omfatte
Initialiser RF-radioen på ben 7 og 8, og indstil lydradionummeret til 0. Initialiser også ppt-knappen på pin 3.
RF24 radio (7,8); // Indstil radio ved hjælp af ben 7 (CE) 8 (CS) RF24Audio rfAudio (radio, 0); // Indstil lyden ved hjælp af radioen, og indstil til radionummer 0 int talkButton = 3;
Inde i installationsfunktionen skal du begynde seriel skærm ved 115200 baudrate til fejlfinding. Initialiser derefter ppt-knappen tilslut til pin 3 som en interrupt pin.
ugyldig opsætning () {Serial.begin (115200); printf_begin (); radio.begin (); radio.printDetails (); rfAudio.begin (); pinMode (talkButton, INPUT); // indstiller afbrydelse for at kontrollere, om knappen tales, trykknappen trykkes på attachInterrupt (digitalPinToInterrupt (talkButton), talk, CHANGE); // indstiller standardtilstanden for hvert modul til at modtage rfAudio.receive (); }
Dernæst har vi en funktion kaldet talk (), som kaldes som reaktion på afbrydelse. Programmet kontrollerer knapens tilstand, hvis der trykkes på knappen og holdes nede, og den går i sendetilstand for at sende lyden. Hvis knappen slippes, går den i modtagefunktion.
void talk () {if (digitalRead (talkButton)) rfAudio.transmit (); ellers rfAudio.receive (); } ugyldig sløjfe () {}
Den komplette bearbejdning af dette projekt kan findes i nedenstående video. Walkie Talkie producerer noget støj under drift, dette er støj fra bærefrekvensen på nRF24L01-modulet. Det kan reduceres ved hjælp af en god lydsensor eller mikrofonmodul. Hvis du har spørgsmål om dette projekt, kan du lade dem være i kommentarfeltet nedenfor. Du kan også bruge vores fora til at få hurtige svar på dine andre tekniske spørgsmål.