Főmenü megnyitása

Az Arduino egy szabad szoftveres, nyílt forráskódú elektronikai fejlesztőplatform, arra tervezve, hogy a különböző projektekben az elektronikus eszközök könnyebben hozzáférhetőek, kezelhetőek legyenek. Széles tömegek számára elérhető, mivel olcsó, könnyen beszerezhető, egyszerűen programozható, és csatlakoztatható más eszközökhöz.

Arduino
Arduino Logo.svg
Arduino Uno Revision 3
Arduino Uno Revision 3

Típus egykártyás mikrovezérlő
Processzor Atmel AVR, ARM Cortex-M, Intel Curie
Operációs rendszer nincs (Optiboot Bootloader)
Hivatalos weboldal

A fejlesztői platform az úgynevezett IDE-ből (integrált fejlesztői környezet), és az Arduino Board-okból áll. Előbbi segítségével programokat írhatunk és tesztelhetünk számítógépen, utóbbi pedig egy elektronikus eszköz, amelyre az előzőleg elkészített programokat feltölthetjük a számítógépen keresztül, majd elektronikus eszközöket vezérelhetünk a segítségével.

Az Arduino lapok elérhetőek kereskedelmi forgalomban kapatható, előre összeszerelt, vagy otthon összeszerelhető alkatrészcsomagként. Mivel nyílt forráskódú a hardver is, bárki készíthet magának saját változatot is belőle, vagy az eredetivel kompatibilis klónt.[1]

Tartalomjegyzék

SzoftverSzerkesztés

Az Arduino IDE egy kereszt-platformos Java nyelven írt fejlesztőkörnyezet, amely segítségével Arduino programokat készíthetünk, tesztelhetünk, majd az Arduino Board-okra tölthetjük. Az induláshoz a fejlesztőeszköz több mintaprogramot tartalmaz, amelyek segítségével egyszerűen megtanulhatjuk, hogyan tudunk LED-et villogtatni, fényerőt szabályozni, vagy a számítógéppel kommunikálni USB-n keresztül. Az Arduino programokat egy C/C++ alapú programozási nyelven írhatjuk, így az ezeket a nyelveket ismerők könnyen kiismerhetik magukat a környezetben. AZ IDE-hez tartozik a "Wiring" nevezetű C/C++ programkönyvtár, amellyel egyszerűen végezhetjük el a leggyakoribb input/output műveleteket.

HardverSzerkesztés

Board-okSzerkesztés

Az Arduino Board-ok többféle változatban készülnek, amelyek pl. méretben, a mikrovezérlő típusában, a belső memóriában, a be- és kimenetek számában különböznek. Vannak amelyek rendelkeznek beépített Ethernet, Bluetooth, Wi-Fi csatlakozási lehetőséggel.

Jelenleg is forgalomban lévő modellekSzerkesztés

  • Arduino/Genuino UNO

A jelenleg legszélesebb körben használt modell, 8 bites, 16 MHz-es ATmega328P processzorral. 14 digitális I/O lábbal és 32 kB flash memóriával rendelkezik.[2]

  • Arduino/Genuino 101

Egy kétmagos, kis fogyasztású 32 bites, 32 MHz-es Intel Curie processzorral, Bluetooth LE támogatással rendelkező lap, ugyanazon perifériákkal, mint az UNO. Flash memóriája 192 kB méretű.[3]

  • Arduino/Genuino Micro

Kisméretű, ATmega32U4 processzorral rendelkező változat, amely micro USB csatlakozóval rendelkezik és breadboardon való használatra tervezték. Beépített USB vezérlője van, ami segítségével akár egy egérként vagy billentyűként is működhet. 32 kB flash memóriája van.[4]

  • Arduino/Genuino Mega 2560

Komplex projektekhez használható 54 digitális I/O és 16 analóg bemeneti lábbal. ATmega2560 processzor és 256 kB flash memória van benne.[5]

  • Arduino/Genuino Zero

32 bites, nagyobb számítási teljesítményű változata az UNO-nak. Atmel SAMD21 processzor és 256 kB flash memória van benne. Előnye, hogy beépített debugger van benne.[6]

  • Arduino/Genuino MKR1000

Wi-Fi támogatással ellátott, 32 bites lap, ami IoT projektekhez lett tervezve. Gyárilag működik akkumulátorról, tölti is azt USB-ről. SAMD21 és 256 kB flash memória van benne, valamint egy Wi-Fi modul és ahhoz való antenna.[7]

Már nem gyártott modellekSzerkesztés

  • Arduino Duemilanove
  • Arduino Ethernet
  • Arduino BT
  • Arduino Mega
  • Arduino ADK
  • Arduino DUE
  • Arduino Ethernet
  • Arduino Fio
  • Arduino Leonardo
  • Arduino Esplora
  • Arduino Yún

Shield-ekSzerkesztés

Az Arduino-k funkcionalitását könnyedén kiegészíthetjük az úgynevezett Shield-ekkel, amelyek a Board-okhoz egyszerűen illeszthető elektronikai áramkörök. Ezek segítségével azt Arduino-t akár közvetlenül az internetre csatlakoztathatjuk, motorokat, LED-eket, vezérelhetünk vele, vagy Wi-Fi, Bluetooth hálózatra kapcsolódhatunk. A jelenlegi hivatalos Arduino Shield-ek:

  • Arduino WiFi Shield 101
  • Arduino Proto Shield
  • Arduino MKR Proto Shield
  • Arduino MKR Proto Large Shield
  • Arduino Yún Shield
  • Arduino Motor Shield
  • Arduino Ethernet Shield
  • Arduino GSM Shield
  • Arduino GPS Shield
  • Arduino Servo Shield

Ezeken kívül több cég gyárt világszerte Arduino kompatibilis Shield-eket, különböző célokra.

Néhány board összevetéseSzerkesztés

Típus chip CPU

speed

Táp Üzemi

fesz.

Digitális

pinek száma (pwm pinek)

Analóg

pinek száma

Flash

memória

SRAM

memória

EEPROM

mérete

Extrák
Arduino UNO ATmega328P 16 MHz 6..20V 5V 14 (6) 6 32 KB 2 KB 1 KB -
Arduino MINI ATmega328P 3,3V: 8MHz

5V: 16 MHz

6..20V 3,3V

5V

14 (6) 8 32 KB 2 KB 1 KB nincs USB portja
Arduino MEGA2560 ATmega2560 16 MHz 6..20V 5V 54 (15) 16 256 KB 8 KB 4 KB -
Arduino Nano ATmega328P 16 MHz 7..12V 5V 22 (6) 8 32 KB 2 KB 1 KB -
Wemos D1 ESP8266EX- 9..12V 3.3V 11 (11) 1 4 KB 2 KB 1 KB - integrált ESP8266
Duemilanove ATmega168

ATmega328-

6..20V 5V 14 (6) 6 16KB

32KB

1KB 512 byte

1KB

-
Digispark - - - 5V 14 10 16KB 2KB 1KB -
RoboRED - - - 5V/3.3V 14 6 32KB 2KB 1KB -
ATmega1280 ATmega1280 - - 5V 54 16 128KB 8KB 4KB -
Arduino Leonardo - - - 5V 20 12 32KB 2.5KB 1K -
Arduino Due - - - 3.3V 54 12 512KB 96K - -
ChipKIT Max32 Diligent - - 3.3V 83 16 512KB 128KB - -

Az Arduino memóriatípusaiSzerkesztés

FlashmemóriaSzerkesztés

A Flashmemória számít az Arduino-k "fő" memóriájának, ez tárolja a letöltött programot, és kikapcsolás után is megőrzi a tartalmát, azaz a programot elegendő csak egyszer letölteni ide, az minden ismételt bekapcsolás esetén "magától" újraindul. Programozás során nem számolhatunk a teljes memóriával, mivel a letöltőprogram (bootloader) és például a különböző kommunikációk is innen "csípnek le" részeket.

Ráadásul a letöltött könyvtárak is sok helyet tudnak innen foglalni, ezért alaphangon is egy 32 kb-s memória esetlén csak 24-30 kb-val számolhatunk (könyvtárak nélkül).

Ezen kívül a flash nem írható végtelenül újra, a maximális írásciklus-számát 100.000-ben limitálták. Ez arra elég, hogy egy naponta 10-szer újraírt programot mintegy 27 évig gond nélkül tároljon.

SRAMSzerkesztés

Leegyszerűsítve, az SRAM (static random-access memory; statikus tetszőleges hozzáférésű memória) tárolja a programban definiált belső változókat. Az SRAM - szemben a flash-memóriával - árammentes állapotában nem őrzi meg a tartalmát, ezért minden bekapcsolást követően a program újradefiniálja a változókat és azok az ott meghatározott "default" értékükkel kerülnek az SRAM-ba.

EEPROMSzerkesztés

Az EEPROM (Electrically Erasable Programmable Read-Only Memory, programozható, törölhető, csak olvasható memória) a board-ok nem felejtő változómemóriája. Ez - hasonlóan a Flash-hez - kikapcsolás során is megőrzi a tartalmát, de - és szintúgy, mint a Flash esetén - "csak" 100.000 írásciklusra van hitelesítve, azaz például a ciklikus adatírásra nem igazán alkalmas. Ráadásul egy kicsit lassabb is a kezelése, mint a "normál" SRAM-é. Ezekből a technikai jellemzőkből adódóan az EEPROM az alábbi funkciókra alkalmazható:

  • konfiguráció(k) letárolása
  • indulási alapbeállítások mentése
  • újraindulásoktól független számlálók, értékek, gyüjtött értékek (pl. Üzemóraszámláló) mentése

Az Arduino TTL szintjeiSzerkesztés

A logikai magas (HIGH) és alacsony (LOW) szinteket alkalmazó (digitális) elektronikai berendezések többnyire az un. TTL logika (Transistor-Transistor Logic) alapján definiálják a magas/alacsony jelekhez köthető feszültségszinteket. Ezektől a szintektől az Arduino logikai szintjei némileg eltérnek:











  • VOH: Minimális kimeneti tápfeszültségszint. Efölött a TTL eszköz HIGH jelet biztosít.
  • VIH: Minimális bemeneti feszültségszint a magas (HIGH) jelhez.
  • VIL: Maximális bemeneti feszültségszint az alacsony (LOW) jelhez.
  • VOL: Maximális kimeneti feszültsége egy alacsony (LOW) jelhez.

A letakart részeken a bemenet kiértékelése (HIGH vagy LOW) bizonytalanná válik.

Míg a program-logikai szinteket a true (igaz, 1) és false (hamis, 0) konstansokkal, addig a pin-ek állapotát a HIGH (magas, 1) illetve a LOW (alacsony, 0) konstansokkal lehet jellemezni.

A HIGH állapot egy jel olvasása esetén az 5V-os bemeneteken 3V jelszint felett, míg a 3,3V bemeneteken 2,0V felett jelentkezik. A LOW állapotok 5-os board-oknál 1,5V alatt, 3,3V-os boardoknál kb. 1,0V alatt jelentkeznek.

A köztes feszültségszinteket (5V-os boardoknál 1,5V - 3,0V, 3,3V-os board-oknál 1,0V - 2,0V) érdemes kerülni, mert a bemeneti állapot bizonytalanná válik.

Amennyiben a bemeneti felhúzóellenállás előzőleg aktiválásra került az adott pin-en, akkor onnan jó eséllyel soha nem fogunk HIGH állapotot olvasni, lásd: digitalRead().

Kimenetek esetén a HIGH állapot kiadását követően a pin a maximális feszültségszintet veszi fel, azaz 3,3V-os board-oknál a 3,3V-ot, az 5V-osoknál az 5V-ot.

Amennyiben előzően a belső felhúzóellenállást aktiváltuk, a kimeneti feszültség is HIGH jel esetén az 5V helyett kevesebb (kb. 3,3V) lesz, lásd: digitalWrite().

Pin-ek terhelhetőségeSzerkesztés

Az Arduino-k (már csak egyszerű konstrukciójuknál fogva) nem igazán terhelhetők, és ezzel minden nagyobb áramot igénylő vezérlésnél (szolenid szelepek, relék,..) figyelembe kell venni. Komolyabb túlterhelés esetén a board egyszerűen meghal, kisebb (és rövid idejű túlterhelés esetén) lekapcsol. Rosszul méretezett relévezérlés esetén előfordulhat, hogy az Arduino egyszerűen ki-be kapcsolgat (a relék meg ennek megfelelően "klattyognak") - nos ilyen esetben érdemes átgondolni a board terhelését.

Főbb terhelhetőségi határértékek (ezek persze típusonként változhatnak):

  • Pinek terhelhetősége az UNO esetén (5V): 20 mA
  • Pinek terhelhetősége az Mega board esetén (5V): 40 mA
  • Pinek terhelhetősége (3.3V esetén): 10 mA
  • Az összes pin (Vcc, GND) maximális terhelhetősége (UNO): 200 mA
  • Az összes pin (Vcc, GND) maximális terhelhetősége (Mega): 400..800 mA

Pin-ek felhasználásaSzerkesztés

  • A pin0 és pin1 a soros kommunikációhoz van kötve, így amennyiben információt akarunk kapni a board-tól, és használjuk a "Serial.print" utasítást, hogy a serial monitorra információt küldjünk, ezek a pinek erre az időre digitális ki-bemenetként nem használhatók. Lehetőség szerint ne is definiáljuk ezeket digitális csatornaként, vagy ha ez nem meg, mert kifogytunk a pin-ekből, akkor olyan funkciót projektáljunk ide, melytől el tudunk köszönni a serial használatának az idejére.
  • Az analog pin-eket minden további nélkül fel lehet használni digitális portként, ilyenkor egyszerűen, például az Uno esetén pin 14..19-ként kell rájuk hivatkozni.

Arduino ISPSzerkesztés

Az ISP (In-system programming) port, ami jellemzően az Arduino (és kompatibilis) kártyákra van integrálva, lehetőséget biztosít arra, hogy az USB/bootload megkerülésével törtsünk le programot a kártyára. Emellett kommunikációs lehetőséget is biztosít SPI kommunikációra, például kártyák között.

Ráadásul ezek a lábak az IO portok megfelelő lábaival (lásd lent) is párhuzamosan vannak kötve, így itt egyszerűen csak össze vannak "csoportosítva" a letöltésekhez. Lehetőség van arra is, hogy egy Arduino kártyát alkalmazunk arra, hogy más Arduino-kra programokat töltsünk fel az ISP-n keresztül.

Arduino ISP port neve rövid leírás
MISO Master In Slave Out masterként bemenet, slaveként kimenet
VTG 5V betáp 5V+
SCK Serial Clock soros órajel, SPI-nél a master adja
MOSI Master Out Slave In masterként kimenet, slaveként bemenet
RST Reset reset
GND 0V 0V

Arduino SPISzerkesztés

Az Arduino kártyákon egyik gyakran alkalmazott kommunikáció az SPI. Az Arduino-kon az ISP csatlakozómodul is SPI-t alkalmaz, ez viszonylag egyszerűen projektálható (sajnos az "SS" itt nem kapott helyet):



Az alapértelmezett portok a kommunikációhoz a különböző board-okon az alábbiak:

kártya neve SPI SS

(kiválasztás)

SPI MOSI SPI MISO SPI SCK
Arduino UNO 10 11 12 13
Arduino Mega 53 50 51 52
Arduino Nano D10 D11 D12 D13

Arduino ISRSzerkesztés

Az ISR (interrupt service routine) (magyarul megszakításkezelés) funkció a gyorsan váltakozó állapotú bemenetek felügyeletére lett kifejlesztve. Ezek a megszakítások jellemzően a gyors impulzusok (Hall-impulzusok - átfolyásmérők, áramjel-impulzusok) számlálására vagy figyelésére alkalmasak, függetlenek a program futásciklusától.

Szoftver oldalról ezeket a jeleket az attachInterrupt() funkcióval kell lekezelni, és csak az erre a célra kijelölt portokon lehet ezeket a gyors jeleket beolvasni:

kártya interrupt-ra kijelölt digitális portok
Arduino Uno, Arduino Nano, Mini, egyéb 328-alapú 2, 3
Arduino Mega, Mega2560, MegaADK 2, 3, 18, 19, 20, 21
Micro, Leonardo, egyéb 32u4-alapú 0, 1, 2, 3, 7
Wemos D1 az összes digitális kimenet (kivéve a D0)

Arduino PWMSzerkesztés

A PWM (pulse-width modulation) egy olyan jelképzési forma, mellyel a digitális kimeneten analóg kimeneti jeleket képezhetünk, azaz ez egy digitális-analóg konverter funkció. A PWM kimenetek vezérlését az Arduino-knál az analogWrite() funkcióval lehet végezni. A kijelölt - ~-lal jelölt - PWM digitális kimeneteken 980 Hz-es frekvencia érhető el, a többin pedig 490 Hz.

Board kijelölt PWM kimenetek
A legtöbb, ATmega168-as vagy ATmega328-as board-oknál

Arduino Uno, Arduino Nano

3., 5., 6., 9., 10. és 11. pin
Arduino Mega 2..13. és 44..46. pin
Wemos D1 az összes digitális kimenet (kivéve a D0)
régebbi board-oknál 9, 10 és 11. pin

Arduio AREF pinSzerkesztés

Az AREF pinen keresztül, az analogReference() funkción keresztül az analóg bemenethez használt külső (type: EXTERNAL) referenciafeszültséget (azaz a bemeneti tartomány maximális értékét) lehet beállítani.

Arduino soros kommunikációSzerkesztés

Az Arduino board-ok alapértelmezett kommunikációja a soros (UART), melyet az USB-n keresztül folytatnak a programozókészülékkel vagy a kommunikációs partner PC-vel. Az USB porttal párhuzamosan van kötve a board-ok TX és RX pin-jei is, így amennyiben soros kommunikációt használ, ezeket a pin-eket nem használhatja digitális portként.

Ez a csatorna természetesen használható más UART kommunikációra is, például RS-232-re, de ebben az esetben ügyelni kell a feszültségszintekre, ami az RS-232 esetén jellemzően ± 12V. Valamennyi Arduino board-nak legalább egy soros (UART) portja van, ezeknek a pin-kiosztása:

board soros kommunikáció pin-jei
Arduino Uno, Nano Rx←0, Tx→1
Arduino Mega, Due Serial1: pin 19 (RX) pin 18 (TX), Serial2: pin 17 (RX) pin 16 (TX), Serial3: pin 15 (RX) pin 14 (TX)

Arduino I²CSzerkesztés

Az Arduino kártyákon az egyik leggyakrabban alkalmazott kommunikáció az I²C. Az alapértelmezett portok a kommunikációhoz a külömböző board-okon az alábbiak:

kártya neve SDA (adat-port) SCL (órajel-port) megjegyzés
Arduino UNO A4 A5
Wemos D1 A4 (SDA) A5 (SCL) az összes digitális kimenet (kivéve a D0) alkalmazható I²C-re

Az Arduino WIRE könyvtárának a leírása (ez valósítja meg az I²C kommunikációt) a WIRE library funkció valósítja meg.

További olvasnivalók, linkekSzerkesztés

JegyzetekSzerkesztés

ForrásokSzerkesztés