Dobro je napomenuti da dron posjeduje LED-icu koja se nalazi na njegovom prednjem dijelu uz samu kameru. Navedena LED-ica će nam davati povratne informacije u kakvom je stanju dron. Bitno je navesti neke indikatore stanja s kojima ćemo se susretati kroz ovu radionicu. Gumb za paljenje odnosno gašenje drona nalazi se na njegovoj desnoj bočnoj strani. Prilikom paljenja naizmjenično će LED-ica svijetliti crvenom, zelenom i žutom bojom.
Kada baterija bude većim dijelom ispražnjena Tello će nam slati obavijest preko LED-ice, koja će lagano trepetati kao crvena boja, dok će uz veoma ispražnjenu bateriju ta LED-ica brzo trepetati istom bojom. Bateriju punimo pomoću standardnog USB kabla kojeg se dobije uz Telloa. Prilikom punjenja lagano će trepetati plava boja, a kad se baterija napuni Tello će nam pomoću LED-ice, koja će svijetliti konstantnom plavom bojom, reći da je punjenje završeno.
Programiranje drona
Ovog drona možemo programirati pomoću programskih jezika Scratch, Python i Swift. Osim programiranja, Tellom možemo upravljati i pomoću mobilne aplikacije Tello app. S obzirom na to da ćemo mi upravljati njime pomoću VIDI X mikroračunala, važno je znati da nam u slučaju brzog trepetanja žute boje ledice Tello šalje obavijest da dron nije povezan s upravljačem, u našem slučaju s VIDI X-om.
Ona najbitnija obavijest kojom će nam Tello reći da se spojio na naš VIDI X bit će trepetanje zelene boje. Na službenim stranica ovog drona moguće je pronaći još neke njegove zanimljive karakteristike, ali i priručnik za korištenje (https://www.ryzerobotics.com/tello-edu).
Tello dron i VIDI X: Zbog male veličine i težine od samo 89 grama dronom nismo upravljali na otvorenom prostoru zbog strujanja zraka, no bio je idealan za demonstraciju upravljanja pomoću VIDI X mikroračunala.
Povezivanje Tello-a i VIDI X-a
Za ovu radionicu potrebni su nam VIDI X mikroračunalo, dron Tello EDU, računalo u kojem ćemo pokretati naš kod i USB kabel kako bi povezali računalo s VIDI X-om. Ako ste sve radili po uputama za instaliranje razvojnih okruženja u kojima ćemo programirati, onda više nije potrebno nikakvo dodatno instaliranje libraryja.
Na samom početku potrebno je povezati ova dva uređaja. To ćemo učiniti tako što ćemo VIDI X spojiti na WiFi koji odašilje Tello. Naziv Tellovog WiFi-ja definirajmo kako bi ga mogli kasnije koristiti, primjerice :
#define WIFI “TELLO-598E30”
Sada napravimo funkciju koju ćemo pozivati iz setup() dijela programa čiji će zadatak biti spojiti VIDI X na Tellov WiFi. Kod navedene funkcije vidljiv je ovdje:
void spajanjeWiFi() { WiFi.mode(WIFI_STA); WiFi.begin(WIFI); unsigned long vrijeme_pocetak = millis(); while (WiFi.status() != WL_CONNECTED && millis() - vrijeme_pocetak < VRIJEME) { Serial.println(“Pokušava se spojiti na WiFi mrežu.”); delay(2000); } if (WiFi.status() == WL_CONNECTED) { Serial.println(“VIDI X je spojen na WiFi mrežu.”); } else { Serial.println(“VIDI X se nije uspio spojiti na WiFi mrežu.”); } }
Pomoću funkcije WiFi.mode(WIFI_STA) omogućimo da se VIDI X može spajati na WiFi mrežu. Nakon toga možemo pokrenuti spajanje na Tellovu WiFi mrežu pomoću funkcije WiFi.begin(), koja prima naziv WiFi mreže i lozinku iste. U našem slučaju lozinku nemamo te ćemo poslati samo već definirani naziv mreže. U ostatku koda postavili smo gore vidljive uvijete pomoću kojih ćemo znati u kojoj je fazi naš pokušaj spajanja.
TELLO dron je s VIDI X povezan bežično. Mi smo naše mikroračunalo povezali s laptopom samo zbog napajanja da ne trošimo baterije.
Slanje naredbi
Posebno je važno istaknuti Tellov SDK koji nam omogućuje pomoću Wi-Fi UDP porta upravljanje dronom preko tekstualnih naredbi.
Općenito, SDK je kratica za “software development kit”, a to je skup pribora za daljnje razvijanje softvera. UDP je kratica za “User Datagram Protocol”, a to je jedan on temeljnih internet protokola. On omogućuje slanje kratkih poruka, u našem slučaju između VIDI-X-a i Telloa.
Ryze Tech, proizvođač drona Tello EDU, sastavio je priručnik za korisnike njihovog SDK-a. Nakon što uđete na ovu poveznicu https://www.ryzerobotics.com/tello-edu, pritisnite “DOWNLOADS” te će vam se na lijevoj strani ekrana uz druge stavke pojaviti i “TELLO SDK 2.0 User Guide”.
Za daljnju nadogradnju ove radionice preporučio bih da bacite oko na navedeni vodič. Što se nalazi u tome vodiču, a da je nama bitno? U njemu su navedene tekstualne naredbe koje možemo koristiti te kako trebamo pokrenuti SDK mode. Iz ovog dokumenta smo saznali i Tellov IP i UDP port, koji će nam biti potrebni za slanje naredbi. Idemo prije svega napraviti funkciju koja će slati naredbe.
void slanjeNaredbe(String naredba) { Udp.beginPacket(IPTELLO, UDPPORT); Udp.write((const unsigned char*)naredba.c_str(), naredba.length()); Udp.endPacket(); if (i == 0) { Serial.println(“Možete započeti slanje naredbi”); } i++; }
Prikazana funkcija primat će naše tekstualne naredbe koje smo vidjeli u SDK dokumentu da Tello podržava. S ovim dijelom koda pokrenut ćemo vezu za upisivanje UDP podataka na udaljenu vezu, zapisat ćemo UDP podatke na udaljenu vezu, dovršiti paket i poslati ga.
Tekstualne naredbe i tipke na VIDI X-u
U Tellovom SDK dokumentu navedeno je da je prije slanja bilo kakve naredbe potrebno prema Tellu poslati naredbu “command” kako bi se pokrenuo SDK mode. To smo učinili u setup() dijelu programa. Sada kada imamo sve spremno za slanje tekstualnih naredbi možemo pogledati koje ćemo naredbe mi koristiti i pomoću kojih tipki ćemo ih slati.
Tipke koje ćemo koristiti su: btn_a, btn_b, left, right, up, down, select, menu, start i volume. Potrebno je postaviti tipke kao ulazne elemente.
U loop() dijelu programa provjeravat ćemo koja je od navedenih tipki pritisnuta te ovisno o pritisnutoj tipki odraditi neku radnju. U programu možete vidjeti kako smo provjeravali je li određena tipka pritisnuta. Ako bude nedoumica, preporučujemo vam da pogledate priručnik za VIDI X, gdje pod točkom dva imate detaljnije objašnjen postupak provjere (https://vidi-x.org/prirucnik/).
U SDK dokumentu možete pronaći mnoštvo naredbi koje možete koristiti, a mi smo odabrali njih deset. Tekstualna naredba “takeoff” bit će pozvana nakon što pritisnemo tipku start. S ovom naredbom dron će uzletjeti.
if (digitalRead(start) == LOW) { slanjeNaredbe(“takeoff”); Serial.println(“Tello uzlijece”); delay(1000); }
U kodu iznad prikazano je kako smo to uradili za uzlijetanje, ono što moramo uraditi kako bi naš dron znao što treba učiniti je pozivanje funkcije koju smo već napravili slanjeNaredbe(String naredba), kojoj šaljemo tekstualnu naredbu “takeoff” s kojom dron uzlijeće.
Tipku select ćemo povezati s naredbom “land” pomoću koje će dron sletjeti. Tekstualna naredba “up x” omogućuje da se dron podigne za “x” centimetara. Raspon “x” je od 20 do 500 centimetara. Ako želimo dron podignuti za 30 centimetara pozvat ćemo funkciju slanjeNaredbe(“up 30”), s time će se dron uspješno dignuti za traženi iznos. Navedenu tekstualnu naredbu smo povezali s tipkom btn_a. Idućih pet naredbi također zahtijevaju slanje “x” vrijednosti i imaju isti raspon “x” kao i naredba “up x”.
Te naredbe su: “down x”, koju smo povezali s tipkom btn_b, “left x” s tipkom left, potom “right x” s tipkom right, “forward x” s tipkom up i posljednja naredba “back x” koju smo povezali s tipkom down. Pritiskom tipke volume naredit ćemo Tellu da se rotira za 45 stupnjeva u smjeru suprotnom od kazaljke na satu. Tekstualna naredba koja će to uraditi je “ccw x” te, naravno, nismo morali za vrijednost “x” postaviti 45, već smo mogli postaviti bilo koji broj u rasponu od 1 do 360 stupnjeva. Takav raspon vrijednosti “x” vrijedi i za naredbu “cw x”, koju ćemo pokrenuti nakon pritiska tipke menu. Ova naredba će rotirati dron za “x” stupnjeva u smjeru kazaljke na satu.
Sada je sve spremno za vaše prvo uzlijetanje. Uploadajte kod na VIDI X mikroračunalo, uključite Tello EDU i uživajte upravljajući njime.
Kod pronađite na linku https://github.com/VidiLAB-com/Vidi-X/tree/master/Upravljanje-dronom