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í)

sobota 24. srpna 2013

Arduino: seznámení

Loni v létě se stal velkým hitem Raspberry Pi a na základě oslavných článků jsem po něm také začal pokukovat. Chtěl jsem něco malého, šikovného, co by se dalo programovat a pomohlo mi to v domácí automatizaci. Jal jsem se rozhlížet po nabídce maličkých počítačů a přitom úplnou náhodou "znovuobjevil" Arduino, což byla v tu dobu už 7 let stará platforma, kterou jsem bohužel celou dobu úspěšně ignoroval.

Několik dlouhých zimních měsíců jsem se snažil porovnávat Raspberry Pi (což je v podstatě kompletní PC, jen velikosti kreditní karty) s Arduinem (8-bitový mikrokontrolér se spoustou vstupů a výstupů, taktéž velikost kreditky), až jsem nakonec vybral a 8. února 2013 objednal na dx.com své první Arduino Uno. Vycházelo asi na třetinu ceny Raspberry Pi (což byl pro mě důležitý argument, protože jsem tušil, že u jednoho kusu nezůstane) a zdálo se mi, že s ním bude víc legrace (a o zábavu tu jde především, že? :-)

Arduino Uno rev.3
Nerad bych tu opakoval informace, které jsou dostupné na opravdu mnoha místech, neboť Arduino platforma je po těch letech výborně zavedená a perfektně podporovaná, včetně mnoha zdrojů v češtině. Proto zkusím jen stručně napsat, co mě na Arduinu fascinuje a v čem vidím jeho hlavní výhody:

  • miniaturní, minimální spotřeba energie
  • 20 vstupů/výstupů s HW podporou několika "protokolů"
  • ohromná rozšiřitelnost díky nepřebernému množství periférií a "štítů"
  • programuje se jednoduše v C/C++
Krátce vysvětlím: Arduino Uno pracuje na 5 V (a může být napájeno přímo přes USB kabel z PC), ale na desce má také regulátor napětí, takže bere cokoliv od 5 do 12 V (jede klidně třeba i na 9 V baterii nebo autobaterii v autě), a jak brzy ukážu, tak umí pracovat i na mnohem nižších napětích než je základních 5 V. To je super praktické. Navíc spotřeba proudu je velmi nízká - dá se stlačit i pod 1 mA, když je to potřeba (v některém z příštích dílů tohoto vzrušujícího Arduino seriálu ukážu jak).

Dále, Arduino má naprosto fantastické množství vstupů a výstupů. Když jsem pracně propojil svou digitální teploměrovou síť s PC přes USB-RS232 převodník (protože dnešní PC nemá žádný TTL digitální vstup vhodný na takové hraní), začal mi chybět nějaký jednoduchý digitální výstup, jen nějaký drát, kde bych mohl spínat relé pomocí TTL hodnot 0/1. A tam jsem s PC v podstatě skončil. Oproti tomu základní Arduino Uno má takových vstupů/výstupů minimálně 20! Vlastně prakticky všechny černé dírky na fotce nahoře jsou vstupy nebo výstupy toho mikrokontroléru a dají se jednoduše programovat. To je úžasné!

Navíc ty vstupy/výstupy automaticky podporují některé velmi zajímavé "protokoly" (promiňte nevhodnost slova, zrovna mě nenapadá lepší). Především, 6 z nich funguje kromě digitálních (TTL nuly a jedničky) i jako analogové, a to až s 10bitovou přesností (tj. když měří napětí od 0 do 5 V, tak s rozlišením na 5 mV, což je velmi dobré). Dále některé piny (nožky toho procesoru) podporují protokol a sběrnici SPI, jiné pak I2C, což umožňuje k Arduinu připojit celou plejádu různých periferií počínaje HW hodinami a čtečkami SD karet a konče třeba barevnými dotykovými displeji. Další piny je možné použít pro PWM - jednoduše tak můžeme přímo z Arduina plynule řídit třeba jas připojené LE diody (LEDky) nebo výkon motorku. No a hlavně je těch pinů (vstupů/výstupů) 20, slovy DVACET! :-)

Arduino za těch svých 7 let nasbíralo obrovský náskok před Raspberry Pi hlavně v nabídce připojitelných periferií, kterým se v Arduino hantýrce říká Shields, tedy mým překladem štíty. Funguje to tak, že se v podstatě narážejí na základní Arduino Uno desku shora a většina štítů je dále průchozích, takže výsledek pak vypadá jako nějaký mnohapatrový sendvič. Seznam dostupných štítů je například na http://shieldlist.org/ a je opravdu vyčerpávající. Pro prvotní orientaci mi stačila i nabídka na http://dx.com/s/arduino+shield (možná se už zdá, že ten čínský obchod s poštovným zdarma protěžuji, jako bych měl z nákupů tam nějaké provize, ale není tomu tak a navíc - spoiler alert - brzy se s ním nadobro rozloučím!)

No a otázka programování tohoto mikrokontroléru? Na škole jsem měl tu čest programovat 68HC11 v assembleru a neměl jsem s tím žádný problém - naopak byla radost rozpomínat si na assembler z Atari 800XL a připomenout si, co všechno se v něm dalo s nějakými 50 instrukcemi vyčarovat za programy, hry a dema. Ale dnes už ocením možnost naprogramovat mikrokontrolér i v čistém C (s trochou C++ příchutě) - přecejen ta vyšší abstrakce dovolí soustředit se na samotný algoritmus místo přemítání nad správným adresním módem či délkou skoku, kód je čitelnější a jak se ukazuje, tak nabídka hotových open-source knihoven v C/C++ pro Arduino je obrovská.

Takže zpět k mému Arduinu Uno, které jsem objednal v prvních dnech oslav Čínského nového roku. Mimochodem, nikdy v tu dobu nic v jihovýchodní Asii neobjednávejte, nechcete-li čekat na balíček pět a více týdnů. Když konečně 15. března pošta doručila, nadšeně jsem vybalil samotné Arduino Uno s USB kabelem, infračervený měřič vzdálenosti, LC displej původem z telefonu Nokia 5110, modul s relé určený speciálně pro Arduino a pár JST kablíků, které jsem vlastně ani nepotřeboval. Bleskově jsem Arduino připojil přes USB k PC, v Ubuntu rozbalil vývojové prostředí a rovnou si začal hrát, neboť v Arduino IDE je v menu pod položkou File -> Examples dostupných mnoho desítek hotových fungujících příkladů.

Programování pro Arduino je opravdu velmi jednoduché, ještě jednodušší než v běžném C/C++. Odpadají hlavičkové soubory a celý program se smrskne na dvě funkce, setup() pro prvotní inicializaci a loop() pro běh programu v nekonečné smyčce. Vývojové prostředí připravoval zřejmě někdo, kdo chtěl umožnit programovat i lidem, kteří to do té doby nedělali, a občas je to podle výsledků vidět. Ale zas na druhou stranu, díky za tyto výsledky - všechno okolo Arduina je totiž přísně Open Source dle svobodných licencí, jak hardware tak i software, a díky tomu se komunita kolem Arduina tak úspěšně rozrostla a pokryla prakticky všechny možné i nemožné oblasti použití.

Takže jsem si pohrál s relé, s IR měřičem vzdálenosti, s LEDkama, a pak jsem jednoduše vzal konec své teploměrové sběrnice s DS18B20, zapojil do jednoho z DVACETI volných pinů, přidal tolik potřebný 2k2 rezistor "napájející" tuto sběrnici a po měsících problémů začal naráz odečítat teploty bez jediné chybičky. Hurá. Opojen množstvím volných vstupů jsem dokonce celou sběrnici rozdělil na dvě větve, čímž jsem ji zkrátil a "zhvězdicovatěl", obě větve zapojil do zvláštních vstupů na Arduinu, do dalších pěti připojil LCD z Nokie (pořád mi zbývá 13 volných pinů :-), do projektu naimportoval hotovou knihovnu pro displej a druhou knihovnu pro DS18B20 a teď odečítám venkovní a vnitřní teploty současně a vidím je na displeji, s naprosto minimální námahou a pár řádky zdrojového kódu. Mazec!

Vypadá to jako šťastný konec mé teploměrové anabáze, ale ve skutečnosti je to teprve začátek něčeho mnohem většího... Začnu s nápady, co s Arduinem dělat: viz další díl mého Arduino seriálu.

sobota 8. června 2013

Kompresor a jeho napájení

Měl jsem teď zas výročí narození, rodina se mě ptala, jaký dárek bych si přál, a tak jsem si řekl "jsi už dost velký na to, abys nemusel pumpovat kola či nafukovací matraci ručně" a přál jsem si maličký kompresor, jaký jsem zahlédl v reklamě Auto Kelly za necelé dvě stovky. Pak nadešel slavnostní den a já jsem s obrovským překvapením vybalil z dárkového papíru následující megastroj:


Tato mašina, dodávaná v krásné brašně a s natahovací vzduchovou hadicí jako v profi autoservisu, je samozřejmě asi tak 4x větší, těžší a dražší, než co jsem si původně přál. Mocných deset atmosfér tlaku zdaleka přesahuje mé potřeby. Ovšem jak jsem uviděl ten údaj o napájení - 12 V / 23 A, polilo mě horko. Kde doma vezmu 23 ampér? Síťové napájení kompresor nemá, počítá se pouze s provozem z autobaterie.

Jediný zdroj, který mě napadl, byl z počítače. Např. 350 W ATX zdroj, který jsem doma našel, ale má na 12 V větvi jen 16 ampér. Bude to stačit? Musí! Tak jsem se vydal koupit cigaretovou zdířku (což je název té věci, do které se v autě zapojují elektrické spotřebiče). V místním obchůdku jsem za dvacku koupil totéž, co na Ebay nabízejí za 35, a nestačil se divit tomu provedení:


Vnitřní obvodový kontakt je z kovové fólie tloušťky staniolu, do kterého se balí má oblíbená čokoláda Studentská pečeť. Tohle že má vydržet 23 ampér? Středový kontakt je ještě titěrnější, je to jen maličký nýtek. A pájecí kontakty z druhé strany taky vypadají dimenzované tak na 3 ampéry maximálně. Čekal jsem, že se ta zásuvka za provozu prostě roztaví a rozteče jako ta výše zmíněná čokoláda, ale couvnout se nedalo, tak jsem to zkrátka zkusil, připájel ke zdířce rozstřiženou prodlužku s MOLEX konektorem a spustil to:


Kupodivu se vše rozběhlo a se značným hlukem (fakt jako z autoservisu :-) začal z hadice foukat vzduch. Nedalo mi to a celý systém jsem změřil voltmetrem a wattmetrem. Při vypnutém kompresoru bere ten ATX zdroj 19 W a dává 12,4 V. Po zapnutí kompresoru vyletí spotřeba na 150 W a napětí poklesne na nějakých 11,7 V. A když prstem ucpu hadici a zvýším tak tlak na zhruba 4 atmosféry, spotřeba zdroje stoupne až na 200 W a napětí dál klesne někde k 10,9 V. Při odhadované účinnosti zdroje 80% v tu chvíli dával na 12 V větvi dobrých 15 ampér! Víc už jsem ten zdroj raději netrápil, evidentně pracuje těsně na hranicích svých možností (či spíše kousek za nimi).

Dobrá zpráva je,  že ta levná cigaretová zdířka první nápor vydržela. Také MOLEX konektor jen hřeje, ale nepálí. Je docela možné, že tento slabší ATX zdroj je vlastně do sestavy vhodný, protože se silnějším by se už asi některý z konektorů napájení začal tavit. Tak uvidím, až budu potřebovat něco skutečně nafoukat :-)

čtvrtek 2. května 2013

Velké digitální měření teplot s čidly DS18B20

Delší dobu jsem nosil v hlavě myšlenku měření teploty na klíčových místech otopné soustavy v mém domě. Kotel s relativně vysokým a hlavně neměnným výkonem plus velké množství vody v podlahovém vytápění (majícím velkou tepelnou setrvačnost) totiž způsobují cyklické přechody mezi stavem "je tu chladno, proč ještě kotel netopí" a stavem "je tu zbytečné horko, proč kotel topil tak moc". Chtěl jsem pochopit, jak vlastně celá ta otopná soustava funguje, protože věřím, že by se její regulace dala značně vylepšit - a na to jsem potřeboval vědět, jak se mění teplota v čase, tedy potřeboval jsem teplotu měřit, trvale zaznamenávat a průběžně zobrazovat.

Už dříve jsem sem tam narazil na informace o digitálním měření teploty, ale nakonec mě rozhýbaly k akci až následující dvě věci - jednoduchý český návod na Teploměr pro PC a levná čidla DS18B20 v mém oblíbeném e-shopu. Měl jsem radost, že jeden kus krásného integrovaného digitálního teplotního čidla s 12bitovou přesností a unikátním 64bitovým identifikačním číslem vyjde z Číny jen na 50 Kč, tak jsem tam začátkem listopadu 2012 objednal hned 4 kusy. A protože jsem chtěl čidla připojit k mému novému serveru, který bohužel nemá žádný sériový port, objednal jsem rovnou v Číně i adaptér z RS232 na USB, abych měl kam převodník pro DS18B20 zapojit (spoiler alert: dobře si ho prohlédněte, protože to je naposledy, co ho vidíte).


Týden před Vánoci zboží konečně dorazilo, ovšem tehdy jsem na něj z pochopitelných důvodů neměl čas. Ke stavbě převodníku pro připojení digitálních čidel na sériový port jsem se tak dostal až na Silvestra, takže jsem to udělal nedočkavě, rychle a bezohledně, starou dobrou metodou vrabčího hnízda tak, aby výsledek pasoval do plastového krytu konektoru Canon.



Při testech vše perfektně fungovalo, tak jsem neváhal připojit všechna 4 čidla naráz - jak vidno, zapojují se jednoduše paralelně - a odečítat teplotu na všech současně, abych se ujistit, že ukazují stejně. A skutečně, kalibraci mají výtečnou, rozdíly v teplotách byly maximálně desetinu stupně Celsia. Dokonce jsem použil i právě koupený teploměr a porovnával naměřené hodnoty čidel s ním, pořád všechno bezvadně sedělo. Byl jsem tedy připraven začít čidla rozmisťovat po domě.


Důležitá poznámka o sběrnicích: tato skvělá čidla mají tři vývody - zem, napájení a jeden vývod datový, který umožňuje obousměrnou komunikaci po speciální jednodrátové ("1-Wire") sběrnici vyvinuté právě pro tato čidla. Takže na propojení čidla (či mnoha čidel) s počítačem stačí tři dráty - napájení, zem a data. Ale výrobci čidel (firmě Dallas) se zdály tři dráty ještě moc, a tak vymyslel tzv. pasivní režim, kdy stačí pouhé dva(!) dráty - čidlo se totiž dokáže napájet z komunikace na datovém vodiči (nabije si v sobě kondenzátor a pak z toho chviličku žije). No a protože se v návodech psalo, že pasivní režim je super a sexy, šel jsem do něj taky a rovnou natáhl z pracovny do sklepa ke kotli jen dva dráty (upřímně řečeno jsem neměl moc na výběr, z nouze jsem použil kablík původně myšlený na přenos zvuku z PC v pracovně do TV v obýváku, ještě než jsem před 8 lety postavil MythTV HTPC přímo v obýváku).

Mechanickou část bych rád přeskočil, protože jsem ji tak trochu nedořešil. Nejdřív jsem si koupil skvělou hliníkovou lepicí pásku, o které jsem se domníval, že povede teplo, a tou jsem čidla přilepil přímo na měděné trubky s otopnou vodou. To se ukázalo nedostatečné - čidla se pod lepicí páskou uvolňovala, ztrácela 100% kontakt a měřené hodnoty se rychle začaly lišit od skutečnosti. Tak jsem to pojistil kovovou sponou (tou na zahradní hadice), kterou jsem ale nedokázal utáhnout dost pevně a zároveň dost šetrně - měl jsem pocit, že při utahování to čidlo rozdrtím. Tohle bych ještě rád nějak vylepšil. Stejně tak jsem nevyřešil rozumně nějaké konektory, takže jsem nakonec čidla napájel na dráty natvrdo. To má své výhody (žádné selhávající kontakty), ale i nevýhody (výměna čidel, přemístění čidel, výměna vodičů - všechno znovu pájet).

Pokojové rozvody k čidlům jsem udělal chytřeji: použil jsem existující ethernetové rozvody - tedy CAT5 kabeláž. Pro čidlo jsem po dlouhém váhání a pročítání zkušeností jiných vybral vodiče č. 4 a 5 (modrý a modrobílý), které jsou v normální počítačové síti nepoužité a zároveň jsou spolu hezky zkroucené (takže jsem si říkal, že sběrnice bude odolná vůči případnému okolnímu elektromagnetickému rušení). Čidla jsem nacvakl přímo do RJ45 konektoru a zastrčil do ethernetové zásuvky. Tím můžu měřicí bod jednoduše stěhovat po celém domě, kdekoliv je existující rozvod LAN...

Záhy jsem rozmístil všechna 4 čidla (voda do topení, voda z topení, voda z kotle a vzduch v obýváku), měření fungovalo skvěle, grafy ukazovaly nečekané souvislosti, bylo to úchvatné. Zachtělo se mi měřit ještě víc a tak jsem začal shánět další čidla. Velmi překvapivě jsem našel DS18B20 v místním obchůdku fy Official a to za ještě lepší cenu než v Číně - pouhých 37 korun!


Nakoupil jsem jich další hromádku, k tomu relé na 230V a začal plánovat, že počítač převezme úlohu termostatu v obýváku, který dnes řídí topení kotle pouze podle teploty vzduchu. Jistě dokážu naprogramovat dramaticky účinný a nesmírně inteligentní software, který bude řídit kotel tak skvěle, že doma nebude ani zima ani horko!

Na dobrou regulaci vytápění by se ale opravdu hodilo znát venkovní teplotu (abych tak trochu zapojil i ekvitermní regulaci), takže jsem protáhl 1-Wire sběrnici o dalších pár metrů ze sklepa až ven na stěnu domu a tam přidal další čidlo. Zároveň jsem natáhl další větev sběrnice doma a kromě obýváku začal měřit teplotu i v horním patře, protože obývák má největší solární zisk ze všech místností a to velmi často doplete regulaci kotle, který pak netopí, protože celý den svítilo Slunce.


A v tom se to celé po..kazilo. Teplotu měřím každou minutu a grafy zobrazuji za posledních 12 hodin, 48 hodin, a celý týden. A naráz začalo být nepřehlédnutelné, že software Digitemp občas vyčte z čidel naprostý nesmysl. Postupně jsem se pokoušel ty nejviditelnější hrubky odstraňovat - například "127,94" stupňů Celsia jsem brzy vyhodnotil jako chybu čtení, kdy z čidla soft vyčte jen 12 binárních jedniček. Stejně tak jsem brzy začal z grafu vynechávat hodnotu "85,0", o které jsem se dočetl, že přímo značí Error, tedy chybu čtení čidla.

Bohužel i přes tyto úpravy se pořád množily chyby, kdy teplota na některém čidlu v naprosto náhodné momenty "ustřelila" třeba o padesát stupňů Celsia jedním či druhým směrem, ačkoliv při dalším čtení o minutu později už bylo vše opět v pořádku. Tyto chyby měly také tendenci se akumulovat, kolikrát když se objevily, tak se pak objevovaly pořád, množily se a někdy pomohl až restart PC (?!). Jindy zase zmizely po několika hodinách samy. Byla to noční můra a pokusům a ladění jsem věnoval nesmírné množství energie a času. Podle tohoto by opravdu nešlo řídit kotel...


Začal jsem cíleně hledat další podobné nešťastníky na Internetu a brzy jsem našel celou řadu materiálů, ze kterých poměrně jednoznačně plynulo, že použití pasivního módu (tedy jen dvou drátů k čidlům) je naprosto hloupé a funguje to v podstatě jen náhodou a jen na velmi krátkých (desítky centimetrů) sběrnicích s jen pár čidly. Jenže já už v té době měl mohutně rozvětvenou síť čítající jistě desítky metrů nejméně třemi směry, a 8 čidel online. Aha, takže takto velké sběrnice nemohou v pasivním módu fungovat kvůli odporu a kapacitě vedení. Ach jo! Naštěstí nešťastníci měli několik tipů na řešení, které jsem postupně vyzkoušel:

1) pro 1-Wire sběrnici použít kroucenou dvoulinku, protože ta eliminuje rušení, co se může po cestě indukovat. Takže jsem pracně přepájel celé vedení ve sklepě od čidla k čidlu. Výsledná změna žádná, nebo možná dokonce k horšímu. Hledal jsem tedy dál a pak jsem se dočetl, že problém způsobuje kapacitance dlouhého vedení, která v podstatě "zaoblí" hrany digitálního signálu tak moc, že se stane nečitelným. Takže chyba, zpět na stromy!

2) pro 1-Wire sběrnici použít NEkroucenou dvoulinku, protože má menší kapacitanci. Opět jsem pracně přepájel celé vedení ve sklepě. Neměl jsem sílu předělat čidla nacvaknutá v RJ45 konektorech, takže jsem místo toho vypojil domácí měření úplně. Sběrnice se tím dramaticky zjednodušila a chyb čtení opravdu výrazně ubylo. Ovšem jak regulovat topení bez vnitřní teploty? Hledal jsem tedy další tipy a našel...

3) přidat kondenzátor před čidla. To se mi zdálo divné, vždyť jinde vysvětlovali, že to přestává fungovat právě proto, že dlouhá sběrnice už má příliš velkou kapacitanci, no ale zkusil jsem přidat kondenzátor tuším 22nF k nejvzdálenějšímu čidlu. Sběrnice totálně vytuhla, takže tudy ne.

4) No a poslední tip, který jsem našel, bylo přidat rychlou diodu v závěrném směru před každé čidlo (to myslím doporučuje sám autor Digitempu). Prý to ořeže nějaké zlé napěťové špičky na sběrnici nebo co. Koupil jsem tedy 8 Schottky diod a postupně je začal dávat paralelně k nejvzdálenějším čidlům. To se mi zdálo, že zabralo, ale spíš jsem měl jen štěstí na několikadenní klid před bouří, neboť chyby na sběrnici se (zřejmě po zapojení jedné domácí větve ke sběrnici) opět vrátily...

Začátkem února jsem se po stovkách pokusů dostal do stavu, že pokud jsem odpojil dvě domácí větve zapojené přes CAT5 a nechal jen větev sklepní, tak to fungovalo téměř bez chyb, ale jakmile jsem sběrnici zapojil "do hvězdy", chybové byly i desítky procent ze všech měření. Bylo to bohužel v souladu s tím, co jsem se nakonec dočetl o pasivních 1-Wire sběrnicích na webu, kde jasně doporučují žádné zbytečné odbočky či dokonce rozbočky a celou 1-Wire sběrnici jen jako jeden (nepříliš dlouhý) drát.

Už to peklo nebudu dál protahovat. Po mnoha týdnech v podstatě marných bojů jsem při pročítání dalších a dalších zdrojů informací o 1-Wire sběrnicích a neustálém narážení na zmínky o tom, že pokud chceme mít čidla připojená k Arduinu přes pasivní sběrnici, rozhodně musíme přidat rezistor 4k7 mezi zdroj napětí a tu sběrnici (kterým se sběrnice takto de-fakto "napájí"), mě napadlo zkusit takové napájení sběrnice přidat i na ten můj převodník. Tipoval jsem, že tam sice něco takového bylo původně myšleno i u tohoto převodníku pro DS18B20 na RS232 (zřejmě to má brát energii z DTR), ale třeba je tam "málo šťávy?".

Tak jsem udělal naprosto krutý HW hack: vzal jsem stavebnici "Logitronic 02" (krásné dětství, dnes bezostyšně zkopírováno v stavebnicích Voltík), vrazil do ní 4xAA nabíjecí NiMH články (= 5V, jak se pro TTL hodí) a přes potenciometr nastavený na zhruba 4kOhm připojil k mé 1-Wire sběrnici. A světe div se - všechny ty proklaté chyby, které mě dva měsíce zoufale trápily, naráz zmizely! 3.března jsem otevíral šampáňo...

Zřejmě jsem ta čidla na sběrnici měl skutečně napěťově "podvyživená", proto všechny ty chyby čtení, kdy čidla neměla dost energie dokončit datový přenos. V té době jsem už začínal podezřívat použitý USB-RS232 adaptér, a tady se mi to potvrdilo. Stačilo na zkoušku přepojit 1-Wire převodník do PC s reálným RS232 portem a teploty byly také bez chyb, i bez dodatečného napájení (proč mě tohle nenapadlo ani jednou za poslední dva měsíce trápení?!). Loni jsem koupil dva ty USB-RS232 adaptéry, jeden na toto měření teplot, druhý na připojení UPS, a oba zklamaly obrovským způsobem, po vyčerpávajícím hledání chyb všude jinde.

Výborná zpráva je, že i ta moje docela hustě rozvětvená a velmi dlouhá pasivní 1-Wire sběrnice s kroucenou dvoulinkou naráz začala fungovat dobře. Bedlivě jsem ji sledoval a čekal na moment, kdy selže, ale nic takového se nestalo, šlapala poctivě po další týdny a naměřila stovky tisíc měření bez jediné chyby! Takže všechny ty negativní články a špatné zkušenosti byly možná způsobené taky podobnou napěťovou podvýživou. Pokud je pasivní 1-Wire poctivě "napájen", vydrží zjevně hodně, rozhodně víc, než se píše na webu. Koncem února, v nejhorší situaci, jsem už byl psychicky připravený celé to předrátovat a předělat sběrnici na třívodičovou, ale teď si říkám, že to asi vydrží tak, jak to je.

Nakonec se vybily ty akumulátory držící 1-Wire sběrnici nad vodou a při následném pokusu napájet ji přímo z USB jiného počítače jsem zřejmě popravil ten USB-RS232 adaptér (čehož ovšem vůbec nelituji, protože ten si stejně nic jiného nezasloužil!). V té době jsem už byl pevně rozhodnutý postavit nový ďábelský počítačový termostat využívající tuto mohutnou síť teplotních čidel, ale ne na bázi PC, které nemá žádný rozumný výstupní port pro ovládání relé (ano, bohužel, paralelní port u mého "serveru" taky chybí), ale na bázi pro mě zcela nového světa - Arduina.

Doplnění: po téměř dvou letech má tento článek své pokračování zde.

čtvrtek 4. dubna 2013

Tablet GoClever A103

Nečekaně brzy se mi dostal do ruky další tablet, tentokrát desetipalcový. Mám tedy skvělou příležitost porovnat ho s nedávno půjčeným sedmipalcovým CityTabem. Hned úvodem musím říct, že ty širokoúhlé nudle (16:9) jsou velmi neergonomické a pokud si výrobci tabletů myslí, že je všichni majitelé používají jen a pouze na sledování širokoúhlých filmů, tak se šeredně mýlí. Osobně bych si nejraději koupil tablet s poměrem stran obrazovky 4:3, ale ty jsou dnes už nešťastně málo zastoupené na trhu.

Tento GoClever má procesor typu Cortex A8 na 1 GHz (v čipu chytře nazvaném AllWinner A10), grafiku Mali-400 MP, bohužel opět jen 512 MB RAM a pouze 4 GB disk (z toho volné jen necelý 1 a 2 GB - je to zvláštně rozdělené na dva oddíly). Android je ve verzi 4.0.3 (upgrade z původního 2.3.x). Velká 10,1" obrazovka s pěkně sytou černou a rozlišením 1024x600, které je na tak velké úhlopříčce už na hranici (málem jsou vidět kostičky). Tablet je také dost těžký - váží 703 gramů. Silný černý rám s ostrou hranou je další ranou do ruky, která by měla tablet držet třeba při hře nebo při čtení elektronické knížky. A psaní na virtuální 10" klávesnici, když tablet zároveň držím ve vzduchu, je už dost nepohodlné v porovnání s 7". Zdá se, že ideální velikost na takové to domácí žvýkání je někde kolem 8"...

Silnou stránkou tabletu je v porovnání s jinými typy velké množství konektorů. Nejvíc mě potěšila USB zásuvka plné velikosti, která je rovnou v režimu USB host, takže odpadají starosti se speciálními OTG redukcemi nebo kabely. Jde tedy do ní bez váhání zasunout USB flashdisk či jiné periferie. Příjemným šokem pro mě byla okamžitě fungující USB klávesnice i USB myš, které, když jsem je zapojil obě současně přes USB hub, rázem proměnily tablet na prakticky plnohodnotný notebook. Pravda, pobavilo mě, že nefungovalo ani základní Ctrl+V pro vložení textu ze schránky, ale to jsou softwarové mušky, které by jistě šly vyřešit, pokud se tak už nestalo v novějších verzích operačního systému.

Dále tablet obsahuje druhý mini USB konektor (netradiční, ale praktické), konektor pro microSD kartu, sluchátka, nabíječku a taky HDMI, což jsem taky chtěl hned vyzkoušet. Bohužel tabletovo rozlišení 1024x600 je na velké TV už otřesně zubaté, což mi to znovu připomnělo, že mám pro sebe hledat tablet s minimálně FullHD rozlišením.

V základním "desktopu" je vše krásně plynulé (rolování mezi sousedními plochami), zjevně díky kvalitnímu grafickému čipu. Problémy nastávají až když dojde paměť, což je při 512 MB prakticky hned po spuštění jakéhokoliv programu. Potom se chvílemi dočkáme až mnohasekundové odezvy i na základní ovládací tlačítka (která jsou v Androidu 4.x už jen nakreslená na obrazovce, takže je člověk mačká zuřivě znovu a znovu mysleje, že je předtím zmáčkl málo/nepřesně). Ten kontrast mezi pocitem rychlosti způsobený plynulostí a zároveň čekáním na odezvu tlačítek mě tak mátl, takže jsem raději hned pustil syntetický test rychlosti AnTuTu. V následující tabulce jsem pro názornost zařadil nejen svůj referenční telefon, ale i před pár dny testovaný CityTab. Připomínám, že všechny tři stroje jsou taktované shodně na 1 GHz a mají stejnou velikost RAM, tablety potom mají i stejné grafické rozlišení. +Kamil K mi pak ještě poslal výsledky svého tabletu Umax Joyplus M78 s A8 na 1,2 GHz a taky Mali 400, pro zajímavost:

AnTuTuHTC Desire ZGoClever A103Colorovo CityTabUmax Joyplus M78
Total4129356425643696
CPU Integer683613408529
CPU Float477148389363
RAM703504413422
GPU 2D467400238476
GPU 3D120615225341541
I/O write140688725
I/O read1639917560

Z výsledků je celkem dobře vidět, v čem je Mali-400 silný - v 3D grafice vyhrál na celé čáře a CityTab zahanbil hned 3x. Zajímavý propad v CPU Float si ale vysvětlit nedokážu. V ostatních testech (až na rychlost disku) je zkrátka o něco rychlejší než CityTab, ale pořád nestačí ani na můj starý telefon.

Nyní pár slov ke zklamáním, kterých jsem si za necelé dva dny testování užil až-až. Za prvé, když je tablet vybitý (dostal jsem ho půjčený úplně vybitý), tak se na něm nedá vůbec nic dělat. Zásadní věc je, že se tablet ani nenabíjí, pokud je aktivně používán - vyzkoušeno po dobu mnoha hodin, za které se stav baterie nezměnil ani o jediné %, přestože nabíječka nabízí 2 ampéry. Takže když na tabletu potřebujete něco udělat a je zrovna vybitý - smůla. Není dokonce ani možné ho trošku nabít a začít používat - to totiž vypadává v několikasekundovém intervalu WiFi spojení. Takže jedině vypnout tablet a jít chvilku třeba štípat dříví, za hodinku se nabije aspoň na třetinu a jde chvíli používat.

Ještě horší je, že WiFi spojení mi vypadávalo, i když byl tablet plně nabitý. Nedokázal jsem přijít na to, čím to je způsobeno, ani jsem ho nedokázal přesvědčit, aby nehlásil, že domácí WiFi je mimo dosah, přestože si na antény WiFi AP mohl v tu chvíli dosáhnout prstem (kdyby nějaký měl). Nepomáhal ani restart, ani jiné běžné kejkle. Nakonec jsem ho musel zatlačit do úzkých tím, že jsem do USB zapojil můj USB-Ethernet konvertor, který měl tendenci obejít nefunkční WiFi a přitáhnout síť po kabelu - což nakonec bohužel nefungovalo, nevím proč (kernel přitom vše rozeznal a systém Android taky). Nicméně na vystrašení WiFi to stačilo a od té doby už zas funguje. Bohužel vedle vystrašené WiFi jsem zůstal vylekán i já. Když tablet nechce být online, stává se z něj v podstatě jen drahé těžítko, protože těžiště jeho práce a schopností je online... Nerad bych vlastnil takový zlobivý kousek (a nevím, jestli je to HW nebo SW problém, závada konkrétního kusu nebo chyba v celé sérii).

Z her je radost hrát Where's my Perry, který, na rozdíl od CityTabu, tu funguje bezvadně. Naopak Asphalt 7 pokaždé spadl právě v momentu, kdy jsem se měl objevit ve startovním poli, takže jsem si rychlých závodniček zase neužil. Kulečníkové plátno v Pool Break Pro má stále barevné mapy, ale není to už tak do očí bijící jako u toho předchozího tabletu. Tento tablet se přitom nepyšní IPS obrazovkou jako CityTab. Zajímavé.

Další mrzutost je nefunkční bezdrátová klávesnice a myš z Lidlu (značky Trust). Kernel opět USB bezdrátový přijímač rozpoznal, ale klávesnice ani myš nereagovaly. Škoda, s bezdrátem to mohlo být opravdu cool. Tohle bude nejspíš slabina někde mezi Linuxem (kde mi to v Ubuntu funguje) a Androidem. Chvíli jsem pátral po řešení, ale nic jsem narychlo nevygoogloval, tak to nechám ležet. Stejně ten tablet budu už zas vracet. Jo a displej má jeden vadný bod (trvale červeně svítící), což jsem u tabletu taky ještě neviděl.

Mimochodem, GoClever A103 také nemá elektronický kompas, takže Sky Map, Sky Spy a jiné užitečné programy nefungují správně. A pouze přední kamerka 0,3 Mpix jasně dává najevo, že žádné hrátky s rozšířenou realitou nebudou.

Závěrem bych rád napsal, že tento tablet za 2300 korun je mnohem lepší koupě než dříve testovaný CityTab za 4200 Kč, a to především díky grafice Mali 400 a lepší konektorové výbavě. Také je stabilnější (kromě Asphaltu nic nepadá). Přesto se nemůžu smířit s tím, že bych měl čekat 3 a více sekund na stisk základních tlačítek Back či Home a proto tvrdím, že tablety s 512 MB RAM by se vůbec neměly prodávat - lidi z toho akorát zešediví! Tohle dělá Androidu velmi velmi špatnou pověst...

Sám už mám celkem jasno, co by měl normální tablet mít za vnitřnosti: minimálně 1 GB RAM, minimálně dvoujádro CPU, minimálně 1280x960 na 8" či raději FullHD+ na 9"-10"... Snad se mi nějaký takový kousek dostane na zkoušku do ruky ještě dřív, než si nějaký vyberu, koupím a pak už nebude cesty zpět :-)

pondělí 1. dubna 2013

USB-RS232 adaptér a UPS

Postavil jsem si nový server z nepoužívaného nettopu Acer Aspire Revo (o tom někdy jindy, je to dost netypické provedení), který nemá ani jeden sériový (RS232) port, ale za to má 6 USB portů. A tak jsem se začal poohlížet po nějakém levném převodníku z USB na RS232. Záhy jsem našel opravdu pěkný kousek na DX.com za nějakých 60 Kč, v recenzích se dočetl o bezvadné Linuxové kompatibilitě, tak jsem neváhal a šel do něj.

Adaptér skutečně v Linuxu perfektně funguje, přihlásí se jako pl2303, kernel si sám natáhne správný modul, který udělá /dev/ttyUSB0 a je připraven k použití. Nějakou dobu jsem ho nechal ležet ladem, než mě napadlo využít ho pro propojení UPS se serverem tak, aby server věděl, kdy je na baterkách. Mám pořád svou starou, větrem ošlehanou, věčně vrčící a nic nevydržící Blackout Buster 400 UPS od Power Kinetics, ke které jsem před pěti lety opravil řídící soft a která má jen RS232 konektor.

Tentokrát jsem na to ale chtěl jít mnohem fikaněji. Dočetl jsem se, že NUT už tuto UPS podporuje a tak jsem začal rovnou s ním, abych mohl později nainstalovat NUT monitor na pracovní PC, připojené na stejnou UPS. NUT má spoustu konfiguračních souborů, tak jsem všechno nastavil dle svého nejlepšího vědomí a... nic nefungovalo. Dost dlouho jsem to ladil, než jsem pojal jisté podezření a zároveň jsem vyměkl natolik, že jsem se rozhodl nejdřív oprášit původně fungující konfiguraci a pak jít dál po jednotlivých menších krocích.

Začal jsem tím, že jsem UPS připojil k pracovnímu PC přes RS232 (kde vždycky bývala) a zároveň použil starý dobrý OpenUPSmart. Vše fungovalo bezvadně. OK. Tak jsem nahradil OpenUPSmart NUTem a zkusil znovu. Stále vše fungovalo výborně. Takže jsem přepojil UPS přes USB-RS232 adaptér do USB portu, a to už nefungovalo. Tak jsem zkusil jiný USB port a ten fungoval... ovšem za minutu hlásil ztrátu spojení s UPS. Chvíli jsem čaroval s linuxovým jádrem (odpojit adaptér, odstranit modul pl232, znovu zapojit adaptér, povolit debug hlášky v kernelu, ...) a pak zas spustil NUT a ten zas chviličku fungoval a pak zas ztráta spojení s UPS. Nakonec už jsem byl schopen to nasimulovat spolehlivě - komunikace s UPS fungovala jen asi prvních 80 sekund po zavedení modulu, pak se jakoby něco "vybilo" a spojení se ztratilo.

Teprve teď mě napadlo přečíst si ty recenze na DX.com pořádně a tam jsem se dočetl věci, které ledacos vysvětlovaly. Zdá se, že tento adaptér je výborný na komunikaci s běžným RS232 zařízením přes RX+TX, kde normě vyhoví, ale není úplně OK na takové to "mávání" jednotlivým signálovými dráty (které UPS rády používají místo normální komunikace), nehledě k tomu, že nejspíš neumí dávat plných 12V, na což může být některý protějšek (jako tahle UPS) trošku citlivý.

Závěr je, že tento bezva adaptér je na prodej za 60, a já teď sháním novou UPS s USB komunikací...

neděle 31. března 2013

Tablet Colorovo CityTab 7

Dostal se mi na chvíli do rukou zbrusu nový a zároveň můj první počítačový tablet v životě a těch pár hodin testování mě zasáhlo tak hluboce, že si své pocity musím zapsat, abych, až budu mít zas někdy chuť si nějaký koupit, se měl čím odstrašit.

Přesné označení tohoto elegantního výrobku je CVT-CT7-WLAN-3G-NAV a modří již tuší, že ve výbavě nalezneme kromě bezdrátového připojení k síti i prostor pro vložení SIM karty (3G) pro bezdrátový Internet a dokonce i GPS (které v levných tabletech chybí pravidelně). Navíc má tento typ i Bluetooth. Všechny tři jmenované vlastnosti jej vynášejí vysoko nad průměr levných 7" tabletů. Hmotnost 369 gramů je odpovídající kovovému orámování a zapadá do 7" třídy. V dokumentaci je dále zmíněn kvalitní IPS displej s pěkným rozlišením 1024x600.  A ke všemu má i dvě kamery, přední 0,3 Mpix a zadní 3,2 Mpix. Tedy papírově a vybavením je to tablet jako lusk! Cena je aktuálně na 3982 Kč a vzhledem k parametrům (zapomněl jsem zmínit 1 GHz A5 procesor a 512 MB RAM + 4 GB flash) se to ani nezdá moc.

Bohužel realita je mnohem drsnější. Mám-li být stručný, tak stroj je děsivě pomalý, trpí zoufalou nestabilitou, displej neodpovídá dokumentaci, kamery jsou strašné a chybí mu i elektronický kompas (tedy čidlo magnetického pole), takže Sky Map a další hrátky s rozšířenou realitou nejsou možné. No a není tu ani HDMI výstup.

Popíšu podrobněji jednotlivé šoky a začnu pomalostí: srovnávám jej se svým 2,5 roku starým telefonem HTC Desire Z, který mám přetaktovaný na 1 GHz a má také jen 512 MB RAM (a Android 4.2.2). Nechme promluvit surová čísla AnTuTu benchmarku:

AnTuTuHTC Desire ZColorovo CityTab
Total41292564
CPU Integer683408
CPU Float477389
RAM703413
GPU 2D467238
GPU 3D1206534
I/O write14,0 MB/s8,7 MB/s
I/O read16,3 MB/s17,5 MB/s

Podle čísel je nový tablet mnohem pomalejší než starý telefon. V praxi to vypadá tak, že například hra Asphalt 7 je nehratelná, obraz je trhaný a ovládání reaguje se sekundovým zpožděním, což na závodní auta v rychlosti stovek kilometrů za hodinu nestačí. Na mobilu je hratelná v pohodě. Podivně pomalé bylo taky třeba SSH přihlašování na server a další běžné činnosti. Chvílemi nešlo ani brouzdat na Internetu, jelikož navigační prvky na stránce reagovaly s několikasekundovým zpožděním! Ne, tohle je opravdu nepoužitelné.

Teď pár slov k nestabilitě. Stroj je vybaven Androidem ve verzi 4.0.4 a update na novější už/zatím výrobce nenabízí. Opakovaně jsem se pokoušel spustit hru Where's my Perry, ale ta zásadně nereagovala na tahy ve hře a pak vždy hned spadla. Ze začátku jsem si myslel, že je to jen nějaká souhra náhod, ale když jsem si začal všímat, jak často spadne vestavěný webový prohlížeč, pochopil jsem, že je to buďto chyba přímo v jádru systému, nebo snad i hardwarový problém? No každopádně to činí práci s tabletem nepříjemnou až nemožnou.

Displej sice má být IPS, tedy s věrným podáním barev, ale kulečníkové plátno ve hře Pool Break Pro má ošklivé barevné mapy, jaké bych čekal tak možná na displeji u tabletu pod 100 dolarů. Na mém telefonu je totéž plátno s plynulým barevným přechodem.

Kamery jsou ve slabším světle naprosto nepoužitelné, při rozumném denním světle pak stojí maximálně za pendrek. Samozřejmě chybí přisvětlovací LED.



Závěrem: jsem zdrcen, jak hrozně nepoužitelný tablet za 4000 Kč je. Lituji lidi, kteří si kupují tento a levnější modely. Já se budu muset poohlížet po něčem mnohem dražším, nebo na tablety zanevřít úplně.