írás és olvasás az állandó tárolón
Az Arduino három különböző típusú memóriával rendelkezik, az egyes típusok kapacitása a mikrokontroller fajtájától függ:
- Flash: Többszörösen újraírható memória, tartalma az eszköz kikapcsolását követően is megmarad. A fejlesztőkörnyezet által lefordított kódunk itt tárolódik gépi utasítások formájában.
- RAM: Gyors hozzáférésű memória s programunk futtatása közben ideiglenesen tárolt adatok számára. Tartalma kikapcsoláskor elvész. Írható és olvasható adattároló eszköz.
- EEPROM: Flashnél régebbi technológia a kikapcsolást követően is megőrzendő adatok, konfigurációs beállítások, kezdeti állapotok, hosszabb szövegek eltárolásához. Nagyságrendileg 100.000 törlés az életideje. A ROM csak olvasható adatok tárolására alkalmas.
Az EEPROM könyvtár azokat a funkciókat fogja össze, amikkel bájtonként tudjuk írni és olvasni a beépített memória ezen típusát. Az Arduino Mega kontrollerének (ATmega1280 és ATmega2560) 4096, az UNO és Duemilanove (ATmega328) 1024, a Diecimila, NG (ATmega168) és Digital (ATmega8) 512 bájt a kapacitása.
PÉLDA
I2C EEPROM with the Arduino Part 1, Part 2, Part 3
az Ethernet Shield Könyvtára, internetes kommunikáció
Az ethernet egy LAN alapú specifikáció. 1985 óta a számítógépeket összekötő hálózatok fő kommunikációs technológiai szabványa és fizikai rétegtől az adatkapcsolati rétegig nyújt szolgáltatásokat. A fizikai réteg magát a hardware-t jelenti, az adatok bitenkénti csatornákra juttatását. Az adatátviteli réteg pedig két hálózati elem közötti átvitelt biztosító eljárásokért felelős.
Az Ethernet kiegészítő modullal (shield) és a hozzá tartozó könyvtár segítségével eljuthatunk a hálózati rétegig és internetképessé tehetjük az Arduinot. A shield a Wiznet, SPI kommunikáción alapuló W5100-as integrált áramkörére épül és fenntartja az SD kártya csatlakoztatásának lehetőségét is. A kiegészítőt elég csatlakoztatni. A következő példákban megnézzük, hogyan lehet bejövő kapcsolatokat kezelő szerverként és kimenőket intéző kliensként egyaránt működtetni.
A könyvtár osztályai:
Ethernet Osztály - Az ethernet könyvtárat és a hálózati beállításokat inicializálja
IP Osztály - Meghatározza az IP-címet, ami lehet helyi és távoli cím is
Szerver Osztály - Létrehoz egy szervert ami adatot küld és fogad a rá kapcsolt kliensektől
Kliens Osztály - Létrehoz egy klienst, ami a szerverrel kommunikál
EthernetUDP Osztály - Az UDP (User Datagram Protocoll) az internetet alkotó protokollok egyike, amivel számítógép-alkalmazások cserélnek úgynevezett datagrammokat egymás között. Leginkább olyan esetekben érdemes használni, amikor nem fontos a hibaellenőrzés és -javítás a csomagok átvitelekor. Ez általában valós idejű adatátviteli rendszereknél fontos, ahol egy csomag elvesztése kisebb probléma, mint az ellenőrzésekből fakadó késés.
PÉLDA
Arduino powered Lucky Cat as physical Webcounter
Arduino WiFi Shield Könyvtára, vezeték nélküli internetes kommunikáció
Nagyon hasonlít az Ethernet Könyvtár felépítéséhez, néhány funkciót ugyanúgy kell meghívni. Szerverként fogadhat bejövő kapcsolatot, vagy kliensként hozhat létre kimenőeket. WEP és WPA2 Personal titkosítást támogatja, de a WPA2 Enterprise-t nem. Fontos megjegyezni, hogy ha az SSID nem sugároz, akkor nem tud csatlakozni a shield. (Az SSID egy vezeték nélküli hálózatokon használt név.)
A shield SPI Buszon keresztül kommunikál. Az UNO boardon ezek a digitáls 11, 12, 13 pinek. A digitális 10 pin az SS ezt kimenenként meghagyjuk, és a digitális 7pint használja az ardunio és a wifi shield handshakeing-re ezért azt se használjuk.
A könyvtár osztályai:
Wifi Osztály - A wifi könyvtárat és a hálózati beállításokat inicializálja
IP Osztály - Meghatározza az IP-címet, ami lehet helyi és távoli cím is
Szerver Osztály - Létrehoz egy szervert ami adatot küld és fogad a rá kapcsolt kliensektől
Kliens Osztály - Létrehoz egy klienst, ami a szerverrel kommunikál
EthernetUDP Osztály - Az UDP datagrammokat küld és fogad
PÉLDA
Arduino + Wifi + RGB LED Strip = Information display.
egy sztenderd soros protokoll a számítógépen futó alkalmazásokkal való kommunikációhoz
A Firmata egy kommunikációs protokoll, aminek célja a számítógépes környezetekkel való adatcsere megkönnyítése.
Sok olyan gyors prototipizálásra alkalmas környezet létezik, amelyiken a firmata protokoll használata már megoldott. Ilyenek például a VVVV, Max/MSP, Processing és Flash. Létezik olyan firmata alapú program (firmware), ami az Arduino minden funkcióját elérhetővé teszi soros parancsokon keresztül, az analóg olvasástól a digitális csatornák kapcsolgatásáig, és ezeket saját számítógépen futó fejlesztőkörnyezetünkből el is tudjuk érni. A könyvtár használatával anélkül hozhatunk létre célfeladatokra kétirányú soros kommunikációs programot, hogy saját protokollt (pl. handshaking) vagy objektumokat fejlesztenénk.
StandardFirmata
Minden benne található funkciót támogat, elérhetjük a digitális és analóg ki-/bemeneteket, I2C kommunikációt, használhatunk digitális csatornákat szervo meghajtónak.
PÉLDA
Spherical Joystick - Arduino Processing Firmata
GSM Shield Könyvtára, GSM/GRPS hálózathoz
Segítségével a legtöbb olyan műveletet végrehajthatjuk Arduinon, amit GSM telefonon: telefonhívást, SMS küldést és fogadást, és internetre csatlakoást GPRS hálózaton keresztül. A SoftwarerSerial Könyvtárral kommunikál az Arduino és a GSM shield modeme.
PÉLDA
Video call using 3G/GPRS Shield for Arduino
LCD kijelző vezérléséhez
A Hitachi HD44780 folyadékkristályos kijelző meghajtó IC hosszú időn keresztül uralta a piacot, mint a rendkívül populáris, kizárólag monokróm szöveg megjelenítésére alkalmas faxok, telefonok, lézernyomtatók, fénymásoló gépek kijelzőjének vezérlője. Mostanra hobbisták és gyors prototipizálók közkedvelt megoldásává vált a mikrokontrollerek alfanumerikus üzeneteinek megjelenítésére. Az IC által meghajtott kijelzők pár általános szabálynak felelnek meg. Egy karakter mindig 5 vízszintes és 8 függőleges pixelből áll. A leggyakoribb típus egy sorban 8 karakter megjelenítésére alkalmas (8 x 1), de létezik 16 x 2, 20 x 2 és 20 x 4-es is. A kijelzők készülhetnek LED-es, fluoreszcens, elektrolumineszcens háttérvilágítással, vagy anélkül. Az IC maga is egy mikrokontroller, ROM-jában 208 karakter térképét tárolja – japán verziója a kana, európai verziója nyugati és cirill ABC betűiből áll. A LiquidCrystal könyvtár a vezérlő IC instrukciós kódjait és kommunikációs protokollját implementálta pár könnyen használható függvény formájában.
PÉLDA
First Arduino Project
SD kártyára íráshoz és kiolvasásához
Az SD Könyvtárat különböző fedpanelekkel használhatjuk. Támogatja a FAT16 és FAT32 fájlrendszereket, szabványos SD és SDHC kártyákon. Rövid fájl neveket használ (8.3 karakter). DE tartalmazhatják a mappa nevét is, ilyenkor / jelet használjunk: directory / filename.txt
Az SD kártyák is SPI buszon kommunikálnak, amiket viszonylag könnyen és nagyon sokféleképpen hasznosíthatunk arduinos projektjeinkben (háttértár, hangfelvétel, lejátszás, adatrögzítés, GPS). Ezért modul használata nélkül is működnek, az SPI könyvtár FAT32 fájlendszerhez módosított verziójával. Az UNO boardon az SPI-hez tartozak a digitáls 11, 12, 13 pinek. A digitális 10 pin az SS ezt kimenenként meghagyjuk, és a digitális 7pint használja az ardunio és a wifi shield handshakeing-re ezért azt se használjuk.
PÉLDA
Arduino Mp3 Player - Arduino Jukebox
szervó motorok vezérléséhez
A szervomotorok olyan aktuátorok, melyek a visszacsatolás elvén működnek. A legegyszerűbb esetben a szervo tengelyét elfordító motor egy áttételen keresztül egy potmétert is elforgat, ami egy komparátor áramkör egyik bemenetéhez kapcsolódik. A komparátor egyszerű analóg integrált áramkör, amit legegyszerűbben úgy képzelhetünk el, mint egy mérleget. A szervo esetében a „mérleg” egyik oldalán a potméter – és így a tengely – állapota, a másik oldalán a szervo bemenetére adott feszültségszint a „súly”, a „mérleg nyelve” pedig a motor elfordulási irányát és erejét reprezentálja. Ily módon meghatározott feszültségszinteknek megfeleltethetők a motortengely állásának szögei. A Servo könyvtárral az Arduino PWM képes kimeneteit felhasználva, a csatlakoztatott szervomotorokat az elfordulás szögének megadásával irányíthatjuk. Miután a potméter nem képes a körbeforgásra, a megadható szögek 0 és 180 fok közé esnek és mindig egész számok.
Hobbi és modellezési célra három méretben szabványosították a szervokat. Alaptípusaikat tekintve megkülönböztetünk nagy nyomatékú és nagy sebességű motorokat. Mindegyikre jellemző, hogy három vezeték tartozik hozzájuk: föld (barna/fekete), táp (piros) és vezérlés (narancs/fehér).
PÉLDA
Arduino Wireless Animatronic Hand
The SM-1 Project Part 4, 5 and 6: Testing the Lamp
Arduino Uno + Accelerometres + Servos
sztepper motorok vezérléséhez
A léptetőmotorok olyan egyenáramú motorok, amiknek az állórésze több elektromágnest tartalmaz. A tengelyen elhelyezett aktív mágnest (forgórész) az egymás után szekvenciálisan be-/kikapcsolt elektromágnesek kis lépésekben elfordítják. Jelentőségük az, hogy visszacsatolás nélkül nagy pontosságú és apró lépésekből álló forgómozgást lehet velük elérni. Két alaptípust különböztetünk meg az elektromágnesek tekercseinek kivezetései alapján. Az unipoláris motorok esetén minden tekercs egyik vége közös vezetékként hagyja el a motor burkolatát, míg a bipoláris motorok esetén a tekercsek kivezetései szabadon állnak.
A tekercseket meghatározott rendben kell működtetni, hogy a felépülő mágneses tér négy lépésben fordítson a tengelyen. (A bipolásris léptető motort L293D vagy SN754410ne H-híddal vezérelhetjük)
A léptetőmotorokat leíró legfontosabb adat, hogy egy lépés alatt hány fokot fordulnak el. Egy 1,8 fok/lépés precizitású motor 200 lépésben fordul teljesen körbe, tehát a 14.1 táblázatban látható lépéseket fordulatonként 200-szor kell megismételni.
PÉLDA
stepper motor powered security door project
Serial Peripheral Interface (SPI) Bus használata eszközök közötti kommunikációra
Az SPI (Serial Peripherial Interface) egy szinkron soros protokoll. Alapvető különbség az I2C-hez képest, hogy külön adatvonalat tart fenn a mestertől a szolga felé és az ellenkező irányú kommunikáció céljára, továbbá nem használ címzést, az egyetlen mester az eszközöket egyenként külön vonalakon engedélyezi. Mindezek együttesen egy gyorsabb soros adatátvitelt tesznek lehetővé a mikrokontroller és perifériái között. A közös adatvonalak a MISO (Master In Slave Out), amin keresztül a mester fogad adatokat, a MOSI (Master Out Slave In), amin a szolgák fogadnak adatokat és az SCK (Serial Clock) órajel a szinkronizáláshoz. Az eszközönként specifikus vonal az engedélyezéshez az SS (Slave Select). Amikor egy szolga SS vonala logikai alacsony szintre kerül, létrejön a kapcsolata a mesterrel, ha magas szinten tartjuk, akkor teljesen kimarad a buszon való kommunikációból, így nem zavarhatja a többi perifériát.
A nyílt fejlesztésű rendszernek és a közösségben együttműködő programozóknak köszönhetően az Arduinoval számtalan SPI alkatrész került implementálásra, és a könyvtár ebből a rutinból fakadóan rendelkezik olyan függvényekkel, amik megkönnyítik az új eszközök használatát. Mindazonáltal az SPI protokoll meglehetősen szabadon értelmezett az eszközgyártók körében, ezért, ha egy új alkatrészhez szeretnénk programot írni, akkor nézzük meg alaposan az adatlapját.
Az SPI kivezetéseit megtalálhatjuk az Arduino alaplapján egy külön csatlakozón is, amit ICSP-nek (In Circuit Serial Programming) hívunk:
soros szoftveres kommunikáció bármelyik digitális pinen keresztül
Az Arduino egyetlen fizikai soros porttal rendelkezik, ami az integrált port a 0-ás és 1-es digitális csatornákon kommunikál, ahol a számítógéphez USB átalakítóval is csatlakozik.
A SoftwareSerial könyvtárral a fizikai feldolgozóegység terhére (UART) a többi digitális csatornán is létre lehet hozni soros kommunikációs felületeket. Segítségével egyszerre kapcsolódhatunk a számítógéphez és más soros eszközökhöz, kijelzőkhöz, digitális szenzorokhoz, vagy kialakíthatunk soros hálózatot több Arduino között. A szoftveres portok maximális sebessége is 115200 baud lehet, ráadásul megváltoztatható a jel polaritása, ami szélesíti a kompatibilis egységek spektrumát, azonban több port létrehozása esetén az adatok egyidejű fogadása nem lehetséges.
Arduino TFT monitoron szöveg íráshoz, kép és formák megjelenítéséhez
Kétféleképpen lehet konfigurálni a kijelzőt. Az egyik hogy az Arduino SPI csatlakozóját használjuk, a másik lehetőség hogy a pineket egyenként kalibráljuk. A kettő között az a különbség hogy az SPI lényegesen gyorsabb. A képernyőn mindkét esetben ugyanazt látjuk. De ha SD kártyával összekötjük, mindenképp az SPI csatlakozót kell használnunk. Mint ahogy a TFT Könyvtárhasználata esetén is!
PÉLDA
TFT 2.2" SPI 240x320 Display w/ Arduino Nano
TFT LCD Acclerometer GRAPHING Arduino Project!
Two Wire Interface (TWI/I2C) kommunikáció, adat küldés és fogadás eszközök hálózatára
Az I2C, vagy más néven TWI (Two Wire Interface) egy soros buszrendszer, amit a Philips fejlesztett ki, hogy mikrokontrollerekhez alacsony sebességű perifériákat két vezeték használatával lehessen illeszteni. Ilyen eszközök például a Maxim által gyártott csatornabővítők (MAX6956 I2C-t 20 párhuzamos I/O csatornává alakít), LED meghajtók, adatátalakítók (pl. digitalizálók), Microchip által gyártott soros EEPROM-ok (legnagyobb 1Mbyte-os), vagy az NXP termékei: órák, memóriák, audio és video jelfeldolgozók, szintátalakítók.
A buszokra általánosságban az a jellemző, hogy az eszközök megosztoznak az adatvezetékeken, ezért minden eszköznek rendelkeznie kell egy címmel, ami megkülönbözteti a többi buszhoz kapcsolt egységtől. Az I2C esetén a címzés eszköztől függően kétféle lehet, 7 vagy 8 bites. Az utóbbi esetben 7 bit a tényleges címet kódolja, míg a 8. bit arról ad információt, hogy a címen írás vagy olvasás folyik. A Wire könyvtár mindkét típust támogatja. Az adatvezetékeket rendre SDA (Serial Data) és SCL (Serial Clock) neveket viselik, míg az egyiken a szinkronitást fenntartó órajel, a másikon a szekvenciális adat jelenik meg bitenként. Az Arduino mikrokontrollere fizikailag tartalmaz csatolófelületet a buszhoz, aminek kivezetései UNO – és megelőző típusok – esetében az (analóg bemenetként is használható) A4 (SDA) és A5 (SCL).
Ezen a busztípuson kétféle eszköztípus, egy mester (Master) és a címek elfogyásáig tetszőleges mennyiségű szolga (slave) eszköz kommunikálhat. A mester eszköz az, aki adott címen végrehajthat írást vagy olvasást, a szolgák pedig, akik a mester parancsait követik.
A könyvtár alapbeállítása szerint a mester az Arduino, de ha könyvtár inicializálásakor címet adunk neki, akkor szolgaként is tudjuk használni – ez akkor lehet hasznunkra, ha olyan hálózatot szeretnénk építeni, amihez I2C eszközök is és több Arduino is csatlakozik.
PÉLDA
ATmega8 (AVR) and I2C sensors.
forrás: http://arduino.cc/en/Reference/Libraries#.Uy7kX_l5N8F