arduino boe shield mobilna robotika postoji niz dostupnih

17
5/23/2013 1 Arduino Boe Shield Mobilna robotika Sistemi u realnom vremenu Sistemi u realnom vremenu Laboratorijske vježbe br. 7 Uvod Postoji niz dostupnih programa koji omogućavaju kreiranje softvera za AVR Asemblersko, C, čak i Basic programiranje programiranje AVR Studio i Arduino

Upload: truongnguyet

Post on 29-Jan-2017

231 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Arduino Boe Shield Mobilna robotika Postoji niz dostupnih

5/23/2013

1

Arduino Boe ShieldMobilna robotika

Sistemi u realnom vremenuSistemi u realnom vremenuLaboratorijske vježbe br. 7

Uvod

Postoji niz dostupnih programa koji omogućavaju kreiranje softvera za AVR

Asemblersko, C, čak i Basic programiranjeprogramiranje

AVR Studio i Arduino

Page 2: Arduino Boe Shield Mobilna robotika Postoji niz dostupnih

5/23/2013

2

AVR Studio

Atmel AVRStudio je besplatan paket koji Atmel AVRStudio je besplatan paket koji podržava klasično C programiranje i asembler, uključujući detaljan pristup svim funkcionalnim dijelovima AVR mikrokontrolera

Arduino

Arduino, je također besplatan paket, omogućavaArduino, je također besplatan paket, omogućava razvojno okruženje koje koristi C-bazirani jezik Processing

Processing je sintaktički jako sličaj C-u, ali pojednostavljuje kreiranje koda sakrivajući neke detalje C-a

Arduino također pojednostavljjuje korištenje U/I p j jj j jpinova na AVR čipu, omogućavajući njihovu iznimno jednostavnu upotrebu.

Jednostavna instalacija, podržan na svim OS.

Page 3: Arduino Boe Shield Mobilna robotika Postoji niz dostupnih

5/23/2013

3

Arduino

AVRStudio i Arduino IDE mogu koegizistrati na AVRStudio i Arduino IDE mogu koegizistrati na računaru bez problema,

Arduino čak može raditi sa STK500 pločom, ali je potrebno reproducirati osnovnu postavku Arduino razvojnih ploča (odgovarajuće Atmega328 pinove pravilno spojiti)Ob k t k i t Wi AVR C k jl k ji Oba paketa koriste WinAVR C kompajler, koji pretvara C kod u mašinski kod (hex file) koji se zatim prebacuje na uc.

Arduino

Pored softvera specifičnost Arduina je Pored softvera, specifičnost Arduina je razvojna ploču Arduino Board niske cijene (od par desetaka €)

Bazirana na ATMEL mikrokontrolerima

Velika zajednica korisnikae a ajed ca o s a

USB programiranje

Velik broj dodataka - “shieldova” (GSM, WiFi, Ethernet, BT…)

Page 4: Arduino Boe Shield Mobilna robotika Postoji niz dostupnih

5/23/2013

4

Atmega328 (Arduino UNO)

Atmega328 ima tri Atmega328 ima tri porta (B, C, D).

Arduino koristi te portove za svoje ulaze i izlaze B (digitalni 8-13) B (digitalni 8 13)

C (analogni 0-5)

D (digitalni 0-7)

Atmega328 vs ATMEGA16

Napredna RISC arhitektura131 i t k ij

Napredna RISC arhitektura131 i t k ij 131 instrukcija

32x8 registara opšte namjene do 20 MIPS na 20 MHz

Programska i memorija podataka 32KB Flash 1KB EEPROM 2KB SRAM

Dva 8 bitna timera/countera Jedan 16 bitni timer/counter

6 PWM k l

131 instrukcija 32x8 registara opšte namjene do 16 MIPS na 16 MHz

Programska i memorija podataka 16KB Flash 512 B EEPROM 1KB SRAM

Dva 8 bitna timera/countera Jedan 16 bitni timer/counter

Č ti i PWM k l 6 PWM kanala 6 (8) kanalni ADC (10 bitni) USART, SPI, TWI/I2C WatchDog On-chip analogni komparator Interapti

Četiri PWM kanala 8 kanalni ADC (10 bitni) USART, SPI, TWI/I2C WatchDog On-chip analogni komparator Interapti

Page 5: Arduino Boe Shield Mobilna robotika Postoji niz dostupnih

5/23/2013

5

Atmega328 vs ATMEGA16

Kućište I/O i kućište

28-pin PDIP, 32-lead TQFP, 28-pad QFN/MLF 32-pad QFN/MLF

Radni naponi 1.8 - 5.5V

Brzina

40 pin PDIP 44 lead TQFP kućište

Radni naponi 4.5-5.5 V

Brzina: 0-16 MHz Potrošnja na 1MHz reda mA u

Aktivnom modu

0 - 20MHz @ 4.5 - 5.5V

Potrošnja na 1MHz, 1.8V Active Mode: 0.2mA Power-down Mode: 0.1μA Power-save Mode: 0.75μA

Atmega328

Page 6: Arduino Boe Shield Mobilna robotika Postoji niz dostupnih

5/23/2013

6

ArduinoShield za BoeBot

Originalni Boe Bot robot sa BASIC Stamp Originalni Boe-Bot robot sa BASIC Stamp mikrokontrolerom je započeo s proizvodnjom 1999.

ArduinoShield za BoeBot

Arduino microcontroller se javlja 2005 i stiče ogramnu populanost Arduino hardver i softver imaju mnogo funkcionalnih sličnosti kao

BASIC Stamp mikrokontroler i ploča Parallax je zato dizajnirao “Board of Education Shield”, koja

omogućava hardversku kompatibilnost Arduina i Boe-Bot kućišta

Page 7: Arduino Boe Shield Mobilna robotika Postoji niz dostupnih

5/23/2013

7

Sintaksa Arduino Processing

Dvije osnovne funkcije:Dvije osnovne funkcije: Inicijalizacija

void setup() {

statements; }

Programvoid loop() p(){

statements; }

Sintaksa Arduino Processing (C) Varijable: Varijable:byte, int, long, float

Nizovi

Konstante

TRUE - FALSETRUE FALSE

HIGH - LOW

INPUT - OUTPUT

Page 8: Arduino Boe Shield Mobilna robotika Postoji niz dostupnih

5/23/2013

8

Osnovne funkcije - Digitalni I/O

pinMode(pin, mode) //I/O digitalWrite(pin, HIGH);//pullup

digitalRead(pin) digitalWrite(pin, value) Pin -> 0-13

Funkcije analogne setovanju registara, npr: DDRD = B11111110; // sets Arduino pins 1 to 7 as DDRD = B11111110; // sets Arduino pins 1 to 7 as outputs, pin 0 as input

DDRD = DDRD | B11111100; // this is safer as it sets pins 2 to 7 as outputs // without changing the value of pins 0 & 1, which are RX & TX

Digitalni I/O

Page 9: Arduino Boe Shield Mobilna robotika Postoji niz dostupnih

5/23/2013

9

Primjer

Progiram čitava vrijednost ulaza i zatim pali LED diodu ako je ulaz k iaktivanint led = 13; // connect LED to pin 13 int pin = 7; // connect pushbutton to pin 7 int value = 0; // variable to store the read value void setup() {

pinMode(led, OUTPUT); // sets pin 13 as output pinMode(pin, INPUT); // sets pin 7 as input

} } void loop() {

value = digitalRead(pin); // sets 'value' equal to // the input pin digitalWrite(led, value); // sets 'led' to the

} // button's value

Osnovne funkcije - Analogni I/O

analogRead(pin) analogRead(pin) pin 0-5 (analogni ulazi) rezultat: 0-1023 analogWrite(pin, value) //PWMNpr: samo pinovi 3, 5, 6, 9, 10 i 11 za

Atmega328Atmega328Value: 0 (0V) -255 (5V)

Page 10: Arduino Boe Shield Mobilna robotika Postoji niz dostupnih

5/23/2013

10

Analogni I/O

Primjer

Program čita vrijednost potenciometra i prikazuje na LED diodiint led = 10; // LED with 220 resistor on pin 10 int pin = 0; // potentiometer on analog pin 0 int value; // value for reading void setup(){} // no setup needed void loop() {

value = analogRead(pin); // sets 'value' equal to 'pin' p

value /= 4; // converts 0-1023 to 0-255 analogWrite(led, value); // outputs PWM signal to led

}

Page 11: Arduino Boe Shield Mobilna robotika Postoji niz dostupnih

5/23/2013

11

Osnovne vremenske funkcije

Delay: Delay:delay(1000); // waits for one second

Brojač:value = millis(); // sets ‘value’ equal to millis()

Broji max 9h, zatim overflow

Serijska komunikacija

Program čita analognu vrijednost svake sekunde i šalje podatke na čračunar

void setup() {

Serial.begin(9600); // sets serial to 9600bps

} void loop() {

Serial.println(analogRead(0)); // sends analog value p g gdelay(1000); // pauses for 1 second

}

Page 12: Arduino Boe Shield Mobilna robotika Postoji niz dostupnih

5/23/2013

12

Neke ostale funkcije:

randomSeed(seed) randomSeed(seed)

random(max)

random(min, max)

min(x, y)

max(x y) max(x, y)

Arduino Shield interface

Page 13: Arduino Boe Shield Mobilna robotika Postoji niz dostupnih

5/23/2013

13

Arduino Shield interface

Kontinualni servo motori

Page 14: Arduino Boe Shield Mobilna robotika Postoji niz dostupnih

5/23/2013

14

Servo motori

Signali kori upravljaju servo motorima Signali kori upravljaju servo motorima moraju trajati precizan vremenski period.

Servomotor u tom periodu mjeri koliko dugo je signal na 1, i tu informaciju koristi kao instrukciju za brzinu i smjer motora

Upravljanje servo motorom

Sve što je potrebno je slati impuls svakih 20ms

Page 15: Arduino Boe Shield Mobilna robotika Postoji niz dostupnih

5/23/2013

15

Spajanje servoa na BoeShield

Spajanje baterija na BoeShield

Page 16: Arduino Boe Shield Mobilna robotika Postoji niz dostupnih

5/23/2013

16

Signali naprijed i nazad

Page 17: Arduino Boe Shield Mobilna robotika Postoji niz dostupnih

5/23/2013

17

Biblioteka Servo.h i primjer

Arduino ima Servo.h biblioteku koja olakšava komunikaciju sa servo motorima#i l d h // l d lib#include <Servo.h> // Include servo library

Servo servoLeft; // Declare left servo signalServo servoRight; // Declare right servo signal

void setup() // Built in initialization block{ servoLeft.attach(13); // Attach left signal to P13 servoRight.attach(12); // Attach right signal to P12 servoLeft writeMicroseconds(1700); // 1 7 ms -> counterclockwservoLeft.writeMicroseconds(1700); // 1.7 ms > counterclockw.servoRight.writeMicroseconds(1300); // 1.3 ms -> clockwise

}

void loop() // Main loop auto-repeats{ // Empty, nothing needs repeating}