arduino uno projekat maturski rad

20
 ELEKTROTE  Predmet: Mikro Smer:  1. 2. 3. P Komisija: Predsednik komisije Član komisije Član komisije NIČKA KOLA „STARI GRA ____________________________  MATURSKI RAD rocesori sa elementima programiranj  Elektrotehničar automatike RAKTIČAN RAD: ealizacija Arduino platforme ealizacija šild modula rimeri koda za Arduino Tomi ć Da Dat U Beogradu, 2015.god  Kandidat: leksandar tum prijave um odbrane

Upload: aleksandar-tomic

Post on 05-Oct-2015

419 views

Category:

Documents


15 download

DESCRIPTION

Praktičan rad, izrada Arduino razvojnog sistema izrada šilda, programiranje.

TRANSCRIPT

  • ELEKTROTEHNI________________________________________________________

    Predmet: Mikroprocesori sa elementima programiranjaSmer:

    PRAKTI

    1. Realizacija Arduino platforme2. Realizacija 3. Primeri koda za Arduino

    Komisija:

    Predsednik komisije

    lan komisije

    lan komisije

    ELEKTROTEHNIKA KOLA STARI GRAD________________________________________________________

    MATURSKI RAD

    roprocesori sa elementima programiranjaSmer: Elektrotehniar automatike

    PRAKTIAN RAD:

    1. Realizacija Arduino platforme 2. Realizacija ild modula 3. Primeri koda za Arduino

    Tomi Aleksandar

    Datum prijave

    Datum odbrane

    U Beogradu, 2015.god

    STARI GRAD ________________________________________________________

    roprocesori sa elementima programiranja

    Kandidat: Aleksandar

    Datum prijave

    Datum odbrane

  • Zahvaljujem se na pomoi i saradnji profesorki Aleksandri Mareti. Zahvaljujem na predloenoj temi i korisnim sugestijama tokom izrade ovog maturskog rada.

    Sadraj

    1. ta je to Arduino?2. Kako je sve poelo3. Hardver4. Tehnika specifikacija5. Razvojno okruenje6. Zadatak 1. Realizacija Arduino platforme7. Zadatak 2. Realizacija ild modula8. Zadatak 3. Primeri koda za Arduino

    8.1. Primer Semafor8.2. Primer Plivajue svetlo8.3. Primer Merenje temperature

    9. Zakljuak10. Literatura

  • Slika 1 Arduino Uno mikrokontrolerski razvojni sistem

    1. ta je to Arduino?

    Arduino je open sors (engl. open source) razvojni sistem, elektronska-raunarska platforma nastala 2005. god. na Ivery univerzitetu u Italiji. Arduino sistem se koristi za upravljanje drugim sistemima i modulima. Hardver ini jednostavan dizajn Arduino ploe koja sadri Atmelov AVR mikrokontroler i pratee ulazno-izlazne komponente. Razvojno okruenje za Arduino sastoji se od kompajlera i bootloadera koji se nalazi na samoj Arduino ploi. Programiranje Arduina se obavlja programskim jezikom zasnovanim na Wiring jeziku. U sutini to je C++ programski jezik sa mnogo olakica i predefinisanih funkcija krajnjim korisnicima odnosno programerima. Integrisano razvojno okruenje IDE (engl. Integrated Development Environment) zasnovano je na Processing-u.

    2. Kako je sve poelo

    Otkako je Arduino projekat zapoet 2005. god., preko 500.000 komada je prodato do danas. Pretpostavlja se da broj prodatih klonova nadmauje cifru od 1.000.000 komada. Arduino bordovi i njegove varijante su preplavile trite. Njegova popularnost je sve vea i vea i sve vie ljudi prepoznaje zapanjujui potencijal ovog neverovatnog projekta otvorenog koda kao i njegovu sposobnost da se brzo i lako kreiraju specijalizovani projekti sa relativno skromnim poznavanjem programiranja. Najvea prednost Arduino mikrokontrolerske razvojne platforme je u jednostavnosti korienja, gde ak i ljudi bez programerskog iskustva mogu da savladaju osnove i stvaraju sopstvene projekte u relativno kratkom vremenskom periodu.

  • 3. Hardver

    Arduino 2009 sistem se sastoji od Atmel 8-bitnog AVR mikrokontrolera i drugih komponenti koje omoguavaju jednostavno programiranje i povezivanje sa drugim elektronskim sklopovima i sistemima. Originalni Arduino sistemi poseduju ATmega AVR ipove, linearni regulator za 5V i kristalni oscilator na 16MHz. Lako spajanje novih modula i prikljuaka je kljuna stvar kod Arduina. Dodaci moduli za Arduino se nazivaju ildovima (engl. shield). Kupuju se gotovi ili ih sami pravimo po potrebi. Svrha ildova je proirenje funkcionalnih mogunosti. Najpoznatiji ildovi su: GPS, GSM, bluetooth, ethernet, LCD ekran, RFID, relay, itd. Gotovi Arduino bordovi dolaze sa sopstvenim bootloaderom koji omoguava upload napisanih programa u fle memoriju Arduina. Ranije verzije Arduino sistema su koristile serijski port RS-232 za programiranje i komunikaciju, a noviji Arduino sistemi danas rade preko USB-a.

    4. Tehnika specifikacija

    Mikrokontroler ATmega328P Radni napon 5V Ulazni napon (preporuljivo) 7-12V Ulazni napon (granine vrednosti) 6-20V Digitalni I/O prikljuci 14 (od kojih 6 obezbeuju PWM izlaz) Analogni ulazni priljuci 6* DC struja po I/O prikljuku 40 mA DC struja za 3.3V prikljuak 50 mA Fle Memorija 32 KB (ATmega328P) od ega je 0.5 KB rezervisano za bootloader SRAM 2 KB (ATmega328P) EEPROM 1 KB (ATmega328P) Radni takt 16 MHz Duina 68.6 mm irina 53.4 mm Teina 25 gr

    5. Razvojno okruenje

    Arduino IDE je pisan u Javi i moe se koristiti na programskim platformama kao to su Windows, Linux i Mac. Neke novije verzije Linuxa dolaze sa ve preinstaliranim Arduino IDE softverom. Razvojno okruenje se potpuno besplatno moe preuzeti sa oficijalne stranice Arduino projekta i nema nikakvih ogranienja. Arduino IDE je zamiljen i napravljen tako da priblii programiranje onima koji nisu experti ili se nikada nisu sreli sa programiranjem. Arduino IDE proverava ispravnost napisanog koda, vri prevoenje u hex fajl i upload na Arduino sistem. Program napisan za Arduino naziva se ske (engl.sketch). Sintaksa Arduinovog IDE-a slina je sintaksi programskog jezika C++.

    *Analogni ulazi A0-A5 se mogu koristiti i kao digitalni ulazi/izlazi

  • !

    Slika 2 Arduino razvojno okruenje (IDE)

    Sve Arduino platforme ve imaju LED diodu i otpornik izmeu pina 13 i mase i koriste se za testiranje sistema ili za pravljenje prvih koraka. Upaliti LED diodu je prvi ili HELLO WORLD zadatak na Arduno platformi.

    Primer ukljuivanja i iskljuivanja LED diode na pinu13

    // LED dioda na pinu 13 int led = 13; // ovom komandom dodeljujemo pinu ime

    void setup() { // izvrava se samo jednom do sledeeg reseta pinMode(led, OUTPUT); // podeavamo da pin 13 bude digitalni izlaz

    }

    void loop() { // izvrava se beskonaan broj puta digitalWrite(led, HIGH); // ukljui LED diodu delay(1000); // vreme trajanja pauze (1000ms) digitalWrite(led, LOW); // iskljui LED diodu delay(1000); // vreme trajanja pauze (1000ms)

    }

  • 6. Zadatak 1. Realizacija Arduino platforme

    Za potrebe line edukacije odluio sam da sam napravim Arduino Duemilanove (2009) razvojnu platformu. Izabrao sam da pravim Arduino Duemilanove koji e kasnije biti unapreen u Arduino UNO, promenom firmwera. Arduino referentni dizajn hardvera se distribuira pod CC licencom i dostupan je na zvaninom sajtu www.arduino.cc . Raspored komponenata i fajlova neophodnih za proizvodnju pojedinih verzija je takoe na raspolaganju. Izvorni kod za razvojno okruenje i biblioteke su dostupne i distribuiraju se pod GPLv2 licencom.

    Ploica sa tampanim vezama je kupljena na www.kupindo.com a komponente u www.kelco.rs i www.comet.rs

    Spisak komponenata:

    Part Value Device Package Description -----------------------------------------------------------------------------------------------------------------------

    C1 100n C-EU C0805RND CAPACITOR, European symbol C2 22p C-EU C0805RND CAPACITOR, European symbol C3 22p C-EU C0805RND CAPACITOR, European symbol C4 100n C-EU C0805RND CAPACITOR, European symbol C5 100n C-EU C0805RND CAPACITOR, European symbol C6 100u CPOL-EUD PANASONIC_D POLARIZED CAPACITOR,

    European symbol C7 100u CPOL-EUD PANASONIC_D POLARIZED CAPACITOR, European symbol C8 100n C-EU C0805RND CAPACITOR, European symbol C9 100n C-EU C0805RND CAPACITOR, European symbol C10 100n C-EU C0805RND CAPACITOR, European symbol C11 100n C-EU C0805RND CAPACITOR, European symbol C12 100n C-EU C0805RND CAPACITOR, European symbol C13 100n C-EU C0805RND CAPACITOR, European symbol D1 DIODE-SMB SMB DIODE F1 500mA L-EUL1812 L1812 INDUCTOR, European symbol IC1 ATMEGA8 AT90S4433P DIL28-3 MICROCONTROLLER IC2 FT232RL FT232RL SSOP28 IC4 MC33269D-5.0 MC33269D-5.0 DPACK Adjustable Output Low Dropout

    Voltage Regulator 800 mA IC5 LM358D LM358D SO08 OP AMP also LM158; LM258;

    LM2904 ICSP ICSP PINHD-2X3 2X03 PIN HEADER J1 PINHD-1X8 1X08 PIN HEADER J2 PINHD-1X6 1X06 PIN HEADER J3 PINHD-1X8 1X08 PIN HEADER L LED0805ROUND 0805RND LED POWER PINHD-1X6 1X06 PIN HEADER PWR LED0805ROUND 0805RND LED Q2 16MHz CRYTALHC49S HC49/S CRYSTAL R1 10k R-EU_ R0805RND RESISTOR, European symbol R2 100_NM R-EU_ R0805RND RESISTOR, European symbol R4 1k R-EU_ R0805RND RESISTOR, European symbol R5 1k R-EU_ R0805RND RESISTOR, European symbol

  • R6 1k R-EU_ R0805RND RESISTOR, European symbol R7 1k R-EU_ R0805RND RESISTOR, European symbol R8 1k R-EU_ R0805RND RESISTOR, European symbol R9 1k R-EU_ R0805RND RESISTOR, European symbol R10 10k R-EU_ R0805RND RESISTOR, European symbol R11 10k R-EU_ R0805RND RESISTOR, European symbol RESET-EN SJ SJ SMD solder JUMPER RX LED0805 0805RND LED S1 10-XX B3F-10XX OMRON SWITCH T1 NDT2955 PMOSSOT223 SOT223 MOS FET TX LED0805ROUND 0805RND LED U$1 FIDUCIALMOUNT FIDUCIALMOUNT FIDUCIA-MOUNT U$2 FIDUCIALMOUNT FIDUCIALMOUNT FIDUCIA-MOUNT U$3 FIDUCIALMOUNT FIDUCIALMOUNT FIDUCIA-MOUNT X2 DC21MMX DC21MMX DC-21MM X3 JP4E JP4 UMPER X4 PN61729 PN61729 BERG USB connector

  • Slika 3 Elektrina ema

  • Slika 4 PCB Dizajn

    Slika 5 PCB

  • Slika 6 Faza 1

    Slika 7 Faza 2

  • Slika 8 Faza 3

    Slika 9 Faza 4

  • Slika 10 Faza 5, zavren Arduino 2009

  • 7. Zadatak 2. Realizacija ild modula

    Razni dodaci za Arduino nazivaju se ildovi i slue za proirenje funkcionalnih mogunosti. Postoje ildovi za razliite namene i njihov broj je iz dana u dan sve vei. Za potrebe ove vebe odluio sam da napravim jednostavan ild koji e imati mogunost da objedini nekoliko praktinih vebi u jednu celinu. Iskorieni su: 7 digitalnih izlaza za LED diode, jedan analogni ulaz za potenciometar, jedan digitalni PWM izlaz za buzzer, dva digitalna ulaza za tastere i jedan digitalni ulaz za senzor temperature. Elementi su postavljeni na dvostrani proto-bord i zalemljeni. Svaki ulaz i izlaz ima mogunost odvajanja od dodatne periferije damperima po potrebi. Sve Led diode su vezane na masu preko otpornika od 220 oma kako bi se ograniila struja kroz njih.

    Spisak Komponenata:

    Part Value Device Description -----------------------------------------------------------------------------------------------------------------------

    R0 220 ohm R-EU_ 0.25W RESISTOR, European symbol R1 220 ohm R-EU_ 0.25W RESISTOR, European symbol R2 220 ohm R-EU_ 0.25W RESISTOR, European symbol R3 220 ohm R-EU_ 0.25W RESISTOR, European symbol R4 220 ohm R-EU_ 0.25W RESISTOR, European symbol R5 220 ohm R-EU_ 0.25W RESISTOR, European symbol R6 220 ohm R-EU_ 0.25W RESISTOR, European symbol R7 100 ohm R-EU_ 0.25W RESISTOR, European symbol R8 4.7 K R-EU_ 0.25W RESISTOR, European symbol LED0 LED Diode 3mm Trough Hole LED Red LED1 LED Diode 3mm Trough Hole LED Red LED2 LED Diode 3mm Trough Hole LED Red LED3 LED Diode 3mm Trough Hole LED Red LED4 LED Diode 3mm Trough Hole LED Red LED5 LED Diode 3mm Trough Hole LED Yellow LED6 LED Diode 3mm Trough Hole LED Green Buzzer Speaker 8 ohm PC speaker S1 10-XX B3F-10XX OMRON SWITCH, Key S2 10-XX B3F-10XX OMRON SWITCH, Key J1 PINHD-1X8 1X08 PIN HEADER J2 PINHD-1X8 1X08 PIN HEADER J3 PINHD-1X6 1X08 PIN HEADER J4 PINHD-1X10 1X08 PIN HEADER IC1 -55C to +125C DS18B-20 TO-92 P1 22K Linear pot. 6.3mm X1...X24 JP1JP24 JUMPER

  • Slika 11 Elektrina ema ilda za Arduino

    .

    Slika 12 Konaan izgled realizovanog projekta

  • !

    Komponenta Pin Tip Opis Led0 0 Digital Out RX*

    / 1 Digital Out TX Led1 2 Digital Out

    / 3 Digital Out PWM Led2 4 Digital Out

    / 5 Digital Out PWM Led3 6 Digital Out PWM

    / 7 Digital Out Led4 8 Digital Out

    / 9 Digital Out PWM Led5 10 Digital Out PWM

    Buzzer 11 Digital Out PWM Led6 12 Digital Out

    / 13 Digital Out Key1 A0 Analog in

    Pot1 (10K) A1 Analog in / A2 Analog in / A3 Analog in

    Temp.Senzor DS18B20 A4 Analog in / A5 Analog In

    Key2 Reset Reset Tabela 1 Pin-aut za Arduino ild

    * Kod programiranja je potrebno ukloniti damper JP0 (odspojiti Led0 sa RX-a)

  • 8. Zadatak 3. Primeri koda za Arduino

    8.1. Primer Semafor

    U ovoj vebi iskoriene su diode LED5, LED6 i LED7 koje su vezane na digitalnim izlalzima 8, 10 i 12. Kod simulira rad semafora i ustvari je doraen jednostavni kod sa pocetka (primer Hello World).

    // Veba 1 - Semafor int pauza1= 5000; // vreme trajanja pauze (ms) int pauza2= 2000; // vreme trajanja pauze (ms) int crveno= 8; // Led4 na ildu int zuto= 10; // Led5 na ildu int zeleno= 12; // Led6 na ildu

    void setup() { pinMode(crveno, OUTPUT); pinMode(zuto, OUTPUT); pinMode(zeleno, OUTPUT);

    }

    void loop() { digitalWrite(crveno, HIGH); // UKLJUI crveno svetlo delay(pauza1); // vreme trajanja pauze (5000ms) digitalWrite(zuto, HIGH); // UKLJUI uto svetlo delay(pauza2); // vreme trajanja pauze (2000ms) digitalWrite(zeleno, HIGH); // UKLJUI zeleno svetlo digitalWrite(crveno, LOW); // ISKLJUI crveno svetlo digitalWrite(zuto, LOW); // ISKLJUI uto svetlo delay(pauza1); // vreme trajanja pauze (5000ms) digitalWrite(zuto, HIGH); // UKLJUI uto svetlo digitalWrite(zeleno, LOW); // ISKLJUI zeleno svetlo delay(pauza2); // vreme trajanja pauze (2000ms) digitalWrite(zuto, LOW); // ISKLJUI uto svetlo

    }

  • 8.2. Primer Plivajue svetlo

    U ovoj vebi LED diode e se paliti jedna za drugom menjajui smer od najnie Led diode ka najvioj i obratno. Brzina se kontrolie potenciometrom koji je vezan na analogni ulaz i preko AD konvertera upravlja diodama rezolucijom od 10 bita (0 do 1023).

    // Veba 2 Tree svetlo byte ledPin[] = {0, 2, 4, 6, 8, 10, 12}; // Niz LED pinova int ledPauza; // Vreme pauze int ledSmer = 1; // Smer kretanja svetla int trenutnaLED = 0; // Tretnutno osvetljena LED unsigned long vremePromene; // Vreme od ukljuenja int potPin = 1; // Pin potenciometra

    void setup() { for (int x=0; x Pauza if ((millis() - vremePromene) > ledPauza){ // Ako je proteklo vreme promenaLED(); // due od vremena ekanja vremePromene = millis(); // Setovanje novog vremena }

    }

    void promenaLED() { for (int x=0; x na LED6 if (trenutnaLED == 0) {ledSmer = 1;} // Promena smera < na LED0

    }

  • 8.3. Primer Merenje temperature

    U ovoj vebi koristi se digitalni senzor temperature (DS18B20) koji je vezan za digitalni ulaz A4. Serijskom komunikacijom pratimo rezultat merenja. Kada senzor izmeri temperaturu od 25C ukljuie se alarm. Buzzer je vezan na digitalni izlaz sa PWM-om.

    // Veba 3 Serijska komunikacija #include // biblioteka za OneWire Protokol #include // biblioteka za DS18B20 senzor

    #define ONE_WIRE_BUS A4 // Bus na pinu A4

    int buzer = 11; // mini zvunik na pinu 11 PWM Dig.Out double Prag = 25; // Incijalizacija varijable double Temperatura = 0; // Incijalizacija varijable

    OneWire oneWire(ONE_WIRE_BUS); // Incijalizacija oneWire busa DallasTemperature sensors(&oneWire); // Prosleivanje reference senzora

    void setup(void) {

    Serial.begin(9600); // Incijalizacija serijske k. sa PC Serial.println("Vezba br.3 - Serijska komunikacija: \n ------------------------- \n\n"); // Slanje poruke kao potvrda veze

    sensors.begin(); // Incijalizacija senzora }

    void loop(void) // Glavna petlja programa {

    Serial.print(" Merenje..."); // Slanje poruke ka PC sensors.requestTemperatures(); // Komanda senzorima da mere T Serial.println("OK"); // Slanje poruke ka PC

    Temperatura = sensors.getTempCByIndex(0);// Preuzimanje vrednosti T

    Serial.print("Temperatura senzora 1 je: "); // Slanje poruke Serial.print(Temperatura); // sa vrednou T ka pc Serial.print("\n");

    if (Temperatura> Prag){ // Ukoliko je T iznad zadatog praga tone(buzer, 1000,500); // Aktivirati buzzer na 0,5s

    Serial.print("\n !!! ALARM !!! \n"); // Poslati Alarm poruku PC }

    }

  • 9. Zakljuak

    Mikronontroleri se u dananje vreme nalaze svuda oko nas, od dejih igraaka, mobilnih telefona, kunih aparata, do industrije, medicine, nauke i svemira. Potranja, i proizvodnja mikrokontrolera u vie milionskim serijama dovela je do pada cene i primene istih u svim aspektima nae svakodnevice. Arduino je primer uspene kompanije koja je tritu ponudila jeftin hardwer i besplatan softwer. Zajednica koja se formirala oko Arduino projekta narasla je do nesagledivih razmera i znanje koje dele meusobno se svakodnevno uveava. Popularnost koju je Arduino IDE stekao godinama unazad i jednostavnost korienja istog uticale su na druge proizvoae softvera da unaprede svoje softverske proizvode i uine javno dostupnim svoje biblioteke. Izuzetan primer je Energia IDE razvojno okruzenje za , StellarisTiva C launch Pad (Texas Instruments) razvojne sisteme bazirane na ARM-Cortex mikrokontrolerima serije M4. Energia IDE izgleda potpuno isto kao i Arduino IDE, pa je prelazak za poetnike sa AVR platforme na ARM gotovo trenutan. Kao neko ko se nije bavio programiranjem i mikrokontrolerima, mogu da kazem da sam otkrio jedan novi i zanimljiv svet. Prostora za unapreenje znanja ima. Nastavljam da istraujem.

    Slika 13 Energia IDE

  • 10. Literatura 1] Duan Toi , Mikroprocesori sa elementima programiranja, Zavod za udbenike, Beograd, 2009 2] Brian Evans Beginning Arduino Programming 2011 3] Maik Schmidt Arduino A Quick-Start Guide 4] Referentni sajt Arduino projekta http://www.arduino.cc

    ___________________________________________________________________________

    Aleksandar Tomi 2015