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.
Az Atmel családdal én is most ismerkedek, eddig a PIC volt terítéken.
Azt már látom hogy az Arduiono egy jópofa dolog, sokmindenre alkalmas és gyorsan lehet haladni benne, de elég korlátozott is egyben, mert mélyebb szinteken nem tudunk vele dolgozni. Már ha valaki akar és szüksége van rá.....
Mondjuk én sem az arduino keretrendszert használom, hanem AVR studio-t, de felhasználva gyakorlásképpen az Arduinos paneleket.
Egy sörkollektor vezérlésből indultam el. (hőmérséklet külömbség kapcsoló)
Aztán a fantázia elszállt!
A ház több pontján hőmérséklet mérés (a kollektorokban is), ventillátorok vezérlése, légzsaluk működtetése talán, naplózás és felhőben megjelenítés, helyi megjelenítés az LCD kijelzőn.
A DS1307 legtöbb alap breakout iszonyú pontatlan, mert szarul van megcsinálva. Nekem volt egy marokkal, az összeset eladtam. A DS3231 összehasonlíthatatlanul pontosabb, igaz, nem is 500 forint egy darab.
A W5100 könyvtára elképesztően nagy, mert nagyon komplex. Ezt én eleve nem nagyon rakosgatnám kis kártyákra, mert gyorsan betölti a rendelkezésre álló helyet.
A meglátás egyébként helyes, működő projektekhez azért az IDE és a könyvtárak párosítása nagyon hamar szűk keresztmetszetet jelent.
Ez így egy elég helyes meglátás. A legtöbb könyvtár nem igazán működik együtt további két-három könyvtárral, pláne ha speciális buszokat használnak (pl. SPI). Innentől kezdve tényleg kihívás a történet, mert nem az Arduino IDE szintjén kell megoldani a feladatot, hanem a könyvtárak szintjén (pláne ezek egyesítésével).
Alapvetően sokkal egyszerűbben tanulható rendszer, bizonyos feladatok elvégzéséhez egyszerűbb megcsinálni. A PI mikroszámítógép, teljesen más lehetőségekkel. Olyan a kettőt összevetni, mint egy terepjárót a villamossal.
Az sd használata sok memóriát igényel. Helyette i2c eprom, ami egyébként is van az rtc-n. Igaz többet kell kódolni. Nekem is egy években telt össze rakni az első működő, használható csomagot.
Sajnos a legtöbb ilyen könyvtár úgy kezeli a hardvert, mintha egyedül lenne.
Amint egyszerre akarsz két-három-négy dolgot használni, összeakadnak. Mert nem szabványosan használják a buszt. Mert csak adott láb/megszakítás kombinációval működnek, ami nem paraméterezhető. Szóval ilyenek.
Én egy éve kezdtem el az Arduino-t tanulgatni, játszani.
Egy Uno-val kezdet, és a modulokat veszegettem hozzá. (RTC, SD-kártya, LCD+I2C, DS18B20, stb)
Játéknak és tanulásnak jó volt, de 3-4 könyvtár és 1-2 tömb létrehozása már gondott jelentett. Elfogyott a RAM.
6db DS18B20 30mp-kénti lekérdezése, 5 perces átlag képzése és SD kártyára írása CSV fáljba + LCD kezelés (idő+hőfokok) még belefér. Onnan nem tetszett, hogy a DS1307 baromira pontatlan volt (napi 2-4perc).
Vettem egy W5100 hálókártyát és majd onnan veszem az időt (gondoltam). Itt fogyott el az UNO RAM-ja (szerintem)
Innen kéne tovább lépnem, csak elfogyott a harci kedv (ahogy Prof is írta).
Ami nagyon fárasztó volt a játszadozásban, hogy sok leírás van mindenhez, de ha egy kicsit másképpen szetnéd mint a példa van akkor nehéz átszabni mert nem nagyon vannak a könyvtárak kezdők számára is olvasható formában dokumentálva. (Ráadásul nekem az angol nehezen megy.)
Vagy galvanikus leválasztás (ami relé miatt egyébként is szükségszerű, bár a breakout-okon rendszerint eleve rajta van). Meg kell nézni, hogy mekkora vezérlő jel kell neki (V/A viszonylatban), és ha megy 3,3 V-ról, akkor jó, hanem, akkor kell elektromérnökösködni. A tápot mindenképp külön kell megoldani még egy SSR-nél is, relénél mindenképp.
Nem ezt írtam. A PI inkább számítógép, az Arduino mikrokontroller. A kettő között számottevő differencia van, több is. A PI Linux + Python alapú, sokkal komplexebb rendszer, komolyabb programozási ismeret kell hozzá, ugyanakkor sokkal komolyabb számítási műveleteket lehet vele elvégeztetni (sokkal gyorsabban). Ha vizuális effektről van szó, akkor pl. egy arcfelismerő-->lézershow viszonylatot meg lehet csinálni.
Az Arduino inkább arra jó, hogy különböző bemenetek információi alapján viszonylag egyszerű algoritmusok alapján vezérelj kimeneteket különösebb komplikált számítási szükséglet nélkül.
Ezért írtam, inkább azt kellene tudni, hogy mit akarsz megvalósítani, majd ez fogja determinálni, hogy milyen eszköz(ök) kell(enek) majd hozzá.