- Reikalingos medžiagos:
- 3D spausdinimas reikalingomis dalimis:
- Aparatūra ir schemos:
- Roboto surinkimas:
- „Arduino“ programavimas dvipusiam robotui:
- Apdorojama „Android“ programa:
- „Bluetooth“ valdomo dvipusio roboto darbas:
Sveiki atvykę į kitą projektą, kuriame sukursime mažą robotą, galintį vaikščioti ir šokti. Projektu siekiama išmokyti jus, kaip padaryti mažus hobio robotus naudojant „Arduino“, ir kaip programuoti „Servo“ variklius tokioms programoms. Projekto pabaigoje galėsite pagaminti šį vaikščiojantį ir šokantį robotą, kuris imasi komandos iš „Android“ mobiliojo telefono atlikti tam tikrus iš anksto nustatytus veiksmus. Taip pat galite naudoti programą (pateiktą vadovėlio pabaigoje), kad galėtumėte lengvai valdyti savo paties roboto veiksmus valdydami servo variklių padėtį naudodami „Serial“ monitorių. Turėdami 3D spausdintuvą šis projektas bus įdomesnis ir atrodys šauniai. Bet jei tokios neturite, galite naudoti bet kurią internetinę paslaugą arba tiesiog naudoti kartoną tam pačiam sukurti.
Reikalingos medžiagos:
Šiam robotui sukurti reikalingos medžiagos:
- Arduino nano
- Servo SG90 - 4Nos
- Vyriškas bergas lazdos
- HC-05 / HC-06 „Bluetooth“ modulis
- 3D spausdintuvas
Kaip matote, šio 3D spausdinto roboto statybai reikalingos labai minimalios elektronikos dalys, kad projekto išlaidos būtų kuo mažesnės. Šis projektas skirtas tik konceptualiai ir įdomiai ir iki šiol neturi realaus laiko taikymo.
3D spausdinimas reikalingomis dalimis:
3D spausdinimas yra nuostabi priemonė, galinti daug prisidėti kuriant prototipinius projektus ar eksperimentuojant su naujais mechaniniais dizainais. Jei dar nesate atradę 3D spausdintuvo pranašumų ar jo veikimo, galite perskaityti 3D spausdinimo vadovą pradedantiesiems.
Šiame projekte aukščiau pateiktas roboto korpusas yra visiškai atspausdintas 3D formatu. STL failus galite atsisiųsti iš čia. Įkelkite šiuos failus į savo 3D spausdinimo programinę įrangą, pvz., „Cura“, ir tiesiogiai juos atsispausdinkite. Visoms dalims atspausdinti naudojau labai paprastą spausdintuvą. Spausdintuvas yra „FABX v1“ iš „3ding“, jo kaina už prieinamą kainą, spausdinimo tūris 10 kub. Cm. Pigiai kainuoja kompromisas su maža spausdinimo skiriamąja geba ir be SD kortelės ar spausdinimo atnaujinimo funkcijos. STL failams spausdinti naudoju programinę įrangą „Cura“. Nustatymai, kuriuos naudojau spausdindamas medžiagas, pateikti žemiau. Galite naudoti tuos pačius parametrus arba pakeisti juos pagal savo spausdintuvą.
Kai atspausdinsite visas dalis, nuvalykite atramas (jei tokių yra) ir įsitikinkite, kad kojos ir pilvo dalies skylės yra pakankamai didelės, kad būtų galima pritvirtinti varžtą. Jei ne, naudokite adatą, kad skylė būtų šiek tiek didesnė. Jūsų 3D spausdintos dalys atrodys panašiai kaip žemiau.
Aparatūra ir schemos:
Šio mobiliojo telefono valdomo dvipusio „Arduino“ roboto aparatinė įranga yra tikrai paprasta. Visa schema parodyta žemiau esančiame paveikslėlyje
Aš naudoju „Perf“ plokštę, kad galėčiau padaryti pirmiau minėtas jungtis. Įsitikinkite, kad jūsų grandinė taip pat tilps roboto galvutėje. Kai jūsų „Perf“ lenta bus paruošta, ji turėtų atrodyti panašiai kaip žemiau.
Roboto surinkimas:
Kai techninė įranga ir 3D spausdintos dalys bus paruoštos, galime surinkti robotą. Prieš tvirtindami variklius, įsitikinkite, kad varikliai pastatyti žemiau esančiais kampais, kad programa veiktų nepriekaištingai.
Variklio numeris |
Variklio vieta |
Variklio padėtis |
1 |
Kairysis klubo variklis |
110 |
2 |
Dešiniojo klubo variklis |
100 |
4 |
Dešinės kulkšnies variklis |
90 |
5 |
Dešiniojo klubo variklis |
80 |
Šiuos kampus galima nustatyti naudojant programą, pateiktą vadovėlio pabaigoje. Paprasčiausiai įkelkite programą į „Arduino“, atlikę pirmiau nurodytas jungtis, ir nuosekliame monitoriuje įveskite šiuos duomenis (pastaba: perdavimo sparta yra 57600).
1, 100, 110
2,90,100
4,80,90
5,70,80
Įstatęs visus savo variklius, jūsų nuoseklusis monitorius turėtų atrodyti maždaug taip.
Nustačius variklius atitinkamais kampais, pritvirtinkite juos, kaip parodyta aukščiau esančiame paveiksle.
Jei nesuprantate, kaip surinkti variklius, vadovaukitės vaizdo įrašu šios pamokos pabaigoje. Surinkus robotą atėjo laikas užprogramuoti mūsų šokantį robotą
„Arduino“ programavimas dvipusiam robotui:
Programavimas BBB robotas ( "Bluetooth" dvikojis Bob ) yra labiausiai įdomus ir įdomus dalis šiame samouczku. Jei jums labai sekasi programuoti servovariklius su „Arduino“, aš rekomenduočiau jums sukurti savo programą. Bt, jei norite sužinoti, kaip naudoti servovariklius tokioms robotų programoms, ši programa bus labai naudinga. Daugiau apie „arduino“ programavimą galite sužinoti mūsų „arduino“ projektų kategorijoje.
Visa programa pateikiama šios pamokos pabaigoje arba galite atsisiųsti visą kodą iš čia. Toliau paaiškinsiu to paties segmentus. Programa gali valdyti robotų veiksmus per nuoseklųjį monitorių arba „Bluetooth“. Taip pat galite patys judėti valdydami kiekvieną atskirą variklį naudodami nuoseklųjį monitorių.
servo1.attach (3); servo2.attach (5); servo4.attach (9); servo5.attach (10);
Ankstesnėse kodo eilutėse jis naudojamas paminėti, kuris servovariklis yra prijungtas prie kurio „Arduino“ kaiščio. Čia mūsų atveju „Servo 1,2,4“ ir „5“ yra atitinkamai prijungti prie 3,5,9 ir 10 kaiščių.
Bot_BT.pregin (9600); // pradėti „Bluetooth“ ryšį 9600 baudos greičiu Serial.begin (57600);
Kaip minėta anksčiau, mūsų vaikščiojimo robotas gali dirbti su „Bluetooth“ komandomis ir iš nuoseklaus monitoriaus komandų. Taigi „Bluetooth“ nuoseklusis ryšys veikia su 9600 perdavimo sparta, o nuoseklusis - su 57600 perdavimo greičiu. Mūsų „Bluetooth“ objekto pavadinimas čia yra „Bot_BT“.
jungiklis (variklis) {atvejis 1: // vienam varikliui {Serial.println ("Vykdantis vienas variklis"); jei (num1
Aukščiau pateiktas jungiklio dėklas naudojamas individualiai valdyti servo variklius. Tai padės patiems kūrybiškai judėti su robotu. Naudodami šį kodo segmentą galite tiesiog pasakyti variklio numerį nuo kampo iki kampo, kad konkretus variklis pasislinktų į norimą vietą.
Pavyzdžiui, jei norime perkelti variklį 1, kuris yra kairysis klubo variklis, iš numatytosios 110 laipsnių vietos į 60 laipsnių. Mes galime tiesiog parašyti „1,110,60“ serijiniame „Arduino“ monitoriuje ir paspausti „Enter“. Tai bus naudinga norint pačiam atlikti sudėtingus judesius su savo robotu. Kai eksperimentuosite nuo angelo iki kampo, galėsite patys judėti ir pakartoti juos atlikdami kaip funkciją.
if (Serial.available ()> 0) // Perskaitykite, kas ateina per Serial {gmotor = Serial.parseInt (); Serial.print ("pasirinktas skaičius->"); Serijinis atspaudas (motorinis); Serijinis.atspausdinti (","); gnum1 = Serial.parseInt (); Serijinis spaudas (gnum1); Serijinis spaudinys ("laipsnis"); gnum2 = Serial.parseInt (); Serijinis spaudinys (gnum2); Serial.println ("laipsnis"); vėliava = 1; }
Jei yra nuoseklūs duomenys, skaičius prieš pirmąjį „,“ laikomas motoriniu, tada skaičius prieš antrąjį „,“ laikomas „gnum1“, o skaičius po antrojo „,“ laikomas „gnum2“.
if (Bot_BT.available ()) // Perskaitykite, kas gaunama per „Bluetooth“ {BluetoothData = Bot_BT.read (); „Serial.print“ („Gaunamas iš BT:“); Serial.println („BluetoothData“); }
Jei „Bluetooth“ ryšys gauna tam tikrą informaciją, gauta informacija saugoma kintamajame „BluetoothData“. Tada šis kintamasis lyginamas su iš anksto nustatytomis reikšmėmis, norint atlikti tam tikrą veiksmą.
if (flag == 1) skambutis (gmotor, gnum1, gnum2); // iškvieskite atitinkamą variklį veikti // Vykdykite funkcijas pagal komondą, gautą per nuoseklųjį monitorių arba „Bluetooth“ // if (gmotor == 10) left_leg_up (); if (gmotor == 11) right_leg_up (); if (gmotor == 12) move_left_front (); if (gmotor == 13) move_right_front (); if („BluetoothData == 49 - gmotor == 49“ say_hi (); if („Bluetooth“ duomenys == 50 - gmotor == 50) vaikščioti1 (); if („BluetoothData == 51 - gmotor == 51“ walk2 (); jei („BluetoothData == 52 - gmotor == 52“) dance1 (); if („BluetoothData == 53 - gmotor == 53“) dance2 (); if („BluetoothData == 54 - gmotor == 54“) {testas (); testas (); testas ();}
Čia funkcijos iškviečiamos pagal vertes, gautas iš nuoseklaus monitoriaus ar „Bluetooth“. Kaip parodyta aukščiau, kintamasis „gmotor“ turės serijinio monitoriaus vertę, o „BluetoothData“ - „Bluetooth“ įrenginio vertę. Skaičiai nuo 10,11,12 iki 53,54 yra iš anksto nustatyti skaičiai.
Pavyzdžiui, jei įvedate skaičių 49 į nuoseklųjį monitorių. Funkcija „say_hi ()“ bus vykdoma ten, kur robotas jums mojuos.
Visos funkcijos yra apibrėžtos puslapyje „Bot_Functions“. Galite atidaryti ir pamatyti, kas iš tikrųjų vyksta kiekvienos funkcijos viduje. Visos šios funkcijos buvo sukurtos eksperimentuojant kiekvieną variklį nuo angelo iki kiekvieno, naudojant aukščiau paaiškintą jungiklio korpusą. Jei turite kokių nors abejonių, galite juos paskelbti naudodamiesi komentarų skiltimi ir mielai jums padėsiu.
Apdorojama „Android“ programa:
„Android“ programa, skirta valdyti robotą, buvo sukurta naudojant „Android“ apdorojimo režimą. Jei norite atlikti keletą programos pakeitimų, galite atsisiųsti visą „Processing“ programą iš čia.
Jei tiesiog norite naudoti programą, galite ją atsisiųsti iš čia kaip APK failą ir tiesiogiai įdiegti į savo mobilųjį telefoną.
Pastaba: „Bluetooth“ modulis turėtų būti pavadintas HC-06, kitaip programa negalės prisijungti prie jūsų „Bluetooth“ modulio.
Įdiegę programą, galite susieti „Bluetooth“ modulį su savo telefonu ir paleisti programą. Žemiau jis turėtų atrodyti maždaug taip.
Jei norite padaryti savo programą patrauklesne arba prisijungti prie bet kurio kito įrenginio, išskyrus „Hc-06“. Galite naudoti apdorojimo kodą ir atlikti kai kuriuos pakeitimus, tada įkelti kodą tiesiai į savo telefoną.
„Bluetooth“ valdomo dvipusio roboto darbas:
Kai jūsų techninė įranga, „Android“ programa ir „Arduino Sketch“ bus paruošti, laikas smagiai praleisti laiką su mūsų robotu. Robotą galite valdyti naudodami „Bluetooth“ programą naudodami programos mygtukus arba tiesiai iš „Serial“ monitoriaus naudodami šias komandas, kaip parodyta toliau pateiktame paveikslėlyje.
Kiekviena komanda leis robotui atlikti keletą savitų užduočių, be to, galite pridėti daugiau veiksmų, atsižvelgdami į savo kūrybiškumą.
Robotas taip pat gali būti maitinamas 12 V adapteriu arba gali būti maitinamas naudojant 9 V akumuliatorių. Ši baterija gali būti lengvai pastatyta po „Perf“ lenta ir gali būti padengta roboto galvute.
Visą šio išmaniojo telefono valdomo roboto veikimą galite rasti žemiau esančiame vaizdo įraše.