Arduino platform és viszonya más platformokhoz
February 17, 2017 | Author: Ruzsinszki Gábor | Category: N/A
Short Description
Download Arduino platform és viszonya más platformokhoz...
Description
Készítette: Ruzsinszki Gábor webmaster442
Szeged SZISZSZI Déri Miksa tagintézményben tanítok mikrovezérlők alkalmazásához kapcsolódó informatikai és elektronikai tárgyakat. 2008 óta foglalkozom mikrovezérlős fejlesztéssel. A témáról eddig két könyvem jelent meg ebook formátumban. (A harmadik készülőben van)
Mi is az az Arduino? Pár szó a mikrovezérlőkről Klasszikus, zárt rendszerű fejlesztés összehasonlítása az Arduino-val Népszerűbb modellek bemutatása Programozás alapismeretei Tanulás, honnan lehet megtanulni a használatát?
Egy nyílt forrású hardver és szoftver ökoszisztéma. Atmel* mikrovezérlőkre épül a platform A szoftver elérhető: Linux, Windows, OS-X platformokra egyaránt A platform a nevét Ivrea város történelmi alakjáról kapta. (Arduin of Ivrea)
A tervező, Massimo Banzi mikrovezérlős rendszerfejlesztést oktatott, de 2005 környékén nem igen volt olyan olcsó mikrovezérlős platform, amit egy tanuló is megengedhetett magának. Ezért készített egyet, de nem csak a hardvert, hanem egy szoftver környezetet is hozzá. A szoftver a Processing környezeten alapul, a hardver alapötlet meg a Wiring platformon.
Ha hardver tervezés nem egyszerű feladat, mivel a való világ nem olyan megbocsájtó, mint egy szoftveres környezet. Ezért jó dolog az, hogy meg lehet nézni mások terveit egy adott probléma megoldására. Egy-egy nyílt forráskódú hardverből olyan dolgok alkothatóak, amire a készítők nem is gondoltak.
A mikrovezérlő egy olyan integrált áramkör, ami egy komplett számítógépet valósít meg Harvard-architektúra segítségével. Külön adat és kódmemóriája van az eszköznek, amelyek fizikailag elkülönítettek Program csak a kód memóriából hajtható végre, adat memóriából utasítást nem tud olvasni a processzor*
A processzorok általában RISC utasítás készletesek, vagyis nem tudnak sok mindent, de azt a kevés mindent viszonylag gyorsan tudják Minden utasítás fix számú órajel ciklust vesz igénybe. Az integrált áramkör nem csak a memóriákat és processzort tartalmazza, hanem I/O egységeket is.
Általában a chip összes funkciójának külön kihasználásához jóval több fizikai kivezetés kellene, mint amennyi adott. Ebből adódóan a kivezetések működése szoftveresen konfigurálható regiszterek segítségével.
Szabályzási feladatok megvalósítására kifejezetten alkalmasak, mivel képtelenek arra, hogy tartósan lefagyott állapotban maradjanak. Ez egy speciális komponenssel, a Watch Dog Timer segítségével van megoldva. Ha érzékeli azt, hogy a processzor lefagyott, akkor újraindítja.
Egy mikrovezérlő Programozó eszköz, feltöltő Fordító / fejlesztő program Elektronikai alapismeretek a nyomtatott áramkör megtervezéséhez és legyártásához. Arduino környezet esetén ez mind adott, ha veszünk egy Arduino lapot.
Kiválasztott mikrovezérlő adatlapjának elolvasása (50-120 oldal) Fejlesztőeszköz megismerése, dokumentációjának elolvasása (50-120 oldal) Kapcsolás megtervezése, összeállítása Szoftver megírása
Minden mikrovezérlő típus külön belső felépítéssel rendelkezik, így a konfigurációs regiszterek működésének elsajátítása hosszadalmas és frusztráló. Ezt minden egyes típus esetén el kell sajátítani, ami nem túl kellemes. A legtöbb programozó szoftver csak Windows platformra érhető el (Microchip főleg).
Fejlesztőeszköz megismerése, dokumentációjának elolvasása (50-120 oldal) A megszerzett tudás bármelyik Arduino modell esetén alkalmazható, mivel a fejlesztő környezet könyvtárai elfedik a hardver egyediségét. Így a kód nagyon minimális módosítással hordozható a típusok között.
Az igazi forradalmiság ebben van, mert: ◦ Nem kell foglalkozni a hardver belső lelki világával ◦ A kód ugyan úgy fog működni mindegyik mikrovezérlő esetén ◦ Elég egy sémát megtanulni, nem feltétlen kell többet. ◦ Rövid idő alatt is lehet látványos dolgokat alkotni, amely oktatás szempontjából kifejezetten fontos.
Jelenleg számos modell érhető el, mindegyikről nem lesz szó, csak a népszerűbbek a teljesség igénye nélkül: ◦ Uno ◦ Mega ◦ Leonardo ◦ Due ◦ Yún
ATmega 328 mikrovezérlő 16MHz órajel 13 digitális I/O 6db 10 bites ADC 32Kb kódmemória 2Kb adatmemória
ATmega 2560 mikrovezérlő 16MHz órajel 54 digitális I/O 16db 10 bites ADC 256Kb kódmemória 8Kb adatmemória
ATmega32u4 mikrovezérlő 16MHz órajel 13 digitális I/O 6db 10 bites ADC 32Kb kódmemória 2Kb adatmemória Valódi USB támogatás*
AT91SAM3X8E mikrovezérlő 32 bites ARM 84MHz órajel 54 digitális I/O 12db 12 bites ADC 2db 12 bites DAC 512Kb kódmemória 96KB adatmemória
Arduino Leonardo hardver kiegészítve egy Atheros AR9331 processzorral WLAN képességek Linux támogatás
Együttműködés a Beaglebone és az Arduino készítői között Arduino Leonardo mikrovezérlő hardver és 1GHz-en futó ARM Cortex-A8 processzor A tervek szerint jövő áprilisban jelenik meg.
A modellek lábkiosztása* és a lábak távolsága azonos minden modell esetén. Ez lehetővé teszi azt, hogy egy kiegészítő panel (Shield) kompatibilis legyen minden modellel. Számos kiegészítő panel lelhető fel, ezek közül pár hivatalos terv és egy jó néhány külső gyártó terve.
Az előadás rövidsége miatt megint csak a legfontosabb panelekről lesz szó: ◦ Ethernet Shield ◦ GSM Shield ◦ Motor Shield ◦ Adafruit Wave Shield
TCP/IP kapcsolatok kezeléséhez. MicroSD kártya foglalatot is tartalmaz Építhető belőle egyszerű HTTP szerver, illetve a kész projekt internetre kapcsolható Opcionális PoE modul
GSM funkciókkal egészíti ki a projektünket Akár teljes mobil telefon építhető a segítségével:
◦ SMS ◦ hanghívások ◦ mobilinternet
Egyenáramú és léptető motorok vezérléséhez kialakított modul Robot építés esetén kifejezetten hasznos
WAV lejátszási képesség SD kártyáról 12 bites sztereó WAV lejátszására képes a panel. Teljes méretű SD kártya foglalattal rendelkezik.
C++ nyelvre épül Objektum orientált, amit a szoftver könyvtárak ki is használnak. Az osztály könyvtárak tervezésekor a hangsúly a könnyű használhatóságon volt, hogy a felhasználó ne vesszen el a C++ rejtelmeiben és több idő maradjon tényleges fejlesztésre. A programok itt vázlatnak (sketch) nevezettek
Legalább két függvényből áll Egy setup() függvényből, ami a mikrovezérlő bekapcsolásakor, újraindításakor lefut Valamint egy loop() függvényből, aminek a végrehajtását a mikrovezérlő ismételgetni fogja
void setup() { pinMode(13, OUTPUT); }
void loop() { digitalWrite(13, HIGH); delay(250); digitalWrite(13, LOW); delay(250); }
#define #define #define #define
F_CPU 16000000; MICROSECONDS_PER_TIMER0_OVERFLOW ((64 * 256) / F_CPU / 1000000L) FRACT_INC ((MICROSECONDS_PER_TIMER0_OVERFLOW % 1000) >> 3) FRACT_MAX (1000 >> 3)
volatile unsigned long timer0_overflow_count = 0; volatile unsigned long timer0_millis = 0; static unsigned char timer0_fract = 0; SIGNAL(TIMER0_OVF_vect) { unsigned long m = timer0_millis; unsigned char f = timer0_fract; m += MILLIS_INC; f += FRACT_INC; if (f >= FRACT_MAX)
{ f -= FRACT_MAX; m += 1; } timer0_fract = f; timer0_millis = m; timer0_overflow_count++; }
unsigned long micros() { unsigned long m; uint8_t oldSREG = SREG, t; cli(); m = timer0_overflow_count; t = TCNT0; if ((TIFR0 & _BV(TOV0)) && (t < 255)) m++; SREG = oldSREG; return ((m 0) { if (((uint16_t)micros() - start) >= 1000) { ms--; start += 1000; } } }
int main() { DDRB = 0; PORTB = 0; while(1) { PORTB = 0x10; delay(250); PORTB = 0x0; delay(250); } return 0; }
Előny: hogy sok minden gyárilag készen van, sokkal egyszerűbb a programozás Hátrány: lassabb, nagyobb a kód, mint ha Assembly-ben fejlesztett lenne. Rengeteg kész kód érhető el az interneten különböző célokra. Minden függvény és könyvtár funkcióra van példaprogram, amiből akár összeollózható a program, különösebb programozási ismeretek nélkül.
Nagyjából mindenre van kész kapcsolás és mintaprogram. Amire pedig nincs, az nem is létezik Érdekesebb projektek, amik Arduino-val lettek megvalósítva:
◦ CNC vezérlő ◦ Sakkozó robot ◦ Saját fejlesztés: Ipari digitális mérleg vezérlő elektronikája
A környezet annyira népszerű lett, hogy a nagyobb gyártók árulnak Arduino kompatibilis fejlesztő lapokat: ◦ Példa: Texas Instruments Launchpad Microchip ChipKit Adafruit Flora, Trinket
http://arduino.cc/ - hivatalos oldal learning szekciója http://learn.adafruit.com/category/learnarduino - Adafruit hivatalos tanuló oldala, rengeteg projekt és kiegészítő termék Számos könyv is elérhető
◦ Getting Started With Arduino ◦ Programing Arduino
A fentebb említett könyvek, leírások leginkább a programozásra fókuszálnak, elektronikai alapismeretekre nem. Ezért merem ajánlani saját könyveimet:
◦ Mikrovezérlős Rendszerfejlesztés C/C++ nyelven II. – Arduino Platform. ◦ Mikrovezérlős Rendszerfejlesztés C/C++ nyelven I. – PIC Mikrovezérlők ◦ Beszerzési hely: http://webmaster442.hu/letolthetoirasok/
Kérdések?
View more...
Comments