upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

42
VELEUČILIŠTE U RIJECI Stručni studij Telematika Zoran Lukić UPRAVLJANJE HOVERCRAFT VOZILOM POMOĆU ARDUINA Projektni zadatak Rijeka, 2014

Upload: darkokovacic

Post on 16-Jan-2016

10 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

VELEUČILIŠTE U RIJECI

Stručni studij Telematika

Zoran Lukić

UPRAVLJANJE HOVERCRAFT VOZILOM

POMOĆU ARDUINA

Projektni zadatak

Rijeka, 2014

Page 2: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

2

VELEUČILIŠTE U RIJECI

Stručni studij Telematika

UPRAVLJANJE HOVERCRAFT VOZILOM

POMOĆU ARDUINA

Projektni zadatak

Kolegij: Projekt u telematici

Mentor: Franušić Marino, predavač

Student: Zoran Lukić, MBS: 2427004088/10

Rijeka, siječanj, 2014.

Page 3: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

3

SAŽETAK

U ovom projektnom radu je opisana mogućnost izrade sustava daljinskog radio upravljanja pomoću dviju Arduino Uno platformi i NRF modula. Sustavi radio upravljanja posebno su omiljeni među RC hobistima gdje se koriste za upravljanje različitih modela vozila, plovila i letjelica. U praktičnom dijelu projekta nije do kraja realizirano funkcionalno upravljanje hovercraftom ali je pokazana mogućnost upravljanja ESC i servo motorima pomoću Arduino platforme kao i prijenos podataka između dviju Uno platformi korištenjem NRF modula. Programski kod ovog projekta je napisan u originalnom ardunovom programskom jeziku koji je po svojoj strukturi vrlo sličan C-u. Programski kod je baziran na primjeru iz nRF24 biblioteke koja je upravo namijenjena radijskom daljinskom prijenosu podataka.

Ključne riječi: Arduino, NRF modul, ESC motori

Page 4: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

4

SADRŽAJ

1. PROJEKTNI ZADATAK ................................................................................................5

1. TEORIJSKA POZADINA O RADIO UPRAVLJANJU ..................................................6

1.1. Radiokomunikacije ...................................................................................................6

1.2. Frekvencijska podjela ...............................................................................................8

1.3. Radioupravljanje ......................................................................................................9

2. UPRAVLJANJE NA 2,4 GHz ....................................................................................... 10

2.1. DSSS metoda ......................................................................................................... 10

2.2. FHSS metoda ......................................................................................................... 12

3. PREGLED POSTOJEĆIH PROJEKATA KOJI KORISTE ARDUINO I NRF .............. 15

4. OPIS PLANIRANOG RJEŠENJA................................................................................. 16

5. TERMINSKI PLAN IZRADE PROJEKTA ................................................................... 16

6. OPIS HARDVERSKOG DIJELA SUSTAVA ............................................................... 17

7.1 Arduino ...................................................................................................................... 17

7.2. Arduino Uno .............................................................................................................. 17

7.3. NRF modul ................................................................................................................ 19

7. IZRADA PRAKTIČNOG DIJELA PROJEKTA ........................................................... 22

7.1. Uspostavljanje komunikacije .................................................................................. 22

7.2. Arduino i motori s ESC-om .................................................................................... 23

7.3. Spajanje Arduina na predajnoj strani ...................................................................... 26

7.4. Spajanje Arduina na prijemnoj strani ...................................................................... 28

8. OPIS PROGRAMA I ISPIS KODA .............................................................................. 29

8.1. Predajnik ................................................................................................................ 29

8.2. Prijemnik ................................................................................................................ 33

9. OPIS RADA CIJELOG SUSTAVA .............................................................................. 38

10. ANALIZA RADA ..................................................................................................... 38

11. TROŠKOVNIK ......................................................................................................... 39

12. ZAKLJUČAK ............................................................................................................ 40

13. LITERATURA .......................................................................................................... 41

14. POPIS SLIKA ........................................................................................................... 42

15. POPIS TABLICA ...................................................................................................... 42

Page 5: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

5

1. PROJEKTNI ZADATAK

Cilj projekta je izraditi funkcionalno daljinsko upravljanje hovercrafta koristeći dva Arduino mikrokontrolera. Jedan kontroler (Arduino Due) koristi se kao daljinski upravljač i opremljen je NRF modulom za bežičnu komunikaciju na 2,4 GHz. Na taj kontroler potrebno je spojiti kontrole za upravljanje vozilom –jedan potenciometar koji se koristi za zakretanje kormila, drugi potenciometar koji se koristi za pogonski motor te treći potenciometar za uzgonski motor. Drugi kontroler (Arduino Uno) spojen je na upravljačke module za pogonski i uzgonski motor te na servo motor za zakret kormila. Također je opremljen NRF modulom kako bi mogao primati naredbe od Arduino Due kontrolera.

Page 6: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

6

1. TEORIJSKA POZADINA O RADIO UPRAVLJANJU

1.1. Radiokomunikacije

Radiokomunikacije su područje elektrotehnike koje razmatra i ostvaruje mogućnosti komunikacije i prijenosa informacija putem radio valova. Na temelju fizikalnih osobina elektromagnetnog zračenja pogodnih valnih duljina, na području radiokomunikacija ostvaruju se antene i valovodi te usporedno i prateći elektronski uređaji kao što su oscilatori, visokofrekventna pojačala, odašiljači, različiti prijemnici i mnogi drugi sustavi, kao što su to na primjer, radari ili satelitske komunikacije. Područje radiokomunikacija tradicionalno se oslanja na područje elektronike, a u novije vrijeme prodire sve više na područje telekomunikacija objedinjujući znanja i tehnologije.1

Radiokomunikacijski sustav je takav sustav u kome se poruka iz jedne točke u prostoru i vremenu prenosi do druge točke pomoću elektromagnetskih valova (EMV).

Svaki elektromagnetski sustav se sastoji od predajnika, prijenosnog medija i prijemnika. Kako bi bilo moguće ostvariti radioprijenos potrebni su: radiopredajnik (odašiljač) koji služi za stvaranje napona, odnosno struja visoke frekvencije; odašiljačka antena koja visoko frekvencijsku struju pretvara u elektromagnetski val; širenje elektromagnetskog vala kroz prostor; prijemna antena koja prima elektromagnetske valove i pretvara ih u visokofrekvencijske struje (vrlo slabe s obzirom na veliko prigušenje pri prostiranju elektromagnetskog vala); radioprijemnik koji te struje prima, pojačava i demodulira.

Slika 1: Elektromagnetski sustav

1 http://hr.wikipedia.org/wiki/Radiokomunikacije

Page 7: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

7

Radiopredajnik se sastoji od oscilatora, modulatora, pojačala snage i antenskog dijela. Oscilator je elektronički sklop koji stvara električne titraje tj. struju vrlo stabilne visoke frekvencije. Oscilator može biti realiziran pomoću titrajnog kruga (kondenzator, zavojnica i aktivni element), može biti kvarcni (piezoelektrički efekt – stabilna frekvencija) i moderniji pomoću sintezatora frekvencija (više frekvencija – kanala). Oscilator stvara titraje jednake frekvencije i konstantne amplitude. To znači da odašiljački signal ne sadrži korisnu informaciju sve dok se postupkom modulacije ona ne utisne u taj signal. Sklop koji to omogućava naziva s modulator. Njime je moguće djelovati na amplitudu, frekvenciju ili fazu signala koji stvara oscilator. Kod amplitudne modulacije mijenja se amplituda titraja dok je faza nepromjenjena, pri frekvencijskoj modulaciji se mijenja frekvencija dok amplituda ostaje nepromijenjena, što je slučaj i kod fazne modulacije gdje se mijenja faza dok amplituda ostaje nepromjenjena. Modulirani signal iz oscilatora obično je vrlo male snage i vrlo nepogodan za odašiljanje. Stoga u radiopredajniku postoji nekoliko stupnjeva za pojačanje snage. Izlazna snaga mora biti takva da omogući određeni domet radiosignala uz zadovoljavajuću kvalitetu na mjestu prijema. Ovako pojačani signal se preko posebnog antenskog kabela dovodi do antene. Antena je neka vrsta otvorenog titrajnog kruga koji se mora prilagoditi frekvenciji signala koji se odašilje. U tom slučaju antenom teče visokofrekvencijska struja, a u prostoru oko nje stvara se elekromagnetsko polje koje se u obliku elektromagnetskih valova širi u prostor brzinom svjetlosti. Budući da su struje koje prolaze antenom modulirane, isto vrijedi i za elektromagnetske valove.

Elektromagnetni valovi su drugi element u lancu radioprijenosa i koriste se kao val nosioc pomoću kojih se signal prenosi od predajnika do prijemnika, imaju veliku brzinu rasprostiranja i karakteristika rasprostiranja ovisi o frekvenciji vala.

Treći element u lancu radioprijenosa, nakon predajnika kao izvora signala i elektromagnetskih valova kao sredstva za prijenos, jest prijemna antena i radioprijemnik. Njegova je uloga da iz mnoštva elektromagnetskih valova različitih predajnika izdvoji upravo onaj koji nam je potreban. U anteni prijemnika događa se obrnuti proces od onoga u anteni predajnika. Ovdje elektromagnetski valovi, koje je emitirala predajna antena, induciraju napon koji ima istu frekvenciju i sadrži istu moduliranu informaciju kao i odašiljački signal. Taj napon ima vrlo malu amplitudu jer intenzitet elektromagnetskog vala pada s kvadratom udaljenosti između antena. U stupnjevima visokofrekvencijskog pojačanja taj napon se pojačava, a pomoću titrajnih krugova izdvaja se signal željenog odašiljača iz mnoštva signala ostalih radiopredajnika koji se po frekvenciji razlikuju od željenog. U sklopu demodulatora odvija se proces obrnut od precesa modulacije. Tu se iz moduliranog visokofrekvencijskog signala izdvaja polazna informacija. Taj signal, obično male amplitude, pojačava se u stupnjevima niskofrekvencijskog pojačanja i dobivamo izlazni signal.

Iz ovog osnovnog fizikalnog principa radioprijenosa razvijen je prijenos slike (televizija), stereofonski prijenos, prijenos digitalnih signala i mnogih danas prisutnih oblika prijenosa informacija pomoću radija.

Page 8: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

8

1.2. Frekvencijska podjela

Za potrebe radioveza koristi se samo jedan dio spektra elektromagnetskih valova koji nazivamo radio valovima. Radiovalovi su elektromagnetski valovi koji imaju frekvenciju manju od 3000 GHz (gigahertza), što odgovara valnoj dužini većoj od 0,1 mm. Donjom granicom radiospektra smatra se frekvencija od 10 kHz (kilohertza), odnosno valna dužina od 30 km. Uzimajući kao kriterij za podjelu frekvencijskog spektra pojave i svojstva prilikom širenja (prostiranja) radiovalova, predložena je podjela na devet područja. Ova podjela prikazana je na tabeli 1.

Simboli za pojedina frekvencijska područja nastali su kao kratice naziva na engleskom jeziku i prikazani su kao prva oznaka u stupcu „Simbol“. U istom stupcu u zagradama su navedene kratice za pojedina frekvencijska područja koje slijede iz našeg jezika a svoje izvorište imaju najčešće u vojnoj literaturi. Međutim, u svakodnevnom govoru često se područja nazivaju prema valnoj dužini pa se može čuti: dugi val, srednji val, kratki val i slično. Ovaj običaj potječe iz radiodifuzije (emitiranje radioprograma za veliki broj slušalaca).

Tabela 1: Frekvencijska podjela radiovalova

Razvoj radiokomunikacije uzrokom je široke primjene pojedinih frekvencijskih područja od strane mnogih službi kao što su radiodifuzija, radio-navigacija, pokretna pomorska, kopnena i zrakoplovna služba, fiksne službe, istraživanje svemira, meteorološka služba, satelitske komunikacije i mnoge druge. Kako ne bi bilo ometanja u radu pojedinih službi, potrebno je svakoj dodijeliti određene frekvencije ili frekvencijsko područje u kojem će služba ostvarivati svoju djelatnost.

Simbol Naziv Opseg frekvencija Valna dužinaVLF (VNF) vrlo niske frekvencije 3-30 kHz 100 - 10 km

LF (NF) niske frekvencije 30 - 300 kHz 10 - 1 kmMF (SF) srednje frekvencije 300 - 3000 kHz 100 - 100 mHF (VF) visoke frekvencije 3 - 30 MHz 100 - 10 m

VHF (VVF) vrlo visoke frekvencije 30 - 300 MHz 10 - 1 mUHF (UVF) ultra visoke frekvencije 300 - 3000 MHz 100 - 10 cmSHF (SVF) super visoke frekvencije 3 - 30 GHz 10 - 1 cmEHF (EVF) extra visoke frekvencije 30 - 300 Ghz 10 - 1 mm

decimilimetarski valovi 300 - 3000 Ghz 1 - 0,1 mm

Page 9: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

9

1.3. Radioupravljanje

Radio upravljanje je upotreba radijskih signala za daljinski nadzor uređaja.2 Sam pojam se najčešće odnosi na kontrolu modela vozila, plovila i letjelica putem ručnih radio odašiljača. Osim navedenog radio upravljanje se koristi u industriji, vojnoj tehnologiji i različitim znanstveno istraživačkim organizacijama.

Povijest radio upravljanja započinje 1898 god kada Nikola Tesla predstavlja brodić kojim upravlja koristeći govorne frekvencije. Kao što su i mnoge druge tehničke grane, tako i razvoj radio upravljanja pronalazi primjenu u ratnim djelovanjima kao što su daljinski upravljani tenkovi i različiti oblici upravljanja bespilotnim letjelicama i projektilima.

Razvojem tehnologije povećavale su se mogućnosti radio upravljanja. U početku su to bili veliki elektro mehanički sustavi upravljanja koji su komunikaciju ostvarivali putem jednog kanala. Pojavom elektroničkih komponenti smanjuju se dimenzije samih uređaja, smanjena je potrošnja energije pa samim tim i veličina baterija za napajanje, a primjenom različitih sustava modulacije signala povećava se broj komunikacijskih kanala.

U industriji je radio upravljanje pronašlo različite oblike primjene od upravljanja dizalicama do daljinskog upravljanja specijalnim strojevima koji rade u uvjetima koji su nepovoljni za čovjeka kao što su npr. strojevi za razminiravanje terena. Dosezi radio upravljanja mogu se predočiti specijalnim radio upravljanim vozilima za istraživanje Marsa od kojih je najnoviji Curiosity koji se na tom planetu nalazi od 6 kolovoza 2012 god.

2 http://en.wikipedia.org/wiki/;Radio_control

Page 10: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

10

2. UPRAVLJANJE NA 2,4 GHz

Prijašnji sustavi radio upravljanja (RC) su radili na frekvencijama od 27 MHz do 72 MHz i rade kao i svaki AM ili FM radio. Predajnik šalje signal određene frekvencije dok je prijemnik podešen upravo na tu frekvenciju, prihvaća ju i prosljeđuje na servo motore. Problem ovog sustava leži u činjenici da ovi RC sustavi osim što koriste relativno uzak pojas frekvencija, zahtjevaju i zauzimaju određenu frekvenciju za svoj rad tako da lako dolazi do interferencije s drugim uređajima koji rade u tom frekvencijskom području.

2,4 GHZ sustavi radio upravljanja podržavaju rad više uređaja koji naizgled koriste istu frekvenciju. To je omogućeno korištenjem različitih modulacijskih tehnika.

2.1. DSSS metoda

Raspršenje spektra direktnim slijedom (DSSS – Direct sequence spread spectrum) je modulacijska tehnika kod koje je frekvencijski spektar prenesenog signala širi nego frekvencijski spektar osnovnog signala.3

Princip rada je sljedeći: ulazni signal se množi neprekidnim nizom pseudo šumnih (eng. Pseudonoise - PN) kodnih simbola koji se nazivaju „chips“ od kojih svaki ima puno kraće trajanje nego informacijski bit što rezultira time da je svaki informacijski bit moduliran nizom puno bržih „chipova“. Stoga je širina „chipiranog“ signala puno veća od širine informacijskog signala što je prikazano na slici 2.

Slika 2:Proširivanje spektra signala

Izvor: B.Jeren i P.Pale: Sustavi za vođenje i praćenje procesa

(http://spvp.zesoi.fer.hr/predavanja%202008/WE_skripta.pdf)

3 http://en.wikipedia.org/wiki/Direct-sequence_spread_spectrum

Page 11: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

11

Nakon proširivanja signal se modulira nekom od standardnih modulacijskih tehnika i nakon toga je ulazni signal zapravo skriven u signalu nosiocu koji podsjeća na šum. Kada prijemnik primi modulirani signal, on se demodulira i na izlazu iz demodulatora takav prošireni signal množi se s lokalno generiranim pseudo slučajnim signalom (prijemnik ima lokalni oscilator) koreliranim s PN signalom korištenim kod odašiljača. Time se signal ''sužava'' i dobiva se originalni signal što je prikazano na slici 3.

Slika 3: DSSS modulacijska tehnika

Izvor: B.Jeren i P.Pale: Sustavi za vođenje i praćenje procesa (http://spvp.zesoi.fer.hr/predavanja%202008/WE_skripta.pdf)

Interferencija između uređaja koji rade na istom principu i na istoj frekvenciji je izbjegnuta jer svaki prijemnik iz mnoštva signala prepoznaje i koristi samo signal odgovarajućeg predajnika.

Prednosti ovog sustava moduliranja se očitavaju u mogućnosti dijeljenja istog kanala (slika 4.) između više korisnika i otpornosti prema namjernom ili nenamjernom ometanju.

Page 12: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

12

Slika 4: Dijeljenje kanala

Izvor: B.Jeren i P.Pale: Sustavi za vođenje i praćenje procesa (http://spvp.zesoi.fer.hr/predavanja%202008/WE_skripta.pdf)

Ovaj način modulacije se koristi u:

Ø satelitskim navigacijskim sustavima GLONASS (Rusija), Galileo (Europa) i GPS (SAD)

Ø CDMA mobilnim telefonima Ø bežičnim telefonima Ø automatskim očitavanjima brojila Ø ZigBee mrežama Ø RC modelima

2.2. FHSS metoda

Kod Frequency Hopping Spread Spectrum modulacijske tehnike definiraju se frekvencijski skokovi unutra spektra, gdje se pod skokovima misli na ekstremno brze promjene frekvencija na kojima se prenose podaci. Odašiljač šalje kratke nizove podataka na jednoj frekvenciji neko vrijeme, a potom se prebacuje na drugu frekvenciju (slika 5.). Odašiljač i prijemnik moraju biti sinkronizirani prema slijedu preskakivanja kako bi održali logički kanal, jer u suprotnom dolazi do gubitka podataka. Npr. kod IEEE 802.11b inačice standarda, frekvencije semijenjaju do 1600 puta u sekundi.

Page 13: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

13

Slika 5: FHSS modulacijska tehnika

Izvor: B.Jeren i P.Pale: Sustavi za vođenje i praćenje procesa (http://spvp.zesoi.fer.hr/predavanja%202008/WE_skripta.pdf)

Cijeli frekvencijski pojas na 2.4 GHz, (2.4 GHZ – 2.4835 GHZ) dijeli se na 79 neprekrivajućih podkanala pri čemu je širina svakog kanala 1MHz. Vremenski intervali za vrijeme kojih se u određenom kanalu nalazi podatak naziva se time slot i traje minimalno 625us. Ako se pojavi interferencija na jednoj frekvenciji, podaci se ponovo šalju prelaženjem na drugu frekvenciju. Stalnim mijenjanjem frekvencije FHSS sustav je otporan na preslušavanje, a postiže se i visoki stupanj sigurnosti prijenosa. Time se omogućava rad više različitih bežičnih mreža unutar istog područja, ali bez nepoželjnih međudjelovanja (slika 6).

Slika 6: FHSS modulacija – 2 korisnika

Izvor: B.Jeren i P.Pale: Sustavi za vođenje i praćenje procesa (http://spvp.zesoi.fer.hr/predavanja%202008/WE_skripta.pdf)

Page 14: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

14

Neke od prednosti FHSS tehnike su:

Ø Smanjene uskopojasne smetnje (engl. narowband interference) Ø Povećan kapacitet signala

FHSS omogućava brzine prijenosa do 1-2Mbps. Spread spectrum modulacijske tehnike:

Ø omogućuju da više korisnika istovremeno dijeli isti frekvencijski opseg bez međusobne interferencije

Ø koriste širi frekvencijski pojas za prijenos signala, ali i manje snage nego što to rade tradicionalne modulacijske tehnike

Ø trebaju manju potrebnu snagu za prijenos signala Ø pružaju otpornost na smetnje od drugih izvora Ø pružaju otpornost na višestazno prostiranje i iščezavanje signala4

4 B.Jeren i P.Pale: Sustavi za vođenje i praćenje procesa (http://spvp.zesoi.fer.hr/predavanja%202008/WE_skripta.pdf)

Page 15: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

15

3. PREGLED POSTOJEĆIH PROJEKATA KOJI KORISTE ARDUINO I NRF

U periodu pripreme za izradu ovog projekta dio vremena sam proveo tražeći projekte po internetu koji koriste Arduino i NRF modul za daljinsko upravljanje. Većina projekata koje sam pronašao uključivala je jednostavno prenošenje podataka s jedne platforme na drugu i mogu reći da sam bio poprilično razočaran rezultatima pretrage. Za to vrijeme kolega Mitja Vukelić je radio na zanimljivom projektu izrade prve animatroničke lutke u Hrvatskoj i taj projekt bih izdvojio kao poseban.

Citirao bih dio koji se odnosi na princip rada lutke:

„Tehnologiju okretanja očiju (mehaniku), elektronički sklop prijemnika i upravljački sklop servo motora koji pokreće usta i oči osmislio je i izradio Mitja Vukelić, inženjer telematike.

Predajnik prima signal mikrofona i "gljivice" (thumbstick), obrađuje ga i šalje predajniku putem bežične veze na 2.4 GHz. Lutka je "zijevalica" kojoj umjesto animatorove ruke pokretne dijelove (oči, usta) pomiču električni servo motori. Predajnik prikuplja informacije dobivene od dva senzora, mikrofona za usta i "gljivica" za oči. Obrađuje ih, slaže paket za slanje i prosljeđuje ga prijemniku u lutki. Prijemnik dobivene podatke obrađuje i pretvara u kut zakreta servo motora te ih šalje motorima kako bi promijenili položaj usta/očiju. "Mozak" prijemnika i predajnika je ATMEGA 328p mikrokontroler , bežična veza se ostvaruje putem Nordic NRF primopredajnika na 2.4 GHz , servo motori korišteni u lutki su SG-90, a mikrofonski modul i "gljivica" su noname proizvođaca. Lutku napaja 6 AA baterija, 4 za servo motore, 2 za mikrokontroler i primopredajnik, predajnik napajaju 2 AA baterije. Autonomija rada lutke je ~ 2 sata sa 4 punjive baterije 3000 mAh. Za programiranje mikrokontrolera je korišten Arduino IDE.“5

Više o ovom jedinstvenom projektu može se doznati na:

http://www.ri-teatar.hr/index.php/ri-teatar/predstave-za-djecu/148-luda-novcic

5 http://www.ri-teatar.hr/index.php/ri-teatar/predstave-za-djecu/148-luda-novcic

Page 16: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

16

4. OPIS PLANIRANOG RJEŠENJA

Planira se izgraditi daljinsko upravljanje za hovercraft koje će se sastojati od predajnika i prijemnika. Predajnik treba biti napravljen pomoću Arduino Due platforme, NRF modula i tri potenciometra , dok prijemnik treba biti realiziran pomoću Arduino Uno platforme i NRF modula. Upravljanje mora biti funkcionalno tj. treba omogućiti kontroliranje brzine vrtnje uzgonskog i pogonskog motora a samim tim i kontroliranje brzine kretanja hovercrafta te pravilno upravljanje istog.

5. TERMINSKI PLAN IZRADE PROJEKTA

Terminski plan izrade projekta je usklađen s datumima predaje pojedinih izvještaja

Do 28.10.2013.

Upoznavanje s projektnim zadatkom, prikupljanje potrebne literature i proučavanje iste, pronalaženje i proučavanje sličnih projekata.

Do 11.11.2013.

Testiranje hovercrafta i njegovog rada preko postojećeg sustava upravljanja, pripremanje teorijske podloge za projektnu dokumentaciju, uspostavljanje jednostavne komunikacije između kontrolera opremljenih NRF modulima.

Do 25.11.2013.

Spajanje kontrolera s pripadajućim komponentama.

Do 9.12.2013.

Programiranje kontrolera.

Do 23.12.2013.

Testiranje sustava i otklanjanje problema.

Do 13.01.2014.

Sređivanje projektne dokumentacije i priprema prezentacije

Page 17: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

17

6. OPIS HARDVERSKOG DIJELA SUSTAVA

7.1 Arduino

Arduino je elektronička prototipska platforma otvorenog koda bazirana na hardveru i softveru koji je jednostavan za korištenje. Arduino putem različitih senzora prima informacije od okoline, a na nju utječe npr kontroliranjem svjetala, upravljanjem različitim motorima i aktuatorima općenito. Softver potreban za rad s arduinom je besplatan i dostupan za Windows, Mac OS i Linux. U svojoj ponudi Arduino ima različite tipove pločica, shield-ova i pribora.

7.2. Arduino Uno

Arduino Uno je osnovni model iz ponude.

Slika 7: Arduino Uno

Page 18: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

18

Arduino Uno je mikrokontroler ploča bazirana na ATmega328 procesoru, ima 14 digitalnih ulazno/izlaznih priključnica (od kojih 6 može biti iskorišteno kao PWM - pulse with modulation – brzinom impulsa se kontrolira napon od 0-5V), 6 analognih ulaznih priključnica, 16 MHz kristalnog oscilatora, 2 stabilizatora napajanja – na 3.3V i 5V, USB priključnicu za komunikaciju sa računalom, reset tipkalo, priključnicu (jack) za napajanje (moguće je koristiti vanjsko napajanje od 5V do 12V), ulaznu priključnicu za napajanje (na ploči) i izlazne priključnice za napajanje senzora i prekidača (tipkala, sklopki, preklopki).

Kontroler je open-source i kao takav ima veliku zajednicu korisnika pa je vrlo lagano doći do potrebnih informacija. Programski jezik kojim se programira Arduino je C-oidan – jako je sličan C programskom jeziku i izuzetno je jednostavan. Sve programiranje i kompajliranje za Arduina se vrši u Arduino softveru koji je izuzetno intuitivan i jednostavan za korištenje.

Napajanje

Arduino Uno se može napajati putem USB veze ili preko vanjskog napajanja pri čemu se vrsta napajanja automatski odabire.

Vanjsko napajanje može biti putem AC/DC adaptera ili baterijsko. Na arduinu se nalazi odgovarajući konektor za vanjsko napajanje putem adaptera, dok se baterijsko napajanje priključuje između Gnd i Vin pinova konektora za napajanje (power pins). Preporučeni raspon napajanja je 7-12V.

Pinovi za napajanje:

- VIN –Ulazni napon na ploču ukoliko se koristi vanjski izvor napajanja - 5V – Izlazni napon od 5V - 3,3V – Izlazni napon od 3,3V - GND – Uzemljenje - IOREF – Ovaj pin na ploči osigurava referentni napon s kojim mikrokontroler radi.

Ispravno konfiguriran shield je u mogućnosti pročitati napon na IOREF pinu i odabrati odgovarajući izvor napajanja.

Memorija

ATmega328 procesor ima 32KB memorije. Također i 2 KB SRAM-a i 1KB EEPROM-a

Ulazi i izlazi

Svaki od 14 digitalnih pinova na ploči se može koristiti kao ulaz ili izlaz koristeći pinMode ( ) , digitalWrite ( ) , i digitalRead ( ) funkcije . One djeluju na 5 volti . Svaki pin može pružiti ili primiti maksimalno 40 mA i ima interni pull - up otpornik od 20-50 kiloohma.

Neki pinovi imaju specijalizirane funkcije :

Page 19: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

19

Serijski : 0 ( RX ) i 1 ( TX ) . Koristi se za primanje (Rx) i prijenos (TX) TTL serijskih podataka .

Vanjski prekidi : 2 i 3 . Ovi pinovi mogu biti konfigurirani kao okidači na niske vrijednosti , rastući ili padajući brid ili promjenu vrijednosti .

PWM : 3 , 5 , 6 , 9 , 10 , i 11 . Osiguravaju 8 - bitni PWM izlaz s analogWrite ( ) funkcijom .

SPI : 10 ( SS ) , 11 ( Mosi ) , 12 ( MISO ) , 13 ( SCK ) . Ovi pinovi podržavaju SPI komunikaciju pomoću SPI knjižnice .

LED : 13 .Ugrađeni LED spojen na digitalni pin 13 . Ukoliko je na pinu HIGH vrijednost LED svijetli, a ukoliko je LOW vrijednost onda je ugašena. Uno ima 6 analognih ulaza s oznakom A0 do A5. Po defaultu se mjeri od uzemljenja do 5V , iako je moguće promijeniti gornji kraj njihovog raspona korištenjem Aref pina i analogReference () funkcije .

Osim toga , neki pinovi imaju specijalizirane funkcije : TWI : A4 ili SDA pin i A5 ili SCL pin . Podržavaju TWI komunikaciju pomoću Wire knjižnice . Postoji i nekoliko drugih pinova na ploči :

Aref . Referentni napon za analognim ulazima . Koristi se s analogReference ( )funkcijom .

Reset . Dovodi LOW vrijednost na ovu liniju kako bi se resetirao mikrokontroler.

7.3. NRF modul

NRF moduli korišteni u izradi ovog projekta su nRF24L01 primopredajnici koji rade na 2,4 GHz.

Slika 8 NRF modul

Page 20: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

20

Osnovne karakeristike:

Radio

Ø Rad na ISM band-u na 2.4GHz Ø Jednostavni GFSK čip predajnik Ø 126 RF kanala Ø Kratko vrijeme (skoka) frekvencije Ø Zajednički TX i RX pinovi Ø GFSK modulacija Ø Transfer podataka 1÷2 Mbit/s Ø 1MHz ne preklapajuća širina kanala na 1Mbps Ø 2MHz ne preklapajuća širina kanala na 2Mbps

Predajnik

Ø Programabilna izlazna snaga: 0, -6, -12 ili -18dBm Ø 11.3mA potrošnje pri 0dBm izlazne snage Ø 900nA u Power Downmodu Ø 22uA u Standby I modu

Prijemnik

Ø Integrirani filtri kanala Ø 12.3mA potrošnje pri 2Mbps Ø 82dBm osjetljivosti pri 2Mbps Ø 85dBm osjetljivosti pri 1Mbps Ø Programabilni LNA gain

RF sintetizator

Ø Potpuno integrirani sintetizator Ø Ne koristi vanjski filtar, VCO ili rezonator Ø Koristi +/- 60ppm kristal niske cijene

Enhanced Shock Burs™

Ø 1÷32 bajtova dinamičke širine korisnog podataka (payload) Ø Automatsko prihvaćanje paketa Ø Automatska transakcija prihvaćanja paketa Ø Komunikacija sa šest različitih komunikacijskih kanala (data pipes)

Page 21: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

21

Napajanje i potrošnja:

Ø Integrirani naponski regulator Ø Opseg napona napajanja od 1.9V do 3.6V Ø Idle modovi sa brzim startom Ø 1.5ms - maksimalno vrijeme za start iz Power Downmoda Ø 130us - maksimalno vreme za start iz Standby moda

Primjena:

Ø Bežične PC periferije (bežicni miš, tastatura) Ø Ultra nisko potrošačke senzorske mreže Ø VoIP slušalice Ø Aktivni RFID (RF IDentification) Ø Bežicna komunikacija podataka Ø RF udaljena kontrola za potrošačke elektronike Ø Alarmi i sigurnosni sistemi Ø Hobi automatizacija Ø Telemetrija Ø Automobilske aplikacije Ø Inteligentna sportska oprema Ø Industrijski senzori

nRF24L01 kao jedinstveni čip je radio primopredajnik koji radi na ISM frekvencijskom opsegu od 2.4÷2.5GHz. Predajnik sadrži potpuno integrirani frekvencijski alat za sintezu, pojačalo, kristalni oscillator, demodulator, modulator i Enhanced Shock Burst protokol. Izlazna snaga, frekvencijski kanali i protokol su lako podešavaju otvorenim SPI sučeljem. Trenutna potrošnja struje predajnika je veoma mala, svega 9mA pri izlaznoj snazi od -6dBm i 12.3mA u RX modu.

Slika 9: Blok shema nRF24L01 primopredajnika

Page 22: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

22

7. IZRADA PRAKTIČNOG DIJELA PROJEKTA

Izrada praktičnog dijela projekta tekla je u fazama koje će biti opisane u nastavku.

7.1. Uspostavljanje komunikacije

Uspostavljanje komunikacije putem NRF-a između Arduino uno i Arduino due kontrolera nije proteklo bez problema. Arduino IDE 1.0.5. u padajućem izborniku ne prikazuje Arduino due platformu kao opciju odabira. (Slika 10.)

Slika 10: Printscreen 1

Sa službenih stranica arduina je preuzet IDE 1.5.5. (koji je u beta verziji) i koji podržava rad due platforme što se vidjelo po pojavljivanju due platforme u padajućem izborniku. Međutim, nakon spajanja NRF-a na due platformu i neuspjelog pokušaja rada ustanovilo se da due platforma ne prepoznaje NRF biblioteku što je dovelo do promjena u samom projektu na način da će i predajnik i prijemnik biti realizirani pomoću uno platforme.

Page 23: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

23

7.2. Arduino i motori s ESC-om

Prihvaćajući sugestiju mentora, kao slijedeći korak izrade projekta autor je odabrao provjeru mogućnosti upravljanja motorima sa elektronskom kontrolom brzine putem uno platforme.

Na hovercraftu se nalaze dva motora (jedan za uzgon i jedan za pogon) koji posjeduju elektronsku kontrolu brzine (electronic speed control – ESC).

Slika 11: ESC korišten pri izradi hovercrafta

Prije nastavka rada na svakom od ESC-a su spojeni signalni vodovi na BEC konektorima koji su bili u prekidu. BEC je kratica od battery ellimination circuit – krug eliminacije baterije. BEC napaja servo motore i prijemnik na uređaju, te posjeduje osjetnik napunjenosti baterije. U mogućnosti je u trenutku kritične potrošenosti baterije preusmjeriti dio energije sa pogonskog motora na servo motore i time omogućiti npr. sigurno slijetanje ukoliko se radi o letjelici.

Posebna pažnja se mora posvetiti izvedbi napajanja ESC-a i njegovoj kalibraciji jer su to nužni preduvjeti za njegov rad. ESC za svoj rad koristi Li-Po (Lithium Polymer) bateriju od 11.1 V

Slika 12: Baterijsko napajanje hovercrafta

Page 24: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

24

Arduino je s ESC-om spojen kako je prikazano na slici:

Slika 13: Spajanje Arduina i ESC-a

Spajanje Arduina i ESC-a

ESC je jednim krajem spojen na bateriju a drugom na motor. Napon sa BEC konektora je doveden na Arduino pinove 5V i GND te na potenciometar. Očitani napon s potenciometra se dovodi na analogni ulaz 0. Signal s Arduino PWM pina 9 se spaja na signalni vod BEC konektora i predstavlja ulazni signal ESC-a.

Arduino kod

ESC za svoj rad inače prima ulazne podatke preko RC predajnika, što u biti znači da se ponaša kao servo. Kako bi se taj rad kontrolirao preko Arduina potrebno je uključiti Servo biblioteku.

Slijedeći kod je modificirani kod preuzet s Arduino službenih stranica i koji služi za kontroliranje pozicije servo motora upotrebom potenciometra.

#include <Servo.h> //uključivanje Servo biblioteke

Servo uzg; //stvaranje objekta uzg za upravljanje uzgonom (servo motorom ili ESC-om)

int uzgonPin = 0; // analogni pin na koji je spojen izlaz s potenciometra

int uzgon; //varijabla za čitanje vrijednosti s analognog pina

void setup()

{

uzg.attach(9); //pridodavanje uzg varijable pinu 9

}

void loop()

Page 25: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

25

{

uzgon = analogRead(uzgonPin); // čitanje vrijednosti potenciometra (vrijednost između 0 i 1023)

uzgon = map(uzgon, 0, 1023, 0, 179); // mapiranje očitanih vrijednosti s potenciometra u odgovarajuće vrijednosti u stupnjevima

uzg.write(uzgon); //postavljanje serva u skladu s očitanom vrijednosti

}

Ovaj kod preuzima očitanu vrijednost s potenciometra, očitanu vrijednost pretvara u odgovarajući položaj u stupnjevima i tu vrijednost šalje ESC-u putem servo biblioteke.

Kalibriranje ESC-a

Nakon učitavanja koda, potrebno je kalibrirati ESC kako bi on ispravno radio. Kalibriranje ESC-a je važno jer on inicijalno ne zna koje su granice predajnika pa prema tome niti ne može precizno postaviti brzinu vrtnje motora. Kalibriranje brzine vrtnje se vrši na slijedeći način:

1. Napajanje je isključeno 2. Potenciometar se postavi u maksimalni položaj 3. Uključi se napajanje 4. Odgovarajući zvučni signal dojavljuje da je maksimalna vrijednost očitana 5. Nakon toga se potenciometar postavlja u minimalni (nulti) položaj 6. Odgovarajući zvučni signal dojavljuje da je minimalna vrijednost očitana

Potrebno je napomenuti da položaj potenciometra u trenutku uključivanja napajanja određuje način rada ESC-a. Ukoliko je potenciometar u maksimalnom položaju tada je aktiviran programabilni način rada, a ukoliko je potenciometar u minimalnom položaju tada je ESC u normalnom radnom režimu.

Pored opisane kalibracije brzine vrtnje moguće je na sličan način postaviti i mnoge druge parametre.

Slijedeći korak je bio spajanje na svaki ESC pojedinačno, kalibriranje brzine vrtnje i puštanja u rad. Oba ESC-a upravljana putem Arduina su savršeno dobro radila.

Nakon toga se pristupilo spajanju sva tri potenciometra kako bi se istovremeno dobio uzgon, pogon i upravljanje.

Napajanje je na protoboard dovedeno s BEC konektora ESC-a uzgonskog motora od kud je razvedeno na potenciometre, upravljački servo motor te 5V i GND pinove Arduina.

Signal s potenciometra za uzgon (prvi s vrha) je doveden na analogni pin 0. Sa PWM pina 9 se taj signal vodi na signalni pin BEC konektora ESC-a uzgonskog motora.

Signal s potenciometra za pogon (srednji) je doveden na analogni pin 2. Sa PWM pina 6 se taj signal vodi na signalni pin BEC konektora ESC-a pogonskog motora.

Page 26: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

26

Signal s potenciometra za upravljanje (zadnji) je doveden na analogni pin 4. Sa PWM pina 3 se taj signal vodi na signalni pin konektora servo motora upravljanja.

Slijedeća slika prikazuje sklop za upravljanje na samom hovercraftu.

Slika 14: Sklop za upravljanje na hovercraftu

Testiranje je pokazalo da oba motora (pogonski i uzgonski) s ESC-om kao i servo motor upravljačkog mehanizma savršeno dobro rade ukoliko su upravljana preko Arduina.

Rezultati testiranja se mogu vidjeti na:

http://www.youtube.com/channel/UCN-dyUCZRVkaqYUl-VCgi2A

7.3. Spajanje Arduina na predajnoj strani

Ulazi na predajni Arduino (pogonski, uzgonski i upravljački potenciometar) su spojeni kako je prikazano u prethodnom odjeljku.

Spajanje NRF modula na Arduino se obavlja na način prikazan u slijedećoj tablici:

Page 27: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

27

Tabela 2: Spajanje NRF-a i Arduina

Slika 15: Shema spajanja Arduina na predajnoj strani

Napajanje upravljačkog modula je izvedeno pomoću baterije od 9V.

Page 28: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

28

7.4. Spajanje Arduina na prijemnoj strani

Slika 16: Shema spajanja Arduina na prijemnoj strani

U ovoj shemi je prikazano spajanje NRF modula, arduina i te pogonskog i uzgonskog motora i serva na hovercraftu. Modelom serva su prikazani BEC konektori uzgonskog i pogonskog motora. Napajanje je izvedeno pomoću LiPo baterije od 2200mAh i 11.1V i dovedeno na uzgonski i pogonski motor. Napon se preko BEC konektora uzgonskog motora dovodi na arduino i servo upravljanja.

Page 29: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

29

8. OPIS PROGRAMA I ISPIS KODA

8.1. Predajnik

Kod korišten za izradu predajnika je modificirani kod koji se nalazi u Arduino IDE primjerima pod nazivom nRF24_sendto_hub.

// uključivanje potrebnih biblioteka

#include <SPI.h>

#include "nRF24L01.h"

#include "RF24.h"

#include "printf.h"

#define RF_SETUP 0x17

//definiranje funkcija i dodjeljivanje ulaznih analognih pinova

#define uzgon

#define pogon A2

#define uprav A4

// Set up nRF24L01 radio on SPI pin for CE, CSN

RF24 radio(9,10);

const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0x7365727631LL }; //definiranje prijenosnog kanala

char receivePayload[32];

uint8_t counter=0;

void setup(void)

{

Serial.begin(57600);

printf_begin();

printf("Sending nodeID & 4 sensor data\n\r");

radio.begin();

Page 30: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

30

// Enable this seems to work better

radio.enableDynamicPayloads();

radio.setDataRate(RF24_1MBPS);

radio.setPALevel(RF24_PA_MAX);

radio.setChannel(76);

radio.setRetries(15,15);

radio.openWritingPipe(pipes[0]);

radio.openReadingPipe(1,pipes[1]);

radio.printDetails();

delay(1000);

}

void loop(void)

{

int Data1,Data2,Data3,Data4 = 0;

char temp[5];

bool timeout=0;

// Get the last two Bytes as node-id

uint16_t nodeID = pipes[0] & 0xff;

// Use the last 2 pipes address as nodeID

// sprintf(nodeID,"%X",pipes[0]);

char outBuffer[32]=""; // Clear the outBuffer before every loop

unsigned long send_time, rtt = 0;

// Očitavanja vrijednosti sa senzora

Data1 = counter++;

Data2 = analogRead(uzgon);

Data3 = analogRead(pogon);

Data4 = analogRead(uprav);

Page 31: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

31

if ( counter > 999 ) counter = 0;

// Append the hex nodeID to the beginning of the payload

sprintf(outBuffer,"%2X",nodeID);

strcat(outBuffer,",");

// Convert int to strings and append with zeros if number smaller than 3 digits

// 000 to 999

sprintf(temp,"%03d",Data1);

strcat(outBuffer,temp);

strcat(outBuffer,",");

sprintf(temp,"%04d",Data2);

strcat(outBuffer,temp);

strcat(outBuffer,",");

sprintf(temp,"%04d",Data3);

strcat(outBuffer,temp);

strcat(outBuffer,",");

sprintf(temp,"%04d",Data4);

strcat(outBuffer,temp);

printf("outBuffer: %s len: %d\n\r",outBuffer, strlen(outBuffer)); // ispis stanja međuspremnjika

send_time = millis();

// Stop listening and write to radio

Page 32: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

32

radio.stopListening();

// Send to hub

if ( radio.write( outBuffer, strlen(outBuffer)) ) {

printf("Send successful\n\r");

}

else {

printf("Send failed\n\r");

}

radio.startListening();

delay(20);

while ( radio.available() && !timeout ) {

uint8_t len = radio.getDynamicPayloadSize();

radio.read( receivePayload, len);

receivePayload[len] = 0;

printf("inBuffer: %s\n\r",receivePayload);

// delay(1000);

//lcd.setCursor(2,1);

//lcd.print(receivePayload);

// Compare receive payload with outBuffer

if ( ! strcmp(outBuffer, receivePayload) )

{

rtt = millis() - send_time

printf("inBuffer --> rtt: %i \n\r",rtt);

}

// Check for timeout and exit the while loop

Page 33: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

33

if ( millis() - send_time > radio.getMaxTimeout() ) {

Serial.println("Timeout!!!");

timeout = 1;

}

delay(10);

} // End while */

delay(250)

}

Program očitava vrijednosti potenciometara, pretvara ih u stringove određene dužine i kao pakete šalje prethodno definiranim prijenosnim kanalom.

8.2. Prijemnik

Kod korišten za izradu predajnika je modificirani kod koji se nalazi u Arduino IDE primjerima pod nazivom nRF24_Arduino_as_hub.

#include <SPI.h>

#include "nRF24L01.h"

#include "RF24.h"

#include "printf.h"

#include <Servo.h>

RF24 radio(9,10);

Servo uzg;

Servo pog;

Servo upr;

String identifikator = "E1";

int uzgon;

int pogon;

int uprav;

Page 34: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

34

// Radio pipe addresses for the 2 nodes to communicate.

//const uint64_t pipes[6] = { 0xF0F0F0F0D2LL, 0xF0F0F0F0E1LL, 0xF0F0F0F0E2LL, 0xF0F0F0F0E3LL, 0xF0F0F0F0E4LL, 0xF0F0F0F0E5LL };

// bytes serv1 = 0x7365727631 in hex

const uint64_t pipes[6] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0E1LL, 0xF0F0F0F0E2LL, 0xF0F0F0F0E3LL, 0xF0F0F0F0E4LL, 0xF0F0F0F0E5LL };

int data=1;

int i = 0;

void setup(void)

{

uzg.attach(6);

pog.attach(5);

upr.attach(3);

Serial.begin(57600);

printf_begin();

radio.begin();

radio.setDataRate(RF24_1MBPS);

radio.setPALevel(RF24_PA_MAX);

radio.setChannel(76);

radio.enableDynamicPayloads();

radio.setRetries(15,15);

radio.setCRCLength(RF24_CRC_16);

radio.openWritingPipe(pipes[0]);

radio.openReadingPipe(1,pipes[1]);

//radio.openReadingPipe(2,pipes[2]);

//radio.openReadingPipe(3,pipes[3]);

//radio.openReadingPipe(4,pipes[4]);

//radio.openReadingPipe(5,pipes[5]);

radio.startListening();

Page 35: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

35

radio.printDetails();

delay(1000);

}

void loop(void)

{

char receivePayload[31];

String data1="";

String data2="";

String data3="";

String data4="";

String data5="";

data = 1;

uint8_t len = 0;

uint8_t pipe = 0;

// Loop thru the pipes 0 to 5 and check for payloads

if ( radio.available(&pipe ) )

{

bool done = false;

while (!done)

{

len = radio.getDynamicPayloadSize();

done = radio.read( &receivePayload,len );

Serial.println(len);

delay(1000);

// Sending back reply to sender using the same pipe

radio.stopListening();

// radio.openWritingPipe(pipes[pipe]);

radio.write(receivePayload,len);

// Format string for printing ending with 0

receivePayload[len] = 0;

//printf("Got payload: %s len:%i pipe:%i\n\r",receivePayload,len,pipe);

Page 36: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

36

// delay(1000);

for ( i = 0 ; i< len-1 ; i++ ){

if(receivePayload[i] != 44 ){

switch (data) {

case 1:

data1 += receivePayload[i];

break;

case 2:

data2 += receivePayload[i];

break;

case 3:

data3 += receivePayload[i];

break;

case 4:

data4 += receivePayload[i];

break;

case 5:

data5 += receivePayload[i];

break;

}

radio.startListening();

}

else {

receivePayload[i];

data ++;

Serial.println("nema prijemnog signala");

}

// Serial.println(data2.toInt());

}

Page 37: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

37

if (data1 == identifikator) {

uzgon = map(data3.toInt(), 0, 1023, 0, 179);

uzg.write(uzgon);

pogon = map(data4.toInt(), 0, 1023, 0, 179);

pog.write(pogon);

uprav = map(data5.toInt(), 0, 1023, 0, 179);

upr.write(uprav);

Serial.print("Uzgon : ");

Serial.println(data3);

Serial.print("Pogon : ");

Serial.println(data4);

Serial.print("Upravljanje : ");

Serial.println(data5);

}

// Increase pipe and reset to 0 if more than 5

pipe++;

if ( pipe > 5 ) pipe = 0;

}

}

delay(20);

}

Program osluškuje promet na postavljenom prijenosnom kanalu, čita pakete i rastavlja ih na pojedinačne informacije. Ukoliko primi paket s određenim identifikatorom na početku primljene i raspakirane pojedinačne vrijednosti (koje predstavljaju očitanja potenciometara na predajnoj strani) koristi za mapiranje tj. prevođenje njihove brojčane vrijednosti u vrijednosti u stupnjevima i kao takve ih šalje na točno određene pinove.

Page 38: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

38

9. OPIS RADA CIJELOG SUSTAVA

Sustav se sastoji od dvije međusobno odvojene jedinice koje čine funkcionalnu cjelinu, a to su predajnik i prijemnik. Predajnik se sastoji od tri potenciometra koji se koriste za regulaciju brzine vrtnje uzgonskog i pogonskog motora te za upravljanje kormilom hovercrafta. Prijemnik se nalazi na hovercraftu i priključen je na BEC konektore uzgonskog i pogonskog motora i servo upravljanja. Princip rada je slijedeći: nakon priključivanja napajanja na predajniku i hovercraftu zakreću se potenciometri. Signali s potenciometara se očitavaju, pakiraju u oblik pogodan za slanje i preko predajnog NRF modula šalju prijemniku preko uspostavljenog komunikacijskog kanala. Paketi očitanih i poslanih signala preko NRF prijemnog modula se prepoznaju kao korisne informacije te se raspakiravaju. Svaki pojedinačni signal predstavlja vrijednost analognu zakretu potenciometra na predajniku. Vrijednost signala se tada se mapira iz brojčane vrijednosti u analognu vrijednost u stupnjevima i šalje na točno određeni motor ili servo gdje se pretvara u brzinu vrtnje motora ili u odgovarajući kut zakreta upravljača. Na taj način se ostvaruje funkcionalno upravljanje hovercrafta.

10. ANALIZA RADA

Tijekom realizacije ovog projekta pojavile su se nepredviđene okolnosti koje su onemogućile da projekt bude u skladu s terminskim planom. Na samom početku rada se desio kvar računala koji je praktički onemogućio bilo kakav rad na projektu. Period do njegovog popravka je iskorišten za upoznavanje s hovercraftom i njegovim dosadašnjim sustavom upravljanja.

Nakon popravka računala i početka rada na projektu ustanovljeno je da se predajnik ne može realizirati putem Due platforme jer nRF24 biblioteka nije kompatibilna s njom te je donešena odluka da se i predajnik realizira pomoću Uno platforme.

Provjeravanje mogućnosti upravljanja motorima i upravljačkim sklopom direktno putem Arduina je proteklo bez ikakvih poteškoća i nepredviđenih situacija, dok je za uspostavljanje komunikacije pomoću NRF-ova potrošeno više vremena nego što je planirano zbog prekida u vodu između NRF-a i Arduina.

Sve navedeno rezultiralo je s velikom količinom vremena koje je potrošeno na otkrivanje i otklanjanje kvarova tako da projekt nije do kraja realiziran zbog nedostatka vremena. Potrebno je još omogućiti pokretanje motora pomoću signala koji su došli s predajnika što će se ,vjerujem, riješiti do termina prezentacija.

Page 39: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

39

11. TROŠKOVNIK

Tabela 3: Troškovnik

Naziv Cijena(kn) Kom Total(kn) Izvor Arduino Uno 100 2 200 eBay

NRF240L01 modul 15 2 30 eBay M/Ž kratkospojni kabel set 40 kom 50 1 50 eBay

Potenciometar 1KOhm 9 2 18 eBay Pločica pertinax 25 1 25 Chipoteka

Strip M 40-polni ravni 2,5 1 2,5 Chipoteka Strip Ž 2X40 polni 6,88 1 6,88 Chipoteka

Kutija plastična 111x91x48 23 2 46 Chipoteka Total 378,38

U tablici 3 je prikazan okvirni troškovnik za izradu ovog sustava upravljanja.

Page 40: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

40

12. ZAKLJUČAK

U ovom radu se još jednom potvrdila multifuncionalnost Arduino Uno platforme koja je iskorištena za izradu i predajnika i prijemnika u sustavu daljinskog radioupravljanja hovercraftom. Bežični prijenos podataka realiziran je pomoću nRF24L01 primopredajnih modula.

Sam projekt nije do kraja dovršen jer je relativno velik dio vremena potrošen na otklanjanje kvarova koji su se pojavili već na početku izrade samog projekta. Unatoč činjenici da projekt u cijelosti nije dovršen ne može se reći da nije uspješan jer su se u dijelovima projekta kao što je pokretanje motora s ESC –om preko Arduina i uspostavljanja bežične komunikacije između predajnika i prijemnika koji su uspješno riješeni, stekla nova znanja i vještine. Isto tako može se reći da je i rješavanje kvarova i nepredviđenih situacija sastavni dio stjecanja novih znanja.

Page 41: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

41

13. LITERATURA

1. Arduino –home page ( http://www.arduino.cc/) 2. Fritzing (http://fritzing.org) 3. Wikipedia (http://hr.wikipedia.org/wiki/Radiokomunikacije) 4. B.Jeren i P.Pale: Sustavi za vođenje i praćenje procesa

(http://spvp.zesoi.fer.hr/predavanja%202008/WE_skripta.pdf) 5. nRF(https://www.sparkfun.com/datasheets/Wireless/Nordic/nRF24L01P_Product_Spe

cification_1_0.pdf) 6. http://www.ri-teatar.hr/index.php/ri-teatar/predstave-za-djecu/148-luda-novcic 7. http://dronesandrovs.wordpress.com/2012/11/24/how-to-control-a-brushless-motor-

esc-with-arduino/

Page 42: Upravljanje_hovercraft_vozilom_pomocu_arduina.pdf

42

14. POPIS SLIKA

Slika 1: Elektromagnetski sustav ............................................................................................6 Slika 2:Proširivanje spektra signala ...................................................................................... 10 Slika 3: DSSS modulacijska tehnika ..................................................................................... 11 Slika 4: Dijeljenje kanala ...................................................................................................... 12 Slika 5: FHSS modulacijska tehnika ..................................................................................... 13 Slika 6: FHSS modulacija – 2 korisnika ................................................................................ 13 Slika 7: Arduino Uno ............................................................................................................ 17 Slika 8 NRF modul ............................................................................................................... 19 Slika 9: Blok shema nRF24L01 primopredajnika .................................................................. 21 Slika 10: Printscreen 1 .......................................................................................................... 22 Slika 11: ESC korišten pri izradi hovercrafta ........................................................................ 23 Slika 12: Baterijsko napajanje hovercrafta ............................................................................ 23 Slika 13: Spajanje Arduina i ESC-a ...................................................................................... 24 Slika 14: Sklop za upravljanje na hovercraftu ....................................................................... 26 Slika 15: Shema spajanja Arduina na predajnoj strani ........................................................... 27 Slika 16: Shema spajanja Arduina na prijemnoj strani........................................................... 28

15. POPIS TABLICA

Tabela 1: Frekvencijska podjela radiovalova...........................................................................8 Tabela 2: Spajanje NRF-a i Arduina ..................................................................................... 27 Tabela 3: Troškovnik ............................................................................................................ 39