Académique Documents
Professionnel Documents
Culture Documents
Zoran Luki
Rijeka, 2014
VELEUILITE U RIJECI
Struni studij Telematika
Kolegij:
Projekt u telematici
Mentor:
Student:
SAETAK
U ovom projektnom radu je opisana mogunost izrade sustava daljinskog radio upravljanja
pomou dviju Arduino Uno platformi i NRF modula. Sustavi radio upravljanja posebno su
omiljeni meu RC hobistima gdje se koriste za upravljanje razliitih modela vozila, plovila i
letjelica. U praktinom dijelu projekta nije do kraja realizirano funkcionalno upravljanje
hovercraftom ali je pokazana mogunost upravljanja ESC i servo motorima pomou Arduino
platforme kao i prijenos podataka izmeu dviju Uno platformi koritenjem NRF modula.
Programski kod ovog projekta je napisan u originalnom ardunovom programskom jeziku koji
je po svojoj strukturi vrlo slian C-u. Programski kod je baziran na primjeru iz nRF24
biblioteke koja je upravo namijenjena radijskom daljinskom prijenosu podataka.
SADRAJ
1.
1.
Radiokomunikacije ...................................................................................................6
1.2.
1.3.
Radioupravljanje ......................................................................................................9
2.
2.2.
3.
4.
5.
6.
7.
7.2.
7.3.
7.4.
8.
Predajnik ................................................................................................................ 29
8.2.
Prijemnik ................................................................................................................ 33
9.
10.
11.
TROKOVNIK ......................................................................................................... 39
12.
ZAKLJUAK............................................................................................................ 40
13.
LITERATURA .......................................................................................................... 41
14.
15.
1. PROJEKTNI ZADATAK
Cilj projekta je izraditi funkcionalno daljinsko upravljanje hovercrafta koristei dva Arduino
mikrokontrolera. Jedan kontroler (Arduino Due) koristi se kao daljinski upravlja i opremljen
je NRF modulom za beinu 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 trei potenciometar za uzgonski
motor. Drugi kontroler (Arduino Uno) spojen je na upravljake module za pogonski i
uzgonski motor te na servo motor za zakret kormila. Takoer je opremljen NRF modulom
kako bi mogao primati naredbe od Arduino Due kontrolera.
Radiokomunikacije
http://hr.wikipedia.org/wiki/Radiokomunikacije
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 duini veoj od 0,1 mm. Donjom
granicom radiospektra smatra se frekvencija od 10 kHz (kilohertza), odnosno valna duina od
30 km. Uzimajui kao kriterij za podjelu frekvencijskog spektra pojave i svojstva prilikom
irenja (prostiranja) radiovalova, predloena je podjela na devet podruja. Ova podjela
prikazana je na tabeli 1.
Simboli za pojedina frekvencijska podruja 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 podruja koje slijede iz naeg jezika a svoje izvorite imaju
najee u vojnoj literaturi. Meutim, u svakodnevnom govoru esto se podruja nazivaju
prema valnoj duini pa se moe uti: dugi val, srednji val, kratki val i slino. Ovaj obiaj
potjee iz radiodifuzije (emitiranje radioprograma za veliki broj slualaca).
Tabela 1: Frekvencijska podjela radiovalova
Simbol
VLF (VNF)
LF (NF)
MF (SF)
HF (VF)
VHF (VVF)
UHF (UVF)
SHF (SVF)
EHF (EVF)
Naziv
vrlo niske frekvencije
niske frekvencije
srednje frekvencije
visoke frekvencije
vrlo visoke frekvencije
ultra visoke frekvencije
super visoke frekvencije
extra visoke frekvencije
decimilimetarski valovi
Opseg frekvencija
3-30 kHz
30 - 300 kHz
300 - 3000 kHz
3 - 30 MHz
30 - 300 MHz
300 - 3000 MHz
3 - 30 GHz
30 - 300 Ghz
300 - 3000 Ghz
Valna duina
100 - 10 km
10 - 1 km
100 - 100 m
100 - 10 m
10 - 1 m
100 - 10 cm
10 - 1 cm
10 - 1 mm
1 - 0,1 mm
1.3.
Radioupravljanje
Radio upravljanje je upotreba radijskih signala za daljinski nadzor ureaja.2 Sam pojam se
najee odnosi na kontrolu modela vozila, plovila i letjelica putem runih radio odailjaa.
Osim navedenog radio upravljanje se koristi u industriji, vojnoj tehnologiji i razliitim
znanstveno istraivakim organizacijama.
Povijest radio upravljanja zapoinje 1898 god kada Nikola Tesla predstavlja brodi kojim
upravlja koristei govorne frekvencije. Kao to su i mnoge druge tehnike grane, tako i razvoj
radio upravljanja pronalazi primjenu u ratnim djelovanjima kao to su daljinski upravljani
tenkovi i razliiti oblici upravljanja bespilotnim letjelicama i projektilima.
Razvojem tehnologije poveavale su se mogunosti radio upravljanja. U poetku su to bili
veliki elektro mehaniki sustavi upravljanja koji su komunikaciju ostvarivali putem jednog
kanala. Pojavom elektronikih komponenti smanjuju se dimenzije samih ureaja, smanjena je
potronja energije pa samim tim i veliina baterija za napajanje, a primjenom razliitih
sustava modulacije signala poveava se broj komunikacijskih kanala.
U industriji je radio upravljanje pronalo razliite 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
predoiti specijalnim radio upravljanim vozilima za istraivanje Marsa od kojih je najnoviji
Curiosity koji se na tom planetu nalazi od 6 kolovoza 2012 god.
http://en.wikipedia.org/wiki/;Radio_control
2.1.
DSSS metoda
http://en.wikipedia.org/wiki/Direct-sequence_spread_spectrum
10
Interferencija izmeu ureaja koji rade na istom principu i na istoj frekvenciji je izbjegnuta jer
svaki prijemnik iz mnotva signala prepoznaje i koristi samo signal odgovarajueg predajnika.
Prednosti ovog sustava moduliranja se oitavaju u mogunosti dijeljenja istog kanala (slika 4.)
izmeu vie korisnika i otpornosti prema namjernom ili nenamjernom ometanju.
11
2.2.
FHSS metoda
12
Cijeli frekvencijski pojas na 2.4 GHz, (2.4 GHZ 2.4835 GHZ) dijeli se na 79
neprekrivajuih podkanala pri emu je irina svakog kanala 1MHz. Vremenski intervali za
vrijeme kojih se u odreenom kanalu nalazi podatak naziva se time slot i traje minimalno
625us. Ako se pojavi interferencija na jednoj frekvenciji, podaci se ponovo alju prelaenjem
na drugu frekvenciju. Stalnim mijenjanjem frekvencije FHSS sustav je otporan na
presluavanje, a postie se i visoki stupanj sigurnosti prijenosa. Time se omoguava rad vie
razliitih beinih mrea unutar istog podruja, ali bez nepoeljnih meudjelovanja (slika 6).
Slika 6: FHSS modulacija 2 korisnika
13
14
http://www.ri-teatar.hr/index.php/ri-teatar/predstave-za-djecu/148-luda-novcic
15
16
7.1 Arduino
Arduino je elektronika prototipska platforma otvorenog koda bazirana na hardveru i softveru
koji je jednostavan za koritenje. Arduino putem razliitih senzora prima informacije od
okoline, a na nju utjee npr kontroliranjem svjetala, upravljanjem razliitim motorima i
aktuatorima openito. Softver potreban za rad s arduinom je besplatan i dostupan za
Windows, Mac OS i Linux. U svojoj ponudi Arduino ima razliite tipove ploica, shield-ova i
pribora.
17
Memorija
ATmega328 procesor ima 32KB memorije. Takoer i 2 KB SRAM-a i 1KB EEPROM-a
Ulazi i izlazi
Svaki od 14 digitalnih pinova na ploi se moe koristiti kao ulaz ili izlaz koristei pinMode (
) , digitalWrite ( ) , i digitalRead ( ) funkcije . One djeluju na 5 volti . Svaki pin moe pruiti
ili primiti maksimalno 40 mA i ima interni pull - up otpornik od 20-50 kiloohma.
Neki pinovi imaju specijalizirane funkcije :
18
19
Osnovne karakeristike:
Radio
Predajnik
Prijemnik
RF sintetizator
Potpuno integrirani sintetizator
Ne koristi vanjski filtar, VCO ili rezonator
Koristi +/- 60ppm kristal niske cijene
Napajanje i potronja:
Primjena:
21
7.1.
Uspostavljanje komunikacije
Uspostavljanje komunikacije putem NRF-a izmeu Arduino uno i Arduino due kontrolera nije
proteklo bez problema. Arduino IDE 1.0.5. u padajuem izborniku ne prikazuje Arduino due
platformu kao opciju odabira. (Slika 10.)
Slika 10: Printscreen 1
Sa slubenih stranica arduina je preuzet IDE 1.5.5. (koji je u beta verziji) i koji podrava rad
due platforme to se vidjelo po pojavljivanju due platforme u padajuem izborniku. Meutim,
nakon spajanja NRF-a na due platformu i neuspjelog pokuaja rada ustanovilo se da due
platforma ne prepoznaje NRF biblioteku to je dovelo do promjena u samom projektu na
nain da e i predajnik i prijemnik biti realizirani pomou uno platforme.
22
7.2.
Prihvaajui sugestiju mentora, kao slijedei korak izrade projekta autor je odabrao provjeru
mogunosti 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).
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 ureaju, te posjeduje osjetnik napunjenosti baterije.
U mogunosti je u trenutku kritine potroenosti baterije preusmjeriti dio energije sa
pogonskog motora na servo motore i time omoguiti npr. sigurno slijetanje ukoliko se radi o
letjelici.
Posebna panja se mora posvetiti izvedbi napajanja ESC-a i njegovoj kalibraciji jer su to
nuni preduvjeti za njegov rad. ESC za svoj rad koristi Li-Po (Lithium Polymer) bateriju od
11.1 V
Slika 12: Baterijsko napajanje hovercrafta
23
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. Oitani 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 inae prima ulazne podatke preko RC predajnika, to u biti znai da se
ponaa kao servo. Kako bi se taj rad kontrolirao preko Arduina potrebno je ukljuiti Servo
biblioteku.
Slijedei kod je modificirani kod preuzet s Arduino slubenih stranica i koji slui za
kontroliranje pozicije servo motora upotrebom potenciometra.
24
{
uzgon = analogRead(uzgonPin); // itanje vrijednosti potenciometra (vrijednost izmeu 0 i 1023)
uzgon = map(uzgon, 0, 1023, 0, 179); // mapiranje oitanih vrijednosti s potenciometra u odgovarajue
vrijednosti u stupnjevima
uzg.write(uzgon); //postavljanje serva u skladu s oitanom vrijednosti
}
Kalibriranje ESC-a
Nakon uitavanja koda, potrebno je kalibrirati ESC kako bi on ispravno radio. Kalibriranje
ESC-a je vano jer on inicijalno ne zna koje su granice predajnika pa prema tome niti ne moe
precizno postaviti brzinu vrtnje motora. Kalibriranje brzine vrtnje se vri na slijedei nain:
1.
2.
3.
4.
5.
6.
Napajanje je iskljueno
Potenciometar se postavi u maksimalni poloaj
Ukljui se napajanje
Odgovarajui zvuni signal dojavljuje da je maksimalna vrijednost oitana
Nakon toga se potenciometar postavlja u minimalni (nulti) poloaj
Odgovarajui zvuni signal dojavljuje da je minimalna vrijednost oitana
Testiranje je pokazalo da oba motora (pogonski i uzgonski) s ESC-om kao i servo motor
upravljakog mehanizma savreno dobro rade ukoliko su upravljana preko Arduina.
Rezultati testiranja se mogu vidjeti na:
http://www.youtube.com/channel/UCN-dyUCZRVkaqYUl-VCgi2A
7.3.
26
27
7.4.
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 pomou 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.
28
Predajnik
Kod koriten za izradu predajnika je modificirani kod koji se nalazi u Arduino IDE
primjerima pod nazivom nRF24_sendto_hub.
// ukljuivanje potrebnih biblioteka
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "printf.h"
void setup(void)
{
Serial.begin(57600);
printf_begin();
printf("Sending nodeID & 4 sensor data\n\r");
radio.begin();
29
void loop(void)
{
int Data1,Data2,Data3,Data4 = 0;
char temp[5];
bool timeout=0;
30
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);
31
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);
receivePayload[len] = 0;
printf("inBuffer: %s\n\r",receivePayload);
// delay(1000);
//lcd.setCursor(2,1);
//lcd.print(receivePayload);
32
delay(10);
} // End while */
delay(250)
}
8.2.
Prijemnik
Kod koriten 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;
33
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();
34
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);
35
// delay(1000);
}
// Serial.println(data2.toInt());
36
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);
}
37
38
11. TROKOVNIK
Tabela 3: Trokovnik
Naziv
Arduino Uno
NRF240L01 modul
M/ kratkospojni kabel set 40 kom
Potenciometar 1KOhm
Ploica pertinax
Strip M 40-polni ravni
Strip 2X40 polni
Kutija plastina 111x91x48
Cijena(kn)
100
15
50
9
25
2,5
6,88
23
Kom
2
2
1
2
1
1
1
2
Total(kn)
200
30
50
18
25
2,5
6,88
46
Total
378,38
Izvor
eBay
eBay
eBay
eBay
Chipoteka
Chipoteka
Chipoteka
Chipoteka
39
12. ZAKLJUAK
U ovom radu se jo jednom potvrdila multifuncionalnost Arduino Uno platforme koja je
iskoritena za izradu i predajnika i prijemnika u sustavu daljinskog radioupravljanja
hovercraftom. Beini prijenos podataka realiziran je pomou nRF24L01 primopredajnih
modula.
Sam projekt nije do kraja dovren jer je relativno velik dio vremena potroen na otklanjanje
kvarova koji su se pojavili ve na poetku izrade samog projekta. Unato injenici da projekt
u cijelosti nije dovren ne moe se rei da nije uspjean jer su se u dijelovima projekta kao to
je pokretanje motora s ESC om preko Arduina i uspostavljanja beine komunikacije izmeu
predajnika i prijemnika koji su uspjeno rijeeni, stekla nova znanja i vjetine. Isto tako moe
se rei da je i rjeavanje kvarova i nepredvienih situacija sastavni dio stjecanja novih znanja.
40
13. LITERATURA
41
42