Inhoudsopgave:

NRF24 tweerichtingsradio voor telemetrie - Ajarnpa
NRF24 tweerichtingsradio voor telemetrie - Ajarnpa

Video: NRF24 tweerichtingsradio voor telemetrie - Ajarnpa

Video: NRF24 tweerichtingsradio voor telemetrie - Ajarnpa
Video: Idea: nRF24L01+ Transceivers for Radio Control & Telemetry 2024, Juli-
Anonim
NRF24 Tweerichtingsradio voor telemetrie
NRF24 Tweerichtingsradio voor telemetrie

Hallo jongens, mijn naam is Pedro Castelani en ik breng je mijn eerste instructable: een bidirectionele radio bouwen met arduino voor, nou ja, waar je het ook voor nodig hebt.

In dit project zullen we twee aparte circuits maken die zowel als ontvanger als zender zullen fungeren. De belangrijkste componenten zijn twee arduino-borden (allemaal werken) en twee nrf24 transciever-modules. In mijn geval bedien ik een servo met een potentiometer van de andere Arduino en stuur ik de spanningen van een tweecellige lipo-batterij terug naar de eerste.

Ik ben van plan het te gebruiken als een add-on voor mijn drone, die geen telemetrie of servo-gimbal-besturing heeft. U kunt het echter voor andere dingen gebruiken, zoals het bouwen van uw eigen quadcopter, vliegtuig, rc-auto, enz. Met de meegeleverde code kunt u ook alle gewenste wijzigingen aanbrengen volgens uw behoeften. Ik zal ook proberen uit te leggen hoe ik het correct kan aanpassen (wat me enige tijd kostte om het zelf te leren, omdat ik gewend was aan een ander soort gebruik van de nrf24-chip).

Stap 1: Materialen

Materialen
Materialen
Materialen
Materialen
Materialen
Materialen

Om met ons project te beginnen, moeten we alle benodigde onderdelen kennen. Hieronder vindt u een lijst met de basisbehoeften. Ik heb de meeste gekocht bij een plaatselijke elektronicawinkel waar ik woon, dus ik kan je geen plaats aanbevelen om ze te kopen. Je zou Amazon of een andere plaats kunnen proberen. Ik zeg niet dat je ze daar moet bestellen, maar het is slechts een suggestie.

  1. Twee Arduino-kaarten (iedereen zou moeten werken. Ik heb twee arduino pro mini, die ik erg leuk vind omdat ze 13 digitale pinnen en 8 analoge hebben, terwijl de Uno slechts 6 analoge heeft).
  2. Twee Nrf24-modules. Er zijn er enkele met externe antennes die een groter zendbereik hebben. Kies degene die je het leukst vindt.
  3. Vrouwelijk-vrouwelijk en vrouwelijk-mannelijk startkabels.
  4. Prototyping bord.
  5. Arduino Programmer (voor arduino pro mini, als je er een hebt met een usb-aansluiting, heb je deze niet nodig).
  6. Arduino IDE (software). Download vanaf hier.
  7. In mijn geval heb ik ook gebruikt:
  • Servo. Iedereen die je kunt krijgen. Ik hou van de SG90, een kleine ontworpen voor Arduino.
  • Potentiometer (tussen 10k en 20k ohm). Kan worden gekocht bij een plaatselijke elektronicawinkel of u kunt de joystick gebruiken die voor arduino is gemaakt. Er zijn een paar afbeeldingen van degene die ik heb. Ik heb er ook een gekregen van een kapotte drone rc-controller, om je een paar ideeën te geven
  • 4 gelijke normale weerstanden. Ik gebruikte 10k die ik van het huis van mijn grootvader kreeg. Ik gebruik ze als spanningsdeler.
  • Klein koperen pad perfboard (die ik ook van mijn opa heb gekregen) om de weerstanden aan elkaar te solderen.
  • pinnen. Wordt gebruikt om de startkabels van de arduino eenvoudig op de weerstanden aan te sluiten.
  • 2s lipo-batterij. Ik gebruik het om een van mijn arduino's van stroom te voorzien. De weerstanden zijn ermee verbonden en lezen de spanningen af. Ik ben van plan mijn Arduino te verbinden met de 2s-batterij van mijn drone, omdat hij geen externe voedingsbron nodig heeft en me tegelijkertijd vertelt hoeveel batterij er nog over is.
  • Soldeerbout en soldeer. Nodig om de weerstanden, het perfboard en de pinnen aan elkaar te solderen.

Stap 2: Functie en code

Functie en code
Functie en code

Als alle materialen zijn genoemd, gaan we het hebben over de functie van de modules.

Hoe het werkt: Laten we de ene Arduino "A" noemen en de andere "B". In mijn geval, na het programmeren van beide, heb ik ze aangesloten op hun corresponderende radiochip en de potentiometer toegevoegd aan Arduino A en de weerstanden en servo aan Arduino B. Module A stuurt waarden naar B en verplaatst de Servo. B leest de spanningen van de 2s-batterij en stuurt ze terug naar A. Dan begint de hele cirkel opnieuw. Omdat A waarden ontvangt die niet mechanisch worden uitgedrukt, is hij verbonden met de programmeur, waardoor we ze kunnen lezen met een seriële monitor (meegeleverd in de Arduino IDE)

Code: ik noem de schets voor arduino A (verbonden met de programmeur en de potentiometer) TwoWayRadio_1, en de schets voor arduino B TwoWayRadio_2WithServo

TwoWayRadio_1 en TwoWayRadio_2WithServo vindt u net onder deze paragraaf. Er is een uitleg in elke code om alles gemakkelijker te begrijpen te maken.

Stap 3: Soldeermodules: spanningsdeler en potentiometer

Soldeermodules: spanningsdeler en potentiometer
Soldeermodules: spanningsdeler en potentiometer
Soldeermodules: spanningsdeler en potentiometer
Soldeermodules: spanningsdeler en potentiometer
Soldeermodules: spanningsdeler en potentiometer
Soldeermodules: spanningsdeler en potentiometer
Soldeermodules: spanningsdeler en potentiometer
Soldeermodules: spanningsdeler en potentiometer

Deze stap is optioneel, omdat je misschien gewoon de potentiometer-joystick wilt gebruiken die speciaal voor Arduino is ontworpen en een andere module wilt gebruiken in plaats van de spanningsdeler. Ik heb echter alles gepland (inclusief codes) voor deze modules.

Potentiometer:

Dit onderdeel is zo ongeveer de gemakkelijkste in de soldeerstap. Je hoeft alleen maar wat startkabels aan je potentiometer te solderen. Als je wilt, kun je eerst de potentiometer op het perfboard solderen en vervolgens een deel van de pinnen solderen. Wanneer u het moet gebruiken, sluit u gewoon de startkabels aan op de arduino en vervolgens op de pinnen op het perfboard. Indien niet in gebruik, kunt u de kabels verwijderen en voor een ander project gebruiken. Als je echter doet zoals ik deed, kun je de potentiometer rechtstreeks op de kabels gesoldeerd laten

  • Als je doet zoals ik deed, pak dan drie vrouwelijke-vrouwelijke startkabels, knip een van de uiteinden af en verwijder de isolatie daar, waarbij je een klein stukje koperen bedrading op elke draad laat.
  • Verwarm je soldeerbout en soldeer de gemodificeerde jumpers aan je potentiometers-pinnen. Als je kunt, probeer dan verschillende kleuren te krijgen, zodat je kunt onthouden welke vcc, gnd en het "signaal" is (de middelste). Sluit deze kabels aan op de overeenkomstige analoge pinnen op de arduino. Er zijn enkele afbeeldingen aan het begin van de stap over hoe het er uiteindelijk uitzag. De potentiometer is geen gewone, het is eigenlijk een klein wieltje met vijf pinnen. Het kostte me wat tijd om erachter te komen welke welke was. Probeer het gemakkelijker te doen en gebruik een gewone potentiometer zoals weergegeven in de stap MATERIALEN.
  • Als je het op een perfboard soldeert, pak dan de potentiometer en het perfboard en soldeer ze samen met je soldeerbout.
  • Pak de pinnen (drie) en plaats ze op de meest handige manier. Gebruik soldeer om een verbinding te maken tussen elke pin en de potentiometerpinnen. Maak geen verbinding tussen meer dan twee pinnen, anders werkt het niet (het werkt als kortsluiting).
  • Koop wat vrouwelijk-vrouwelijke of vrouwelijk-mannelijke jumperdraden en verbind ze van je Arduino met je nieuwe potentiometermodule (onthoud welke welke is).

2. Spanningsdeler:

  • Dit deel is iets ingewikkelder. Je hebt de vier weerstanden, vijf pinnen en het perfboard nodig. Ik heb de code ontworpen om te gebruiken voor een 2s-batterij (twee cellen), maar je zou het ook voor een 1s kunnen gebruiken door de Arduino-schets en de hardware een beetje te veranderen. Ik heb foto's bijgevoegd van twee spanningsdelers die ik heb gemaakt, een met slechts 2 weerstanden (voor 1s-batterijen) en een met vier (je raadt het al: 2s-batterijen).
  • Laten we beginnen met de 2s. Ik heb geen afbeeldingen van het bouwproces sinds ik deze instructable een tijdje begon te gebruiken nadat ik klaar was met solderen. Ik voeg wel afbeeldingen toe van het eindresultaat, dus ik zal proberen zo duidelijk mogelijk te zijn.
  • Begin met het verkrijgen van het perfboard en 5 pinnen. Soldeer ze dicht bij de zijkant en laat ze elkaar niet raken.
  • Soldeer de weerstanden zoals getoond in de laatste afbeelding aan het begin van de stap (het kleine schakelschema). De verbindingen tussen elke weerstand en pin zijn gemaakt met soldeer. Probeer zo min mogelijk ruimte in te nemen.
  • Als je klaar bent, zou het er ongeveer uit moeten zien als de foto's van de voltooide spanningsdeler die ik hierboven heb gepost.
  • De 1s Spanningsdeler is in principe hetzelfde, met de uitzondering dat je maar drie pinnen en twee weerstanden gebruikt. Ik heb afbeeldingen toegevoegd van hoe het eruit ziet als het klaar is. Kijk maar naar het diagram voor de 2s en stel je het voor zonder de signaaldraad 1, de middelste draad en weerstanden r2 en r3 en daar heb je het!
  • Dus als u een 1s-spanningsdeler wilt, is het misschien iets ingewikkelder dan alleen een 2s-spanningsdeler te gebruiken.

Stap 4: Programmeren van uw Arduino

Uw Arduino programmeren
Uw Arduino programmeren
  1. We zijn bijna klaar!
  2. Nadat u de Arduino IDE-software hebt gedownload van de site die is gekoppeld in de stap MATERIALEN, downloadt u de schetsen van de stap FUNCTIE EN CODE.
  3. Open ze vervolgens in de Arduino IDE.
  4. Open "Extra" in een van beide tabbladen en klik op "Boards". Kies je bord uit de lijst. Klik op "Processor" en vervolgens op "Programmer", en selecteer ze allemaal volgens uw bord. Keer dan terug naar de schets. Het is best handig om de informatie van je board op internet te bekijken. Zoek de naam op en bekijk de specificaties.
  5. Klik op "schets" (bovenaan), vervolgens op "bibliotheek opnemen" en vervolgens op "bibliotheken beheren". Een klein venster zou in het midden van het scherm moeten openen. Voer de zoekoptie "rf24" in. Download de gewenste bibliotheek. Het is nodig om de code naar het Arduino-bord te kunnen uploaden.
  6. Klik voor de zekerheid op het "vinkje"-symbool (linksboven) om te controleren of het geen fouten bevat. Ga dan verder om het te uploaden door op de pijl naar rechts te drukken, naast het "Tick"-symbool.
  7. Als je board een Pro Mini is, zal ik straks uitleggen hoe je alles aansluit. Als dat niet het geval is, upload het dan en ga, als je klaar bent met het programmeren van beide Arduino's, door naar de volgende stap, na het lezen van de onderstaande waarschuwing.
  8. Aangezien je twee kaarten hebt, moet je ONTHOUDEN met welke code elk is geprogrammeerd, om toekomstige problemen te voorkomen.
  9. Dus als je een Pro Mini hebt, heb je een programmeur nodig. Er zijn twee soorten programmeurs: 5-pins en 6-pins. Ik zal me concentreren op 5-pins, omdat zij degenen zijn die ik heb. De verbindingen zijn als volgt (eerste pin is van programmeur, dan arduino): Gnd--Gnd; 5v-Vcc (behalve als uw Pro Mini een 3.3v is, in welk geval het 3.3v is - Vcc); Rxd-Txo; Txd--Rxi. Ik heb een afbeelding van zowel het bord als de programmeur bijgevoegd, voor het geval je het moet controleren.
  10. Verbind je arduino met de programmer en de programmer met je computer. Open de IDE en klik op de uploadknop. Als u linksonder in het scherm kijkt, ziet u een bericht met de tekst "compileren". Op het moment dat dit bericht verandert in "uploaden", druk je op de resetknop op de arduino Pro Mini. Na een tijdje is de schets klaar en verschijnt er een bericht met de tekst "Klaar met uploaden". Zodra dit gebeurt, bent u klaar en klaar om door te gaan naar de volgende stap.

Stap 5: Alles aansluiten

Alles verbinden
Alles verbinden
Alles verbinden
Alles verbinden
Alles verbinden
Alles verbinden
Alles verbinden
Alles verbinden
  1. Nadat we beide arduino's hebben geprogrammeerd, moeten we alles aansluiten om het te laten werken. Hier hebben we alles nodig dat eerder is genoemd: de arduino's, nrf24-modules, kabels, servo, programmeur, spanningsdeler, potentiometer, enz.
  2. We gaan eerst de arduino verbinden die met de programmeur werkt. Aan het begin van de stap staan de afbeeldingen van de aansluitingen van de nrf24. De irq-pin, waarvan wordt gezegd dat deze naar pin 8 op de arduino gaat, is helemaal niet aangesloten. De rest is net als in de afbeelding voor beide Arduino's (je kunt de opmerkingen in de afbeeldingen lezen voor meer info)
  3. De Vcc voor de radio kan worden aangesloten op 3.3 of 5v. Soms werkt het maar met een van hen. Probeer met 3.3 en dan 5 als het niet werkt. Gebruik voor 3.3 de 3.3v-pin van de programmer. Ik moest dit doen, zoals je zult zien in de afbeeldingen van het eindproduct.
  4. Sluit de programmer aan op de Arduino zoals gezegd in de vorige stap.
  5. Sluit de "signaal"-kabel van de potentiometer aan op analoge pin A0.
  6. Sluit de "Positive" van de potentiometer aan op Vcc (alleen 5v, niet 3.3) en "Negative" op Gnd.
  7. Ga naar de andere arduino.
  8. Sluit de radio aan zoals eerder gezegd, volgens de afbeeldingen.
  9. Sluit de signaalkabel van de servo (oranje-geel-wit. Controleer de specificaties van de servo) aan op digitale pin 2, en de gnd op de arduino's Gnd, en de positieve op de arduino's Vcc.
  10. Sluit signaalkabel 1 van de spanningsdeler aan op pin A0 en signaalkabel 2 op pin A1.
  11. Verbind, met behulp van het protoboard, de negatieve kabel van de spanningsdeler, de gnd van de arduino en de gnd van de batterij (zwarte kabel op de jst-stekker).
  12. Sluit de "middelste kabel" van de spanningsdeler aan op de middelste van de batterij, tussen de rode en zwarte kabels van de jst-stekker (witte kleur).
  13. Sluit de 'positieve' kabel van de spanningsdeler aan op de positieve pool van de batterij en op de Raw van de arduino. Sluit niet rechtstreeks aan op Vcc, aangezien deze pin specifiek voor 5v is. Raw-pin gebruikt elke spanning boven 3,3 of 5v tot 12v en regelt deze Vcc-pinnen worden dan uitgangen met 5v.

Je bent bijna klaar! Uw afgewerkte producten zouden eruit moeten zien als de afbeeldingen hierboven. Controleer elke verbinding opnieuw om kortsluiting te voorkomen.

Stap 6: Maak uw project sterker

  • Je arduino met de servo kreeg de laatste stap stroom toen je de batterij op het hele circuit aansloot. Je hoeft dus alleen de andere arduino op een usb-poort aan te sluiten en je bent klaar!
  • Verplaats de potentiometer en je zou moeten zien hoe de servo ook beweegt. In mijn geval is de servo bevestigd aan een 1-assige camera-gimbal, wat de hoek beperkte, dus ik moest de parameters aanpassen. Dat vind je in ieder geval in de code.
  • Om de spanningen te zien, opent u de arduino-software zodra u de programmer op de computer hebt aangesloten en drukt u op "Ctrl+Shift+m". Er wordt een venster geopend met de tekst "Seriële monitor". Onderaan dit venster staat een optie met de tekst "(aantal) baud". Klik erop en selecteer "9600". Sluit de monitor en open hem weer door op dezelfde toetsen te drukken en je zou veel waarden moeten zien binnenkomen. Je zult niet kunnen zien wat deze waarden zijn vanwege de snelheid waarmee ze komen, maar als je de programmeur zullen ze stoppen en je kunt ze lezen. Ik probeer iets te krijgen waarmee ik ze automatisch in een grafiek kan zetten om de spanningen te bekijken of ze met leds weer te geven, maar dat is nog in bewerking.
  • Ook al zie je de waarden misschien niet duidelijk, omdat ze zo snel voorbij gaan, weet dat het eindelijk werkt en dat je het kunt aanpassen aan je behoeften!

Stap 7: Demo

Welnu, dit is de video waarin ik het aanzet en het een beetje gebruik om je te laten zien hoe het zou moeten werken.

Stap 8: Meer ideeën over het gebruik van dit project

Meer ideeën over het gebruik van dit project
Meer ideeën over het gebruik van dit project
Meer ideeën over het gebruik van dit project
Meer ideeën over het gebruik van dit project
Meer ideeën over het gebruik van dit project
Meer ideeën over het gebruik van dit project

Hier zijn enkele ideeën die u kunt bouwen met dit als basis. Vertel me of je er een hebt gemaakt of als je het probeert en het niet kunt, zodat ik je kan helpen!

  • In plaats van spanningen te lezen, pas je de code aan zodat deze de temperatuur, druk, hoogte, enz. terugstuurt. Ik vond de BMP180-chip hier best handig voor.
  • Meet afstanden met de HC-SR04 module en stuur ze terug naar de eerste Arduino. Gebruik de servo om de sensor te richten waar u maar wilt.
  • Voeg nog een servokanaal toe om een camera omhoog en zijwaarts te bewegen; bijvoorbeeld op een rc-auto.
  • Voeg drie andere servokanalen (of meer!) toe en maak je eigen rc zender en ontvanger voor een quadcopter, vliegtuig, helikopter, rc auto, etc!
  • Verander de servo voor een zoeklicht en voeg deze toe aan je drone! Je zult ook in staat zijn om de intensiteit van het licht te regelen (misschien moet je wat transistors en wat code veranderen)
  • In plaats van de spanningen op een computer te lezen, wees creatief en voeg een lcd-module toe, of je kunt een bord met 6 leds maken (twee groene, twee gele en twee rode) die ze een voor een uitschakelt naarmate de batterij lager wordt en begint te knipperen wanneer het batterijniveau onder de door u gekozen spanning zakt. Ik maakte dit kleine bord en plaatste een afbeelding aan het begin van de stap.

Om alles duidelijk te maken, als je een van deze projecten gaat maken, houd er dan rekening mee dat je beide codes en misschien enkele verbindingen moet wijzigen. Probeer alsjeblieft te onthouden om je bord niet te braden door iets stoms te doen.

Als je nog meer ideeën hebt of hulp nodig hebt bij het uitvoeren van een van deze projecten, post het dan in het vragengedeelte!

Stap 9: Problemen oplossen

Probleemoplossen
Probleemoplossen

Om de waarheid te zeggen, de meeste problemen die ik tot nu toe ben tegengekomen, hadden te maken met het schetsgedeelte, dat je al hebt opgelost. Ik zal proberen u zoveel mogelijk problemen te vertellen om u zo goed mogelijk te helpen.

Ten eerste, als je de schets probeert te uploaden en je kunt dit niet, probeer dan dit:

Zorg ervoor dat je de benodigde bibliotheken hebt gedownload (en de juiste!).

Zorg ervoor dat je het juiste bord, processor en programmer hebt gekozen.

Zorg ervoor dat de verbinding tussen de pc en de programmeur en de programmeur en de arduino goed is.

Als je een pro mini gebruikt, probeer dan zo snel mogelijk op de resetknop te drukken nadat het bericht 'uploaden' verschijnt.

Over al deze dingen wordt gesproken in de stap UW ARDUINO PROGRAMMEREN.

Ten tweede, controleer alle verbindingen tussen alles:

Als je arduino niet opstart, is dit duidelijk een spanningsprobleem. Controleer of de kabels niet goed zijn aangesloten en of er kortsluiting is.

Als het wel opstart maar niet werkt, zorg er dan voor dat alle verbindingen zijn waar ze zouden moeten zijn, dat de Arduino die is geprogrammeerd om op de servo en de spanningsdeler te worden aangesloten, echt is aangesloten (met andere woorden, zorg ervoor dat je niet hebt gemengd ze omhoog), probeer op beide op de resetknop te drukken en kijk wat er gebeurt. In uiterst zeldzame gevallen kan de hele schuld bij de NRF24-module liggen. Ik vond er een van mij die alleen op 5 volt werkt en een andere die alleen op 3.3v werkt. Controleer of dit iets oplost. Het overkwam me ook dat slechts één arduino werkte met de 3.3v-radio en de andere alleen met de 5v-radio. Verrassend, niet?

Ten derde, als je de servo kunt verplaatsen maar de spanningen zijn verkeerd, controleer dan of de verbindingen met de spanningsdeler zijn zoals in het diagram in stap 3, en de verbinding met de Arduino. Als je aan de andere kant de spanningen krijgt maar je de servo niet correct kunt bewegen, controleer dan de potentiometer en zijn aansluitingen, de verbinding van de servo met de digitale pin en met de Vcc en Gnd, en als de servo vastzit, kapot is of in een kortsluiting. Probeer het te veranderen met een andere servo. Zorg ervoor dat de digitale pin dezelfde is als de pin die is opgegeven in de code

Nou, dat zijn zo ongeveer alle dingen die in me opkomen over de problemen die je zou kunnen tegenkomen. Hoop dat ze nooit gebeuren en Happy Projects!

Bedankt voor het lezen van mijn Instructable! Deel en stem het voor de EERSTE KEER AUTEUR-wedstrijd!

Aanbevolen: