Postoje razne platforme koje smo mogli odabrati za izradu projekata pametnog robota, robotova ili jednostavno vozila kojima možete upravljati na razne načine. No, mi smo odabrali Velleman KSR11 kit jer ga je jednostavno nabaviti putem web trgovine https://www.chipoteka.hr/, a i cijena mu je prihvatljiva te se kreće nešto ispod 300 kuna. Pokušate li sličnu platformu kupiti iz Kine ili putem drugih web shopova, vjerojatno ćete proći nešto skuplje.
Odlično se snašao u vožnji preko prepreka, što možete pogledati u priloženom videu na linku bit.ly/VidiXRobot
Velleman KSR11 kit robot za sve terene deklariran je kao kit za sastavljanje za djecu od 14 godina na dalje. S obzirom na to da dijelovi dolaze pričvršćeni na plastični okvir, trebat ćete skalpelom odrezati komade plastike koji ostaju nakon skidanja pojedinog komada. Mi smo ih skidali kliještima, no možete i čvršćim škarama. Upotreba skalpela je vjerojatno najzahtjevniji dio zadatka, a planirate li ovaj robot kit nabaviti djetetu mlađem od 14 godina, morat ćete mu pomoći oko korištenja tog vrlo oštrog alata.
Čak su i gumene gusjenice spojene s gumenim okvirom koji je potrebno pažljivo odvojiti
U detaljnim uputama za sastavljanje koje dobijete u pakiranju, prvi se slaže upravljač, zatim se slaže glavni pogonski dio gusjenica. Nakon što je složen taj centralni dio robota s gusjenicama, možete isprobati rade li.
Za uvrtanje vijaka potrebno je nešto više snage jer su plastični dijelovi u koje ih šarafite tijesni kako biste dobili što kompaktniji robot
Slaganjem ostatka moguće je dobiti tri različite verzije robota. Jedan gusjenice koristi kao hvataljke, drugi model će imati ulogu viljuškara, a nama je trenutno najzanimljiviji model s produženim gusjenicama.
KSR11 kit robot ima ukupno tri motora od kojih se dva koriste za lijevu i desnu gusjenicu, dok treći mijenja namjene od modela do modela.
Centralni dio s dva motora koji pokreću gusjenice
Kod našeg modela s produženim gusjenicama motori služe za povećanje ili smanjenje kuta gusjenica kako bi robot lakše savladao razne prepreke na terenu.
Još samo jedan dio i naš je robot spreman za nadogradnju s Vidi X mikroračunalom
U ovom tutorijalu pokazat ćemo vam kako možete upravljati njegovim motorima uz pomoć Vidi X mikroračunala. Kako bi mikroračunalo moglo isporučiti dovoljno struje za pogon motora, potrebno je koristiti tzv. driver motora. Najrašireniji driver motora za hobi DIY projekte baziran je na L298n čipu koji se sastoji od dva H mosta.
Dual H bridge L298n
Ponovimo! Kako bismo mogli upravljati DC motorom putem mikrokontrolera, potreban nam je H most za preusmjeravanje struje u DC motor (a da pritom tom ne oštetimo mikrokontroler koji ne prihvaća struju veće jakosti). Uz pomoć H mosta moguće je DC motor okretati u oba smjera.
Jeftinija i dimenzijama manja izvedba Dual H Bridge drivera motora odlično će poslužiti za projekt pametnog robota
Kako bismo znali izabrati verziju H Bridge sklopa za naš motor, trebamo znati koliko ampera troši u pogonu. To možete izmjeriti multimetrom tako da mjerne sonde stavite u utičnice za mjerenje amperaže. Na hobi multimetrima ograničeni ste na mjerenja struja do 10 A, a ako vaš motor zahtijeva veću struju, uništit ćete multimetar. Iz iskustva možemo reći da ovi maleni motori troše manje od jednog ampera pa možemo koristiti naš multimetar za tu operaciju.
Usporedbe radi, znamo da će anlaser (električni motor za startanje) automobila trošiti znatno više od 10 A, a u trenutku pokretanja povući će i preko 100 A. Dakle, takav motor ne smijete pokušati spojiti na ovaj maleni hobi multimetar jer ćete uništiti multimetar.
Oznake na slici su:
U – baterija;
A – multimetar postavljen u mod za mjerenje jakosti struje;
R – potrošač tj. motor u našem slučaju
Mjerenje potrošnje našeg DC motora
Mjerenjem smo utvrdili da naš DC motor troši 310 mA (miliampera). Jakost struje koju povuče pri startanju ne možemo utvrditi sa sigurnošću ovim multimetrom (ipak je pokazao vrijednost od oko 400 mA). Treba uzeti u obzir da će motor, kada naleti na prepreku, recimo zid, povući više struje kako bi pokušao svladati prepreku.
Za većinu vozila trebat će pogoniti barem dva DC motora. U tu svrhu poslužit će nam dupli H most. Najrašireniji IC za kontrolu motora je L298n koji pruža upravo tu mogućnost upravljanja s dva motora. Zovemo ga “dual H bridge”, a može se nabaviti montiran na štampane pločice u nekoliko varijanti. Ono na što treba obratiti pozornost među varijantama jest koliko napona i struje može isporučiti te rade li mu logički sklopovi na 3 V ili na 5 V.
Ovaj maleni koristi opskrbni napon od 2 V do 10 V za dva DC motora ili četverožilni dvofazni koračni motor. Može pogoniti motor prema naprijed ili obrnuto, a moguće je i prilagoditi brzinu rotacije. Za svaki motor može osigurati kontinuiranu struju od 1,5 A i vršnu do 2,5 A. Posjeduje toplinsku zaštitu od pregrijavanja koja će se automatski isključiti nakon što se IC rashladi.
Korištenjem L298n čipa postići ćemo minimalno zagrijavanje bez hladnjaka, a dobar je izbor i zbog svoje male veličine te male potrošnje električne energije.
Infobox:
Tip: Dvostruki pokretač motora s H-mostom može pokretati dva istosmjerna motora ili četverožilni dvofazni koračni motor.
Napon napajanja motora: 2 V – 10 V
Ulazni napon signala: 1,8 V – 7 V
Jednokratna radna struja: 1,5 A
Vršna struja: do 2,5 A
Struja u stanju pripravnosti: manja od 0,1 uA
Plus: Ugrađeni krug toplinske zaštite (TSD), bez brige za zastoj motora
Minus: jedino ako ne zadovoljava potrebe za strujom motora, treba potražiti neko drugo rješenje
Spajanje trećeg motora
Osim dvaju glavnih motora za pokretanje gusjenica, Vellemanov robot kit ima i treći motor raznih namjena. Tako taj treći motor može biti u ulozi viljuškara, no u našem se slučaju koristi za promjenu kuta između glavnih i pomoćnih gusjenica.
Za tu operaciju promjene kuta nije potrebno pokretati motor u oba smjera. Kako je dovoljno pokretati ga u samo jednom smjeru, koristit ćemo 2N2222 NPN tranzistor kao prekidač.
Tranzistor je sposoban isporučiti struju od 600 mA, a kako naš motor troši 300 mA, ovaj tranzistor će biti sasvim dovoljan.
Na internetu smo pronašli mnoštvo slika koje nemaju raspored emitera, baze i kolektora kao na našoj slici te treba imati na umu da postoji P2N2222A tranzistor koji ima drugačiji raspored nožica.
Budite vrlo oprezni s time koju nožicu tranzistora spajate jer ćete krivim spajanjem oštetiti Vidi X mikroračunalo.
Nožica baze tranzistora putem otpornika se spaja s pinom Vidi X-a. Mi smo uzeli otpornik od 220 Ω, iako će i veće vrijednosti biti dobre.
Sada još trebate dodati diodu između emitera i uzemljenja. Mi smo odabrali 1N4007 diodu koja će blokirati povratnu struju koju može stvoriti motor jakosti do jednog ampera (1 A).
Kada na bazu tranzistora primijenite malu struju (s logičkog pina Vidi X-a), tranzistor će propustiti struju od baterija da bi pokrenuo motor.
Primijenite li modulirani signal (PWM) na bazu tranzistora, on će propuštati struju s baterija u ritmu te modulacije pa će se motor sporije okretati.
PWM je moguće primijeniti, osim na spomenuti tranzistor, i na korišteni Dual H Bridge drivera motora. Sve što trebate je provjeriti jesu li logički pinovi na koje su spojeni ti driveri stvarno spojeni na PWM pinove Vidi X-a.
Ako biste imali potrebu za okretanjem motora u drugom smjeru, trebate dodati još jedan ovakav sklop koji će okrenuti protok struje prema motoru u drugom smjeru (zamijeniti + i -). Takav spoj može lako dovesti do kratkog spoja ako se pokuša istovremeno struja poslati u oba tranzistora. Stoga je razvijen sklop koji koristi 4 tranzistora i, uz pravilnu implementaciju dioda, neće doći do kratkog spoja. Takav sklop zovemo H bridge tj. H most. L298n kojim pokrećemo glavne motore sastoji se od dva takva sklopa pa ga zato zovemo Dual H Bridge.
Spajanje KSR11 robota s dual H bridge driverom motora te drivera motora s VIDI X-om. Prikazano je i spajanje trećeg motora uz pomoć tranzistora koji može isporučiti 600 mA struje.
Zašto nismo koristili tranzistore i za pokretanje ostalih motora nego smo koristili L298n driver motora? Dual H bridge brine o tome da ne pošaljemo struju istovremeno u oba smjera te time uzrokujemo kratki spoj.
Programski kôd za Vidi X robot
Kako bismo ovaj robot napravili IoT sposobnim, potreban mu je softver. Softver opisan u ovom tutorijalu moći će putem Wi-Fi komunikacije upravljati ovim robotom.
Dakle, potrebno je laptopom ili mobitelom spojiti se na Wi-Fi mrežu koju je kreirao Vidi X, zatim upisati IP adresu Vidi X-a u Internet preglednik. Dobili ste dva kruga koji predstavljaju Joystick za upravljanje.
Kôd se nalazi na našem githubu https://github.com/VidiLAB-com/Vidi-X/VidiX-Robot_v0.1
Na početku kôda pronaći ćete varijablu koja izgleda otprilike ovako
U tu varijablu smješten je Javascript tj. HTML kôd stranice koju dobijete upisivanjem IP adrese Vidi X-a u Internet preglednik. Kako biste vidjeli izvorni kôd te stranice, jednostavno u Internet pregledniku kliknite desnu tipku miša i odaberite „Pogledaj izvor stranice“.
Primijenjeni JavaScript kôd te njegovo detaljno objašnjenje pronađite na GitHub adresi https://github.com/bobboteck/JoyStick.
Kako bismo iz željenog HTML kôda dobili gore spomenuti sadržaj varijable, treba ga zapakirati i komprimirati Gzip kompresijom, a to možete učiniti uz pomoć on-line alata CyberChef na adresi https://gchq.github.io/CyberChef/.
Kada primijenite Gzip i druge postavke URL-a (kako ga oni zovu RECEPTA), izgledat će ovako
U Input prozor kopirajte HTML kôd te kliknite na BAKE! gumb pri dnu alata. Sada iz Output prozora možete preuzeti zapakirani sadržaj te ga smjestiti u varijablu niza, kako je prikazano gore.
Sada možemo postaviti brojeve pinova na koje je spojen Dual H Bridge driver.
Na samom početku izvršavanja kôda vrlo je korisno sve pinove postaviti na Low vrijednost
Okretanje lijevo, desno može se zamijeniti ako je konektor motora drugačije okrenut pri spajanju na L298n bridge.
Iz gornjih funkcija lako je izvesti funkcije za kretanje naprijed, nazad. Želite li pokretati motore različitom brzinom kako biste usporili kretanje robota, trebat će vam analogWrite.h biblioteka koju možete preuzeti na linku https://github.com/ERROPiX/ESP32_AnalogWrite te time znatno skratiti funkcije upravljanja motorima tj. drugačije ih koncipirati. Time biste dobili Torque Vectoring upravljanje gusjenicama slično onome na Concept_One automobilu Mate Rimca. Korišteni JavaSript za Joystick je sposoban proslijediti vam informacije koje će vam trebati za Torque Vectoring upravljanje gusjenicama. No taj dio vam ostavljamo za vježbu programiranja.
Linije kôda za otpakiravanje i prikaz HTML stranice izgledaju ovako
Vraćeni rezultat čitamo uz pomoć kôda
// handle http messages
voidhandle_message(WebsocketsMessage msg){
commaIndex = msg.data().indexOf(',');
LValue = msg.data().substring(0, commaIndex).toInt();
RValue = msg.data().substring(commaIndex + 1).toInt();
if((LValue==0)and(RValue==0)){Stop();}
if((LValue>0)and(RValue>0)){Back();}
if((LValue<0)and(RValue<0)){Forward();}
if((LValue>0)and(RValue<=0)){Turn_Right();}
if((LValue<=0)and(RValue>0)){Turn_Left();}
// debug ispisivanje teksta
tft.setCursor(0, 100);
tft.setTextColor(ILI9341_GREEN);
tft.print(LValue);
tft.println("; ");
tft.println(RValue);
tft.println(" ");
}
Na osnovu primljenih vrijednosti, IF funkcijom pozivamo određene funkcije za pokretanje motora.
Kako biste kôd prenijeli na Vidi X, potreban vam je instaliran Arduino IDE na računalu.
Arduino IDE instalacija:
Ako već nemate Arduino IDE, instalirajte ga na način opisan na linku https://vidilab.com/vidi-project-x/4714-vidi-project-x-arduino-ide
Instalacija libraryja:
Bit će nam potrebni neki libraryji te ih preuzmite i instalirajte s priloženih linkova.
ESPAsyncWebServer s https://github.com/me-no-dev/ESPAsyncWebServer preuzmite s linka
https://github.com/me-no-dev/ESPAsyncWebServer/archive/master.zip
AsyncTCP s https://github.com/me-no-dev/AsyncTCP preuzmite s linka https://github.com/me-no-dev/AsyncTCP/archive/master.zip
Sada kliknite na izbornik „Skica“, „Include Library“ -> „Add .zip Library…“ te odabetite preuzete .zip datoteke i instalirajte ih jednu po jednu.
Instalacija ArduinoWebsockets libraryja
Osim toga, trebat će nam i ArduinoWebsockets library https://github.com/gilmaimon/ArduinoWebsockets, no njega možete instalirati kroz Arduino IDE kako biste mogli i updateati taj library.
Stoga kliknite na izbornik „Skica“, „Include Library“ -> „Manage Libraries“.
Unesite „ArduinoWebsockets“ u gornji desni okvir za pretraživanje i pritisnite Enter.
Kao rezultat pretraživanja, pokazat će vam se istoimena biblioteka koju su napisali ranije spomenuti autori; instalirajte je odabirom najnovije verzije i klikom na gumb „Install“.
WebSocket je računalni komunikacijski protokol koji pruža full-duplex komunikacijske kanale putem jedne TCP veze. Da bi se postigla kompatibilnost, WebSocket rukovanje koristi zaglavlje HTTP nadogradnje za promjenu iz HTTP protokola u protokol WebSocket.
Spomenute biblioteke instalirali ste kako biste mogli ostvariti tu dvostranu komunikaciju između Vidi X robota i računala, odnosno mobitela.
Upload kôda
Sada možete kôd preuzet s githuba https://github.com/VidiLAB-com/Vidi-X/tree/master/VidiX-Robot_v0.1 prenijeti na Vidi X.
USB kabelom spojite Vidi X i računalo.
Provjerite na izborniku Alati, zatim Pločica, je li odabran ODRIOD-ESP32.
Zatim odaberite odgovarajući port s izbornika Alati, Port te zatim pripadajući port koji ste dobili, npr. COM12.
S izbornika Skica odaberite Prenesi i kôd će se kroz nekoliko trenutaka učitati na Vidi X.
Sada s ekrana Vidi X-a pročitajte ime Wi-Fi mreže te se na ekranu prikazanim passwordom spojite na tu mrežu vašim laptopom ili mobitelom.
U Internet preglednik upišite IP adresu s ekrana Vidi X-a i pokrenite Vidi X robot s joystickom prikazanim na ekranu.
Onaj treći motor (koji služi za promjenu nagiba kuta među gusjenicama) pokrenite pritiskom tipke prema gore na Vidi X-u.
Odlično se snašao u vožnji preko prepreka, što možete pogledati u priloženom videu na linku bit.ly/VidiXRobot
Za kraj
Nadamo se da vam se ovaj projekt svidio i da ste iz njega naučili puno novih stvari. Objasnili smo kako pokretati motore uz pomoć L298n bridge drivera te vam ne bi trebao biti problem uz pomoć više takvih drivera upravljati sa znatno više motora.
Naučili ste i kako izmjeriti koliko ampera troši vaš motor te može li vaš driver podržati vaš motor.
Također, sada znate kako uz pomoć tranzistora pokrenuti motor u jednom smjeru.
Istražujte i uživajte.