Kicsit körülnéztem a kedvedért, na meg azért, mert kíváncsi voltam, hogy azóta van-e valami fejlődés a témában. Arduino vonalon mindenképpen. Itt érdemes nézelődni, olcsó arduino shielddel megoldott snifferek:
Még annyit, hogy képzeld el a CAN buszt úgy, mint az internetet. Hiába csatlakozol rá valahol te is, ahhoz hogy egy másik gépre adatot tudj küldeni KÖZVETLENÜL, ahhoz tudnod kell az IP címét, át kell jutni pár routeren, tudnod kell a nyitott portok számát, protokollt, oprendszert... és még kismillió dolgot. Persze a CAN nem ennyire bonyolult, de infó nélkül csak sok nulla meg egy! :D
Itt egy egész jó leírás, ha érted az angol szaknyelvet. Én 2-3 hetet küzdöttem a CAN busszal. Autórádió vezérlést akartam megoldani arduinoval (PUG307 full CAN autóm van). Feladtam, mikor rájöttem, hogy nem egy globális CAN hálózat van ebben, hanem több alhálózat, de a rádióra közvetlenül csatlakozva se tudtam kinyerni a kormányvezérlőről jövő gombnyomás infókat. Még így is annyi adat szaladgál a buszon, hogy ha nincs konkrét infód a címekről meg a buszon folyó kommunikáció mikéntjéről, akkor nehéz "sniffelni" a neked szükséges parancsokat. OBD-t felejtsd el, mert az lassú hozzá. Kell venni, vagy építeni egy CAN/soros interfészt. Ha veszed drága, ha építed, akkor kell egy kis rutin. De azért érdemes vele foglalkozni, mert ha elég elszánt vagy és sokat foglalkozol vele, sok infót begyűjtesz és átlátod az egészet, akkor akár megélhetésnek sem rossz. Kevés az igazi hozzáértő az autóelektronikában, akik ezzel foglalkoznak inkább csak megveszik a drága kütyüket és csak azt tanulják meg használni.
Addig én is azt javasolnám, hogy az ablakfelhúzó gombra, vagy a motorra csatlakozz közvetlenül, ha megoldható.
A kérdésedre nem a válaszom. Ugynakkor biztos vagy benne, hogy szeretnél egy autó elektronikus rendszerébe egy további elemet illeszteni anélkül, hogy a rendszer felépítéséről, működéséről lenne információd?
Példa. A 80-as évek végétől a BMW motorok egy részét Motronic vezérlőelektronikával szerelték. Volt egy ENGINCE CHECK lámpa a műszerfalon, ami az elektronika által rögzített valamilyen működési rendellenességre hívta fel a figylemet (ettől még működött az autó). A szerelők java részének volt egy barkács csekklámpatörlője, rajta egy gombbal. Rádugták a motorra, ráadták a gyújtást, mialatt a gombot nyomták, és láss csodát, ez is és a szervízintervallum-jelzés is eltűnt! Hazsoná és halleluja! De. Egyrészt ettől a problma még megmaradt, másrészt az error-log (mert olyan is volt ám jó 30 éve) ugyanúgy tele maradt jelzésekkel.
Ha hozzá tudsz jutni olyan irodalomhoz, ami a Ford CMAX CANBUS rendszerének implementációjáról szól és teljes mélységben tárgyalja az egyes elemek (lámják, irányjezlők, rádió, motorvezérlő elektronika stb.) működését, akkor majd látni fogod, hogy hova és hogyan illeszthető be üzembiztosan.
Egyébként a feladat (ötlet) nem megvalósíthatatlan.
Még be kell fejeznem a kábelezést aztán vannak még egyéb dolgok a lakás körül.Remélem sikerül megírni a programot és beépíteni az arduinot a csillagpontba!
Mivel én főállásban programozó vagyok, és napi szinten írok/fejlesztek Delphi programokat, abból indultam ki, hogy a rendszerem lelke egy PC lesz, és az azon futó program utasítja/kérdezi le az arduino modult soros porton. Ha kapcsolás van, az arduino "szól" a PC-nek, hogy gombnyomás történt, és az üzen vissza, hogy kapcsolja fel vagy le a lámpát. Az állapotokat adatbázisban tároltam, a kommunikáció folyamatosan ment oda-vissza. Így a PC program mindig "tudta", hogy mi a helyzet, és így lehetett utasítani a rendszert sokféleképpen. Pl. ha kifelé menet a bejáratnál 3 másodpercig nyomtam a kapcsolót, akkor lekapcsolt minden égve hagyott lámpát, hazajövet meg ugyanígy visszakapcsolta, ahogy voltak. A PC-n sima windows futott, a távirányítást egy winlirc nevű programmal oldottam meg, a hangvezérlésre már nem emlékszem, kipróbáltam több programot... de inkább hagytam az egészet, mert villogni jó volt, de franc, aki kiabál a lámpának, mikor ülve ott a távirányító, menet közben meg a kapcsolók.
Ez volt a 2.0 változat, és igazából még PIC-re lett először tervezve. (Az 1.0 még egy 486-os gép LPT portjával volt megoldva... de az régen volt... :D) Szerettem, de voltak nyűgjei, főleg hosszabb áramszünetek után. Aztán szét kellett szedni, mert elköltöztünk (nem volt kis ügy a kábelezést hagyományosra visszabarkácsolni az új lakónak :/ ). Itt már forrasztgatni nem volt sok időm a munka és a család mellett, de az elméletet sikerült újragondolni, és a rendszert is úgy terveztem, hogy a szobánként önálló egységek önmagukban is működnek, de továbbra is egy rendszerként összefogja őket egy PC alapú program. Persze pár év eltelt és már wifi van, meg webserver meg php, Androidos telefonnal bárhonnan tudok kapcsolni/lekérdezni (nemrég teszteltem okosórával is), és Atmel helyett most ESP8266 a nyerő. A rendszer méri a hőmérsékletet/fényt, figyeli a mozgást, és ezek alapján kapcsolja a lámpát/fűtést, vagy esetleg riaszt telefonon, de a csatlakozott telefonok alapján azt is tudja ki van vagy nincs itthon pl. A rendszer állandó időhiány miatt még csak részletekben működőképes, de az a jó, hogy a mai technikával már szinte bármit meg lehet csinálni, amit pár éve még a filmekben se találtak ki.
A lényeg, hogy a fentiek miatt a forráskódjaimmal nem sokra mész, de ami neked kell az könnyen összedobható. Csak írd be a gugliba pl., hogy "arduino light control" és találsz millió példát. Olvasgattam hangérzékelős shieldről is,de szerintem sokkal drágább, mint amennyit ér, és bonyolult tanítani is. Szerintem egyszer hozd össze simán a lámpás programot, addigra fejlődsz annyit, hogy tudod majd bővítgetni is, és egy soros kommunikációval később bármit ráköthetsz majd, ha akarsz.
Szó volt itt párszor arról, hogy hol is vannak az Arduino határai, lehetőségei, mire jó, mire nem stb. Rendszeresen felmerül, hogy milyen alternatívák vannak, és hogy azok közül mégis melyik és hogyan.
Igen, való igaz, hogy az Arduino alapvetően egy komplex rendszer (hardver, szoftveres fejlesztői környezet, háttér), az egész alapvetően oktatásra, tanulásra van kihegyezve, úgyhogy a dolog számos méregfogát kihúzták és taposóaknákkal helyettesítették. A rendszer magja, az Atmel valamelyik (rendszerint mega) lapkája pompásan ellát bizonyos feladatokat, de azért ahogy számításigényes(ebb) feladatok felé megyünk, úgy egyre inkább bajunk van a számítási sebességgel, komplexebb feladatoknál pedig a memóriával. De a legnagyobb baj mégsem ez, hanem hogy lényegében minden olyan lehetőséget kivettek a fejlesztők kezéből, amivel komoly (nevezzük mondjuk iparinak) feladat megoldható lenne. Például: körülményes a bootloader kiváltása, csökött, logikátlan és sokszor félrevezető az egyszerűsített nyelv, vannak szarul megírt a könyvtárak, a debug kimerül a Serial.print-ben, és persze még lehetne sorolni. Ezeknek a korlátoknak egy része kiváltható azzal, hogy az IDE-t (vagyis a szoftveres fejlesztői környezetet) lecseréljük egy kompatibilis darabra, mondjuk az Atmel Studiora. Ezzel elveszítjük az Arduinora írt könyvtárak egy jelentős részét (pontosabban részben-egészben át kell őket írni, mert a szintaktikájuk némileg eltérhet), kapunk egy bazi nagy és elképesztően komplikált cuccot, ami viszont nagy vonalakban tényleg mindent tud, amit addig a cucc nem tudott. De. Attól a kártya még kb. ugyanaz marad, és mivel maga a kártya (maga az MCU) ugyanaz, sok választási lehetőségünk nincs.
Itt jön képbe az, amit Vargham írt még korábban, hogy aszongya mbed. Eddig nagyjából pompásan elvoltam az on-line felülettel (annak minden idiótaságával együtt). Nagyobb kódokat Notepad++-ban bevertem, bemásoltam, ellenőriztem, oszt csá. Nagyjából minden olyan benne, mint a „natív” C++-ban, persze a felhasznált könyvtárakhoz kötődő rengeteg kiegészítéssel együtt. Megy, faja, az eszközök pedig azonos (sőt, olcsóbb) áron messze verik az Arduinok javát (kivéve, hogy ugye szegények 3V-os logikai jelekkel mennek és erősen észnél kell lenni a lábakra való kötögetésnél, mert valamivel kevésbé toleránsak, mint az Arduino). Eddig fasza. A hétvégén gondoltam egyet és letöltöttem a Keil-t, az mbed anyukájának (ARM) saját IDE fejlesztői csomagját (sajnos csak az ingyenes, erősen limitált változatot). Új világ. Lényegében minden háttéradatot on-line szed le (előre), ezek állapotát figyeli (szól, ha változás van). Van alap debugger (a Nucleo és az NXP kártyákon is van alap USB debugger chip), ezen keresztül futás közben lehet ellenőrizni a változók állapotát (vagy felülírni azokat, ha szükséges). Megfelelő hardverrel (fejlesztőkártya + debugger csatoló) nagyjából a processzor időjelének ciklusáig pontosan lehet követni a szoftver futásának szálait (melyik függvény meddig ketyeg, mi történik, hogy mennek a hívások stb.). Viszont ez már vastagon a fejlesztői kategória. Nagyon ott kell lenni fejben, hogy mi miért van, mi micsoda és mit hogyan kell/érdemes használni. A differencia kb. annyi, mint egy jobb mikrohullámú sütő és egy professzionális (mármint éttermi) konyha között.
És most jön a nagy kérdés... A „mi lett volna, ha...” Fogalmam sincs. Amikor elkezdtem az Arduinóval foglalkozni (lassan 3 éve), akkor rengeteg időm volt. Most nagyon kevés szabadon felhasználható időm van (nem csak fejlesztésre, mindenre). A kezdeti bukdácsolások után létrehoztam pár egészen jó dolgot is, ráadásul a kódok olyan elvek szerint épültek fel (teljesen saját kútfőből). Valószínű, hogy e nélkül az alap tapasztalás nélkül lett volna bajom az mbeddel, ugyanakkor mivel mindig inkább a professzionális, „ipari” megoldások híve voltam, alighanem az Arduino egy pár hetes gyorstalpaló után végleg feledésbe merült volna az mbed javára. Most asszem még mindig több itthon az Atmel kártyás fejlesztői kártya, mint az mbed, de nem sokkal. :-D
Cserébe viszont csináltam mbed fórumot, tessék jönni!
Ennyit a platformok harcáról (részemről), többit a helyén... :-)
Az asztalon... No offense... Tapasztalat, hogy ha egy mód van rá, minden legyen legalább csavaros kábelrögzítő (sorkapos). Minden próbanyákon, kábelezve. Macerás, sokáig tart összerakni, de összehasonlíthatatlanul megbízhatóbb. Ha nem egy darab kell, hanem egy tucat, akkor gerber és kínában legyártják annyiért kb., mint itthon ugyanannyi próbanyák. Megfelelőségi tanúsítványa nem lesz, úgyhogy ha emiatt leég a házad, akkor így jártál (de ez m inden hasonló projektre igaz).
8 modulos relém van meg egy szimpla. Direktbe rá tudom dugni az arduinora apás vezetékkel. Nem mozog nagyon fixen tart! Már probálgattam és tökéletesen működött.
Eddig úgy csináltam ahogy leírtad plusz minden kapcsolóhoz húztam cat6-os utp kábelt a késöbbi bővítmények miatt. A hang vezérlés nagy falat így kezdőként? Mit vezérelsz hanggal? Esetleg tudsz mutatni egy példa forráskódot?
Inkább abban segítenék, hogy csináld, mert ahogy meg volt oldva a régi rendszer, úgy ma már nem oldanám meg. Én mindent magam szoktam építeni, ha lehet egy nyákra, mert nem szeretem a sok vezetékelést, és a hibalehetőséget is növeli. Főleg, ha csak össze van dugdosva, mint a próbapanelen. De ahogy nézegetem az árakat, kínából ma már sokszor olcsóbb megrendelni pl. egy relés modult, mint megépíteni, főleg, ha több áramkörös. Táp: Mivel volt hely az álmennyezetben, én PC tápot használtam passzív hűtésre átalakítva, és ma is azt használok nagyobb munkákhoz, mert stabil, és jól bevált hosszú távon. Ha kisebb méret kell, akkor 5V-ot valamilyen márkásabb mobil töltőből bontok (van itthon sok, aminek régi csatlakozója van). Vezetékelés: Én 3 eres kettős szigetelésű "hosszabbító" kábeleket húztam mindenhova, egyrészt balasetvédelmi szempontból, nehogy odacsípje valahol a fém álmennyezet konzol, másrészt így volt egyszerűbb és van ahol a földelés szálat használtam plusz érként (a végén feketére zsugorcsövezve). Nálam több helyen volt a nappaliba bejárat és többféle lámpát is kellett kapcsolni. Ezen sokat filóztam hogy oldjam meg, mert nem akartam sem alternatív kapcsolást, sem több kapcsolót egymás mellé. Végül úgy oldottam meg, hogy ilyen helyekre csengőkapcsolót raktam, és a három világítást úgy lehetett kapcsolni, hogy egy/kettő/három gombnyomás kapcsolta le/fel az adott lámpát. Persze ehhez tudnom kellett melyik lámpához melyik szám tartozik. Ezt azért hamar megtanultam. De minden más kapcsoló úgy volt megoldva, hogy a kapcsolás állapotot váltott, nem számított, hogy fel, vagy le, mivel lehetett számítógéppel, hanggal és távirányítóval is kapcsolni. Ezeket mind a PC kezelte.
A későbbiekben én is szertném szélesíteni a vezérelt eszközök palettáját! Elmondanád, hogy te milyen eszközöket építettél hozzá az arduinohoz. Először a világítási kiegészítőkre lennék kiváncsi. Milyen tápod volt? Milyen relé? Esetleg shield? Én most építem ki a csillagpontot a lakásban ezért még tudom alakítani a vezetékelést. Szívesen veszem a tapasztalataid alapján a praktikus dolgokat amik a mindennapi használat során hasznos lehet. Első kiépítésem miatt biztos sok lehetőségre nem gondolok, csak később fogom majd a fejem, miert is nem csináltam meg...
Annyi, hogy ne a legeslegolcsóbbat vedd meg. Azok az árak, amiket Vargham írt, teljesen korrektek. Én talán 32 USD-ért vettem Mega2560 lapot plusz 3,2 touch lcd-t plusz illesztőpanelt (Sainsmart). Soha semmi baj nem volt vele. Mondjuk ha a kijelző nem kell, pont felesleges a plusz pénzt rákölteni (én most mbed projektekhez használom szórványosan).
A mega eredeti Atmel a kínai klónban is, csak a soros/USB csatoló más. De azzal sincs gond, csak más driver kell hozzá. Árban viszont jelentős különbség van.
Ha még nem kérdezték volna: miért kell, hogy eredeti legyen? :D