Mam docela radost ze se tu objevilo arduino :) Jenom pridam ze jestli se nekdo chce levne naucit s mikrokontrolerama pod linuxem, doporucuju ‚proste‘ zajit do elektra a koupit nejaky AVR (treba tiny2313 u nas asi za 30kc), konektor na paralelni port pc a nejakou bastldesku a ma vsechno co potrebuje k programovani mikrokontroleru. AVR maj v linuxu skvelou podporu pres avr-libc a gcc, programovani pres paralelni port pres avrdude :) Jinak samozrejme arduino to nenahradi – je treba si to poskladat, naucit se s tim Cckem nebo assemblerem (na strankach avr-libc jsou skvely priklady) a precejenom to programovani bude horsi nez wiring. Ale pro C kodery co se chtej zacit stourat v hardwaru je tohle si myslim skvela cesta jak se s tema svabama seznamit.
Podpora na Linuxu je skvělá pouze do chvíle než začnete potřebovat krokování programu a nějaký pořádný ladící nástroj. Pak zjistíte, že je to tragédie. Něco pořešíte třeba starým AVR studiem 3 pod Wine, v případě aktuální verze AVR Studia vás čeká jen vztekání se nad wine.
Nativní avrsimul je mrtvý nedodělek, který je dobrý tak na hraní, avarice ve spojení s gdb je všechno jen ne efektivní nástroj – ale se zatnutými zuby to pravda jde, podpora nových mikrokontrolérů je ale mizerná.
Ono to jde pomerne dobre i bez debuggeru. Ja jsem tak nejak zvykly na to debugovat embedded veci pomoci hlasek (nyni k tomu pouzivame www.microvga.com – jako ze primo aplikace v MCU vypisuje debug hlasky na monitor, ale samozrejme jde pouzit i RS232 do PC ci nejake FTDI na USB CDC). Ono to ma jednu obrovskou vyhodu – da se s tim ladit i ruzna komunikace a casove zavisle veci, to s debuggerem neudelate. A prijde mi, ze 90% problemu u embedded veci se pomoci debuggeru nevyresi. Tedy pokud jen neblikate diodou :-).
Dle meho nazoru Linux na vyvoj s AVR, ARM, MIPS, MSP430 apod. je docela vhodny. Alespon nemusite resit problemy typu „IDE mi pul hodiny ignorovalo zmenu v souboru cosi.c a proto se program choval divne, ale stacilo udelat close/open a vse se vyresilo“. Jedine IDE co pod Win32 za neco stoji je IMHO visual studio od MS.
Jo s tim souhlasim, me to debugovani od dob co sem se ucil s assemblerem uz zatim nechybelo. Jinak doplnim ze co vim tak akorat s PICakama je to spatny – neni k dispozici poradnej C prekladac, muze nekdo pls doplnit? zajimalo by me jak je to s picakama pod linuxem protoze se mi jich v supliku par vali :)
Dost odvážná a subjektivní tvrzení.
Právě v případech, kdy jen neblikáte ledkou je dobrý simulátor a debuger někdy k nezaplacení. Samozřejmě není to samospasitelné a jde to i bez toho, jen pak člověk někdy ztrácí čas nad něčím co je v debugeru jasné během chvíle. Příklad z nedávna- zapomenuté schování registru na zásobník na začátku rutiny(nebo nesprávné použití registru – jak chcete), která občas zničila jeho obsah a program díky tomu vykazoval podivné chování. V debugeru vyřešeno za chvíli, bez něj hodina laborování.....jen drobnost.
a debugovat na avrkach taky pod linuxem jde, vypada to ze avrsimxx nebo jak se tomu nadava je aktivni a uz podporuje par kousku. A pak je tu to stary avr studio. Jinak avarice + eclipse a mate normalni ide na debugovani hardwaru s avr. Ale ja osobne sem dlouho fakt simulator dlouho nepotreboval, radsi pisu prehledny C a snazim se assembleru vyhnout dokud to jde takze asi proto (souhlasim, opravdu je to subjektivni)
Jsem starý kořen, začínal jsem s programy pro 8080 a sqělou Z80 :-) a mán na věc následující názor. Pokud programuje člověk, co věci rozumí a nezjišťuje co dělá trivialita typu podmíněného skoku, tak debug spíše zdržuje. Já si vypisuji přes jeden port do terminálu info které potřebuji. Chápu že JTAG mi pomůže se vyhrabat z věcí, které jsou jinak těžko řešitelné, ale leděním si nepředstavuji krokování programu v debuggeru. Než bych ty tisíce loops prošel, tak bych umřel stářím. Člověk stejně ty programy skládá z odladěných bloků, které vytvořil dřív, takže případné překlepy nebo přehlédnutí odhalí terminálem. A dnes je možné reprogramovat flash klidně 20k krát a to by aplikaci odladilo i úplné nemehlo.
Také jsem starý kořen. Dokonce jsem vedle 8080 a Z80 začínal na procesoru minipočítače ADT4000.
Když debugujete tím způsobem, že v debugeru čekáte na provedení tisíce smyček, to máte fakt těžké. Něco jako breakpoint, step over, trace into, … a podobné vymoženosti vám nic neříká?
Na ADT4000 jsem si jen vykresloval na plotru, nic jsem tam neladil. Jistě že jsem se už setkal s breakpointy a přeskakováním volání, nicméně názor neměním. Zkrátka obvykle postupuji nez debuggeru, jen si vypisuji ladicí informace. Zkrátka mám pocit že tak dosáhnu konečného výsledku rychleji. Možná je to tím, že debugger zpomaluje běh procesoru a tak něco ani ladit nemůžu, zatím co výpis můžu umístit tam, kde mi malé zdržení nevadí. Jinak také někdy debugger použiju, není to pro mě nějaké dogma.
Ja pouzivam http://www.amctools.com/vmlab.htm . Pod wine funguje dobre.
Podle mne nekdy nepomuze ani simulator anidebuger kdyz se jedna o komunikaci mezi zarizenimi . Na toto sem si koupil logicky analyzer je to skvela hracka a funguje pod linuxem , je to sice pres wine ale vyrobce zarucuje funkcnost pod wine s tim ze dodava i so. knihovny do wine aby to jelo
už několik let sleduju, co si lidé s arduinem staví, na makezine.com – je tam celkem podnětný archiv http://blog.makezine.com/…ive/arduino/
Pěkné, moc hezké hračky. Ale nevím jestli tohle http://www.youtube.com/watch?… tam je taky, a zda je to vůbec stavěné s Audrinem, ale mě prostě vzalo dech co lidé všechno nevymyslí :)
Ktery free PCB editory jsou prakticky pouzitelny? Parkrat jsem pouzil eagle a krom toho ze neni free je taky jeste uplne udesnej. Nemluvim jen o tom ze je pomerne neintuitivni, ze autorouter nestoji za nic, ale hlavne o tom ze tam maji nejaky zaokrouhlovaci chyby a kdyz si PCB dostatecne zvetsim tak na sebe cesticky uplne presne nenavazujou, atd.
Takze jestli je nejakej free, co umi i schemata (rucne se mi cesticky fakt kontrolovat nechce), tak ho pouziju az priste budu neco bastlit.
Ja jsem si postavil vlastni arduino. Nazval jsem to Arduelo libero a navrhnul jsem to ve free programu kicad.
http://cs.wikipedia.org/…:Arduelo.jpg
veskere podklady si muzete zdarma stahnout zde:
http://pcb.firenet.cz/…/arduelo.zip
Pajeni SMD neni zas tak slozity, chce to jen trochu cviku.
Google: SMD soldering
A vyleze treba tenhle na prvni pohled docela obstojny serial:
http://www.sparkfun.com/…utorials.php?tc=2
Koukam ze je tam i navod na rucni pajeni BGA. To jsem, pravda, jeste nezkousel. Ale vypada to zajimave ;-)
no tistaky jsem si nechal vyrobit v pragoboardu takze vypadaj fakt dobre.
vsechny podklady jsem dal k dispozici a neni proto problem aby si je kdokoli vyrobil resp nechal vyrobit.
mam doma i fotopredlohy z vyroby takze neni problem nechat tistaky vyrobit za uz docela rozumny penize nez co staly prvni vyrobni vzorky.
k te pajeacce, jde to pajet i obyc trafopajkou s opravdu hodne tenkym ockem kvuli tepelnemu namahani ale ja pouzivam obyc mikropajku solomon s regulaci ohrevu.
je k tomu potreba tenky cin (ja pouzivam 0.4mm s tvidlem) pak pajeci pastu, medeny odsavaci knot lupa na prekontrolovani a trochu zrucnosti. Je uplne jedno kolik naraz pripajite plosek a kolik jich bude spojeno, protoze to pak tim odpajecim knotem za pomoci opravdu hodne tavidla bez problemu odsajete.
Proc jsem to vsechno delal? Libi se mi program kicad, ovladanim je to neco mezi orcadem a eaglem a i kdyz neni tak komplexni a propracovany tak se v nem da bez problemu udelat slusny tistak. A hlavne arduelo je free a je vtvorene ve free programu. :)
Další možností je gEDA + pcb: http://www.gpleda.org/ + http://pcb.gpleda.org/
Obsahuje editor schémat i plošných spojů, rozsáhlou databázi footprintů (na http://www.gedasymbols.org/ jsou dalši ke stažení) a sadu generátorů pinů pro velká pouzdra (ideální třeba pro BGA). S jistými omezeními lze používat i automatické navrhování spojů mezi součástkami.
Existuje i spolupracující software pro simulaci obvodů, nebo třeba podpora pro gEDA v pstoedit: http://www.penguin.cz/…stoedit-pcb/
Pokud by někdo dokázal porovnat Kicad a gEDA, jsem rozhodně zvědavý na výsledek.
Eagle mi taky zrovna 2× nesedne. Ne, že by byl tak moc špatný, ale člověk vždycky v té nejméně vhodné chvíli narazí na nějaké přihlouplé omezení (nemluvím o freewarové verzi). Osobně se držím OrCADu, ale možná v tom hraje roli i zvyk.
BTW – on někdo používá autorouter? :-) Vždycky jsem žil v domnění, že je to nástroj, užitečný ke splnění úkolu „navrhni co nejprasečtěji DPS“. Práce ušetřená při návrhu se 100× vrátí při oživování. Protože ručně upravovat výsledek autorouteru = prakticky to postupně udělat celé znova.
On autorouter v Eagle je spíš pro zlost. Jinak je to v OrCADu (nyní Cadence Allegro). Tam tři dny nastavujete pravidla, pak to pustíte a za pár hodin máte hotovo :)
Jinak naši firemní layouteři se do těchto riskantností nepouštějí, pro ně je jednodušší to poctivě během pár dnů až týdnů nalayoutovat. Co vyleze z autorouteru (i nastaveného) pro 752 pinové BGA a 12 vrstev ještě nikdo nezkoušel ;)
Kecy. Mam doma jak Arduino, tak nekolik ATmega8 + programator a slozitost se neda srovnavat. Tam kde staci zapojit USB kabel od arduina musite v pripade ATmega stahnout avr-gcc, software pro programator a minimalne hodinu se ucit jak to vlastne dat dohromady v podobe napr. makefile. Kde v arduinu pouziju digitalWrite, tak v avr-libc musim binarne pracovat s portama a nakonec po nekolika hodinach z toho dostanu pitomy blikani ledkou.
Za arduino da clovek cca 700–800kc a ziska tak pekny kus HW spolu s fungujicim softwarem a perfektni dokumentaci. Nejlevnejsi programator ATmega (kdo dneska ma paraelni port proboha?) stoji cca 500, za nepajive pole (muzete pouzit i karton, ale to proste neni ono) dalsi 300, k tomu musite sehnat spravny kabel od programatoru, dratky a par odporu, jen aby jste se nekolik hodin patlal s nastavovanim kompilatoru. Pokud nemate nekoho znaleho kdo by mohl v pripade nouze pomoct, je atmega + programator pro zacatecnika perfektni nocni mura.
btw: arduino se da pouzit i jako programator ostatnich avr (http://code.google.com/p/mega-isp)
Ono taky záleží, co s tím chcete dělat. Jako na hraní – souhlas. Vývoj aplikací s AVR – to už je jiná káva. Je to podobné, jako s přechodem od starter kitu k vývoji vlastního zařízení. Rozdíl je dle mého názoru v tom, že tak jednoduchá věc, jako AVR, snad ani starter kit nepotřebuje.
Jenže…
Na Arduinu se skoro nic nenaučíte. Je to taková hezká hračka pro dnešní povrchní lidi – prostě je to dělané tak, aby to zvládl i Pepa, který je dnes na průmyslovce, ale před lety by prolezl sotva učňák. Tím nekritizuji autory – cíl projektu splnili dokonale.
Pokud budete pracovat přímo s AVR, naučíte se něco o mikrokontrolérech, budete vědět, jak to opravdu pracuje. To už výšezmínění Pepové zpravidla nezvládnou – potřebují dnes nejen Arduino, ale už i přizpůsobit výuku na kdysi výběrových školách jejich mentálním schopnostem :-(
Jak to ze se nic nenaucite? Naucite se logicke mysleni, castecne Cpp, praci s portama, komunikaci pomoci ruznych protokolu etc.. Rozhodne je to podle me vhodna pomucka ktera nastartuje neci zajem a muze byt iniciatorem snahy dozvedet se vice.
btw1; Nevidim jediny duvod proc by nemohl programovat i Pepa .. programovani ma byt snad vysadou nejchytrejsich?
btw2; To ze je to jednoduche ma byt nevyhoda? To jako ze kazdy ma umet assembler? Myslim ze nedokazete prekousnout ze cislicova technika se dnes stava stale vice beznou veci se kterou pracuji i lide kteri by se k ni drive nemohli dostat. Znate portal http://hackaday.com/ Kazdy den se tam obevuji nove a nove zajmave veci o kterych si troufam tvrdit ze by nevznikly, kdyby prace se slozitou elektronikou nebyla cim dal jednodussi.
„programovani ma byt snad vysadou nejchytrejsich?“
Kéž by to tak bylo! Uvědomte si, že tihleti mentální retardi se pak hrnou do programování různých bankovních aplikací, nemocničních přístrojů apod. a to už zavání sakra velkým průserem. Před 20 lety by takovým lidem řekli „sorry, ale nemáš na to, nadělal bys víc škody, než užitku“.
Popisované vývojové prostředí pro Arduino ovšem není nijak pokročilé. Na hraní s piny a sběrnicemi stačí, ale už ne na rozumný návrhu skutečných jednočipových řešení. Neumí rozumně používat přerušení, neumí rozumné čekání na událost, a tak většina navržených aplikací používá nekonečnou smyčku. Takže například napsat program, který pravidelně čte data na vstupech, zpracuje je a pošle zpracovaný výstup na displej, je s ním téměř nemožné. O část událostí na vstupech přijdete.
Ale to celkem nevadí. Pokročilý uživatel sáhne po avr-gcc, které je v pozadí vývojového prostředí, nebo po assembleru. Znamené to ovšem zahodit všechny předpřipravené knihovny, a ovladač pro displej přepsat.
Pak ještě může (podle verze Arduina, kterou má) narazit na omezení hardware. Příkon uspaného procesoru je tak malý, že použitý stabilizátor může mít problémy udržet napětí.
Poslední problém se týká způsobu návrhu shields a statického propojení pinů. Vše se zdá krásné až do okamžiku, kdy potřebujete speciální funkci některého z pinů, které shodou okolností obsadil některý shield pro obyčejné I/O. Pak není cesty, jak propojení změnit, pro danou konstrukci obsadit jiné piny.
Již delší dobu přemýšlím o inteligentnějším řešení. Třeba kdyby existovaly standardizované konektory pro připojení SPI, UART, I2C k podobným deskám. Třeba pomocí kabelů a konektorů, jejichž provedení by reflektovalo specifika dané sběrnice (např. samostatná CS linka pro každou SPI periférii). Takový konektor by obsadil jediné možné piny dané sběrnice, a pak by si nějakým způsobem „ukousnul“ potřebné obecné GPIO linky.
Na Slovensku sa Arduino predáva napr. tu: http://elektromodely.com/modely/shop.php?…
je nejaky reseni jak tam dostat datum a cas, mam pocit, ze ten jazyk a standarni arduinu nevi kolik je hodin a kolikatyho je. to je dost problem, chtel sem to v dome pouzit na nejaky spinani bojleru a ruznejch cerpadel pres bluetooth ale jak to neumi cas tak to neni tak zajimavy
Je možné řešit datum a čas čistě softwarově: Software Date Time library. Rozhodně lepší řešení ale je použít nějaký RTC (real time clock) obvod. Např. DS1307 → ukázka komunikace s arduinem.
Rozhodně bych se přikláněl k řešení s externím RTC, které je zálohované baterií. V případě výpadku napájení nebo resetu CPU od watchdogu je čas stále validní. Prostě je to taková kotva s ohledem na čas, aby si náhodou bojler nemyslel že je půlnoc v jednu odpoledne. Jinak zálohovat celé CPU řízení bojleru baterií je zbytečné, když nejde napětí, nejde ani bojler a zálohovat to tak aby byly potřebné proudy pro spínání relátek to už znamená pořádné ampérhodiny.
Arduino nemá RTC (Real Time Clock), takže kolikátého je samo o sobě neví. Můžete k němu RTC připojit nebo použít Wiseduino – klon Arduina který RTC má: http://timewitharduino.blogspot.com/…seduino.html
BTW arduino se muze rozbit chybou v nahranem kodu (pomerne jednoduse pomoci nejake off-by one chyby treba) tak, ze se prepise bootloader a potom je treba ho preflashovat – treba pomoci nejjednodusejsejsiho paralelniho programatoru, ktery se sklada ze 2 konektoru, 5 dratu a 3 resistoru: http://arduino.cc/…elProgrammer?…
Chtel bych take upozornit na nekolik dalsich stranek:
http://blog.harvie.cz/?… – nekolik mych clanku
http://www.arduino.cz/ – cesky eshop – arduino asi za 700kc
U nás prodává Arduino ještě Snail Instruments. Mají i Arduino Mega a nějaké to příslušenství.