Top Banner
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
17

Arduino Boe Shield Mobilna robotika Postoji niz dostupnih ...

Jan 29, 2017

Download

Documents

truongnguyet
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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}