- Componenten die nodig zijn voor Arduino RC Boat
- 433 MHz RF-zender- en ontvangermodules
- 433MHZ RF-zender
- Blokschema van Arduino RC Boat Transmitter
- Schakelschema van de Arduino RC-afstandsbediening (zender)
- Het bouwen van het RC BOAT-zendercircuit
- Het bouwen van de Arduino RC Boat Transmitter Enclosure
- 433Mhz-ontvangermodule
- Blokschema van de Arduino RC Boat-ontvanger
- Schakelschema van Arduino RC Boat Receiver
- Bouwen van het ontvangercircuit van Arduino RC Boat
- Het bouwen van de RC-BOAT
- Motoren en propellers voor Arduino Air Boat
- Werking van Arduino RC Boat
- Arduino-programmering van de RC Boat
In dit project bouwen we een op afstand bestuurbare Arduino Air-Boat die draadloos bestuurd kan worden met behulp van de 433 MHz RF Radio Modules. We zullen deze boot besturen met een zelfgemaakte afstandsbediening door onze eigen 433 MHz zender en een ontvangermodule te bouwen. In het geval van op afstand bestuurbare apparaten of communicatie tussen twee apparaten, hebben we veel opties zoals IR, Bluetooth, internet, RF, enz. In vergelijking met IR-communicatie heeft radiocommunicatie enkele voordelen, zoals meer bereik en niet vereisen een zichtlijnverbinding tussen de zender en de ontvanger. Deze modules kunnen ook op twee manieren communiceren, wat betekent dat ze tegelijkertijd kunnen verzenden en ontvangen. Laten we dus met behulp van deze 433 MHz RF-module een Arduino RC-boot bouwen in deze tutorial.
We hebben eerder veel op afstand bestuurde projecten gebouwd met behulp van deze 433Mhz RF-modules voor het besturen van een robot zoals deze RF-gestuurde robot of voor domotica-toepassingen om huishoudelijke apparaten te bedienen met behulp van RF. Naast het gebruik van RF-modules hebben we eerder ook een Bluetooth-gestuurde Raspberry Pi-auto en een door DTMF mobiele telefoon bestuurde Arduino-robot gebouwd. U kunt deze projecten ook bekijken als u geïnteresseerd bent.
Componenten die nodig zijn voor Arduino RC Boat
- 433 MHz zender en ontvanger
- Arduino (elke Arduino, om de grootte te verkleinen die ik gebruik promini)
- HT12E en HT12D
- Drukknoppen - 4 nrs
- Weerstanden - 1 mega ohm, 47 k ohm
- L293d-motorstuurprogramma
- 9V batterij (ik gebruik een batterij van 7,4 volt) - 2 nrs
- 7805 regelaar - 2 nrs
- DC-motoren - 2 nrs
- Motorblad of propellors (ik gebruik zelfgemaakte propellors) - 2 nrs
- .1uf condensator- 2Nos
- Veel voorkomende PCB
433 MHz RF-zender- en ontvangermodules
Dit soort RF-modules zijn erg populair bij makers. Vanwege hun lage kosten en eenvoud in verbindingen. Deze modules zijn het meest geschikt voor alle vormen van communicatieprojecten op korte termijn. Deze modules zijn RF-modules van het ASK-type (Amplitude Shift Keying). Amplitude-shift keying (ASK) is een vorm van amplitudemodulatie die digitale gegevens weergeeft als variaties in de amplitude van een draaggolf. In een ASK-systeem wordt het binaire symbool 1 weergegeven door het verzenden van een draaggolf met vaste amplitude en een vaste frequentie gedurende een bitduur van T seconden. Als de signaalwaarde 1 is, wordt het dragersignaal verzonden; anders wordt een signaalwaarde van 0 verzonden. Dat betekent dat ze meestal geen stroom verbruiken bij het verzenden van Logic "zero". Dit lage stroomverbruik maakt ze erg handig bij projecten op batterijen.
433MHZ RF-zender
Dit type module is superklein en wordt geleverd met 3-pins VCC, aarde en gegevens. Sommige andere modules worden geleverd met een extra antennepin. De werkspanning van de zendermodule is 3V-12V en deze module heeft geen instelbare componenten. Een van de grote voordelen van deze module is het lage stroomverbruik, het vereist bijna nulstroom om bit nul te verzenden.
Blokschema van Arduino RC Boat Transmitter
In het bovenstaande blokschema zijn er vier drukknoppen (bedieningsknoppen), deze drukknoppen zijn voor het regelen van de richting van de boot. We hebben er vier voor vooruit, achteruit, links en rechts. Van de drukknoppen krijgen we logica voor het besturen van de boot, maar kunnen we niet rechtstreeks verbinding maken met de encoder, daarom hebben we de Arduino gebruikt. Je zou kunnen denken waarom ik Arduino hier heb gebruikt, het is simpelweg omdat we twee parallelle data-ingangen van de encoder tegelijkertijd naar beneden moeten halen voor een achterwaartse en voorwaartse beweging die niet kan worden bereikt met alleen drukknoppen. Vervolgens codeert de encoder de komende parallelle gegevens naar seriële uitgangen. Vervolgens kunnen we die seriële gegevens verzenden met behulp van een RF-zender.
Schakelschema van de Arduino RC-afstandsbediening (zender)
In het bovenstaande circuit zie je één kant van alle vier de drukknoppen die zijn verbonden met vier digitale pinnen van Arduino (D6-D9) en alle vier de andere kanten verbonden met de aarde. Dat is wanneer we op de knop drukken, de bijbehorende digitale pinnen worden logisch laag. De vier parallelle ingangen van de HT12E- encoder zijn verbonden met nog eens vier digitale pinnen van Arduino (D2-D5). Dus met behulp van Arduino kunnen we de invoer van de encoder bepalen.
En over encoder gesproken HT12E is een 12-bit encoder en een parallelle input-seriële output-encoder. Van de 12 bits zijn 8 bits adresbits die kunnen worden gebruikt voor het besturen van meerdere ontvangers. De pinnen A0-A7 zijn de adresinvoerpinnen. In dit project besturen we slechts één ontvanger, dus we willen het adres niet wijzigen, dus heb ik alle adrespinnen met de aarde verbonden. Wil je met één zender verschillende ontvangers aansturen, dan kun je hier dipschakelaars gebruiken. AD8-AD11 zijn de besturingsbit-ingangen. Deze ingangen besturen de D0-D3-uitgangen van de HT12D-decoder. We moeten een oscillator aansluiten voor de communicatie en de oscillatorfrequentie moet 3 kHz zijnvoor 5V werking. Dan is de weerstandswaarde 1,1MΩ voor 5V. Vervolgens heb ik de uitgang van de HT12E op de zendermodule aangesloten. We noemden al, de Arduino en rf-zendermodule, beide apparaten die werken op 5V hoogspanning zullen het doden, dus om dit te voorkomen, heb ik de 7805, spanningsregelaar toegevoegd. Nu kunnen we (Vcc) 6-12 volt batterijen van elk type aansluiten op de invoer.
Het bouwen van het RC BOAT-zendercircuit
Ik heb elk onderdeel op een gewone printplaat gesoldeerd. Onthoud dat we aan een RF-project werken, dus er zijn veel kansen op verschillende soorten interferenties, dus sluit alle componenten zo dicht mogelijk bij elkaar aan. Het is beter om vrouwelijke pin-headers te gebruiken voor Arduino en de zendermodule. Probeer ook alles op de koperen pads te solderen in plaats van extra draden te gebruiken. Sluit ten slotte een kleine draad aan op de zendermodule om het totale bereik te vergroten. Voordat u de Arduino en de zendermodule aansluit, moet u de spanning van de lm7805-uitgang dubbel controleren.
De bovenstaande afbeelding toont het bovenaanzicht van het voltooide RC-bootzendercircuit en het onderaanzicht van het voltooide RC-bootzendercircuit wordt hieronder weergegeven.
Het bouwen van de Arduino RC Boat Transmitter Enclosure
Een degelijke body is nodig voor de afstandsbediening. Deze stap gaat helemaal over uw ideeën, u kunt een afgelegen lichaam creëren met uw ideeën. Ik leg uit hoe ik dit heb gemaakt. Voor het maken van een remote body kies ik 4mm MDF platen, je kunt ook kiezen voor multiplex, foam plaat of karton, dan heb ik daar twee stukken uit gesneden met een lengte van 10cm en breedte van 5cm. Daarna heb ik de posities voor de knoppen gemarkeerd. Ik plaatste de richtingsknoppen aan de linkerkant en de vooruit / achteruit-knoppen aan de rechterkant. Aan de andere kant van het vel heb ik de drukknoppen aangesloten op het hoofdzendcircuit. Onthoud dat een normale drukknop 4 pinnen heeft, dat zijn twee pinnen voor elke kant. Verbind een pin met Arduino en de andere pin met de grond. Als u daarmee in de war bent, controleer dit dan met een multimeter of bekijk het gegevensblad.
Nadat ik al deze dingen had aangesloten, plaatste ik het stuurcircuit tussen de twee MDF-platen en draai ik vast met een lange bout (raadpleeg de onderstaande afbeeldingen als je wilt). Nogmaals, het creëren van een goed lichaam heeft alles te maken met uw ideeën.
433Mhz-ontvangermodule
Deze ontvanger is ook erg klein en wordt geleverd met 4 pinnen VCC, aarde, en de twee middelste pinnen zijn gegevens uit. De werkspanning van deze module is 5v. Net als de zendermodule is ook dit een laagvermogenmodule. Bij sommige modules zit een extra antennepin maar in mijn geval is die niet aanwezig.
Blokschema van de Arduino RC Boat-ontvanger
Het bovenstaande blokschema beschrijft de werking van het RF-ontvangercircuit. Ten eerste kunnen we de verzonden signalen ontvangen met behulp van de RF-ontvangermodule. De output van deze ontvanger is seriële data. Maar we kunnen niets regelen met deze seriële gegevens, daarom hebben we de uitgang op de decoder aangesloten. De decoder decodeert de seriële gegevens naar onze originele parallelle gegevens. In dit gedeelte hebben we geen microcontrollers nodig, we kunnen de uitgangen rechtstreeks op de motordriver aansluiten.
Schakelschema van Arduino RC Boat Receiver
De HT12D is een 12-bits decoder die een seriële input-parallelle output-decoder is. De input pin van de HT12D wordt verbonden met een ontvanger die een seriële output heeft. Van de 12 bits zijn 8 bits (A0-A7) adresbits en de HT12D decodeert de invoer alleen als deze overeenkomt met het huidige adres. D8-D11 zijn de uitvoerbits. Om dit circuit af te stemmen op het zendercircuit, heb ik alle adrespinnen met de aarde verbonden. Gegevens uit de module zijn van het seriële type en de decoder decodeert deze seriële gegevens naar originele parallelle gegevens en we komen naar buiten via D8-D11. Om de oscillatiefrequentie aan te passen, moet de weerstand van 33-56k worden aangesloten op oscillatorpennen. Led op de 17e pin geeft de geldige transmissie aan, deze brandt pas nadat de ontvanger verbinding heeft gemaakt met een zender. De spanningsingang van de ontvanger is ook 6-12 volt.
Om motoren aan te sturen heb ik de L293D IC gebruikt, ik heb voor dit IC gekozen omdat ik de afmetingen en het gewicht wil verkleinen en dit IC is het beste om twee motoren in twee richtingen te sturen. L293D heeft 16 pinnen, het onderstaande diagram toont de pinouts.
1, 9 pinnen zijn de activeringspin, die verbinden we met 5 V om motoren 1A, 2A, 3A en 4A in te schakelen zijn de controlepinnen. De motor draait naar rechts als pin 1A laag wordt en 2A hoog, en de motor draait naar links als 1A laag wordt en 2A hoog. Dus hebben we deze pinnen aangesloten op de uitgang ps van de decoder. 1Y, 2Y, 3Y en 4Y zijn de motoraansluitingspennen. Vcc2 is de spanningspin van de motor, als u een hoogspanningsmotor gebruikt, sluit u deze pin aan op de bijbehorende spanningsbron.
Bouwen van het ontvangercircuit van Arduino RC Boat
Voordat u het ontvangercircuit bouwt, moet u enkele belangrijke dingen onthouden. De belangrijkste is de grootte en het gewicht, want na het bouwen van het circuit moeten we het op de boot repareren. Dus als het gewicht toeneemt, heeft dat invloed op het drijfvermogen en de beweging.
Dus hetzelfde als in het zendercircuit, soldeer elk onderdeel in een kleine gemeenschappelijke printplaat en probeer zo min mogelijk draden te gebruiken. Ik heb pin 8 van de motordriver aangesloten op 5v omdat ik 5V-motoren gebruik.
Het bouwen van de RC-BOAT
Ik heb verschillende materialen geprobeerd om de bootbody te bouwen. En ik kreeg een beter resultaat met thermocol-plaat. Dus besloot ik om het lichaam met thermocol te bouwen. Eerst nam ik een thermocol-stuk van 3 cm dik en plaatste het ontvangercircuit er bovenop, daarna markeerde ik de vorm van de boot in thermocol en sneed het uit. Dit is dus mijn manier om de boot te bouwen, u kunt bouwen volgens uw ideeën.
Motoren en propellers voor Arduino Air Boat
Gewicht is weer belangrijk. Dus het kiezen van de juiste motor is belangrijk, ik kies voor 5 volt, n20 type normale gelijkstroommotoren die klein en gewichtloos zijn. Om de RF-interferenties te voorkomen, moet een 0.1uf condensator parallel worden aangesloten op de motoringangen.
In het geval van propellers heb ik propellers gemaakt van plastic platen. Je kunt propellers in de winkel kopen of je kunt er zelf een bouwen, beide werken prima. Om de propellers te bouwen, nam ik eerst een klein plastic vel en sneed er twee kleine stukjes uit en ik buig de stukjes met behulp van kaarswarmte. Ten slotte heb ik een klein gaatje in het midden voor de motor geplaatst en aan de motor vastgemaakt.
Werking van Arduino RC Boat
Deze boot heeft twee motoren laten we hem links en rechts noemen. Als de motor ook met de klok mee beweegt (de positie van de propeller hangt ook af) zuigt de propeller lucht aan van voren en uitlaat naar de achterkant. Dat genereert voorwaartse weerstand.
Voorwaartse beweging: Als zowel de linker- als de rechtermotor rechtsom draaien, wordt de beweging vooruit gezet
Achterwaartse beweging: als zowel de linker- als de rechtermotor tegen de klok in draaien (dat wil zeggen de propeller zuigt lucht van de achterkant en uitlaat naar de voorkant), dan zal dat een achterwaartse beweging maken
Beweging naar links: Als alleen de rechtermotor draait, krijgt de boot alleen weerstand van de rechterkant, zodat de boot naar de linkerkant gaat
Beweging naar rechts: Als alleen de linkermotor draait, krijgt de boot alleen weerstand van de linkerkant, waardoor de boot naar de rechterkant beweegt.
We hebben de input van de motorrijder verbonden met vier outputbits van de decoder (D8-D11). we kunnen deze 4 uitgangen bedienen door de AD8-AD11 aan te sluiten op de grond, dat zijn de knoppen in de afstandsbediening. Als we bijvoorbeeld AD8 verbinden met de grond, wordt de D8 geactiveerd. Zo kunnen we de twee motoren in twee richtingen aansturen met behulp van deze 4 uitgangen. Maar we kunnen twee motoren niet met slechts één knop bedienen (die hebben we nodig voor voorwaartse en achterwaartse beweging), daarom hebben we de Arduino gebruikt. Met behulp van Arduino kunnen we de invoergegevenspinnen naar wens selecteren.
Arduino-programmering van de RC Boat
Het programmeren van deze boot is heel eenvoudig omdat we alleen wat logisch schakelen willen. En we kunnen alles bereiken met basis Arduino-functies. Het complete programma voor dit project vindt u onderaan deze pagina. De uitleg van je programma is als volgt
We starten het programma door de gehele getallen voor vier invoerknoppen en decoderinvoerpennen te definiëren.
int f_button = 9; int b_button = 8; int l_button = 7; int r_button = 6; int m1 = 2; int m2 = 3; int m3 = 4; int m4 = 5;
In het setup-gedeelte heb ik de pin-modi gedefinieerd. Dat wil zeggen, de knoppen zijn verbonden met digitale pinnen, dus deze pinnen moeten als invoer worden gedefinieerd en we moeten uitvoer krijgen voor de invoer van de decoder, dus we moeten die pinnen als uitvoer definiëren.
pinMode (f_button, INPUT_PULLUP); pinMode (b_button, INPUT_PULLUP); pinMode (l_button, INPUT_PULLUP); pinMode (r_button, INPUT_PULLUP); pinMode (m1, OUTPUT); pinMode (m2, OUTPUT); pinMode (m3, OUTPUT); pinMode (m4, OUTPUT);
Vervolgens zullen we in de hoofdlusfunctie de knopstatus lezen met behulp van de digitale leesfunctie van Arduino. Als de pin-status laag wordt, betekent dit dat de bijbehorende pin wordt ingedrukt, dan zullen we de voorwaarden als volgt uitvoeren:
if (digitalRead (f_button) == LOW)
Dat betekent dat de vooruitknop is ingedrukt
{ digitalWrite (m1, LOW); digitalWrite (m3, LOW); digitalWrite (m2, HIGH); digitalWrite (m4, HIGH); }
Hierdoor worden m1 en m2 van de encoder naar beneden gehaald, hierdoor worden beide motoren aan de ontvangerzijde geactiveerd. Evenzo voor achterwaartse beweging
{ digitalWrite (m1, HIGH); digitalWrite (m3, HIGH); digitalWrite (m2, LOW); digitalWrite (m4, LOW); }
Voor beweging naar links
{ digitalWrite (m1, LOW); digitalWrite (m3, HIGH); digitalWrite (m2, HIGH); digitalWrite (m4, HIGH); }
Voor de juiste beweging
{ digitalWrite (m1, HIGH); digitalWrite (m3, LOW); digitalWrite (m2, HIGH); digitalWrite (m4, HIGH); }
Upload de code na het compileren naar je Arduino-bord.
Probleemoplossing: plaats de boot op het wateroppervlak en controleer of hij correct beweegt, als u niet probeert de polariteit van motoren en propellers te veranderen. Probeer ook om het gewicht in evenwicht te houden.
De volledige werking van het project is te vinden in de video die onderaan deze pagina is gelinkt. Als je vragen hebt, laat ze dan achter in het commentaargedeelte.