Kuidas kodus robotit ehitada

Kas soovite õppida, kuidas ehitada oma robotit? Seal on palju erinevaid roboteid, mida saate ise teha. Enamik inimesi soovib näha, kuidas robot täidab lihtsaid ülesandeid – liikuda punktist A punkti B. Saate teha roboti täielikult analoogkomponentidest või osta stardikomplekti nullist! Oma roboti ehitamine on suurepärane võimalus õpetada endale nii elektroonikat kui ka arvutiprogrammeerimist.

1
Koguge oma komponendid kokku. Põhiroboti ehitamiseks vajate mitut lihtsat komponenti. Enamiku, kui mitte kõik, neist komponentidest leiate oma kohalikust elektroonikapoest või mitmest veebimüüjast. Mõned põhikomplektid võivad sisaldada ka kõiki neid komponente. See robot ei vaja jootmist: Arduino Uno (või mõni muu mikrokontroller) 2 pideva pöörlemisega servot2 ratast, mis sobivad servodega nelja kontaktiga pistikkaabel)1 mini-nupplüliti1 10kΩ takisti 1 USB A-B kaabel1 katkendlike päiste komplekt 1 6 x AA akuhoidik koos 9 V alalisvoolu pistikupesaga või kuum liim

2
Pöörake aku ümber nii, et lame tagakülg oleks ülespoole. Ehitate roboti kere, kasutades alusena akut.

3
Joondage kaks servot aku otsas. See peaks olema lõpp, millest akuploki juhe välja tuleb. Servod peaksid puudutama põhja ja mõlema pöörlemismehhanismid peaksid olema suunatud akuploki külgedest väljapoole. Servod peavad olema korralikult joondatud, et rattad läheksid otse. Servode juhtmed peaksid aku tagaküljelt ära tulema.

4
Kinnitage servod oma teibi või liimiga. Veenduge, et need on kindlalt aku külge kinnitatud. Servode tagaküljed peavad olema joondatud aku tagaküljega. Servod peaksid nüüd hõivama aku tagumise poole.

5
Kinnitage leivatahvel akuploki vabasse kohta risti. See peaks rippuma veidi üle aku esiosa ja ulatuma mõlemast küljest kaugemale. Enne jätkamist veenduge, et see on kindlalt kinnitatud. “A” rida peaks olema servodele kõige lähemal.

6
Kinnitage Arduino mikrokontroller servode ülaosale. Kui kinnitasite servod korralikult, peaks nende puudutamisel jääma tasane ruum. Kleepige Arduino plaat selle tasase ruumi külge nii, et Arduino USB- ja toitepistikud oleksid tagaküljega (leivaplaadist eemal). Arduino esiosa peaks leivalauaga napilt kattuma.

7
Pane rattad servodele. Vajutage rattad tugevalt servo pöörlemismehhanismi külge. See võib nõuda märkimisväärset jõudu, kuna rattad on projekteeritud nii, et need sobiksid võimalikult tihedalt, et tagada parim haardumine.

8
Kinnitage ratas leivalaua põhja külge. Kui pöörate šassii ümber, peaksite nägema akukomplektist mööda ulatuvat leivalauda. Kinnitage ratas selle pikendatud detaili külge, kasutades vajadusel püstikuid. Ratas toimib esirattana, võimaldades robotil hõlpsalt igas suunas pöörata. Kui ostsite komplekti, võis rattaga kaasas olla mõned püstikud, mille abil saate tagada, et ratas maapinnale jõuaks. i

9
Katkesta kaks 3-pin päist. Kasutate neid servode ühendamiseks leivalauaga. Lükake tihvtid läbi päise alla nii, et tihvtid väljuksid mõlemalt poolt võrdsel kaugusel.

10
Sisestage kaks päist leivalaua rea ​​E tihvtidesse 1-3 ja 6-8. Veenduge, et need on kindlalt sisestatud.

11
Ühendage servokaablid päistega, musta kaabliga vasakul pool (kontaktid 1 ja 6). See ühendab servod leivalauaga. Veenduge, et vasakpoolne servo on ühendatud vasaku päisega ja parempoolne servo parema päisega.

12
Ühendage punased ühendusjuhtmed kontaktidest C2 ja C7 punaste (positiivsete) siini kontaktidega. Kasutage kindlasti leivalaua tagaküljel olevat punast siini (ülejäänud šassiile lähemal).

13
Ühendage mustad ühendusjuhtmed kontaktidest B1 ja B6 siniste (maandus) siini kontaktidega. Veenduge, et kasutate leivalaua tagaküljel olevat sinist siini. Ärge ühendage neid punaste siini tihvtidega.

14
Ühendage valged hüppaja juhtmed Arduino kontaktidest 12 ja 13 A3 ja A8 külge. See võimaldab Arduinol servosid juhtida ja rattaid pöörata.

15
Kinnitage andur leivalaua esiküljele. See ei ühendu leivalaua välimiste toitesiinidega, vaid selle asemel ei ühendata see esimese tähega tihvtide (J) reaga. Veenduge, et asetate selle täpselt keskele, nii et mõlemal küljel on võrdne arv tihvte.

16
Ühendage must ühendusjuhe kontaktist I14 esimese saadaoleva sinise siini kontaktiga anduri vasakul küljel. See maandab anduri.

17
Ühendage punane ühendusjuhe kontaktist I17 esimese saadaoleva punase siini kontaktiga andurist paremal. See annab andurile toite.

18
Ühendage valged hüppaja juhtmed kontaktist I15 viigist 9 Arduino ja I16 kontaktiga 8. See edastab andurilt teabe mikrokontrollerile.

19
Pöörake robot külili, nii et näete pakendis olevaid patareisid. Suunake see nii, et akupaki kaabel tuleks alt vasakule välja.

20
Ühendage punane juhe alt vasakult teise vedruga. Veenduge, et aku on õigesti suunatud.

21
Ühendage must juhe paremas alanurgas oleva viimase vedruga. Need kaks kaablit aitavad pakkuda Arduinole õiget pinget.

22
Ühendage punased ja mustad juhtmed leivaplaadi tagaküljel asuvate parempoolsete punaste ja siniste tihvtidega. Must kaabel tuleb ühendada sinise siini tihvti kontakti 30 juures. Punane kaabel tuleb ühendada punase siini tihvtiga kontakti 30 juures.

23
Ühendage must juhe Arduino GND tihvtist tagumise sinise siiniga. Ühendage see sinise siini kontaktiga 28.

24
Ühendage must juhe tagumisest sinisest siinist eesmise sinise siiniga mõlema kontakti 29 juures. Ärge ühendage punaseid siine, kuna tõenäoliselt kahjustate Arduinot.

25
Ühendage punane juhe eesmisest punasest siinist kontakti 30 juurest Arduino 5 V kontaktiga. See annab Arduinole toite.

26
Sisestage nupplüliti tihvtide 24-26 ridade vahesse. See lüliti võimaldab teil roboti välja lülitada, ilma et peaksite vooluvõrgust lahti ühendama.

27
Ühendage H24 punane juhe andurist paremal järgmises saadaolevas tihvtis oleva punase siiniga. See lülitab nupu sisse.

28
Kasutage takistit, et ühendada H26 sinise siiniga. Ühendage see tihvtiga, mis on otse mõne sammu eest ühendatud musta juhtme kõrval.

29
Ühendage valge juhe G26-st Arduino kontaktiga 2. See võimaldab Arduinol vajutada nuppu.

30
Laadige alla ja ekstraktige Arduino IDE. See on Arduino arenduskeskkond ja võimaldab teil programmeerida juhiseid, mille saate seejärel oma Arduino mikrokontrollerisse üles laadida. Saate selle tasuta alla laadida saidilt arduino.cc/en/main/software. Pakkige allalaaditud fail lahti, topeltklõpsates sellel ja teisaldage sees olev kaust hõlpsasti juurdepääsetavasse kohta. Te ei installi tegelikult programmi. Selle asemel käivitate selle ekstraheeritud kaustast, topeltklõpsates arduino.exe.

31
Ühendage aku Arduinoga. Toite andmiseks ühendage aku tagapesa Arduino pistikupessa.

32
Ühendage Arduino USB kaudu arvutiga. Tõenäoliselt ei tunne Windows seadet ära.

33
Vajutage .⊞ Win+R ja tippige devmgmt.msc. See käivitab seadmehalduri.

34
Paremklõpsake jaotises “Muud seadmed” “Tundmatu seade” ja valige “Uuenda draiveri tarkvara”. Kui te seda valikut ei näe, klõpsake selle asemel “Atribuudid”, valige vahekaart “Draiver” ja seejärel klõpsake “Uuenda draiverit”.

35
Valige “Sirvi minu arvutist draiveritarkvara”. See võimaldab teil valida Arduino IDE-ga kaasas olnud draiveri.

36
Klõpsake nuppu “Sirvi”, seejärel liikuge varem ekstraktitud kausta. Seest leiate kausta “draiverid”.

37
Valige kaust “draiverid” ja klõpsake “OK”. Kinnitage, et soovite jätkata, kui teid hoiatatakse tundmatu tarkvara eest.

38
Käivitage Arduino IDE, topeltklõpsates IDE kaustas failil arduino.exe. Teid tervitatakse tühja projektiga.

39
Kleepige järgmine kood, et teie robot liiguks otse. Allolev kood paneb teie Arduino pidevalt edasi liikuma.#include // see lisab programmi “Servo” teegi// järgmine loob kaks servoobjektiServo leftMotor;Servo rightMotor;void setup(){ leftMotor. lisa(12); // kui vahetasite kogemata oma servode pinnumbreid, saate neid numbreid siin vahetada rightMotor.attach(13);}void loop(){ leftMotor.write(180); // pideva pöörlemise korral käsib 180 servol täiskiirusel “edasi” liikuda. õigeMootor. kirjuta(0); // kui need mõlemad on 180 juures, läheb robot ringi, sest servod on ümber pööratud. “0” käsib sellel liikuda täiskiirusel “tagasi.”}

40
Ehitage ja laadige programm üles. Programmi koostamiseks ja ühendatud Arduinosse üleslaadimiseks klõpsake vasakus ülanurgas paremat noolenuppu. Võimalik, et soovite roboti pinnalt tõsta, kuna see jätkab pärast programmi üleslaadimist lihtsalt edasi liikumist.

41
Lisage tapmislüliti funktsioon. Lisage oma koodi jaotisesse “void loop()” järgmine kood, et lubada tapmislüliti, funktsioonide “write()” kohale.if(digitalRead(2) == HIGH) // see registreeritakse nupu vajutamisel Arduino viil 2{ while(1) { leftMotor.write(90); // “90” on servode neutraalne asend, mis käsib neil paremale pööramise lõpetadaMotor.write(90); }}

42
Laadige oma kood üles ja testige seda. Lisatud tapmislüliti koodiga saate robotit üles laadida ja testida. See peaks jätkama edasisõitu, kuni vajutate lülitit, misjärel see peatub. Täielik kood peaks välja nägema järgmine:#include // järgmine loob kaks servoobjektiServo leftMotor;Servo rightMotor;void setup(){ leftMotor.attach(12); rightMotor.attach(13);}void loop(){ if(digitalRead(2) == HIGH) { while(1) { leftMotor.write(90); rightMotor.write(90); } } leftMotor.write(180); rightMotor.write(0); }

43
Järgige eeskuju. Järgmine kood kasutab roboti külge kinnitatud andurit, et panna see takistusega kokku puutudes vasakule pöörama. Üksikasju selle kohta, mida iga osa teeb, vaadake koodi kommentaaridest. Allolev kood on kogu programm.#include Servo vasakMootor;Servo paremMootor;const int serialPeriod = 250; // see piirab konsooli väljundit kord iga 1/4 sekundi järel märgita pikk aeg SerialDelay = 0;const int loopPeriod = 20; // see määrab, kui tihti andur võtab näidu 20 ms-ni, mis on sagedus 50 Hzunsigned long timeLoopDelay = 0;// see määrab funktsioonid TRIG ja ECHO Arduino kontaktidele. Muutke siin olevaid numbreid, kui ühendasite erinevaltconst int ultrasonic2TrigPin = 8;const int ultrasonic2EchoPin = 9;int ultrasonic2Distance;int ultrasonic2Duration;// see määratleb roboti kaks võimalikku olekut: edasisõit või vasakule pööramine#define DRIVE_FORWARD 0#define TURN_LEFT 1int olek = DRIVE_FORWARD; // 0 = sõita edasi (DEFAULT), 1 = vasakule pööraminevoid setup(){ Serial.begin(9600); // need anduri viigu konfiguratsioonid pinMode(ultrasonic2TrigPin, OUTPUT); pinMode (ultraheli2EchoPin, INPUT); // see määrab mootorid Arduino tihvtidele leftMotor.attach(12); rightMotor.attach(13);}void loop(){ if(digitalRead(2) == HIGH) // see tuvastab tapmislüliti { while(1) { leftMotor.write(90); rightMotor.write(90); } } debugOutput(); // see prindib silumissõnumid jadakonsooli if(millis() – timeLoopDelay >= loopPeriod) { readUltrasonicSensors(); // see annab andurile korralduse lugeda ja salvestada mõõdetud vahemaid stateMachine(); timeLoopDelay = millis(); }}void stateMachine(){ if(state == DRIVE_FORWARD) // kui takistusi ei tuvastatud { if(ultrasonic2Distance > 6 || ultrasonic2Distance < 0) // kui roboti ees pole midagi. ultraheliKaugus on mõne ultraheli puhul negatiivne, kui takistust pole { // sõida edasi rightMotor.write(180); leftMotor.write(0); } else // kui meie ees on objekt { olek = TURN_LEFT; } } else if(state == TURN_LEFT) // kui tuvastatakse takistus, pöörake vasakule { unsigned long timeToTurnLeft = 500; // 90 kraadi pööramiseks kulub umbes 0,5 sekundit. Teil võib tekkida vajadus seda kohandada, kui teie rattad on erineva suurusega kui näites märgita pikk turnStartTime = millis(); // säästa aega, mille alustasime pööramist while((millis()-turnStartTime) < timeToTurnLeft) // jääge selles tsüklis kuni timeToTurnLeft on möödunud { // pöörake vasakule, pidage meeles, et kui mõlemad on seatud väärtusele "180", siis pööratakse . rightMotor.write(180); leftMotor.write(180); } olek = DRIVE_FORWARD; }}void readUltrasonicSensors(){ // see on ultraheli 2 jaoks. Kui kasutate teist andurit, peate võib-olla neid käske muutma. digitalWrite (ultraheli2TrigPin, HIGH); viivitusMikrosekundid(10); // hoiab päästiktihvti kõrgel vähemalt 10 mikrosekundit digitalWrite(ultrasonic2TrigPin, LOW); ultraheli2Kestus = impulssIn(ultraheli2EchoPin, HIGH); ultrasonic2Distance = (ultrasonic2Duration/2)/29;}// järgnev on konsooli vigade silumiseks.void debugOutput(){ if((millis() - timeSerialDelay) > serialPeriod) { Serial.print(“ultrasonic2Distance: “) ; Serial.print(ultrahonic2Distance); Serial.print(“cm”); Serial.println(); timeSerialDelay = millis(); }}