1. Fizikai számítástechnika
elektronikai alapok és arduino programozás
Harsányi Réka és Juhász Márton András (társszerző)
A fizikai számítástechnika óra célja, hogy a
művész hallgatók hozzájuthassanak minimális
elektronikai alapokhoz, megismerjék
az arduino-t, ami egy nyílt forráskódú
mikrokontroller. Ki és bemenetei alkalmasak
arra hogy vezéreljenek eszközöket, és néhány
vizuális programmal is összeköthetőek, így
soros portként alkalmazható. Speciálisan
művészek számára fejlesztették ki, saját
programnyelvvel rendelkezik amit könnyű
megérteni. Számos angol nyelvű lecke és
könyv áll rendelkezésre ebben a témakörben.
Ellenben magyar nyelvű nincs.
2. [ Mi az a fizikai számítástechnika? ]
Nem más mint annak a szemléletmódnak az elsajátítása, hogy miként kommunikálnak az emberek
számítógépeken keresztül, ide értve akár a mikrokontrollereket is, amik vezérlési feladatokra
optimalizált extra kicsi számítógépek. Így könnyen hozhatunk létre interakciókat. Ehhez viszont meg
kell tanulnunk a megfelelő nyelvezetet, hogy hogyan változik át fény-, hang-, hő- (hatás), stb.
elektromos jellé, és hogyan tudunk ezekhez az analóg adatokhoz hozzáférni és digitális jellé
alakítani, valamint reagálni rájuk. Tanulunk szenzorokról, alacsony feszültségű motorokról. Ez egy
aktív részvételt igénylő tanulási folyamat, ami azt jelenti, hogy sok időt kell eltölteni áramkörök
építésével, forrasztással, programozással és mindezek elemzésével, megértésével. Persze
mindezekkel párhuzamosan az elektronika alapjait is el kell sajátítaniuk a diákoknak. Azt, hogy
melyek a legalapvetőbb alkatrészek és mik a tulajdonságaik, hogyan kell őket áramkörbe kötni.
A fizikai számítástechnika fontos részét képezi még a DIY (do it yourself=csináld magad) vonal. Pl.
némelyik szenzor otthon is elkészíthető megfelelő anyagokból, lényegesen költséghatékonyabban.
3. [ Hogyan épül fel a tananyag? ]
ELEKTRONIKAI ALAPOK
Az első 6 fejezet az elektronika alapokra koncentrál:
multiméter használata, Ohm és ellenállás, elektromosság, rövid áramkör, Volt
és feszültség, Amper és áramerősség, olvadóbiztosíték használata, potméter, egyenáram és
váltakozó áram, ellenállások és színkódolásuk, kísérletezés a feszültséggel, Watt és teljesítmény,
alapvető mérések / mértékek / számítások, elemek soros és párhuzamos kötése, áramköri jelek
kapcsolók működése, kondenzátor, Farad és kapacitás fogalma, dugaszolós panel felépítése és
használata, nyomógomb: idő és kapacitás viszonya, feszültség ellenállás és kapacitás viszonya,
tranzisztor: NPN / PNP, tranzisztor és jelfogó, áramkör ellenőrzése multiméterrel, kísérletezés
hangszóróval: oszcillálás, alapvető forrasztási képesség elsajátítása, dióda, hálózati adapter hack,
próbapanel használata és típusai, pulzáló fény egyszerű áramkörből, elemek élettartamának
kiszámítása adott áramkörben, mágneses érzékelő/kapcsoló áramkörbe építve, integrált áramkörök,
digitális elektronika, logikai kapu alapok és csatlakoztatásának szabályai, mágneses tekercs és
indukció, DC stepper és servo motorok, játékokat működtető szerkezetek (hangra aktiválódó lézer,
tapsszenzor, elemlámpa, led mátrix, lézerpointer,stb.)
4. [ Hogyan épül fel a tananyag? ]
ARDUINO ALAPOK
A további fejezetek a hivatalos Arduino leckéket tartalmazzák
7.
Arduino: bevezetés, arduino felépítése, program telepítése és használata, programozás lépésről
lépésre, LED nyomógombbal, ki- és bemenetek, PWM, fényszenzor/fotoellenállás, analóg bemenet,
soros kommunikáció, serial motor használata, motor meghajtása, hibakeresés
8.
Arduino: operátorok, funkciók, szintaxisok; http://www.arduino.cc/en/Tutorial/HomePage
hivatalos leckék: 1. alapok: kiolvasás digitális és analóg pinből, 2. digitális pinek: LED villogtatás,
nyomógomb, hang, egyszerű nyomógombos billentyűzet
9.
Arduino: hivatalos leckék: 3. analóg pinek: be- kimenet serial.print, bemenetbe potméter,LED
fadeelése, analóg szenzor kalibrálása, PWM, egyenletes kiolvasás analóg szenzorból
5. 10.
Arduino: hivatalos leckék: 4. kommunikáció, Max MSP-vel, VVVV-vel, Processinggel: ASCII
karakterkészlet, LED fade egérmozgatással, adat grafikon Processingben, fizikai pixel, virtuális szín
keverő, meghívás ás válasz, soros bemenet – igaz vagy hamis állítások
11.
Arduino: hivatalos leckék: 5. vezérlő struktúrák: if feltétel, for, array, while, switch állítás
12.
Arduino: hivatalos leckék: 6. szenzorok: gyorsulásmérő szenzor kopogás észlelése piezo-val,
ultrahangos távolságérzékelő; 7. kijelzők: LED dióda bargraph, 8x8 LED panel
13.
Arduino: hivatalos leckék: 8. a string osztály, karakterek
14.
Arduino: EEPROM, Ethernet, Firmata, LiquidCrystal, SPI – könyvtárak
15.
Arduino: Servo, Software Serial, Stepper motor, Wire, és Arduino ISP - könyvtárak
16.
Hivatkozások gyűjteménye
6. [ Elektronikai alapok ]
A diákok megismerkednek az alapvető alkatrészekkel és eszközökkel, miközben elektronikai eszközöket
szerelnek szét és raknak össze utána valamilyen rendhagyó formában. Egyúttal belekóstolnak a koncepció
tervezásbe is, mivel adott témakörben kell fiktív alkotásokat létrehozniuk. A BKF történetében már
megvalósult ezekből egy kiállítás Rekreátorok címmel. Az erről készült dokumentumfilm itt látható:
https://www.youtube.com/watch?v=V6fzfaAOEb4
A fizikai számítástechnika órán
belül ez a blokk egy áttekintésre,
jobb megértésre szolgál. Mivel a
fókusz az arduino programozáson
van.
7. [ Mi az az Arduino? ]
Egyrészt egy mikrokontroller, másrészt a programozási környezet neve.
Több fajtája létezik, mi az órán az Arduino Duemilanove-t használjuk.
Az Arduino egy nyílt forrású gyors prototipizáláshoz ideális mikrokontroller modul. Használata a világos
felépítésű elektronikának és jól értelmezhető programnyelvnek köszönhetően könnyen és gyorsan
elsajátítható. Hirtelen elterjedése interaktív művészeti alkotásokban, hobbi alkalmazásokban és gyors
vezérléstechnikai megoldások kivitelezésében egy jól kiépült nemzetközi tudásbázist hozott létre,
hozzáférhetővé téve az elektronika egyszerű használatát minden érdeklődő számára.
Sokrétű ki és bemenetein keresztül fel tudja venni a kapcsolatot bármilyen jellegű szenzorral és
programjának megfelelő válaszadásra képes, meghajtva lámpákat, motorokat, kijelzőket... A
mikrokontrollert Arduino nyelven lehet programozni ami a Wiring nyelvén alapszik, felhasználói
felületét pedig a Processing alapja nyújtja. Az Arduino egyedülálló áramkörként is működtethető, vagy
összekapcsolható számítógéppel amin Flash, Processing, MaxMSP, GarageBand, illetve egyéb soros
kommunikációra képes programokkal képes együttműködni.
Az Arduino a 2006-os Ars Electronica digitális közösségek szekciójában is elismerésben részesült. A
csapat: Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino, és David Mellis. Készült egy
dokumentum film is az Arduino fejlesztéséről (angolul elérhető). https://vimeo.com/18539129
8. [ Mi az hogy Open Source? ]
Az Open Source a számítástechnika világában népszerű kifejezés. Jelentése: nyílt forráskód.
Az ilyen programok forráskódjához bárki hozzáférhet és kedvére alakíthatja, módosíthatja,
mi több a módosítást üzletileg is termékké teheti. A a programok ingyen letölthetők
honlapukról (arduino.cc). A kapcsolások és a nyomtatott áramköri tervek szintén
hozzáférhetők és magáncélra szabadon felhasználhatók.
“Az Open Source - Nyílt forráskódú szoftver jelentése:
Jelentős vita alakult ki a két tábor között, annak eldöntésére, hogy melyik fogalom
létezett előbb és, hogy melyik fogalom illik jobban, gyakorlatilag két nagyon hasonló
szoftver kategóriára. A valóságban a Free Software és az Open Source Software fogalmi
meghatározása majdnem teljesen fedi egymást. Talán a Free Software nagyobb
szabadságfokot enged meg a felhasználóknak, mint az Open Source, ezekre az eltérésekre
érdemes odafigyelni, amikor egy adott szoftver felhasználási feltételeit olvassuk.”
forrás: https://sites.google.com/site/szoftvermindenkinek/home/nyilt-forraskodu-szoftverek/tudasbazis-1
9. “Az Open Source meghatározása:
Talán a legpontosabb meghatározást az Open Source Initiative - OSI (Nyílt Forráskód
kezdeményezés) http://www.opensource.org adja és e szerint a Szabad Forráskódú Rendszereknek
10 követelménynek kell eleget tenniük:
• Szabad terjeszthetőség: A licensz nem tilthatja meg a szoftver ingyenes terjesztését
• Forrás kód: A programnak tartalmaznia kell a forráskódot, vagy szabad hozzáférést a forráskódhoz
• Származtatott munka: A licensznek lehetővé kell tennie a program megváltoztatását, illetve
származtatott munkák elvégzését.
• A szerző forráskódjának integritása: A licensz megkövetelheti, hogy a megváltoztatott programok
az eredetitől eltérő névvel és verziószámmal kerüljenek forgalomba.
• Személyek diszkriminációjának tilalma: a licensz egyetlen személyt, vagy személyek csoportját
sem diszkriminálhatja
• Felhasználási területek diszkriminációjának tilalma: A licensz nem lehet diszkriminatív egyetlen
felhasnálási területtel szemben sem
• Licensz jogainak terjeszthetősége: A licensz jogok mindenkire egyformán vonatkoznak, legyen az
elsődleges felhasználó, vagy továbbfelhasználó
• A licensz nem lehet termék specifikus: Az eredeti licensz jogok akkor is érvényesek, ha a program
egy másik programba ágyazva kerül forgalmazásra.
• A licensz más szoftverek jogait nem korlátozhatja: Például nem követelhetjük meg, hogy egy
adott, általunk forgalmazott program minden eleme nyílt forráskódú legyen, ha az egyik eleme az.
• Technológiai semlegesség: A licensz nem követelhet meghatározott technológiák alkalmazását”
forrás: https://sites.google.com/site/szoftvermindenkinek/home/nyilt-forraskodu-szoftverek/tudasbazis-1
11. [ Arduino fajtái ]
Több fajtája létezik, mi az órán az Arduino Duemilanove-t használjuk. A modulokat készen és KIT-ben
is meg lehet vásárolni, a programok ingyen letölthetők honlapunkról. A kapcsolások és a nyomtatott
áramköri tervek szintén hozzáférhetők és magáncélra szabadon felhasználhatók.
12. [ Arduino shieldek és Könyvtárak ]
Speciális kiegészítő modulok is kaphatóak hozzá, ezek egy adott feladat elvégzésére
képesek, egy az Arduino szoftverbe telepítendő Könyvtár is tartozik hozzájuk.
13. [ Arduino Duemilanove felépítése]
• Digitális pinek 14db (In/Out) áramerősségük 40mA. 0 (RX) és 1(TX) TTL soros port
kommunimációhoz van, RX fogad, TX küld. 2 és 3 pin külső megszakításhoz, a csatlakozón
fellépő fel- vagy lefutó él hatására fellépő megszakításkérés, ami a mikrovezérlő valamelyik
bemenetének értékváltozására generálódik. PWM pinek - pulse width modulation =
impulzus-szélesség moduláció, 8 biten működik. SPIpinek, 10-13, SPI busz (Serial Peripheral
Interface=soros periféria illesztő), az SPI Library-hez. LED 13 pin, a beépített LED van ide
kivezetve, HIGH (be) vagy LOW (ki) állapota lehet.
• Analóg pinek 6db. A4 és A5 I2C (TWI) busz kommunikáció, Wire Library-hez.AREF
ajánlott feszültség az analóg pinekhez, analogReference() -szel lehet meghívni. Reset ha a
shield-en van a reset gomb akkor ezt LOW-ra kell állítani.
• Áramot kezelő pinek: Vin=bemeneti feszültség, ha külső áramforrást használunk (USB
is ilyen, vagy ha rákötsz 9V elemet, akkor itt tudsz hozzáférni az áramhoz).Gnd=földelés.
5V=értelemszerűen 5V jön belőle. 3V3=az alaplapra szerelt FTDI chip által termelt 3,3V
feszültség, maximális áramerősség 50mA (az összes többinek 40mA).
• USB-n 5V-ton működik, ajánlott bementi feszültség 7-12V között.
• Atmega chip.
• Reset gomb.
14. [ Az Arduino szoftver felépítése]
Az Arduino Board-hoz egy Arduino nevű open source fejlesztőkörnyezet tartozik, aminek
legfrissebb verziója a hivatalos oldalról letölthető, háromféle operációs rendszerhez:
Windows-hoz, Mac OS X-hez és Linux-hoz. A letöltött fájlt kicsomagoljuk ha kell, és máris
futtathatjuk az Arduino szoftvert, nem kell külön telepíteni.
Letöltés erről a linkről lehetséges: http://arduino.cc/en/Main/Software
15. [ Programozás: szükséges minimum kód ]
Az Arduino által használ kódok, más néven Sketch-ek kiterjesztése a régebbi vezrióknál .pde volt, de
az 1.0 verzió óta már .ino kiterjesztést használ.
Arduino sketch írásnál a szükséges minimum a setup() és a loop() függvények meghívása (persze
ehhez írhatunk saját függvényeket, de e nélkül nem fog működni a kódunk). Ezek az úgynevezett
dedikált funkciók.
A setup funkció a program futtatásakor csak egyszer fut le az elején. Itt adhatjuk meg hogy melyik
pin-t hogyan akarjuk használni (bemenetként vagy kimenetként). Itt inicializáljuk a pineket
(értékadás 0-val). Itt hívjuk meg a soros portot.
A loop funkció, mint a neve is mutatja, többször fut le egymás után. A bemeneti és kimeneti
adatokat itt változtathatjuk.
Ezek dedikált funkciók, tehát be vannak építve a fejlesztőkörnyezetbe.
Void-dal kell őket meghívni: void setup(), void loop(). Kapcsos zárójel
jelzi a funkcióblokk elejét és végét. Kerek zárójelbe kerülnek a paraméterek.
Az utasítások végét pontosvasszővel jelezzük. Ha egysoros kommentet
akarsz írni azt dupla perjel // után megteheted, így nem zavar bele a kódba.
Ha hosszabb szöveget akarsz akkor azt /* ilyen jelek közé tedd be. */
17. [ Szimulátor programok]
Ha nem rendelkezünk a fizikai eszközökkel, akkor hazsnálhatunk szimulátor programokat. Ezekben
lemodellezhetjük a projektünket, a beépített alkatrészek segítségével. Folyamatosan bővítik a
lehetőségeit, így érdemes mindig a legújabb verziókat használni. Fizetős és ingyenes verziója
egyaránt létezik. Egy példát konkrétan megemlítek, mivel az órán is ezt használjuk: Fritzing a neve.
fritzing.org
18. [ Arduino Könyvtárak ]
Számítástudományban a könyvtár olyan előre megírt
kódrészeket jelent amik meghatározott komplex
funkciók elvégzésére képesek. Osztályaik és függvényeik
felhasználásával a független programokban nincs szükség
ezen feladatok ismételt megoldására. Általánosságban olyan
csomagokként értelmezzük őket, amik szolgáltatásként
teszik elérhetővé a konfigurációs adatokat, konstansokat
és kódokat. Például egy matematikai könyvtár (Arduino
esetében a math.h) a programnyelvből közvetlenül nem
elérhető függvényeket írja le, mint a tangens, kotangens,
logaritmus, gyökvonás. A rendkívül hasznos függvényeken
túl, sok esetben bizonyos típusú hardware elemek
használatát könnyítik meg – operációs rendszer hiányában
ezeket a könyvtárakat felfoghatjuk úgy is mint eszközillesztő programokat (device driver). Mivel az Arduino egy
nyílt forrású, együttműködő közösség által is fejlesztett
rendszer, megkülönböztetünk hivatalos és kontribúciós
könyvtárakat. Az előbbieket standard-ként is szokás
nevezni, mivel kiforrottságuk miatt a fejlesztőkörnyezet
programcsomagjának részét képezik és olyan általános
funkciókat írnak le, amik végrehajtására minden Arduino
típus képes.
19. [ Do It Yourself - irány ]
Rövidítése DIY. Jelentése: Csináld magad. A készen kapott modulok helyett magunknak is
összerakhatunk funkcionális eszközöket, mivel az őket alkotó alapvető alkatrészek kaphatóak
szinte bárhol. Online részletes leírásokat is találhatunk.
20. [ Szenzorok, érzékelők ]
“Az érzékelő vagy szenzor olyan elem, amely egy mérendő tulajdonságtól függő jelet szolgáltat.
A mérendő tulajdonság és a jel egyaránt lehet fizikai, kémiai, biológiai stb. jellegű. Fontos,
hogy a mérendő tulajdonság, és az érzékelő által szolgáltatott jel egymásnak kölcsönösen
egyértelmű függvényei legyenek.”
http://hu.wikipedia.org/wiki/%C3%89rz%C3%A9kel%C5%91
Amit érzékelhet: fény, mozgás, mágneses tér, távolság, gyorsulás, páratartalom, hőmérséklet,
nyomás, érintés, stb. A fizikai, kémiai vagy biológiai változásokat elektromos jelekké alakítják.
Az alábbi lista nem teljes, inkább csak ízelítő: http://harsanyireka.blog.hu/2012/11/14/szenzorok
31. [webow]
Roskó Máté munkája
Egyfajta barométerként szolgáló
dísztárgy, ami lehetővé teszi
a felhasználó számára hogy a
valós idejű időjárást vagy akár
az előrejelzést megtudja. Az
arduinohoz az adatok, egy Máté
által programozott applikáción
keresztül jutnak el a weboldaltól
a tárgyig. A fény színével és kis
ikonok fel-le mozgatásával jelzi
ki az időjárást. Fő célja az volt
ezzel a munkával, hogy ne kelljen
az információ megszerzéséhez
bekapcsolni semmilyen eszközt.
Valamint a design és funkció
összekapcsolása.
http://prezi.com/grko9ime5q_o/webow-diplomaprezi/?utm_campaign=share&utm_medium=copy