neděle 15. prosince 2013

Ručně vyrobený akupack a pravda o Li-Ion

Stále ještě oslněn mým nedávným objevem fantastických čínských Li-Ion akumulátorů s obrovskou kapacitou 4500 mAh (tj. přes 16 Wh!) za pouhých 40 korun (na Ebay) jsem přemýšlel, co z nich vyrobit. A vzpomněl jsem si, že +Ondřej Caletka mi na LinuxAltu 2012 půjčil v hospodě přenosnou nabíječku mobilních telefonů, což je takový váleček jen o málo delší/tlustší než ten Li-Ion akumulátor, který má na konci dva USB konektory: jedním, tím mini, se doma v klidu energie nalévá z USB nabíječky do vnitřního akumulátoru, no a tím větším USB konektorem se pak někde venku daleko od zdrojů elektřiny vypouští ven, do telefonu či jiného přenosného zařízení s nabíjením přes USB. Tak jednoduché, a přitom v terénu s vybitým mobilem k nezaplacení.

komerční řešení přenosné nabíječky
Napadlo mě, že na to mám vlastně veškeré součástky i know-how po ruce: mám akumulátor, mám měnič napětí z 3,7 V na 5 V (dokonce se správným výstupním USB konektorem), no a na Ebay jsem bleskově našel i nabíjecí modul Li-Ion akumulátorů (už mě ani nepřekvapilo, že má opět ten správný mini-USB konektor na vstupu):

veškeré nutné součástky ke stavbě vlastní mobilní nabíječky za 100 korun
Teď už chyběla jen vhodná krabička. Dopředu jsem věděl, že ji vytisknu na naší 3D tiskárně, jen jsem netušil, jestli ji budu muset celou navrhnout a nakreslit, nebo se mi podaří najít něco vhodného na Thingiverse. A světe div se, našel jsem PŘESNĚ tu správnou, do které všechny součástky pasovaly úplně vzorně:

zkouška krabičky - vše perfektně sedí
Takže teď stačilo těch pár kontaktů propojit mezi sebou a bylo hotovo. Poslední tuning zahrnoval vyvrtání mikrodírek pro paprsky světla od indikačních LEDek (celkem tři - nabíjím, nabito, vybíjím). Teď už jen zbývá sehnat někde světlovodivá vlákna a zatavit je do vyvrtaných dírek, ať svítí ven vždy jen ta pravá LED. Do té doby se je pokusím odstínit pomocí kousku papírku nalepeného na víčku...

propájeno a zkompletováno
Výsledek, slepený tavnou pistolí, vypadal mimořádně robustně a první krátký test absolvoval na výbornou. Akumulátor se přes mini-USB nabil a pak i dobíjel můj mobil. Super! Na poslední chvíli jsem přidal reklamní polep a výsledek předal jako ručně vyrobený (a tudíž velmi cenný) dárek synovi k narozeninám. Pozn.: akumulátor byl před finální kompletací vyměněn a vevnitř je skutečně 4500 mAh, nikoliv ten slabý 3800 mAh figurant na prvních fotkách :-)

finální verze včetně reklamy
Netrvalo dlouho a přišla reklamace. Prý to nejenže mobil nenabije, ale dokonce ho to vybije! Pracně jsem tu pečlivě slepenou krabičku rozdělal, abych mohl najít chybu. Žádná očividná tam nebyla. Všechno fungovalo správně - akumulátor se přes USB skutečně nabil na plnou kapacitu, a pak se začal vybíjet přes měnič do připojeného mobilu. Ale ouha - z poloviny vybitý mobil (s 1300 mAh baterií) to nedokázalo dobít ani do plné kapacity, aniž by se ten skvělý čínský 4500 mAh akumulátor nevybil úplně do mrtva (pod 2 volty).

Jelikož matematicky to nevycházelo (4500 mAh je přece mnohem víc než z poloviny vybitý 1300 mAh) a na chybu v zapojení to nevypadalo, začal jsem nakonec podezřívat samotný akumulátor. Potřeboval jsem ho proměřit, abych zjistil, má-li plně nabitý opravdu 4500 mAh. Nebo-li dokáže-li dodávat proud o určité hodnotě (třeba 500 mA) skutečně po dobu 9 hodin v kuse, než se vybije. No, nakonec jsem pro jednoduchost zvolil vybíjení do konstantního odporu 7,3 ohmu, což zhruba odpovídá 500 mA odběru.

Abych nemusel skákat kolem voltmetru a ampérmetru s hodinkama/stopkama v ruce a celý den to kontrolovat a zapisovat si údaje na papír, který potom ztratím, postavil jsem raději během chvilky digitální voltmetr s vestavěným web serverem, přes který se dají vyčítat naměřené hodnoty na analogových vstupech Arduina (měření s 10bitovou přesností, tj. +-2,5 mV). Tedy vzal jsem jedno Arduino, k němu připojil Ethernet štít, napsal krátký prográmek, který změří aktuální napětí a zobrazí ho na webové stránce a hotovo.

digitální internetový voltmetr = Arduino+Ethernet shield
Pak už stačilo jen napsat kratičký skript v shellu na mém serveru, volaný z cronu každou minutu, který přečte aktuálně naměřené napětí z webové stránky běžící na tom Arduinu a zapíše do CSV souboru (nebo by mohl i posílat do RRD pro graf v reálném čase). Výsledný CSV jsem naimportoval do Google Documents a jedním klikem si nechal vygenerovat graf. Výsledek je docela drsný:


Ano, akumulátor s udanou kapacitou 4500 mAh vydržel zahřívat připojený rezistor místo očekávaných 9 hodin jen necelou hodinu a půl! Když zintegruji danou křivku, vychází mi kapacita pekelných 666 mAh. To je téměř sedmkrát horší, než udaná. Už chápu, proč to nedokáže připojený mobil dobít ani z poloviny...

Pro zajímavost jsem změřil i druhý velký (18650) akumulátor, ten s udanou kapacitou 3800 mAh. Výsledek už nepřekvapil:


Tentokrát je realita (reálná kapacita) dokonce osmkrát horší než sliby prodejce. Opět studená sprcha.

Ještě jsem zběžně proměřil další články, které jsem v původním nadšení nakoupil, tentokrát typu 14500 (velikost našich AA), s udanou kapacitou 1600 mAh. Výsledek = 219 mAh (stejný výsledek u dvou různých kusů). Poměr slib : realita = 7,3 : 1.

Různé články, různá kapacita, ale společný koeficient lži
Když se nad tím zamyslím, je až s podivem, že všechny 4 články o různých kapacitách, od různých prodejců (ale možná stejného výrobce) shodně na obalu tvrdí, že mají 7-8 krát vyšší kapacitu než ve skutečnosti. Jedná se snad o nějakou nepsanou čínskou dohodu, že se na obalu bude udávat 8x vyšší kapacita, aby se články lépe prodávaly?

Teprve teď mě napadlo zeptat se, co o tom ví ostatní. Tento test článků o kapacitě 5000 mAh v podstatě potvrzuje moje zkušenosti (i když tam autor dospěl jen k pětinásobně přepálené udané kapacitě).

Je na místě zavrhnout tyto Li-Ion akumulátory úplně? Tento článek říká, že ne - jen je potřeba vyhnout se nesmyslně vysoké kapacitě a podezřele nízké ceně - skutečný akumulátor typu 18650 má bohužel kapacitu maximálně 3000 mAh, za to cenu má minimálně 5x vyšší, než za jakou jsem nakoupil tyto svoje pomníčky...

Nicméně se vůbec nevzdávám: mám v plánu rozbít akumulátor od nefunkčního notebooku, vytrhat z něj poctivé články a znovu oživit tento akupack, snad už se skutečnou kapacitou v řádu celých ampérhodin. Plus mám nápad, jak vylepšit elektroniku pro současné nabíjení vnitřního akumulátoru i připojeného mobilu. Ale o tom zas až příště...

P.S. ten digitální síťový voltmetr s webserverem se pro měření dlouhých dějů naprosto osvědčil. Asi mu vytisknu krabičku a napíšu komplet software na míru, abych měl prostě digitální multimetr s internetovou konektivitou.

čtvrtek 5. prosince 2013

Krmivo pro 3D tisk už jedině z JZD

Naši 3D tiskárnu už všichni znají. Podobně jako u obyčejné 2D tiskárny je do ní potřeba kupovat nějakou náplň, aby měla čím tisknout. Místo inkoustu žere tzv. filament, což je označení pro nekonečné vlákno z plastu. Z jakého plastu? Z nějakého, který jde dobře tavit (teplota tání by měla být tak pod 250 ℃). Nejčastěji se pro 3D tisk používají ABS nebo PLA, ale čile se experimentuje s mnoha dalšími. My jsme pro začátek konzervativně zvolili ABS, což je materiál, ze kterého jsou například Lego dílky, takže jsme měli docela dobrou představu, jaké pevnosti by výsledné výtisky měly dosáhnout.


Naše tavicí hlava umí zpracovávat vlákna obou nejčastějších průměrů - 1,75 mm a 3 mm. Pro úvod jsme zvolili průměr 3 mm a jali se na webu hledat nejlevnějšího dodavatele. Nakonec jsme vybrali czechreprap.eu, na kterém je zajímavé, že je to česká firma mající web i ceny komplet v angličtině/eurech. Po dlouhém dohadování jsme vybrali neutrální šedou barvu a koupili 900 gramů té plastové struny, která nakonec vyšla asi na 600 Kč. Levněji to na jaře nikdo neuměl. Dá se říct, že jeden metr té struny vyšel na zhruba pětikorunu, což je poměrně drahé, když uvážíme, že kdejaká drobnost si vezme metr či dva té struny, větší věci metrů klidně třeba šest.

Pak jsme půl roku zkoušeli tisknout a nebudu kecat, když řeknu, že přes polovinu materiálu jsme vyplýtvali na neúspěšných pokusech. Při 3D tisku se totiž může pokazit asi tak třicet šest různých věcí a většinou se i pokazí. Kluci vytiskli pár holčičích soch, já jsem si vytiskl pár krabiček na mé elektronické zázraky (s poměrem tak 3 nepovedené na 1 povedenou), zkusili jsme vytisknout náhradní díly na Reprap a to byl konec, šedá struna došla...


Začali jsme tedy zkoumat, kam se za půl roku pohnuly ceny filamentu a především nenapadlo-li některé JZD, které s plastem už dělá (dnes většina bývalých družstev nekrmí krávy granulemi, ale tiskne/stříká z plastového granulátu spoustu různých výrobků), vyrábět také ty struny pro 3D tiskárny. Osobně jsem se snažil v (JZD) Zálesí přesvědčit je o důležitosti výroby strun, ale nepovedlo se. Náhodou mi ale +Jan Krupka řekl o jiném družstvu, z Haňovic, kde to správní lidé pochopili a struny už valí.


Naštěstí v Haňovicích také pochopili, že rozumná cenová politika je klíčem k úspěchu a nasadili poloviční ceny než zbytek světa! Tak to má být. Navíc se s nimi dá velmi dobře mluvit, pan ing. Přindiš mi dokonce poslal vzorky PLA (takže konečně zkusíme tisknout z kukuřice nebo z čeho to je) a nějakého jejich speciálního ABS, které prý trpí menší smrštitelností při chládnutí (smršťování při chládnutí je jedna z bolestí 3D tisku, která umí zle pocuchat výrobky větších rozměrů).


Samozřejmě jsme byli zvědaví, co za plast nám dorazí a jak bude tisknout. Barvu jsme tentokrát vybrali žádnou, tj. "natural" (bezbarvý, resp. neobarvený přírodní) a čekali. Plastová struna přišla na pěkné kartonové cívce (což je pokrok oproti czechreprap.eu, kteří to poslali jen smotané jak napínací drát na plot a museli jsme kvůli tomu vyrobit cívku). Dokonce byla zatavená v sáčku spolu s takovým tím malým pytlíčkem soli, co s ním babička vždycky posype oříšky, u kterých taky bývá (už jsem jí řekl, že je to jedovatý pohlcovač vzdušné vlhkosti a že to sypat na jídlo nemá :-)

No a jak to teda tiskne? Jedním slovem VÝBORNĚ! Výsledné výtisky jsou přesnější (méně přetoků), vrstvy jsou lépe "slité" a hlavně je výsledek mnohem pevnější. Z nějakého důvodu jsou naše výtisky teď jakoby lépe "propečené" a jednoduše řečeno vypadají velmi "solidně" ve všech významech tohoto slova. Oproti šedivé struně od předchozího dodavatele je to jednoznačné zlepšení, ze kterého jsme nadšeni.


Takže pokud váháte, kde objednat strunu (ne do kytary), jděte rovnou na PV Plasty Mladeč, vyberte si kromě materiálu, průměru a barvy navíc taky tvrdost - aha, ceník online ještě nemají, tak si ho vyžádejte a uvidíte sami. Pan Přindiš mi ještě psal, že se po Novém roce chystají na vodou ředitelné PVA, což by umožnilo jednoduše tisknout rozpustitelné podpory pro dnes netisknutelné tvary (např. stojící hříbek). No budu je po očku sledovat, a pokud s nimi máte sami zkušenost, podělte se v komentářích níže.


pátek 22. listopadu 2013

Zvyšujeme napětí až na pět (DC step-up)

Po menším zklamání s 9V napájením jsem se pro přenosné napájení Arduin (a jiných 5V hraček) zaměřil na tužkové monočlánky. Jaké máme možnosti, Kowalski?
Kowalski má vždy po ruce několik možností
Tak určitě můžu použít AA (nebo dokonce AAA) 1,5V články, nebo raději rovnou dobíjecí NiMH akumulátory, které mají obvykle jen 1,2 V. Mohl bych zmínit i nabíjecí články Pure Energy s 1,5 V, kterých mám doma několik desítek, ale nechci si zaneřádit blog sprostými slovy. Takže máme článek o napětí 1,2 V. Z nich by se dal postavit zdroj o vyšším napětí, když bych jich zapojil víc do série. 3 kusy jsou ještě málo (jen 3,6 V), 4 kusy už jsou moc (plně nabité by daly kolem 6 V, a to už by Arduino nebylo rádo). Navíc 3-4 kusy jsou i docela objemné a těžké...

2 NiMH akumulátory a jeden alkalický dobíjecí článek
Další možností je použít Li-Ion akumulátory, které jsou u nás v tužkové podobě dost neznámé, zatímco celá Asie na nich frčí ve velkém stylu. Dělají se v mnoha různých kapacitách a velikostech, kdy některé  (např. typ 14500) jsou prakticky stejně velké jako naše AA. V čem se ale Li-Ion od "našich" NiMH liší zásadně je napětí - Li-Ion má standardně 3,7 V. Ovšem problém je podobný jako výše - napětí polovybitého článku kolem 3 V Arduinu nestačí, a po sériovém zapojení dvou Li-Ion článků bych dostal 7,4-8,4 V a to už je zas moc.

Li-Ion 14500 a 18650 články
Třetí možností přenosného zdroje elektrické energie by mohl být solární panel. V létě jsem totiž trošku experimentoval se solárními panely z takových těch malých zahradních lampiček, co se jen zapíchnou do země a ve dne se nabíjí a v noci svítí. Změřil jsem, že v nich ten maličký, větrem ošlehaný a časem zašlý panýlek dává kolem 1 voltu, v ideální situaci plného přímého poledního Slunce pak dokonce přes dva volty. Tak jsem chvíli uvažoval i o tomto jako možném zdroji (než jsem zjistil, že ten panel není schopen dodat téměř žádný proud, což ale přičítám tomu zubu času).

1857 mV - podzimní slunce mezi mraky za oknem
Ale jak z nízkého napětí získat poctivých 5 voltů? V tu chvíli opět vstupuje na scénu měnič napětí, tentokrát ale směrem nahoru, "zvyšovač", anglicky tedy step-up DC converter. V mém oblíbeném obchodě značky Ebay.com jich mají hned několik typů, lišících se minimálním vstupním napětím a účinností. Rovnou vynechám převodníky s nastavitelným výstupním napětím a pro účely Arduina použiju měniče s výstupem na USB, tedy 5 volty.

naši tři kandidáti na holení
Konkrétně jsem našel tři typy (na fotce zleva doprava): s napětím od 0,9 V a neuvedenou účinností, dále s napětím od 0,9 V a inzerovanou až 96% účinností (juchů!) a pak třetí, který dokáže zvyšovat napětí až od 3 V. Ten jsem rovnou ze sestavy vyloučil, protože by nestačil ani na solární panel, ani na dva Ni-MH články v sérii. Takže jsem postupně kupoval jednotlivé měniče, vždy po zklamání jsem objednal další typ a tím jsem nakonec získal neobyčejnou možnost je všechny porovnat, proměřit a podělit se s vámi o dalších pár slepých uliček, které jsem s chutí prošlapal.


Nejdřív jsem si koupil ten první měnič, který vypadal tak nějak nejméně integrovaný, starší, protože jeho čip měl jen čtyři nožičky. Připojil jsem ho k solárnímu panýlku a NIC. Ukázalo se, že inzerované nejnižší napětí 0,9 V není pravdivé. Ani při 1,0 V nebylo na výstupu víc než 4,7 V. Při 1,5 V má výstup 4,91 V a indikační dioda začíná mírně žhnout. Při vstupním napětí 2 V je na výstupu 4,95 V a indikační dioda už svítí tak poloviční intenzitou. Je tedy zjevně připojena na vstupní napětí. Bohužel tak vysoko se ten solární panýlek nedostane, tak jsem ho vyřadil z možných zdrojů napětí a dál počítal už jen s nabíjecími články či bateriemi z nich.


Zároveň jsem objednal ten druhý měnič, který také tvrdí, že funguje od 0,9 V, a navíc inzeruje fantastickou účinnost až 96 %. Když dorazil, vypadal tak nějak nověji/moderněji, víc integrovaně, neboť jeho čip má šest nožiček. Test u solárního panýlku dopadl o něco lépe, alespoň vizuálně, neboť indikační dioda je u tohoto typu připojená na výstup, takže vždy svítí plnou intenzitou bez ohledu na vstupní napětí. Bohužel ta dioda sama spotřebuje poměrně dost energie - například při vstupním napětí 1 V bere převodník naprázdno celých 10 mA, které všechny vysvítí ta dioda. Nakonec jsem tedy vyměkl, rozhodl se používat pouze Li-Ion články a tak mohl objednat i třetí převodník (ten, který vyžaduje nejméně 3 volty):


Tento typ se ukázal jako zdaleka nejlépe vymyšlený. Jeho indikační dioda totiž jen rychle poblikává, takže spotřebuje 4x méně energie, což už je v trvalém provozu docela zanedbatelné. Navíc jako jediný z převodníků inzeruje výstupní proud až 1 ampér, ti druzí dva si troufají jen na 600 mA (v některých inzerátech dokonce jen 200 mA).

Přišel čas zanést všechny tři převodníky do naší laboratoře. Nejdřív jsem je všechny proměřil naprázdno (bez zátěže), abych tušil, je-li možné je nechat trvale zapnuté i bez připojeného spotřebiče. Dále jsem jim nastavil na vstupu tři různá nízká napětí, abych viděl, jestli vůbec fungují podle popisů prodejců (na výstupu měly zátěž 220R - na větší proudový odběr než pár desítek mA si rozhodně při tak nízkém vstupním napětí netroufly).
A nakonec jsem jim na vstupu nastavil tvrdé napětí 3,6 voltu (jako by měl jeden Li-Ion článek, nebo 3x NiMH) a postupně k jejich výstupům připojil rezistory o odporu 10R (pro odběr kolem 0,5 A, jako bych nabíjel mobilní telefon), 49R (pro odběr kolem 100 mA, řekněme Arduino s podsvíceným displejem) a 220R (pro odběr kolem 23 mA, řekněme nějaké úspornější zapojení Arduina s jednou LED nebo tak něco). Výsledky měření jsou v následující tabulce, která v posledních 6 řádcích ukazuje, při jakém vstupním napětí a jaké zátěži bylo jaké napětí na výstupu a s jakou účinností v tu chvíli převod napětí probíhal:

 měnič  4 nohy  6 noh  od 3 V
 odběr naprázdno při 4 V  2,1 mA  1,8 mA  0,43 mA
 napětí naprázdno při 3,6 V  5,06 V  5,14 V  5,19 V
 napětí/účinnost při 1,0 V a 220R  4,70 / 73%  5,05 / 69%
 napětí/účinnost při 1,5 V a 220R  4,91 / 85%  5,07 / 74%
 napětí/účinnost při 2,0 V a 220R  4,95 / 84%  5,29 / 64%
 napětí/účinnost při 3,6 V a 220R  5,09 / 84%  5,39 / 78%  5,17 / 89%
 napětí/účinnost při 3,6 V a 49R  5,00 / 84%  5,48 / 65%  5,17 / 88%
 napětí/účinnost při 3,6 V a 10R  4,57 / 69%  4,04 / 70%  5,17 / 88%

Myslím, že výsledky jsou jasné. První dva převodníky se rozhodně nehodí na nabíjení mobilních telefonů - neudrží napětí při odběru 0,5 A. První typ dokonce ani nedosáhne plného výstupního napětí, pokud nemá na vstupu aspoň 2,5 V. Za to si ale udržuje solidní účinnost 84 %, pokud po něm nechceme příliš velký výstupní proud. Dokážu si ho představit s jedním Li-Ion článkem v nějakém zařízení, které se spokojí s max. 100 mA odběrem.

Druhý převodník, co jej prodávají s údajnou 96% účinností, v ní nakonec dopadl nejhůře - většinou klopýtá kolem či pod 70 %, jen při výjimečně dobrých podmínkách (velké vstupní napětí a minimální  zátěž) je trošku lepší, pořád ale nejhorší ze všech. Zároveň mu utíká výstupní napětí až moc vysoko (5,5 V?!). Na druhou stranu jako jediný dokázal opravdu trošku fungovat od 1 voltu, což je hrdinské. Myslím, že u tohoto typu výrobce nezamýšlel větší výstupní proud než 200 mA - těch 600 mA mu přiřadili až někteří ziskuchtiví prodejci. Pokud se někdy octnu v situaci s jen jedním či dvěma NiMH články, tak tento převodník by z nich těch 5 voltů vyždímal, za cenu 30% ztrát.

Třetí převodník je jasný vítěz: dodává stabilní výstupní napětí bez ohledu na zátěž, má nejnižší vlastní odběr a zdaleka nejvyšší účinnost dotýkající se až 90 %! Myslím, že tento kus je vhodný na stavbu nabíječek mobilních zařízení s velkým odběrem, a stejně dobře poslouží i v přenosných Arduino hračkách s odběrem minimálním. Jsem rád, že jsem se k němu nakonec prokousal, a jiné typy už teď nekupuji :-)

středa 20. listopadu 2013

Přenosné napájení pro Arduino (DC step-down)

V tuto chvíli už mám doma celé hejno těch krásných čínských kopií Arduino Pro Mini (dokonce tři rozdílné revize) a začínám z nich stavět různé, i přenosné přístroje. K nim jsem potřeboval vyřešit přenosné napájení. Původně jsem totiž všechna Arduina testoval přímo připojená přes převodník do USB portu PC, a ten je zároveň i napájel 5 volty, takže jsem zdroj napětí nepotřeboval a neřešil. Jakmile ale Arduino skončí v krabičce někde dál od PC, bude přenosný zdroj napájení potřeba.

Jelikož Arduino Pro Mini vyžaduje provozní napětí 5 voltů (existuje i verze na 3,3 V, ale ta je taktovaná polovičním kmitočtem - jen 8 MHz - a nikdy jsem ji nechtěl), je potřeba použít buďto baterii o napětí přibližně 5 V a připojit ji ke vstupu označenému VCC, anebo vzít baterii s vyšším napětím, ale tu pak připojit k vývodu označenému RAW, tedy surové napětí. Na Arduino desce je vestavěný stabilizátor, který si napětí z RAW pinu sám sníží na potřebných 5 V. Takže jedna z nejjednodušších přenosných možností je například klasická 9V baterie:

Teploměr s Arduino Pro Mini, DS18B20 a LCD Nokia 5110
Tohle je fajn a celkem dobře to funguje až do chvíle, než si člověk uvědomí, že téměř polovina energie z baterie se vyhazuje zbůhdarma v tom stabilizátoru. No, vlastně se mění ve ztrátové teplo, ale to je zhola zbytečné, když je okolo zrovna docela horký den (50,125 ℃, jak displej správně ukazuje). Je to tak: když má baterie 9 voltů a my jich potřebujeme jen 5, tak se ty čtyři volty navíc (téměř polovina energie z baterie) zahodí, aniž by měly šanci udělat kus práce.

Proto jsem se rozhodl použít následující ďábelské zařízení, které jsem náhodou našel na DX.com a které slibovalo snížit stejnosměrné napětí a to s vysokou účinností. Ano, za mých dětských let šlo měnit jen střídavé napětí, ale dnes se prodávají šikovná malá udělátka, která to zvládnou i s napětím stejnosměrným.

měnič napětí směrem dolů (zmenšovač :-)
Takže jsem připojil 9V baterii k tomuto měniči napětí (anglicky DC-DC step-down converter), nastavil jsem trimrem (tím otočným šroubečkem na modré kostce) výstupní napětí na přesně 5 voltů, připojil na něj Arduino s čidlem pro měření teploty vody v bazénu a vysílačem na 433 MHz (více o tomto vodním teploměru v samostatném blogpostu, brzy) a šel spát s dobrým pocitem ušetřené energie, která se už nemění v zbytečné teplo, ale s vysokou účinností (reklama u výrobku tvrdila až 92%) mění na správné napětí a tak prodlužuje životnost baterie.

koncept bazénového teploměru, baterie a měnič

Druhý den byla baterie zcela vybitá.

Přimělo mě to připojit k obvodu pár ampérmetrů a trošku ten bazmek proměřit. A zjistil jsem podivuhodné věci, které stojí za to zveřejnit. Především, ten převodník má jistý klidový odběr, který je větší než malý - zhruba 7 mA. To znamená, že holý převodník (tedy bez připojené zátěže na výstupu) dokáže vybít 9V baterii (resp. 9V akumulátor s kapacitou 200 mAh, na který jsem přešel, abych ušetřil rodinný rozpočet a nekupoval stále další a další drahé baterie) už za jeden den! To je dost šokující (aspoň teda pro mě). Moje snaha o uspávání Arduina během chvil, kdy neměřil teplotu (abych snížil průměrnou spotřebu) byla s tímto měničem napětí zhola zbytečná, neboť i když Arduino spí, měnič saje energii jak drak.

Už teď mi bylo jasné, že pro nízké odběry v řádu desítek miliampér je nejspíš mnohem lepší spolehnout se na stabilizátor napětí na Arduino desce (tj. připojit těch 9 V přímo na RAW pin), ale nedalo mi to a proměřil jsem ten měnič napětí pořádně. Jak jsem říkal, reklama u výrobku slibovala 92% účinnost, a byla dokonce podpořena fotografií stolu se stabilizovaným zdrojem a dvěma voltmetry a ampérmetry, které ukazovaly, že z 12 V zdroje to při změně napětí na 5 V a odběru 2 A do zátěže bere ze zdroje jen 1 A. Tedy že z 12 V a 1 A "vyrobí" 5 V a 2 A.

tu chybí ta reklamní fotografie, nemůžu ji teď zrovna najít

Jednoduchou matematikou (5x2/12/1) vychází 83% účinnost. To by bylo pořád ještě dobré, ale když jsem v naší pracovní laboratoři nastavil prakticky stejné podmínky (tedy na vstupu 12 V a na výstupu 5 V), jen s menším odběrem (pouze 0,5 A), tak jsem naměřil účinnost pouhých 73 %! Účinnost dokonce dále klesá s odběrem - při zátěži 50 ohmů a tedy odběru jen 0,1 A spadla až na nelidských 65 %. To už je ten převodník prakticky zbytečný a obyčejný stabilizátor by fungoval stejně "dobře". Nedalo mi to a proměřil jsem ještě převod z různých napětí (5, 9, 12 V) na výstupních 3,7 V (do 10 ohmové zátěže). Tady byla účinnost také slabých 72%, prakticky bez ohledu na vstupní napětí.

Tím se tento výrobek odsoudil do pekla a já jsem dumal, co dál. A napadlo mě proměřit ještě obyčejný "cigaretový" měnič napětí s USB výstupy, který mám v autě na dobíjení telefonů. Zdálo se mi totiž nemožné, aby takový maličký kolíček dokázal zvládnout 3A proud a neroztavit se z toho:


A tento měnič mě opravdu mile překvapil! Při vstupních 12 V (jako v autě) a zátěži 10 ohmů zapojené do USB zásuvky (ve které bylo v tu chvíli 5,32 V) vyšla účinnost krásných 90,4 %. Tak proto zvládne i 3 ampéry proudu - díky tak vysoké účinnosti je ztrátový výkon maximálně 1,5 W a to ho prakticky nezahřeje. Budu ho muset rozdělat a zjistit, co je v něm za čip - LM 2596S (jako v tom převodníku výše) to asi nebude. Bohužel má také nezanedbatelný klidový odběr - 8 mA. Ovšem 44 Ah autobaterii by poznamenal až po pár měsících neježdění/nedobíjení, takže v autě může být zapojen v klidu pořád.

Tímto jsem skončil s pokusy napájet Arduino z baterií s napětím vyšším než 5 V. V příštím blogpostu se zaměřím na baterie s napětím nižším, a tím pádem na step-up převodníky (zvyšující napětí), opět i s proměřením jejich účinnosti.

neděle 17. listopadu 2013

Nové Arduino Pro Mini s SPI headerem

Při procházkách po Ebay.com jsem narazil na nové Arduino Pro Mini, které má kompletně přeskládané součástky na desce tak, aby při zachování stejného formátu desky a pinové kompatibilitě lépe zpřístupnil piny A4 a A5 (které jsou na standardním Arduino Pro Mini posunuté o půl rozteče, takže nezapadnou do univerzálních plošných spojů).

Kopie původního/originálního Arduino Pro Mini

Nové neoriginální Arduino Pro Mini s ISP piny
Navíc má úplně zvlášť vyvedené SPI piny (těch 6 modrých vzadu), takže má v podstatě ICSP header (podobně jako to má například Arduino Nano), což se hodí na připojování různých Arduino štítů, které používají SPI - např. displeje nebo Ethernet shield:

Ethernet shield na zádech nového Pro Mini přes SPI header
Skutečně je díky tomuto čínskému zlepšení (aspoň tedy předpokládám, že je to čínská invence) nyní možné propojit Ethernet shield původně navržený pro Arduino Uno s tímto Arduino Pro Mini takto jednoduše - jen přes SPI header a jeden drát navíc (Slave Select, pin 10).

Pro porovnání fotografie předvádějící zapojení Ethernet shieldu k starému Pro Mini, kde je potřeba vést 7 samostatných drátků - rozdíl v eleganci je patrný na první pohled:

pokusné zapojení Ethernet shieldu mnoha drátky
Jediná chybička tohoto nového uspořádání plošného spoje je, že nemá shora popsané vývody - nějak na to nezbylo místo. Popis pinů je zespodu, kam obvykle nevidím. Ale stačí si postavit vedle starší Pro Mini, nebo si vytisknout obrázek originálu a všechny piny "sedí":


Jelikož je rozdíl v ceně zanedbatelný, počítám, že tento nový typ brzy vytlačí starší, který kopíruje design originálu z Itálie. Osobně si už budu kupovat taky jen tento novější, protože ty lépe vyvedené A4+A5 se někdy můžou hodit (při popisu termostatu zmíním kde) a SPI zvlášť je taky šikovná věc.

sobota 16. listopadu 2013

MythTV, VDPAU, Pařízek a kostičky v TV

Nejdřív rozkóduji nadpis: MythTV je skvělý digitální videorekordér, nebo dnes už spíš multimediální centrum, o kterém jsem psal například na Root.cz, české stránky o něm pak provozuji na TVPC.cz.


VDPAU je název pro programové rozhraní, které umožní těžkou a špinavou práci s dekódováním a zobrazováním videa přenechat grafické kartě od firmy NVIDIA (dnes už prý i AMD), která se s tím vůbec nezapotí, na rozdíl od slabého hlavního procesoru, který na opravdu hustá videa (s vysokým bitrate) obvykle nemívá dost sil.

Radim Pařízek je bubeník kapely Citron, který rozjel několik vlastních TV stanic a pro ně navíc i dva pozemní digitální multiplexy, Multiplex 4 a Regionální síť 7.

Kostičky jsou pak jeden z lidových výrazů pro viditelné poruchy v digitálním obraze, kdy se původně celistvý obraz rozpadne do jednotlivých "kostiček" (čtverečků) a různě dlouho různě hrozně zlobí.

No a zajímavé je, že prakticky všechny pořady televizí vysílaných v Pařízkových výše zmíněných multiplexech trpí hrozným kostičkováním v momentech velkých změn obrazu. A že to není silou či kvalitou signálu je možné se přesvědčit například v této velmi dlouhé diskusi. Nečetl jsem ji celou, ale myslím, že správný závěr z ní je, že kostičkování se týká mnoha desítek různých TV a set-top boxů různých výrobců, přičemž Radim sám je určitým způsobem z obliga, protože vysílaný stream je dle MPEG normy - bohužel používá nějaké nastavení kódování prokládaných půlsnímků, které téměř nikdo jiný na světě nepoužívá, takže na něj mnoho různých výrobců digitálních televizí jaksi není připraveno.

MythTV u nás doma nahrává všechny naše oblíbené pořady, hlavně jednotlivé díly televizních seriálů, například SpongeBoba v kalhotách. Ten zrovna běží na TV stanici, která se jmenuje tuším Smíchov a ta je součástí DVB-T multiplexu 4. No a tím pádem bohužel taky kostičkuje. Proto jsem to začal řešit, a jako první jsem se odhodlal k upgrade MythTV z verze 0.26 na aktuální verzi 0.27 doufaje, že to pomůže. Nepomohlo.

Jak jsem výše naznačil, dekódování MPEG proudu zajišťuje grafická karta přes rozhraní VDPAU. Napadlo mě, že třeba pomůže novější NVIDIA ovladač a tak jsem se pustil do upgrade jeho. To bylo poněkud zajímavější, ale aspoň jsem se naučil, že v (X)Ubuntu se na změnu proprietárních ovladačů používá program s názvem "jockey", přičemž kromě obvyklé grafické podoby "jockey-gtk" má také verzi pro příkazovou řádku "jockey-text", která umí vypsat všechny dostupné verze ovladačů ("jockey-text -l"), a také některou z nich vybrat a použít ("jockey-text -e xorg:nvidia_319_updates"). Dále jsem se po několika hodinách bojů naučil, že přestože jockey ukazuje, že je zvolená verze 319, tak pokud je v systému z dřívějška nainstalovaná i jiná verze (např. výchozí 304 v Ubuntu 12.04), tak to pořád nějak zlobí. Řešením je odinstalovat všechny ostatní nepoužívané NVIDIA ovladače. Kupodivu ani nakonec úspěšný upgrade ovladače graf. karty také nepomohl a pořady kostičkovaly dál.

Poslední možnost byla vypnout VDPAU úplně a nechat MPEG video dekódovat jen slabý Atomový procesor. Naštěstí má MythTV možnost volby, pro jaké rozlišení použít jaký dekodér, takže jsem mohl stanice vysílající ve vysokém rozlišení nechat dál grafické kartě, a pouze stanice se standardním rozlišením (PAL 720x756) poslat k dekódování hlavnímu procesoru. No a toto nastavení zázračně vše vyřešilo a kostičky snad definitivně zmizely. Dal jsem si  tu práci a natočil to všechno na videokameru (přepněte si video na celou obrazovku, jinak jsou mé překryvné komentáře bůhví/Googlevíproč nekompletní):


Můj závěr z toho je, že svobodný software (knihovna FFMPEG) zas jednou zvítězil nad dedikovaným hardware v pružnosti, obecnosti a bezchybnosti. Dlouhodobě totiž razím tezi, že nejlepší je mít na všechno počítač s vhodným softwarem namísto různých jednoúčelových krabiček (set-top boxů, DVD přehrávačů atd.), protože svobodný software se zdrojovým kódem se vždy opravuje jednodušeji než proprietární hardware. Samozřejmě v tomto případě je to trošku "přitažené za vlasy", protože i ta grafická karta dekóduje MPEG pomocí software, ale tento je dostupný pouze v binární formě a záleží jen na firmě NVIDIA, jestli si někdy všimne, že Radim Pařízek někde v Evropě nastavil svůj MPEG enkodér poněkud netradičně...

EDIT: 17.11. jsem to nahlásil i v NVIDIA.

čtvrtek 14. listopadu 2013

Máme vlastní 3D tiskárnu!

Na konferenci LinuxAlt na podzim loňského roku jsem navštívil velmi zajímavou přednášku o 3D tiskárnách, kterou vedl +Miro Hrončok. Velmi poutavě až nadšeně tam vyprávěl o tom, jak na FIT ČVUT v Laboratoři 3D tisku tiskárny RepRap staví, ladí, jak pro ně vytvářejí 3D objekty, jak je tisknou a jaká je to prostě neuvěřitelná paráda.

Miro Hrončok na chodbě LinuxAltu 2013
To nadšení z 3D tisku přenesl Miro i na mě, takže když na jaře tohoto roku spolupracovník/kamarád +Jaroslav Gajdošík zmínil, že by si chtěl postavit frézku, tak jsem mu pod dojmem z přednášky, i s pocitem, že Arduino patří všude (tiskárny RepRap mají srdce v podstatě z Arduina), řekl: "a proč si nepostavíme rovnou 3D tiskárnu?"

No a Jarda se do toho pustil a během chvíle vytesal naši 3D RepRap Air tiskárnu ze dřeva! Lidé ji většinou staví ze železa nebo plastu, ale Jarda má asi rád dřevo, a tak vyrobil kostru z materiálu, který je dost pevný, jednoduše dostupný a přitom výborně opracovatelný.

dřevěná kostra naší RepRap Air tiskárny 12.4.2013
Na Ebay jsme objednali motory, trysky, plastové díly a elektroniku z různých koutů světa (asi jako když Kapitán Nemo stavěl svou tajnou ponorku). Motory, tavicí tryska a další mechanické věci postupně přišly a nakonec dorazila i krabička se stavebnicí elektroniky (Sanguinololu). Do toho jsem se zase pustil já.


Po pár dnech poctivého pájení podle podrobných návodů se mi povedlo elektroniku zkompletovat a oživit (na fotce chybí ve velké patici procesor, jinak je to komplet).


No a po dalších dnech pokusů a ladění začala tisková hlava s tavením a tryskou o průměru 0,4 mm opravdu jezdit všemi směry (ano, všechny motory jsem měl naopak a musel jsem jejich konektory přepájet, a nakonec jsem musel i hackovat nějaké konstanty ve firmware Sanguinololu, protože jsme dali jeden end-stop na rozumnější stranu než autor toho firmware).

Pak jsme objednali prvních 900 gramů plastové struny z ABS o průměru 3 mm (po dlouhém vybírání padla volba na neutrální šedou barvu) a začali zkoušet vytisknout první výrobek.

21.5.2013 - první výtisky/zmetky
Začátky byly opravdu krušné. Nejhorší je, že se tištěný výrobek při chládnutí postupně smršťuje, tím se mu zvedají rohy od podložky, tím pádem se od ní odlepí a je po tisku. Zkoušeli jsme kde-co, tisnout na různé lepicí pásky a tak, ale pořád se nám nedařilo a zmetky se vršily do stohů, asi jako když Wall-E uklízel bordel ve městě.

4.6.2013 - úspěch na lepicí pásce a skle
Nakonec se nám začalo celkem dařit tisknout předměty s malou základnou, kolem které jsme ještě nechali natisknout široký okraj, tzv. brim (ve Slic3ru). Cokoliv většího se ale téměř vždy odlepilo, což bylo mimořádně frustrující. Začali jsme tušit, že bez vyhřívané podložky to nepůjde.

6.6.2013 - dráček na obkladačce
Z Číny chodí zboží 3 a více týdnů, takže jsme měli čas zkoušet další podkladní materiály, různé teploty tisku (ABS plast se vytlačuje z trysky teplotou kolem 230 ℃) a sem tam se dostavil i docela pěkný výtisk, viz třeba ten dráček nebo co to je (3D modely všeho možného i nemožného najdete na Thingiverse i jinde).


19. června konečně dorazila vytápěcí podložka (je to v podstatě jen plošný spoj do zkratu, který má odpor asi 1,3 ohmu, takže při 12 voltech topí přes 100 watty a rozžhaví se na více než 100 ℃), dokonce s uraženým rožkem (proto ji mám vyfocenou, reklamoval jsem to).

A začalo další kolo pokusů, neboť ani podložka není všespásná. Jeden z problémů byl, že ne každý dnešní PC ATX zdroj ochotně dává 15 ampér na 12 V větvi. Poté, co jsme odpálili úplně nový zdroj, nám naštěstí +Kamil K půjčil nějaký starší, který už cosi vydrží. Další zajímavý problém je, že ani těch 100 W nevyhřeje podložku na potřebných 110 ℃ - prostě se teplo rozuteče do místnosti a teplota podložky se potácí někde kolem 80-90 ℃. I tohle jsme ošidili (podložku při roztápění přikrýváme takovým "kabátkem" z alobalu, aby teplo neutíkalo do prostoru).

No a nakonec jsme byli opět na začátku: co dát na tu rozžhavenou podložku, aby se na tom plast udržel. Tiskneme na sklo (asi 4 mm silné), a na tom se plast udržet nechce. Zkoušeli jsme odmašťovat, to trošku pomohlo, ale zas jen někdy... Peklo s odlepenými (a tedy zničenými) téměř hotovými výtisky pokračovalo...

A pak, po studiu mnoha zdrojů a po měsících zkoušení všeho možného i nemožného na to Jarda konečně přišel! Stačilo rozpustit některé z nepovedených výtisků v acetonu a výsledným roztokem (o hustotě řekněme neředěné malířské barvy) natřít sklo. Tato hmota během minuty vyschne a vytvoří plastový film na skle nesmírně pevně přilepený. Když se potom rozehřeje podložka nad 80 ℃ a tryska začne tlačit roztavený plast, perfektně se sleje s tím rozetřeným a drží jak čert! Výsledný výtisk je zespoda úžasně jednolitý a hladký (pokud tedy má člověk podložku přesně vodorovně s pohybem hlavy a sklo není nijak prohnuté).

ukázka vytištěné krabičky 17.8.2013
Takže nakonec jsme to myslím docela slušně porazili (aspoň co se týče podložky a přilnavosti k ní) a teď tiskneme věci jako na běžícím pásu. Díky této 3D tiskárně mé elektronické výrobky konečně mají krabičky a já jsem tak moc spokojen. Akorát Jarda už zas přemýšlí nad tou frézkou... :-)


středa 4. září 2013

Acer Iconia Tab A1 - téměř dokonalý tablet

Při svém hledání pro mě dokonalého tabletu (viz březnový Colorovo CityTab a dubnový GoClever A103) se mi v červnu do ruky dostal i Acer Iconia Tab A1-810, který mě na první pohled oslnil. Splňuje totiž prakticky všechny požadavky, které na ideální tablet kladu:

  • úhlopříčka 8" je perfektní - 7" je totiž málo a 10" už moc
  • poměr stran 4:3 je skvělý - není to úzká dlouhá nudle jako 16:9
  • IPS displej je základem, a rozlišení 1024x768 je na 8" dostatečné
  • RAM 1 GB je konečně dost velká na to, aby šlo pořádně využít multitasking Androidu
  • čtyřjádrový rychlý procesor MTK a skvělá grafika PowerVR zaručují naprosto plynulý běh programů
  • tablet má GPS, takže se dá použít ke geocachingu či navigaci, a fotky mají geotag
  • rozlišení zadního fotoaparátu 5 mpix je také výborné (a má i přední kameru na videohovory)
  • tablet má HDMI výstup, možnost rozšíření 16 GB paměti SD kartou a i 3,5mm pro sluchátka
  • a hlavně, byl to snad první tablet na českém trhu s Androidem 4.2.2 přímo od výrobce!
Díky novému Androidu jde hned po vybalení založit vícero účtů a jeden tablet tak může sdílet např. víc členů rodiny. Na to jsem se těšil od chvíle, kdy (před lety) prosákla informace o podpoře více uživatelských účtů v Androidu.

Všechny dříve testované hry a programy jedou na tomto tabletu samozřejmě bezchybně a krásně rychle/plynule. Barevné přechody kulečníkového plátna jsou na IPS displeji perfektní. Celkové skóre v AnTuTu benchmarku je 13229, což je opravdu rozdíl oproti 3564 u GoClever či 2564 u CityTab.

Zatím je všechno dokonalé, že? Bohužel teď už přijdou jen ty horší zprávy.

První věc, které jsem si všiml, byla absence elektronického kompasu. Kvůli tomu nejde tablet použít pro rozšířenou realitu - jednoduše proto, že tablet neví, kterým směrem jeho zadní kamera míří. To je obrovská škoda - například takový Google Sky Map by musel být na tak krásné obrazovce zážitek.

Potom si začal syn stěžovat, že mu nefunguje dobře sluchátkový výstup. Neřešil jsem ještě proč, jen jsme zjistili, že tablet hraje pouze do připojených sluchátek, ale nechce hrát, pokud například přes sluchátkový výstup propojí tablet se vstupem receiveru nebo jeho přenosného reproduktoru. To je minimálně podivné.

No a poslední ránu jinak skvělému tabletu zasadil QR kód: když jsme se pokoušeli naskenovat QR kód, s hrůzou jsme zjistili, že kamery nemají automatické ostření (auto focus). Kvůli tomu je prakticky nemožné QR kód zaměřit a rozpoznat. Přitom v mobilech je auto focus naprostá samozřejmost, až tak moc, že jsem ani nevěděl, jak je to důležité. Ruční zaostření není možné, takže na nějaké fotky blízkých objektů nebo rozpoznávání např. těch QR kódu je nutno zapomenout.

Tento tablet je opravdu výborný a může dobře posloužit, pokud mu uživatel promine těch pár výše zmíněných nedostatků. Pro mě jsou bohužel neprominutelné, takže ideální tablet hledám dál...

úterý 3. září 2013

Arduino: nový USB převodník s CP2102

V minulém příspěvku jsem popisoval způsob připojení Arduino Pro Mini se sériovým výstupem k PC s USB přes převodník s PL2303. Důležité z toho bylo, že původně dobře promyšlený nákup se ukázal jako špatný krok, ale s pomocí návodů z Internetu, páječky a kusu umu/štěstí se mi podařilo proměnit původně 5-pinový převodník na převodník 6-pinový, tedy včetně DTR signálu klíčového pro programování Arduin.

Několik měsíců jsem s tím byl relativně spokojen, ale pak jsem si řekl, že než čtenářům představím toto své řešení, raději si koupím i ten druhý převodník s CP2102, 6-pinový, a když ten bude fungovat bezvadně, tak tu svou smutnou PL2303 story s relativně šťastným koncem raději nechám v trezoru a všem budu doporučovat osvědčené řešení bez nutnosti pájet něco pod lupou.

Vyrazil jsem tedy na ebay.com (ano, už od března nakupuji téměř výhradně na Ebay, kde jsou ceny minimálně o třetinu nižší než na dx.com) a začal prohledávat nabídku převodníků ze sériového na USB rozhraní s čipem CP2102. Se světáckým úsměvem na rtech jsem vyfiltroval všechny převodníky s pouhými pěti piny (kdepak, mě už podruhé nenachytají!) a začal si prohlížet na fotografiích ty 6-pinové.  Všiml jsem si, že jsou vyráběny v nejméně dvou provedeních, kdy je čtvercový čip buďto sladěn se směrem desky, nebo stojí "na koso". Neviděl jsem v tom však většího rozdílu, a tak jsem vybral dle svého oblíbeného kritéria ten nejlevnější.


Obzvlášť mě potěšilo, že tento převodník má šestý pin už rovnou nazvaný RST, jako reset. Říkal jsem si, že výrobce je opravdu šikula, že už ví, že tento pin budu propojovat s RST pinem Arduina, a proto mi ho rovnou nazval RST i tady na převodníku, abych nebyl zmatený z méně známého DTR a rovnou spojil RST s RST. Natěšeně jsem převodník propojil s Arduinem a zkusil nahrát program. Ale ouha, překvapivě jsem dostal nechvalně proslulý stk500_recv() error. Co to? Mám snad něco zapojeno špatně?

Po chvíli kontrolování zapojení mě napadlo opatrně se podívat na Internet, jak to vlastně s tím CP2102, RST a Arduinem je. Obratem jsem se dočetl pravdu a krve by se ve mně v tu chvíli nedořezal! Ten RST pin na převodníku je totiž skutečný reset pin toho čipu CP2102, naprosto zbytečně vyvedený ven, zatímco DTR signál je opět nevyveden a dřímá na jedné z těch nano-nožiček...

V tuto chvíli jsem byl prakticky ve stejné situaci, jako s PL2303. Mohl jsem tento převodník vyhodit z okna a koupit si jiný, který má vyvedené všechny signály (ale už skutečně všechny, celkem 14 vývodů), anebo se pokusit o zoufalý čin - připájet na jednu z těch nano-nožiček (ještě mnohem tenší a s menší roztečí než u toho PL2303) dráteček tenký jako vlas a někam ho vyvést ven. No, rozhodování bylo jednoduché - vyhodit ten modul přece můžu vždycky, takže následoval pokus o připájení a dopadl takto:


Ze spodní strany jsem přeřízl měděnou cestičku vedoucí od RST pinu někam doprostřed plošného spoje a přímo na ten RST pin jsem připájel drátek vedoucí DTR signál od pinu č.1 toho CP2102 čipu. Tím jsem elegantně využil ten pin header a navíc jsem se zbavil toho snad zbytečného RST pinu. Vlastně jsem to udělal tak, jak jsem si původně myslel, že to je zapojeno.

Výsledek je opravdu funkční, převodník s CP2102 mi připadá i rychlejší a hlavně - nemá žádné problémy s USB prodlužkami, takže teď mám Arduino Pro Mini konečně na stole jako normální člověk a dolů k PC vede jen 2 m USB prodlužka.

Každopádně pokud někdo zvažuje, čím spojit sériové rozhraní Arduina s USB na PC, vřele doporučuji koupit převodník (spíš ten s CP2102), který má výslovně vyveden DTR signál. Tento bude nejspíš vyveden úplně mimo pin-header, na boku spolu s ostatními, méně používanými modemovými signály (viz obrázek):


Možná bude o chlup dražší než ty převodníky, co mám doma já, ale zas to bude fungovat bez starostí - a to se určitě vyplatí :-)

úterý 27. srpna 2013

Arduino Pro Mini - menší a ještě lepší

Pro seznámení s Arduino platformou jsem po krátkém přemýšlení zvolil Arduino Uno, a že bylo z čeho vybírat! Vždyť seznam originálních Arduino produktů obsahuje 19 různých desek nejroztodivnějších konstrukcí, včetně Arduina určeného k zašití do oděvu (ano, wearable computing!). Díky svobodné licenci, pod kterou je projekt Arduino vyvíjen a vydáván vzniklo také mnoho klonů. Přitom na začátku roku 2013 už byl Arduino Uno starý produkt a žhavou novinkou byl Arduino Leonardo. Přesto jsem si vybral Uno, protože jsem USB novinky z Leonarda (umí se chovat jako USB klávesnice nebo myš) nepotřeboval a naopak jsem chtěl využít osvědčenost a kompatibilitu Uno se všemi shieldy.

Arduino Uno je fajn, pokud si člověk chce hrát a zkoušet nová zapojení, především pak pokud dokupuje další shieldy. Ovšem když potřebuje připojit periferie, které nepasují do Uno pinů přesně (třeba třípinový IR měřič vzdálenosti, třípinové relé či ten 8pinový LC displej), musí stejně přidat nějakou pomocnou chlebovou destičku, propojit všechno dráty a elegance Arduino skládání na sebe se začíná vytrácet. Navíc výsledek složený z několika desek nad sebou je relativně objemný. Jelikož chci krom jiného postavit nový, inteligentnější pokojový termostat, kam by se Uno sendvič rozumně nevešel, hledal jsem něco jako Arduino Uno, ale menší, skladnější, vhodnější pro hotové výrobky. A našel jsem:

Arduino Pro Mini (originální čínská kopie)
Arduino Pro Mini je naprosto úžasné. S rozměry pouhých 33 mm x 18 mm se vejde prakticky kamkoliv, přitom obsahuje stejný procesor ATmega328 jako velké Arduino Uno, takže sdílí všechny jeho skvělé vlastnosti. Nabízí dokonce o dva analogové piny navíc, tedy 14 digitálních a 8 analogových vstupů/výstupů. Zůstal mu i regulátor napětí, takže také pracuje na 5-12 V. Na fotce je vidět i miniaturní tlačítko reset, a zřejmě tam nejsou vidět dvě LEDky: jedna svítící, když je Pro Mini pod napětím a druhá připojená na pin D13, stejně jako to má velké Uno (asi aby si člověk mohl zablikat LEDkou bez připojování čehokoliv). Takže opět kompletní počítač, ale rozměrů poštovní známky!

Co naopak tomuto Pro Mini chybí? Nemá USB port ani čip, který by USB komunikaci zajišťoval. To mi ovšem nadmíru vyhovuje, protože v běžném provozu není USB na nic potřeba. Ale jak Arduino Pro Mini naprogramovat? Má jen sériové rozhraní s TTL úrovněmi (RX/TX). Tím bych ho mohl připojit k PC do sériového portu, kdybych do cesty vřadil převodník úrovní z TTL na RS232 (obvykle MAX232). No ale proč dávat převodník na RS232, když můžu dát rovnou převodník ze sériového rozhraní na USB, které je dnes u PC mnohem častější?

Takže kromě tohoto Arduino Pro Mini jsem si objednal také sério-USB převodník. Měl jsem na výběr ze dvou typů - levnější s čipem PL2303 a dražší s čipem CP2102. Po "skvělých" zkušenostech jsem delší dobu váhal, a nakonec opět zvolil řešení s PL2303, protože jsem si nebyl jistý, jestli je CP2102 v Linuxu dobře podporován. Výsledek vypadal nějak takto:


Propojil jsem tedy Arduino Pro Mini s tím převodníkem pomocí dodaných kabelů - napájení, zem, RX a TX, a zkusil poslat do Arduina první program. Místo úspěchu jsem obdržel error stk500_recv(). Začal jsem se pídit na Internetu a prakticky okamžitě zjistil krutou skutečnost: nejsem sám, na tuhle chybu už narazili všichni ostatní přede mnou, kteří se pokoušeli programovat jen přes RX+TX signály.

Proč tomu tak je? Arduino obsahuje ve své paměti tzv. boot loader (obouvač bot, krátce nazouvák, nebo také obvykleji zvaný zavaděč), který ihned po resetu naslouchá velmi krátkou dobu (pár stovek milisekund), posílá-li do něj někdo přes sériový port nový program. Neposílá-li nikdo nic v tomto krátkém časovém okně, tak boot loader předává řízení uživatelskému programu, který je nahrán v paměti Arduina od minula, tím pádem na sériovém portu už nikdo nic neposlouchá/nepřijímá a IDE posílající nový program z PC do Arduina se s ním nedomluví a skončí s errorem stk500_recv().

Ctěného čtenáře možná zajímá, proč jsem neznal tento problém z dřívějšího hraní si s Arduino Uno. Tam probíhá komunikace PC <-> Arduino celá přes USB a tak je tam ten nutný reset vyvolán v pravý čas automaticky, řízený některým z USB signálů z PC. Celé to funguje tak pěkně, že mě ani nenapadlo, že se tam v průběhu nahrávání nové verze programu do Arduina děje nějaká magie.

Palčivou otázku, proč jsem si tohle nezjistil PŘEDTÍM, než jsem objednal Pro Mini a ten serio-USB převodník, ponechme raději stranou a hledejme nějaké řešení. Jsou v podstatě tři možnosti: ruční, keš nebo páječka. Ruční řešení je popsáno na Internetu docela jednoduše: stačí v pravou chvíli při posílání programu z PC do Arduina stisknout ten maličký reset na Arduinu. Jednoduché, že? Ovšem trefit tu "pravou chvíli" je dost obtížné. Prý se to dá nacvičit, ale závisí to na rychlosti daného PC, velikosti nahrávaného programu a ještě několika dalších faktorech, takže mě po pár desítkách minut neúspěchů přestalo počítání milisekund od kliku myši na tlačítku Upload k mačkání resetu bavit a šel jsem hledat jiný způsob.

Řešení přes keš je na Internetu popsáno taky docela jednoduše: tento převodník stačí vyhodit z okna a koupit místo něj jiný, který má vyvedený i DTR signál (tedy například ten s CP2102, který je obvykle 6pinový). DTR signálem potom Arduino IDE z PC hlásí Arduinu připojenému přes sériový port, že začíná nahrávat nový program. Tento DTR signál pak přivedeme na RST vstup Arduina a je vymalováno - PC resetne Arduino přesně v ten pravý okamžik automaticky.

Jelikož mi bylo líto vyhazovat PL2303 a čekat další dlouhé týdny na jiný převodník, šel jsem do třetího, nejkrkolomnějšího řešení. On ten čip PL2303 totiž převádí všechny RS232 signály, i DTR. Zrovna DTR je vyvedený na vývod č. 2. Takže teoreticky stačí napájet dráteček na SMD nožičku toho čipu a vyvést ho někam na pin tak, aby šel připojit k Arduinu. Návod je například na http://www.instructables.com/id/Arduino-USB/ a výsledek pájení má vypadat zhruba takto:



No jo, jenže ty nožičky toho čipu jsou teňounké asi tak čtvrt milimetru, a mezera mezi nimi je zrovna tak úzká! Trefit se tam páječkou na správnou nožičku, připájet k ní dráteček, a nespojit přitom dvě-tři sousední nožky v jednu hroudu cínu vyžaduje kromě pevných rukou a dobrých nástrojů v mém případě také kus štěstí. To se na mě usmálo (po několika pokusech) a tak jsem výsledek okamžitě zafixoval pomocí tavné pistole s lepidlem:


Výsledkem je tedy USB<->serial převodník s PL2303, který má celkem 6 pinů - 5 V, 3,3 V, zem, RX, TX a DTR (na spojení posledních třech zmíněných signálů s Arduinem používám audio kabel od CD-ROM :-).

Takto upraveným převodníkem se dá programovat Arduino Pro Mini zcela parádně a pohodlně, s jedinou zvláštní výjimkou: převodník není možné připojit k PC přes USB prodlužku delší než velmi krátkou. Konkrétně mně tu dobře funguje 30 cm prodlužka, ale cokoliv delšího (v jakékoliv kvalitě, včetně super stíněné USB 3.0) nefunguje - jednoduše ztrácí data a programování ani jiná komunikace se nezdaří. Dá se říct, že jsem si na to časem zvykl a při pokusech se holt hrbím pod stolem - aspoň že fungují přední USB porty a nemusím být vlezený pod stolem celý až u zadní strany PC :-)

neděle 25. srpna 2013

Arduino: univerzální řešení

Arduino mikrokontrolér mi připadá jako skvělá náhrada všech drobných elektronických udělátek, která jsem kdy stavěl nebo hodlal postavit. Zároveň mi otevřel dveře k řešení problémů, které jsem si dřív ani neuměl představit. Svou plnou programovatelností a rozšiřitelností je to univerzální švýcarský armádní nůž na téměř cokoliv, co jde převést na elektrické signály.

Například taková drobnost, jakou je "světelný had". Tedy řada LEDek vedle sebe, které blikají v nějakém rytmu, takže vytvářejí iluzi běžícího světla. Vždycky jsem chtěl postavit to, co měl zabudováno vepředu K.I.T.T. a čím pulzoval tím rychleji, čím napínavější scénu Michael Knight Rider zrovna řešil. Z pasivních součástek se to postavit dá, ale je na to potřeba buďto specializovaný obvod, nebo je to složité zapojení a ve výsledku je člověk zklamán, že efekt není dokonalý, protože nejspíš postrádá prvek zpomalení na krajích, když se světlo "odráží" a mění směr.


S Arduinem je tohle naprostá brnkačka! Stačí připojit diody (s omezujícími odpory) do všech 14 až 20 pinů a pak napsat jednoduchý program, který se dá během chvíle vyladit k dokonalosti. A tato hračka se dá dále rozvíjet - například připojením teplotního čidla může takový domácí K.I.T.T. reagovat na změnu teploty a čím víc člověk topí, tím rychleji světlo pulzuje :-) Nebo podobně může reagovat na denní čas, množství světla či na přiblížení "vetřelce". Možnosti jsou neomezené..

Takových hraček je samozřejmě možné navymýšlet milion: co třeba čidlo měřící vlhkost půdy v doma květináčích nebo venku ve skleníku a hlásící, že je čas doplnit zálivku? Z pasivních součástek není problém, ale s Arduinem je to ještě jednodušší a opět lze řešení dále rozvíjet. Zařízení nemusí jen blikat světýlkem, když je půda suchá - může také tu vodu samo spustit a zalít automaticky, nebo může dávkovat vláhu pravidelně, klidně i v závislosti na denní době, teplotě či dalších okolnostech. Stačí připojit pár čidel a dopsat pár řádků programu.

Z dalších šikovných věcí mě napadá například ventilátor, který v koupelně vyvětrá, když je v ní příliš vlhko. Nejspíš se prodává hotové řešení, ale určitě nepůjde naučit, aby se chovalo přesně tak, jak chci (například nepůjde nastavit spínací a vypínací hranice vlhkosti nezávisle). A co takový hlásič unikajícího plynu nebo přítomnosti kouře/ohně? S Arduinem je naprosto jednoduché postavit zařízení, které při detekci plynu či kouře kromě spuštění výstražné sirény může také poslat e-mail nebo SMSku nebo rovnou zavolá na dané číslo. Vlastně by mohlo i začít hasit, a předtím vypnout přívody elektřiny a plynu.

Zatím to byly samé drobnosti až zbytečnosti, ale co se inspirovat v knize Practical Arduino (k dostání u dobrých knihkupců, v PDF pak na uložto)? Můžeme tak například na dálku ovládat elektrické zásuvky (Arduino vysílá řídicí signál na 433 MHz), v pravou chvíli automaticky mačkat spoušť fotoaparátu (takže vytvoříme časosběrné video, nebo vyfotíme kapku dopadající na hladinu), postavíme vlastní zabezpečovací zařízení, nebo můžeme číst teploty z bezdrátových meteo čidel (Arduino poslouchá na 433 MHz) a postavit tak například inteligentní meteostanici s výstupem na web.


Další návody v knize uveřejněné jsou ještě mocnější: jak postavit vlastní osciloskop, bránu řízenou RFID čipy, nebo dokonce jak Arduino propojit s počítačem v autě, aby sbíralo data o jízdě tak, že je možné propojit údaje o poloze (z GPS připojené k Arduinu), otáčkách motoru, spotřebě a další a všechno to vynést do 3D grafu v Google Earth.

Člověka napadají další věci jen když prochází seznamem čidel k Arduinu na Ebay: čidlo světla, výšky hladiny, vlhkosti vzduchu, vlhkosti půdy, vzdálenosti (infračervené i ultrazvukové), magnetického pole, náklonu/otřesů, metanu, propan-butanu, zvuku, barvy, pH, zrychlení, tlaku vzduchu a další a další. Potom také existují měřidla různých veličin, která poskytují na výstupu elektrické impulzy, takže je možné Arduinem měřit například spotřebu elektrické energie nebo vody.

No a to byly vstupní možnosti. Na výstupu či pro komunikaci je Arduino také vybaveno skvěle: může blikat, pípat, vypisovat na alfanumerický displej, malovat na LCD, dokonce i na ty s dotykovou vrstvou. Umí taky komunikovat bezdrátově (v pásmu 350 MHz až 2,4 GHz, také přes WiFi a Bluetooth) a drátově (přes sériový port, USB i Ethernet), může tedy fungovat i jako jednoduchý web server, což je často využíváno. A samozřejmě může ovládat prakticky jakékoliv elektrické zařízení, počínaje motory a konče nevím čím.

Arduino je každopádně velmi mocná platforma, která by IMHO měla být vyučována ve školách anebo aspoň elektro-kroužcích. Dnešní mladí technici to potřebují jako sůl, aby neztratili kontakt s realitou...

V tuto chvíli mám rozestavěno snad 6 různých zařízení s Arduinem a napadají mě další. Zkusím je příležitostně popsat, třeba to bude inspirovat další hackery. Ale předtím všem prozradím, co je ještě lepší, než Arduino Uno... (klikni zde pro pokračování)