Wil je leren hoe je je eigen robot maakt? Er zijn veel verschillende soorten robots, die je zelf kunt bouwen. De meeste mensen willen een robot het gemakkelijke werk zien doen om van punt A naar B te gaan. Je kunt een robot volledig uit analoge componenten bouwen of een starterskit kopen. Het maken van je eigen robot is een geweldige manier om elektronica en computerprogrammering te leren.
Stap
Deel 1 van 5: De robot in elkaar zetten
Stap 1. Monteer uw componenten
Om een basisrobot te bouwen, heb je een paar eenvoudige componenten nodig. U kunt de meeste of al deze componenten vinden bij uw plaatselijke elektronica-hobbywinkel of bij sommige online winkels. Sommige kits bevatten al deze componenten. Deze robot vereist geen solderen:
- Arduino Uno (of andere microcontroller)
- 2 servo's 360 graden
- 2 wielen bijpassende servo
- 1 vrij wiel
- 1 testbord (breadboard of projectboard) dat niet is gesoldeerd (zoek een testbord met aan elke kant twee positieve en negatieve rijen)
- 1 naderingssensor (met vierpolige connectorkabel)
- 1 drukknopschakelaar
- 1 weerstand 10kΩ
- 1 USB A naar B-kabel
- 1 set breekbare headers
- 1 6 x AA batterijhouder met 9V DC stopcontact
- 1 pak van 22 startkabels of enkele kabel
- Isolatie heen en weer (dubbele tape) of lijmpistool
Stap 2. Draai het batterijcompartiment zodat de platte achterkant naar boven wijst
Je gaat het robotlichaam bouwen met het batterijcompartiment als basis.
Stap 3. Plaats twee servo's in dezelfde richting aan het einde van het batterijcompartiment
Dit uiteinde is het uiteinde waar de kabel uit de batterij komt. De servo's moeten de bodem raken en het rotatiemechanisme van elke servo moet naar buiten wijzen vanaf de zijkanten van het batterijcompartiment. Het is belangrijk dat deze servo's correct worden geplaatst, zodat de wielen recht staan. De kabels voor de servo moeten uit de achterkant van het batterijcompartiment komen.
Stap 4. Lijm de servo's met je isolatie of lijm
Zorg ervoor dat de servo stevig aan het batterijcompartiment is bevestigd. De achterkant van de servo moet worden uitgelijnd met de achterkant van het batterijcompartiment.
Nu zouden de servo's de helft van de ruimte aan de achterkant van het batterijcompartiment moeten innemen
Stap 5. Bevestig het testbord loodrecht op de resterende ruimte in het batterijcompartiment
Dit testbord zal iets over de voorkant van het batterijcompartiment hangen, en zal naar beide kanten uitschuiven. Zorg ervoor dat het testbord goed vastzit voordat u verder gaat. De rij "A" moet zich het dichtst bij de servo bevinden.
Stap 6. Bevestig de Arduino-microcontroller aan de bovenkant van de servo
Als u de servo correct bevestigt, moet er een plat deel van de twee servo's zijn die elkaar raken. Bevestig het Arduino-bord op deze vlakke plek, zodat de USB- en Arduino-voedingsconnectoren naar beneden zijn gericht (weg van het testbord). De voorkant van de Arduino overlapt met het testbord.
Stap 7. Installeer de wielen op de servo's
Druk de wielen stevig op het roterende servomechanisme. Dit kan aanzienlijke kracht vergen omdat de wielen zijn ontworpen om gaten te hebben die precies overeenkomen met de vorm van de servotip.
Stap 8. Installeer het freewheel aan de onderkant van het testbord
Als je de robot ondersteboven houdt, zie je een klein testbordje aan het batterijcompartiment hangen. Bevestig het vrijloopwiel aan dit ophangdeel. Gebruik indien nodig een wig. Het vrijloopwiel dient als voorwiel waardoor de robot gemakkelijk in elke richting kan draaien.
Als u een kit hebt gekocht, kan het vrijwiel enkele wiggen hebben die u kunt gebruiken om ervoor te zorgen dat het wiel vrij de grond raakt
Deel 2 van 5: De robot bedraden
Stap 1. Knip twee 3-pins headers
Hiermee sluit je de servo aan op het testbord. Duw de pinnen naar beneden door de headers, zodat ze aan beide kanten op gelijke afstand naar buiten komen.
Stap 2. Steek de twee headers in pinnen 1-3 en 6-8 in rij E op het testbord
Zorg ervoor dat ze stevig of stevig zijn geplaatst.
Stap 3. Verbind de servodraden met de header, met de zwarte draad aan de linkerkant (pin 1 en 6)
Dit verbindt de servo met het testbord. Zorg ervoor dat de linker servo is aangesloten op de linker header en de rechter servo is aangesloten op de rechter header.
Stap 4. Verbind de rode jumperdraad van pin C2 en C7 met de rode railpin (positief)
Zorg ervoor dat u de rode rail aan de achterkant van het testbord gebruikt (dichter bij de rest van het robotlichaam).
Stap 5. Verbind de zwarte jumperdraad van pin B1 en B6 met de blauwe railpin (massa)
Zorg ervoor dat je de blauwe rail aan de achterkant van het testbord gebruikt. Bevestig de kabel niet aan de rode railpin.
Stap 6. Verbind de witte jumperdraden van pin 12 en 13 op de Arduino met A3 en A8
Hierdoor kan de Arduino de servo besturen en aan het stuur draaien.
Stap 7. Bevestig de sensor aan de voorkant van het testbord
De sensor is niet op de externe voedingsrail op het testbord gemonteerd, maar op de eerste twee rijen pennen met de letters (J). Zorg ervoor dat je hem precies in het midden plaatst met aan elke kant een gelijk aantal lege pinnen.
Stap 8. Sluit de zwarte jumperdraad van pin I14 aan op de eerste blauwe railpin aan de linkerkant van de sensor
Hierdoor wordt de sensor geaard.
Stap 9. Sluit de rode jumperdraad van pin I17 aan op de eerste rode railpin rechts van de sensor
Dit zal de sensor van stroom voorzien.
Stap 10. Verbind de witte jumperdraden van pin I15 naar pin 9 op Arduino, en van I16 naar pin 8
Dit levert informatie van de sensor aan de microcontroller.
Deel 3 van 5: De voedingskabel installeren
Stap 1. Draai de robot om zodat u het batterijcompartiment binnenin kunt zien
Schik het batterijcompartiment zo dat de kabel linksonder naar buiten komt.
Stap 2. Verbind de rode draad met de tweede veer van links onderaan
Zorg ervoor dat het batterijcompartiment goed is uitgelijnd of in de juiste richting wijst.
Stap 3. Verbind de zwarte draad met de laatste veer rechtsonder
Deze twee draden zorgen ervoor dat de Arduino de juiste spanning krijgt.
Stap 4. Sluit de rode en zwarte draden aan op de rode en blauwe pinnen die zich aan de rechterkant op de achterkant van het testbord bevinden
De zwarte draad moet naar de blauwe railpin op pin 30 gaan. De rode draad moet naar de rode railpin op pin 30 gaan.
Stap 5. Sluit de zwarte draad van de GND-pin op de Arduino aan op de achterkant van de blauwe rail
Sluit de draad aan op pin 28 op de blauwe rail.
Stap 6. Sluit de zwarte draad van de achterkant van de blauwe rail aan op de voorkant van de blauwe rail op pin 29 voor beide rails
Sluit de rode rail niet aan, omdat u de Arduino kunt beschadigen.
Stap 7. Verbind de rode draad van de voorkant van de rode rail op pin 30 met de 5V pin op Arduino
Dit zal de Arduino van stroom voorzien.
Stap 8. Steek de drukknopschakelaar in de ruimte tussen pinnen 24-26
Met deze schakelaar kunt u de robot uitschakelen zonder de stroom uit te schakelen.
Stap 9. Sluit de rode draad van H24 aan op de rode rail op de volgende lege pin rechts van de sensor
Dit zal de knop van stroom voorzien.
Stap 10. Gebruik een weerstand om H26 op de blauwe rail aan te sluiten
Sluit hem aan op de pin direct naast de zwarte draad die u zojuist in de vorige stappen hebt aangesloten.
Stap 11. Verbind de witte draad van G26 met pin 2 op Arduino
Hierdoor kan Arduino drukknoppen detecteren.
Deel 4 van 5: De Arduino-software installeren
Stap 1. Download en pak Arduino IDE uit
Hier wordt Arduino ontwikkeld en kun je instructies programmeren die je vervolgens kunt uploaden naar je Arduino-microcontroller. Je kunt het gratis downloaden van arduino.cc/en/main/software. Pak het gedownloade bestand uit door te dubbelklikken op het bestand en de map die het bevat naar een gemakkelijk toegankelijke locatie te verplaatsen. U zult het programma niet echt installeren, maar uitvoeren vanuit een map die is uitgepakt door te dubbelklikken op arduino.exe.
Stap 2. Sluit het batterijcompartiment aan op de Arduino
Steek de achterste aansluiting van de batterij in de connector op de Arduino om hem van stroom te voorzien.
Stap 3. Steek Arduino via USB in uw computer
De kans is groot dat Windows het apparaat niet herkent.
Stap 4. Druk op
Win+R en typ devmgmt.msc.
Met deze opdracht wordt Apparaatbeheer geopend.
Stap 5. Klik met de rechtermuisknop op Onbekend apparaat onder Andere apparaten en selecteer Stuurprogramma bijwerken
Als u deze optie niet ziet, klikt u op Eigenschappen, selecteert u het tabblad Stuurprogramma en klikt u vervolgens op Stuurprogramma bijwerken.
Stap 6. Selecteer Op mijn computer naar stuurprogramma's zoeken
Hiermee kunt u de ingebouwde stuurprogramma's selecteren die bij de Arduino IDE zijn geleverd.
Stap 7. Klik op Bladeren en open vervolgens de map die u eerder hebt uitgepakt
Daarin vindt u de map met stuurprogramma's.
Stap 8. Selecteer de map drivers en klik op OK
Bevestig dat u wilt doorgaan als u wordt gewaarschuwd voor onbekende software.
Deel 5 van 5: Robots programmeren
Stap 1. Open Arduino IDE door te dubbelklikken op het bestand arduino.exe in de IDE-map
U wordt begroet met een leeg project.
Stap 2. Plak of plak de volgende code om uw robot geavanceerd te maken
De onderstaande code houdt je Arduino draaiende.
#include // dit voegt de "Servo" -bibliotheek toe aan het programma // het volgende commando maakt twee servo-objecten Servo leftMotor; Servo rechtsMotor; void setup() { leftMotor.attach (12); // als je per ongeluk de pinnummers voor je servo hebt verwisseld, kun je de nummers hier omwisselen rightMotor.attach(13); } void loop() { leftMotor.write(180); // met een rotatie van 360 graden (continue rotatie), instrueert het getal 180 de servo om op volle snelheid "vooruit" te bewegen. rechtsMotor.schrijven(0); // als beide waarden 180 zijn, draait de robot in een cirkel omdat de servo omgekeerd is. "0" vertelt de robot om op volle snelheid "achteruit" te bewegen. }
Stap 3. Maak en upload het programma
Klik op de pijl naar rechts in de linkerbovenhoek om een programma te maken en te uploaden naar de aangesloten Arduino.
Misschien wilt u de robot van het oppervlak tillen, aangezien de robot vooruit blijft lopen nadat het programma is geüpload
Stap 4. Voeg een stopschakelaarfunctie toe (kill-schakelaar)
Voeg de volgende code toe aan het gedeelte "void loop()" van uw code om een stopschakelaarfunctie toe te voegen aan de functie "write()".
if (digitalRead (2) == HIGH) // deze opdracht wordt uitgevoerd wanneer de knop op pin 2 Arduino wordt ingedrukt { while(1) { leftMotor.write (90); // "90" is de neutrale positie voor de servo, die de servo vertelt te stoppen met draaien naar rechts Motor.write(90); } }
Stap 5. Upload en controleer uw code
Met de stopschakelaarcode al toegevoegd, kunt u de code uploaden en de robot testen. De robot moet vooruit blijven gaan totdat u op de stopschakelaar drukt, waardoor de robot stopt. De volledige code ziet er als volgt uit:
#include // het volgende commando creëert twee Servo leftMotor servo-objecten; Servo rechtsMotor; void setup() { leftMotor.attach (12); rechtsMotor.attach(13); } void loop () {if (digitalRead (2) == HOOG) { while (1) { leftMotor.write (90); rightMotor.write(90); } } leftMotor.write(180); rechtsMotor.schrijven(0); }
Voorbeeld
De volgende code maakt gebruik van sensoren die op de robot zijn geïnstalleerd om hem naar links te laten draaien wanneer de robot een obstakel tegenkomt. Kijk naar de opmerkingen in de code voor details over het gebruik van elk onderdeel. Onderstaande code is het hele programma.
#inclusief Servo leftMotor; Servo rechtsMotor; const int serialPeriod = 250; // deze code geeft de uitvoervertraging van de console elke 1/4 seconde (250 ms) unsigned long timeSerialDelay = 0; const int loopPeriode = 20; // deze code stelt de sensorleesfrequentie in op 20 ms, wat 50 Hz is zonder teken lang timeLoopDelay = 0; // deze code wijst de TRIG- en ECHO-functies toe aan de pinnen op de Arduino. Pas de getallen hier aan als je ze op een andere manier verbindt const int ultrasonic2TrigPin = 8; const int ultrasonic2EchoPin = 9; int ultrasoon2Afstand; int ultrasoon2Duur; // deze code definieert twee mogelijke robottoestanden: ga vooruit of sla linksaf #define DRIVE_FORWARD 0 #define TURN_LEFT 1 int state = DRIVE_FORWARD; // 0 = ga vooruit (DEFAULT), 1 = sla linksaf void setup () { Serial.begin (9600); // deze sensor bepaalt de pinconfiguratie pinMode (ultrasonic2TrigPin, OUTPUT); pinMode (ultrasone2EchoPin, INPUT); // dit wijst de motor toe aan de Arduino-pinnen leftMotor.attach (12); rechtsMotor.attach(13); } void loop () { if (digitalRead (2) == HIGH) // deze code detecteert een ''stop'' { while(1) { leftMotor.write (90); rightMotor.write(90); } } debugOutput(); // deze code drukt foutopsporingsberichten af naar de seriële console if(millis() - timeLoopDelay>= loopPeriod) { readUltrasonicSensors(); // deze code instrueert de sensor om gegevens over de gemeten afstand te lezen en op te slaan stateMachine(); timeLoopDelay = millis(); } } void stateMachine() { if(state == DRIVE_FORWARD) // als er geen obstakel wordt gedetecteerd { if(ultrasonic2Distance > 6 || ultrasonic2Distance <0) // als er niets voor de robot is. ultrasonicDistance zal negatief zijn voor sommige ultrasone apparaten als er geen obstakels zijn { // drive forward rightMotor.write(180); leftMotor.write(0); } else // als er een object voor ons staat { state = TURN_LEFT; } } else if(state == TURN_LEFT) // als een obstakel wordt gedetecteerd, sla linksaf { unsigned long timeToTurnLeft = 500; // duurt ongeveer 0,5 seconden om 90 graden te draaien. Mogelijk moet u deze waarde aanpassen als uw wielen qua maat verschillen van de maat in het voorbeeld unsigned long turnStartTime = millis(); // behoud de voorwaarde wanneer de robot begint te draaien while((millis()-turnStartTime) <timeToTurnLeft) // bewaar deze cyclus totdat timeToTurnLeft (500) voorbij is { // draai naar links, onthoud dat wanneer beide "180" zijn, de robot zal draaien. rechtsMotor.schrijven(180); leftMotor.write(180); } staat = DRIVE_FORWARD; } } void readUltrasonicSensors() { // dit is voor ultrasone 2. Mogelijk moet u deze opdracht wijzigen als u een andere sensor gebruikt. digitalWrite (ultrasoon2TrigPin, HOOG); vertraging Microseconden (10); // trek de TRIG-pin hoog gedurende ten minste 10 microseconden digitalWrite (ultrasonic2TrigPin, LOW); ultrasone2Duration = pulseIn (ultrasone2EchoPin, HOOG); ultrasoon2Afstand = (ultrasoon2Duur/2)/29; } // het volgende is voor het opsporen van fouten in de console. void debugOutput() {if((millis() - timeSerialDelay) > serialPeriod) { Serial.print("ultrasonic2Distance: "); Serial.print (ultrasone2Distance); Serial.print("cm"); Serieel.println(); timeSerialDelay = millis(); } }