Az atmel procik (1260, 2560, azaz a nagyobb családé) hardweres I2C buszsebessége az adatlapok szerint max 400kHz/400kbit/sec. Más típusnál ez van hogy kevesebb, 100kHz környéke. Egész pontosan függ a megtáplált órajeltől, hiszen azt osztja le. Az órajel frekijét beállítani mélyebb, regiszterszintű műveletekkel lehet, több értékre is akár, ugyanolyan jelleggel mint mondjuk a PWM frekijét.
Lehet ez a keretrendszer ezt nem tudja (én AVR Studio-t használok ismerkedési céllal)
Arduino keretrendszerben az I2C busz sebességét nem kell konfigurálni programból mint mondjuk egy soros port megnyításnál? Ott ugye meg kell ezt adni, I2C-nél nem?
De persze biztos van egy alapfreki is amin alapból használja, de nem tudom melyiket veszi alapbeállításnak, 10-20 kHz környékére tippelnék hirtelen.
A gyorsaság mit jelent? Nagyon sűrű méréseket, nagyon rövid reakcióidőt, nagyon gyors feldolgozást?
Hardver részre itt utóbb kitértek, ezt megnézem én is, mert elég speciális feladat megoldására nekem is kell majd valami ötlet.
Szoftveres és logolás oldalon a fő kérdés az, hogy megy-e folyamatosan a PC. Ha megy, akkor soros kiolvasás és egy Processing alkalmazás, vagy bármi, ami a soros küldést USB-n tudja fogadni (millió ilyen van). Ha a gép nem megy folyamatosan, akkor egy i2c EEPROM-ba logolni időbélyeggel, aztán ezt alkalmasint szintén soros módon kiolvasni. Kérdés továbbá, hogy a kiolvasás alatt kell-e menjen a mérés és a logolás vagy sem. Ha mennie kell, akkor ésszel kell küldeni és fogadni. Plusz ugye visszaigazolás, törlés, overflow-kezelés és társai, tehát eléggé el lehet szaladni.
Az alapot (i2c EEPROM, RTC, hőelem) szerintem egy könnyedebb hétvégén össze lehet hozni működőképesre, a kiolvasást meg egy másikon.
Egyébként nagyjából ugyanezt én április magasságában tervezem megcsinálni csak teljesen más pereméterekkel.
Az 1. ponttal nagy vonalakban egyetértek. Ezért is tértem át a Notepad++-ra.
2. pont dettó, azt leszámítva, hogy nekem eddig sehol sem tűnt fel, hogy az 'INPUT' + pull-up kombó (digitalWrite(..., HIGH);) bármiféle változtatáson esett volna át, legalábbis a most aktuális IDE viszonylatában. Ezen belül a 3. pont nem igazi gondot ír le, mert használhatók a változódeklarációk a klasszikus C++ formula szerint is. A 4. és 5. pont kiegészítve azzal, hogy egyébként gyalázatos a memóriakezelés.
3. pont. Ezzel sajnos nagyon egyet kell értsek. Az arduino.cc sok leírása idejemúlt, fals információt tartalmaz (hogy mást ne mondjak, közel 1,5 év volt, mire a Micro-ra jellemző lábkiosztás változást -- i2c soros port -- hivatalosan is közzétették. Ami nekem különösen fáj, mert szerintem jogosan érzem magam rondán átb'szva, az az ABC The Book (Arduino Basic Connections -- The Book), ami start-up-ként indult, és az elért elég jelentős siker ellenére az is maradt. Frankó a könyv meg minden, de percek kérdése kinőni és sok esetben alapvetően haszontalan a szükséges kódrészletek teljes hiánya vagy a speciálisabb alkatrészek hozzáférhetetlensége miatt. Ja, és hiba is van benne, nem is kicsi. A továbblépésről sincs sok szó, bár elég jó könyvek születtek a témában.
Az 5. ponttal már nem értek egyet maradéktalanul. Az átlag Arduino felhasználó soha nem fog ilyen mélységben hibakeresni, mert jó eséllyel nem fog olyan bonyolultságú, összetettségű kódot ÉS hardvert produkálni, ami ezt szükségessé tenné, de még ha... akkor is ott a kvázi debug-megoldásként funkcionáló Serial.print, ami a jól ismert "tray-and-error" megoldással vagy bejön vagy nem jön be.
Az alternatívákról nem tudok mit mondani. A konklúzió meg... Bizonyára van benne igazság, ugyanakkor nem szabad figyelmen kívül hagyni azt, hogy egyelőre minden hátránya és következetlensége ellenére az Arduinónak van a legnagyobb hátszele.
Ami a párbeszédet illeti. Rettentő időt töltöttem azzal, hogy olyan leírásokat olvasgassak, hogy egy kezdő számára melyik a legjobb, valamit is érő programozási nyelv. A magától értetődő web-alapú rendszerek nyelveit kizárva (html, css, xhtml, xml, java, flash meg még a jó ég tudja mi), többé-kevésbé egyöntetű volt a vélemény, hogy "verything but c/c++". És ahogy kivettem, jó okuk van erre, mivel a C++ pont az a nyelv, ami -- lopott példával élve -- a kulináriának a sushi, vagyis abszolút magasiskola. Mert egy C++ kódot össze lehet hozni pár hónap ügyeskedéssel, de jó, pláne kereskedelmi minőségű anyagot összerakni már nem csak a programozási nyelv tiszta ismeretéről szól, hanem annál sokkal, de sokkal többről. És ha már tanulásról van szó, a tanítási oldal sem mindegy. És az Arduino is tud érdekességekkel szolgálni, és bár itt is próbálok segíteni, több más fórumon egészen elképesztő nagy tévutakba futok bele havi-kéthavi rendszerességgel (kódok szintjén és hardver szintjén is). Az Arduino környezettel ezen viszonylag egyszerű áttolni a kezdőket, egy komplexebb rendszerrel (ahogy a szerző is írja) ez már ne nélkülözheti az alapelvek, összefüggések, alapszabályok ismeretét sem, ez pedig egy fórumozásnál vagy sima közösségi együttműködésnél sokkal összetettebb kérdés.
Ezért is írtam korábban, hogy a „melyik kártya jó” kérdéskör nagyjából egy viszontkérdéssel kezdődik: „mi célra?”
Lektorált tananyag, ami a BKF Digitális és Kollaboratív Művészet (DIKOM) pályázatnak keretén belül valósult meg.
Szerző: Harsányi Réka, Társszerző: Juhász Márton András, Lektor: Fernezelyi Márton
Az I2C, vagy más néven TWI (Two Wire Interface) egy soros[...] Bővebben!Tovább »
Kutakodtam itt néhány viszonylatban az mbed háza táján. Kicsit profibbnak tűnik a háttér, mint ami az Arduinot jellemzi. Massimot szeretem, de alapvetően sok szempontból káosz, ami az arduino.cc-n folyik, a kiegészítő dolgokról nem is beszélve.
Noszóval, ami eddig pozitív: sok platform van, az adott célra megfelelő fejlesztőeszközöket viszonylag egyszerűen meg lehet találni és ki lehet választani. Ezek jóval keményebb hardverek, mint bármelyik Arduino (a Tre és az új Intel kivételével), ennek minden előnyével és hátrányával egyetemben.
Ami eddig kevésbé tetszik -- úgy, hogy alapvetően nem nagyon mélyedtem bele --, hogy nincs off-line rendszer, csak online (vagy valamit kegyetlenül elnéztem). Az Arduino IDE-hez hasonló felület nincs off-line, márpedig előfordul, hogy internettől távol gondolok kódolni (vagy adott esetben teljesen elmegy a net, erre is volt példa).
A kártyákat végignézve van pár igen rokonszenves, de ezek kevés kivételtől eltekintve árban azért számottevően vastagabbak, mint azok az arduinok, amiket néztem. Az is igaz ugyan, hogy a Yún-hoz képest (ami ugye uszkve 22 ezer forint) az mbed LPC1768 számottevően jobb összehasonlításban teljesítményét tekintve, kivéve a wifit. Így a 16-17 ezer forint áfa és szállítás nélkül kb. ugyanaz, mint a Yúné.
Az RS 2000 forintos szállítási díja meg szűken megduplázza az árat... Csoportos rendelésnek lenne értelme, mert hogy én egy darabért nem fogok kifizetni ennyit, az elég valószerű.
Behívod az ino fájlt, de úgy, hogy az Arduino IDE-ben NE legyen nyitva (IDE-ből N++-ba megy a frissítés, visszafelé nem, vagyis ha az IDE-ből mentesz, akkor a N++ rákérdez, hogy frissítsen-e, ha az N++-ban mentesz, az IDE-ben marad a régi, ráadásul ha rámentesz, felülírod azt, amit a N++ mentett).
Beállítod a nyelvet C++-ra (Menü-->Nyelv-->C-->C++).
Ahogy gondolod innentől. Nekem a sok függvény miatt nyitva van a függvénylista bal oldalt (Menü-->Nézet-->Függvénylista), plusz nekem két ablak van nyitva egymás mellett.
Ha kész a program, akkor a szokásos módon megnyitod az IDE-ben, feltöltöd a kártyára, aztán lehetőleg bezárod az IDE-t. A nagyon apró változásokat IDE-ben meg lehet ejteni az egyszerűség végett, utána a N++ frissíteni fogja a saját nyitott anyagát.
Ár alapján rendelek kintről. Csak alkatrésze a G+C vált be, kártyákra, shieldekre, kitekre a SainSmart, bár a termékeik elég rossz minőségűek, a mellékelt leírások meg 2012-re datáltak (plusz rengeteg hiba van bennük), de fixen működő projektek is alapulnak az eszközökre. A kitjeik jók. Apróságokra meg HEStore és Lomex.
Tudsz vele szintet is illeszteni bizonyos korlátok között. Viszont leginkább csak egyirányban. Ha kétirányú a kapcsolat (pl egy busz vagy hasonló esetén) az nagyon macerássá teszi, akkor másban kell gondolkodni.
De ha pl 3.3V-os kimenetet kell illeszteni 5 V-os (vagy nagyobb) bemenethez, és fontos a galvanikus leválasztás - pl relékhez vagy egyéb egyszerűen más potenciálon lévő eszközhöz - akkor ezzel is lehet. Kis túlzással hasonló egy trafóhoz, hiszen a primer oldala - fénykibocsátó led - és a vevő oldala - fényérzékelő dióda - teljesen független egymástól.
Szűkülő keresztmetszet lehet, hogy a meghajtó oldalon van egy minimum ami kell pl a belső "led" meghajtásához(fesz, áram). Van olyan optokapu, ami nem jár el 3.3 V-ról (kevés neki ez a fesz) de nagy részük azért megy ennyiről is, van ami már 1.8Vról is megy stabilan. A "szekunder" oldalon meg hogy hány voltra húzod fel, és mit vezérelsz vele, az már egyéni ízlés és pofonok, bármi kialakítható.
Arduino és alkatrészek beszerezhetőségével kapcsolatban nekem az ebay bevált. Van pár elfogadható minőségű szállító, még ha a cuccai jelentős része alapvetően kegyetlen hitvány (pl. lábak feliratozása felcserélve stb.). Ugyanakkor Mega2560 + SD olvasó + 3,2" érintőkijelzős LCD modul 4800 forintért szerintem eléggé baráti. Mondjuk van előnye és hátránya is nyilván. :-) Kérdés, hogy az általad felvázolt alternatívák hogy néznek ki e tekintetben.
Arduino viszonylatban a "komoly" munka szerintem egy programmerrel kezdődik, addig sajnos bent csücsül a bootloader a memóriában jelentős mennyiségű hasznos helyet foglalva, lassítva a bootolást stb. E nélkül nekem releváns sebességnövekedési élményem van, emiatt a kártyáim bő felén már nincs is bootloader. A szerkesztéshez már rég nem az Arduino IDE-t használom, hanem a Notepad++-t, összehasonlíthatatlanul egyszerűbb a függvények kezelése, pláne, ha több van belőlük sok hivatkozással, sok külső és belső változóval. A valahanyadik következő lépés nyilván az ATmel saját IDE-je.
De tanulni sosem késő, úgyhogy átnézegetem majd a javallataidat. :-)
Röviden: Egyik sem. :-) Tapasztalatból mondom, van mindkettőből. Hobbihoz, munkához, művészeti projektekhez is.
Hosszabban:
Az Arduino az egy Atmel 8 bites mikrokontrollerre épülő rapid prototyping platform. Ebben a kategóriában vannak ugyanilyen áron sokkal nagyobb teljesítményű eszközök is. Vagy ilyen teljesítményűek jóval olcsóbban. Kis energiaigényű (akkumulátoros üzemű) vezérlési feladatokhoz való.
A PI egy általános számítógép operációs rendszerrel, hálózattal, USB-vel, limitált multimédiával. Lehet belőle desktop is (túl lassú), vagy akár headless server / hálózati eszköz is (túl sokat fogyaszt).
Mindkét rendszer előnye az, ami a hátránya is: Amatőrök, hobbisták, tanulni vágyók számára fejlesztve. Sok példaprogrammal, aktív felhasználói közösséggel. A felhalmozott kollektív tudás frissítésére viszont alig van forrás. Ezért mindkét rendszer lemaradásban van az aktuális trendekhez, teljesítmény elvárásokhoz képest. Céges szinten is költséges újabb, gyorsabb, többet nyújtó hardverre váltani, egy hobbistának viszont sokszor egyáltalán nem fér bele, hogy megtanuljon egy új rendszert (idő költség), és beszerezze a szükséges új eszközöket (hardver költség).
Arduino bónusz probléma: Hiába lenne elegendő egy adott feladathoz az adott Atmega MCU (általában a 328P-PU), ha egyszer az Arduino rendszerkönyvtárak, és a kiegészítő hardverek könyvtárai nem használják hatékonyan a hardvert. A rendszerkönyvtárak esetében főleg az egyszerűségre való törekvés miatt, a könyvtárakat viszont sokszor csak egy-egy ember fejleszti, annyit rak bele, amennyi ideje van. Így az egyszeri hobbista azzal szembesül, hogy a megálmodott projektje nem fér bele az UNO-ba. Vagy architektúrát vált, vagy megtanulja rendesen az Atmega programozását C/ASM nyelveken, és a saját projektjéhez igazítja a könyvtárakat. Mindkét út költséges, lásd feljebb.
Ár: Az Arduino drága. A hozzá való kiegészítők még drágábbak.
3400 forintos alternatíva az Atmel-től: Xplained Mini
Arduino pinout kompatibilis. A Leonardo-hoz hasonló konfiguráció, ám az USB illesztő MCU Atmel debugger firmware-t futtat, így ez egy teljes értékű debugger is. A fő MCU-ra lehet Arduino bootloadert is tölteni, onnantól pont úgy viselkedik, mint egy UNO... Ez árban az UNO fele, harmada. A kínai vackok is pont ennyiért vannak. Ez viszont megbízhatóbb, van hozzá driver, hiszen magától az MCU gyártójától jön.
Másik példa: Arduino LCD 7000 forint. Ennél olcsóbban lehet kapni komplett fejlesztőkészletet MCU-val, debuggerrel, és érintőképernyővel együtt. De erről később.
Akkor mégis mit?
Ha valaki hobbista (tehát nem nagy szériás gyártásban gondolkozik), és már ismeri az Arduino rendszert, akkor a fentebb említett Xplained Mini board, vagy valamelyik nagyobb. Hasonló áron vannak fejlesztői eszközök az Atmeltől a nagyobb teljesítményű MCU-khoz is. Némelyik szenzorokkal, USB hosttal, LCD-vel. Sokukat szintén össze lehet hozni az Arduino keretrendszerrel.
Az Arduino helyett ajánlom az mbed rendszert. Ezt az ARM hozta létre a processzorgyártó partnereivel közösen. A cél az, hogy bárkitől is veszel ARM MCU-t, ugyanazt a magas szintű szoftveres támogatást kapd. Szintén fontos a gyors sikerélmény, gyors prototipizálás. Ezért elérhető egy online fejlesztőeszköz (IDE), teljes értékű szerkesztővel, verziókezelővel. Jár hozzá rengeteg gyári (ARM) rendszerkönyvtár, valamint a közösség tagjai is megoszthatják egymással a fejlesztéseiket (könyvtárak shieldekhez, stb). A fordítás is online történik, a kész bin töltődik le a gépedre. Az mbed eszközökhöz nincsen szükség programozóra, pendrive-ként mutatkoznak az oprendszer felé. Erre a meghajtóra kell felmásolni a letöltött bin-t, és kész a programozás... Egyszerű, nem? :-)
Példának itt vannak az ST Nucleo árak. 2500-3000 forint között érhetőek el a különféle MCU-val szerelt lapok. Ennyi pénzért van rajta (leválasztható) debugger, Arduino shield kompatibilis lábkiosztás. Változattól függően pedig 2-4 UART, 1-4 I2C, 1-4 SPI, 8-16 ADC, 2-4 DAC, touch sensor, 1-3 CAN bus, Ethernet, USB OTG, stb. Maga az MCU lehet 40 és 100 MHz között, 64-512 kByte flash, 32-128 kByte RAM, FPU. Sok interrupt, ami ráadásul könnyedén konfigurálható bármelyik lábra. Ja, és a legtöbb láb 5 Volt toleráns.
6000 forintért van rajta: Debugger, 180 MHz, 2 MB flash, 256 kB SRAM, 64 MB DRAM, touch LCD, gyroscope, USB OTG, stb. (Ezt a lapot most még csak az offline mbed SDK támogatja.) Ez pontosan 1000 forinttal olcsóbb, mint egy Arduino nem touch LCD. Vagy éppen kevesebb, mint a fele az Arduino DUE-nak.
Raspberry PI helyett headless alkalmazásokhoz szóba jöhet bármelyik ARM Linux board. Ennyi pénzért, vagy csak nagyon kicsivel drágábban már vannak jóval gyorsabbak. Gyártói támogatással nem csak Linuxhoz, de Androidhoz is.
Ha viszont fontos a könnyen elérhető, egyszerűen programozható multimédia képes eszköz, akkor egy 12-20 ezer forint közötti 2-4 magos, 1-2 Giga RAM-os Android stick. Hatalmas választék könnyen telepíthető szoftverekből (Google Play), széles online közösség, a hobbistától a profiig. Rendszeresen frissített, multimédiához, internethez fejlesztett SDK. Ha pedig szükséges mellé az alacsony szintű I/O kazánhoz, LED szalaghoz, szenzorhoz, nyomógombhoz, akármihez, akkor USB-n mehet mellé egy fentebb említett mbed ARM mikrokontroller kártya.