- Walkie Talkie met behulp van nRF24L01 RF-module
- Vereiste component voor op Arduino gebaseerde walkietalkie
- Arduino Walkie Talkie schakelschema
- Walkie Talkie Arduino-code
We leven in het tijdperk van 5G- en 5G-apparaten; oude technologieën zoals het portofoonsysteem en het RF-communicatiesysteem zijn echter nog steeds van het grootste belang in scenario's waarin communicatie op afstand, korte afstand, goedkope en goedkope communicatie vereist is. Als u bijvoorbeeld een bouwbedrijf of een bouwbedrijf met een zwaar gewicht heeft, moeten uw werknemers met elkaar communiceren om gecoördineerd te kunnen werken. Met behulp van een portofoon kunnen ze met elkaar communiceren en korte massages of instructies verspreiden door gewoon op de "PTT" -knop te drukken om stem uit te zenden voor andere werknemers, zodat ze kunnen luisteren en de instructie kunnen volgen. Een andere toepassing zou kunnen zijn in de slimme helmenom tijdens een lange rit te communiceren tussen een groep rijders, kan het voorgestelde model hier tussen zes mensen tegelijk communiceren. Als je andere soorten draadloze audiotransmissieprojecten op korte afstand wilt bekijken, bezoek dan het IR Based Wireless Audio Transmitter en Li-Fi Audio Transmitter-project met behulp van de links.
Walkie Talkie met behulp van nRF24L01 RF-module
Het belangrijkste onderdeel van dit project is de NRF24L01 RF-module en Arduino Uno, het brein of de processor. We hebben al geleerd hoe we Nrf24L01 met Arduino kunnen verbinden door een servomotor op afstand te besturen. Voor dit project is gekozen voor de NRF24L01 RF module omdat deze verschillende voordelen heeft ten opzichte van een digitaal communicatiemedium. Het heeft een 2,4 GHz ISM-band met zeer hoge frequentie en de gegevenssnelheid kan 250 kbps, 1 Mbps, 2 Mbps zijn. Het heeft 125 mogelijke kanalen met een tussenruimte van 1 Mhz, zodat de module 125 verschillende kanalen kan gebruiken, wat het mogelijk maakt om een netwerk van 125 onafhankelijk werkende modems op één plek te hebben.
Het belangrijkste is dat NRF24L01-signalen elkaar niet overlappen of de interface kruisen met andere portofoons, zoals politie-portofoons en spoorwegportaals, en dat het andere portofoons niet stoort. Een enkele nrf24l01-module kan communiceren met de andere 6 nrf24l01-modules op het moment dat ze zich in de ontvangende toestand bevinden. Het is ook een module met een laag stroomverbruik, wat een bijkomend voordeel is. Er zijn twee soorten NRF24L01-modules die overal verkrijgbaar en vaak worden gebruikt, de ene is NRF24L01 + en de andere is NRF24L01 + PA + LNA (hieronder weergegeven) met ingebouwde antenne.
De NRF24L01 + heeft een ingebouwde antenne en slechts 100 meter bereik. Het is alleen geschikt voor gebruik binnenshuis en is niet geschikt voor communicatie over lange afstanden buitenshuis. Als er bovendien een muur tussen zender en ontvanger is, is de signaaloverdracht erg slecht. De NRF24L01 + PA + LNA met een externe antenne heeft een PA die de kracht van het signaal vóór de verzending versterkt. LNA staat voor Low Noise Amplifier. Het is duidelijk, filtert de ruis weg en versterkt het extreem zwakke en onzekere lage niveau van het signaal dat van de antenne wordt ontvangen. Het helpt bij het maken van bruikbare signaalniveaus en het heeft een externe antenne van 2 dB waarmee het 1000 meter on-air bereik kan verzenden, dus het is perfect voor onze communicatieprojecten met walkietalkies buitenshuis.
Vereiste component voor op Arduino gebaseerde walkietalkie
- NRF24L01 + PA + LNA met externe 2DB antenne (2 stuks)
- Arduino UNO of een andere versie van Arduino
- Audio versterker (2 stuks)
- Microfooncircuit: u kunt het zelf maken (later besproken) of een geluidssensormodule aanschaffen.
- DC naar DC step-up booster module (2 stuks)
- 3.3V AMS1117 spanningsregelaar module
- Power indicator LED (2 stuks)
- 470 ohm weerstand (2 stuks)
- Een 4-inch luidspreker (2 stuks)
- drukknop (voor PTT-knop)
- 104 PF voor het maken van PTT-knop (2 stuks)
- 100 NF condensator voor NRF24L01 (2 stuks)
- 1k weerstand voor PTT-knop (2 stuks)
- 2 sets li-ionbatterijen
- Li-ion batterij opladen en batterij beschermingsmodule (2 stuks)
- Een beetje doorverbindingsdraad, mannelijke header-pin, gestippeld vero-bord
Arduino Walkie Talkie schakelschema
Het volledige schakelschema voor de Arduino Walkie Talkie wordt weergegeven in de onderstaande afbeelding. Het schakelschema toont alle aansluitingen inclusief de PTT-knop, microfooncircuit en stereo audio-uitgang.
Belangrijk: het ingangsspanningsbereik van de NRF24L01-module is 1,9 V tot een maximum van 3,6 volt en voor spannings- en stroomstabiliteit moet je een condensator van 100 nf gebruiken in de + VCC en - GND, nog andere pinnen van de nrf24l01-module kunnen een signaal van 5 volt tolereren niveaus.
Stap 1: Ik ben begonnen met het maken van zelfgemaakte aangepaste PCB's en Arduino Atmega328p-kaarten. Ik had de IC Atmega328p op de programmeur gezet en geflitst en vervolgens de code geüpload. Daarna heb ik 16 MHz kristal toegevoegd op Atmega328p IC op (PB6, PB7) pin 9 en 10. De foto's van mijn op maat gemaakte PCB en het geassembleerde bord met geprogrammeerde IC zijn hieronder te zien.
Stap 2: Ik heb NRF24L01-modules aangesloten zoals weergegeven in het schakelschema in de volgende volgorde. CE naar digitale pin nummer 7, CSN naar pin nummer 8, SCK naar digitale pin 13, MOSI naar digitale pin 11, MISO naar digitale pin 12 en IRQ naar digitale pin 2.
Voor de stroomvoorziening moet u de spanning eerst verlagen van 5 volt naar 3,3 volt met een goede stroomstabiliteit. Ook moet je een condensator van 100nF op de VCC en aarde van de nrf24l01-module plaatsen. Dus ik heb AMS1117 gebruikt, een 3.3-volt spanningsregelaar, de module verkleint ook de projectgrootte en maakt het compact.
Als je dit spanningsregelaarbord zelf wilt maken, kun je alleen een 3,3-volt regulator-IC kopen en dit maken door wat kappen toe te voegen, weerstand in invoer en uitvoer, omdat het erg belangrijk is voor je RF-module omdat het een gevoelig apparaat is. Of u kunt de LM317 variabele spanningsregelaar gebruiken om een 3.3V gereguleerd circuit te bouwen, zoals we deden in het Breadboard-voedingsproject.
Stap 3: U kunt een geluidssensor kopen of een eenvoudig microfooncircuit maken zoals weergegeven in het schakelschema. Het bestaat uit slechts één transistor - 2n3904 NPN-transistor. De onderstaande afbeelding toont het zelfgemaakte microfooncircuit dat op een Vero-bord is gebouwd. U kunt ook dit eenvoudige circuit voor audio-voorversterker bekijken voor meer informatie.
Voor een beter begrip heb ik een andere weergave gemaakt van het hele verband met componentwaarden, zoals u hieronder kunt zien
Stap 4: Voor het maken van een verbinding van uw microcontroller digitale pincode 9 & 10 naar uw audioversterker, heb ik de PAM8403 stereo audio versterker gebruikt omdat de Arduino audio output standaard erg laag is (meestal hoor je alleen geluid met alleen een hoofdtelefoon)., geen luidspreker, dus we hebben een versterkingstrap nodig). De module kan gemakkelijk twee laptopluidsprekers aansturen en is tegen zeer lage kosten verkrijgbaar. Het wordt ook geleverd met een zeer krachtige audioversterker in een SMD-verpakking die zeer weinig ruimte in beslag neemt. De PAM8403 audio versterker module wordt hieronder getoond.
Het is een feit dat u zich geen zorgen hoeft te maken.De aansluiting is heel simpel, er is een 3,7V tot 5V voeding nodig om de audioversterker van stroom te voorzien. De audio-ingang van het linkerkanaal en het rechterkanaal van Arduino-pin 9 en 10, samen met de aardingspin, moet worden opgegeven als invoer voor deze versterkermodule, zoals weergegeven in het schakelschema. In mijn geval heb ik een enkele 4 inch 8 ohm-luidspreker gebruikt en alleen de rechterkanaaluitgang gebruikt. Als je wilt, kun je bij deze module twee speakers gebruiken.
Stap 5: Vervolgens heb ik de PTT-schakelaar gebouwd met een simpele drukknop. Ik heb een 104PF of 0.1uf condensator toegevoegd om te voorkomen dat de schakelaar stuitert of onregelmatige signalen wanneer de schakelaar wordt ingedrukt. Pin 4 is nu rechtstreeks verbonden met Arduino Digital pin D3 aangezien een onderbroken pin is toegewezen aan de codering.
De NRF24L01 + PA + LNA verbruikt bij het verzenden van een audiosignaal of DATA-pakketten meer stroom en verbruikt dus meer stroom. Wanneer u plotseling op de PTT-knop drukt, neemt het stroomverbruik toe. Om deze plotseling verhoogde belasting op te vangen, moet u een 100nF condensator op + vcc en aarde gebruiken voor de transmissiestabiliteit van de NRF24L01 + PA + LNA-module.
Wanneer de schakelaar wordt ingedrukt, ontvangt het Arduino-bord een Arduino-onderbreking op zijn pin D3. In het programma zullen we aangeven dat de digitale pin 3 van Arduino constant zijn ingangsspanning controleert. Als de ingangsspanning laag is, houdt het de portofoon in ontvangstmodus en als de digitale pincode 3 hoog is, schakelt het de portofoon in de zendmodus voor het verzenden van een spraaksignaal dat wordt opgepikt door het microfoonproces via de microcontroller en via NRF24L01 + PA + LNA met een externe antenne.
Stap 6: Voor de stroomvoorziening heb ik voor deze Li-ion accu gekozen. Om alle componenten zoals Arduino IC Atmega328p, NRF24L01 + PA + LNA, audioversterker, PTT-knop en microfooncircuit van stroom te voorzien, heb ik voor dit project 2 sets Li-ionbatterijen gebruikt, zoals hieronder wordt weergegeven.
Een goede cel heeft een spanningsniveau van 3,8 tot 4,2 volt en de laadspanning is slechts 4 tot 4,2 volt. Voor meer informatie over lithiumbatterijen kunt u het gelinkte artikel raadplegen. Deze batterijen worden in de volksmond veel gebruikt in draagbare elektronische apparaten en elektrische voertuigen. Maar Li-ion-batterijcellen zijn niet zo robuust als andere batterijen, ze hebben bescherming nodig tegen overladen en te snel ontladen, wat betekent dat de laad- / ontlaadstroom en -spanning binnen veilige grenzen moeten worden gehouden. Daarom heb ik de Li-ion-batterijlaadmodule met de meeste propellers gebruikt - TP4056. We hebben deze module eerder gebruikt voor het bouwen van een Portable Power Bank, je kunt dat bekijken voor meer details over dit bord.
Stap 7: Ik heb een 2 Amp dc naar dc step-up booster- module gebruikt omdat Arduino atmega328p, audioversterker, microfooncircuit, PTT-knop alles 5 volt nodig heeft, maar mijn batterij kan slechts 3,7V tot 4,2V leveren, dus ik heb een boost-converter nodig om 5V te bereiken met meer dan 1 Amp aan stabiel uitgangsvermogen.
Nadat u de schakeling heeft opgebouwd, kunt u deze in een kleine behuizing monteren. Ik heb een plastic doos gebruikt en mijn circuits geplaatst zoals in de onderstaande afbeelding
Walkie Talkie Arduino-code
Het complete programma voor je Arduino walkie talkie vind je onderaan deze pagina. Laten we in dit gedeelte bespreken hoe het programma werkt. Voordat u daar komt, moet u enkele bibliotheken toevoegen die hieronder worden vermeld.
- nRF24 Bibliotheek
- nRF24-audiobibliotheek
- Maniaxbug RF24-bibliotheek
Begin met programmeren door de kopteksten van de radio- en audiobibliotheek op te nemen, zoals hieronder weergegeven
# omvatten
Initialiseer de RF-radio op pin 7 en 8 en stel het nummer van de audio-radio in op 0. Initialiseer ook de ppt-knop op pin 3.
RF24-radio (7,8); // Stel de radio in met pinnen 7 (CE) 8 (CS) RF24Audio rfAudio (radio, 0); // Stel de audio in met behulp van de radio en stel deze in op radio nummer 0 int talkButton = 3;
Begin in de setup-functie met de seriële monitor op 115200 baudrate voor foutopsporing. Initialiseer vervolgens de ppt-knop om verbinding te maken met pin 3 als een onderbrekingspin.
ongeldige setup () {Serial.begin (115200); printf_begin (); radio.begin (); radio.printDetails (); rfAudio.begin (); pinMode (talkButton, INPUT); // stelt interrupt in om te controleren op knop talk abutton press attachInterrupt (digitalPinToInterrupt (talkButton), talk, CHANGE); // stelt de standaardstatus in voor elke module om rfAudio.receive () te ontvangen; }
Vervolgens hebben we een functie genaamd talk () die wordt aangeroepen als reactie op interrupt. Het programma controleert de status van de knop als de knop wordt ingedrukt en vastgehouden, het gaat naar de verzendmodus om de audio te verzenden. Als de knop wordt losgelaten, gaat het naar de ontvangstmodus.
void talk () {if (digitalRead (talkButton)) rfAudio.transmit (); anders rfAudio.receive (); } void loop () {}
De volledige werking van dit project is te vinden in de onderstaande video. De Walkie Talkie maakt wat geluid tijdens het gebruik, dit is het geluid van de draaggolffrequentie van de nRF24L01 Module. Het kan worden verminderd door een goede geluidssensor of microfoonmodule te gebruiken. Als u vragen heeft over dit project, kunt u deze achterlaten in het commentaargedeelte hieronder. U kunt ook onze forums gebruiken om snel antwoord te krijgen op uw andere technische vragen.