pondělí 16. května 2016

WiFi webový digitální teploměr a chytrý termostat

Prosím pozor: WiFi Teploměr je dnes mnohem dál, než článek popisuje.
Pro aktuální informace navštivte www.teploty.info, díky!

Na začátku tohoto projektu byl +Kamil Zmeškal a jeho nápad na teploměr, který by umístil tuším někam do dílny, tento by byl přes WiFi připojený do domácí sítě a na požádání by hlásil naměřenou teplotu (čili by se choval jako web server). Kamil tu hodnotu chtěl dokonce v XML formátu, protože si ji zpracovává v nějakém svém programu a zobrazuje na tabletu, který má umístěný na zdi v obývacím pokoji. Takový WiFi teploměr jsem pro něj v šibeničním termínu koncem srpna 2015 postavil z jistého modulu určeného původně k jinému účelu (popíšu příště), předal a Kamil s ním spokojeně měří teplotu dodnes.

Ten nápad na bezdrátový teploměr v lokální síti se mi ale tak zalíbil, že jsem na něm od té doby pracoval dalších devět měsíců a dotáhl ho do podoby, ve které se nestydím ho prezentovat veřejně a zároveň ho tímto nenápadně nabízím i případným dalším zájemcům. Z původního poměrně jednoúčelového zařízení jsem ho významně rozšířil o regulaci (proto je v názvu i slovo termostat), doplnil grafické rozhraní, konfiguraci, více datových formátů a další věci, které popíši dále.


Hlavní rysy mého WiFi digitálního teploměru/termostatu jsou následující:

  • úmyslně acloudové řešení - zaručuje soukromí, bezpečnost a nezávislost
  • možnost měření několika teplot na různých místech (kam dosáhnou čidla)
  • jednoduché zapojení, zprovoznění a přidávání dalších čidel teploty
  • přímočaré webové rozhraní s naměřenými teplotami
  • naměřené hodnoty teplot dostupné též v XML, JSON a plain textu
  • termostat s chytře definovatelnými pravidly
  • výkon termostatu řízen v rozsahu 0 - 100 % díky PWM (pulsně šířkové modulaci)
  • široký rozsah napájecího napětí 5 - 20 V a minimální spotřeba (0 W)
  • miniaturní rozměry (68 x 48 x 26 mm)
  • externí WiFi anténa pro prakticky neomezený dosah
  • rozšiřitelný o další moduly, volně programovatelný
  • přístupný i z Internetu, pokud je o to zájem
Nyní krátce vysvětlím jednotlivé body:

ACloud

"ACloudové" (to slovo jsem pro vás právě teď vymyslel) znamená jednoduchou věc: na rozdíl od všech ostatních podobných WiFi teploměrů, které se vždy připojují někam do cloudu k určitému providerovi a vy potom musíte chodit k tomuto providerovi se dívat, jakou teplotu máte doma, jsem zcela úmyslně vytvořil řešení, které se NIKAM DO CLOUDU NEPŘIPOJUJE. Je to váš teploměr, ve vaší síti, měří vaše teploty, a pracuje naprosto nezávisle. Bude fungovat, i když vám doma náhodou vypadne připojení do Internetu. Bude fungovat, i když občas vypadne server providerovi cloudového řešení. A hlavně - bude fungovat i poté, co provider cloudového řešení jednoho dne zavře krám, anebo se jen rozhodne, že už nebude podporovat stará zařízení a jednoduše je zařízne. Tato nezávislost na Internetu a cizí firmě je tak významná vlastnost, že jsem ji chtěl vyzdvihnout jako první.
Cloudové teploměry či IoT řešení jsou totiž jako e-knihy a multimédia s DRM: jednoho dne někdo vypne DRM server a všechny vaše knihy, písničky a filmy, které jste si koupili, zmizí (to už se dnes děje!). Protože tuhle závislost na někom cizím nesnáším, schválně jsem vytvořil WiFi teploměr tak, aby fungoval samostatně.



Mnoho teplot

Měření teplot na více místech: používám digitální čidla DS18B20, kterých může být zapojeno i několik na jedné jednoduché sběrnici (kablíku).  Takže i když je v mém WiFi teploměru jen jedna vstupní zdířka (stereo jack 3,5 mm), tak jde například s pomocí obyčejných sluchátkových rozdvojek postupně zapojit více teplotních čidel a natáhnout si tak kolem domu, sklepa, chaty či bazénu celou síť měřených bodů, kterou ovládá jen jeden WiFi teploměr.



Vše je jednoduché

Jednoduché zapojení: krabička WiFi teploměru má jen dvě zdířky a jedno nenápadné tlačítko. Do jedné zdířky zapojíte napájecí konektor (5,5 / 2,1 mm s plusem uprostřed), do druhé zdířky zapojíte teplotní čidlo, stiskem tlačítka zahájíte proces připojování do vaší domácí WiFi sítě a za minutu už vidíte naměřené teploty, nejčastěji na adrese http://teplomer/ Tuto adresu můžete samozřejmě otevřít webovým prohlížečem ze svého počítače, taktéž ze všech tabletů, z mobilních telefonů, ze Smart TV (televizí s internetem), pokročilých herních konzolí atd. a to bez ohledu na jejich operační systém.



A když vás omrzí moje minimalistické grafické rozhraní, můžete si vytvořit vlastní webovou stránku nebo třeba mobilní aplikaci, do které naměřené teploty vložíte (tu mířím na webaře a programátory mezi čtenáři - je to skutečně velmi jednoduché).

Několik formátů

Naměřené hodnoty jsou po vzoru Kamila dostupné pro strojové zpracování v XML formátu, ale přidal jsem i jednodušeji zpracovatelný formát JSON a dokonce pro potřeby například Arduina nebo obecně zpracování bez nutnosti parsovat formát dat je výstup teplot dostupný i v čistém textu, zcela bez formátování. Díky tomu si můžete nad tímto WiFi teploměrem postavit podobné řešení jako má Kamil s tabletem, ale také můžete teploty zachytávat a ukládat na domácím serveru do databáze, zobrazovat z nich grafy a podobně. Na toto mám ostatně hotové řešení, které popíši za malou chvíli.

Programovatelný termostat

Na rozdíl od původního prototypu teploměru jsem před nedávnem přidal do projektu i výkonový výstup, který je schopen spínat proud až 3 ampéry a řídit ho plynule v rozsahu 0 - 100 % podle naměřených teplot. Díky tomu je možno například zatopit rybičkám v akváriu, vyvětrat rostlinkám ve skleníku, ochladit víno ve sklepě nebo třeba jen zesílit ventilátor, který ovívá vás, jak sedíte zpocení u počítače. Pokud potřebujete řídit větší výkony, anebo spínat síťové či jiné vysoké napětí, je možné k výstupu termostatu připojit relé, které potom teprve spíná to zabijácké napětí či výkon.



Můžete definovat více různých pravidel, která řídí výstup podle naměřených teplot, jak vidno na výše přiložené snímku obrazovky prohlížeče. Například spínač na 50 % znamená, že je sepnutý poloviční výkon, takže pokud tam máte připojený třeba ventilátor, tak se točí poloviční rychlostí. Pokud topení, tak topí polovičním výkonem, a pokud světlo, tak svítí poloviční intenzitou. Jistě vás už napadá, jak to v praxi využít.

Napájení

Modul WiFi teploměru je napájený běžně dostupným zdrojem stejnosměrného napětí, přičemž pracuje velmi efektivně v širokém rozmezí od 5 V do 20 V. Při nejběžněji dostupném napájecím napětí 12 V a dobrém WiFi signálu má naprosto minimální odběr proudu kolísající mezi 15 a 22 mA. Horší podmínky pro příjem WiFi mírně zvyšují spotřebu energie (protože vysílač musí zvýšit výstupní výkon). Mimochodem, komerční wattmetr do zásuvky naměří spotřebu WiFi teploměru přesně 0 W (vím, že teploměr má nenulovou spotřebu, ale je skutečně tak nízká, že je neměřitelná).

Dá se jednoduše spočítat, že například na běžnou 44Ah autobaterii by můj WiFi teploměr vydržel fungovat nejméně tři měsíce, kdyby bylo potřeba ho zprovoznit v místě, kde není přivedeno stálé elektrické napětí. Stejně tak by ochotně fungoval na solární pohon (solární panel dobíjející nějakou baterii). Ale spíš jsem počítal s tím, že prostě bude někde poblíž elektrická zásuvka.


Externí anténa

Jedním z důležitých rysů mého WiFi teploměru je taktéž konektor na externí WiFi anténu. Normálně používám malý prut s 2dB ziskem, ale dala by se připojit i větší anténa pro mnohem větší dosah. V Česku je ostatně běžné používat WiFi i na kilometrové vzdálenosti, takže meze se tu nekladou. Jiné WiFi teploměry na externí anténu zapomínají, a to si myslím, že je velká chyba, kterou jsem proto ve svém teploměru neudělal.



Rozšiřitelnost

Poslední bod je důležitý pro bastlíře, programátory a vůbec zvědavé lidi: dal jsem si záležet na tom, abych vám všem maximálně zjednodušil a umožnil další rozšiřování tohoto modulu jak po HW, tak i po SW stránce. Na základní desce jsem vyvedl veškeré piny procesoru ESP8266 na pohodlnou sběrnici a pečlivě ji popsal. Tím pádem k teploměru můžete připojit celou škálu dalších čidel či rozšíření (např. atmosférická vlhkost s DHT11/22 či tlak s BMP180). Dokonce jsem připojil i TFT displej!


Stejně dobře můžete rozšiřovat teploměr po SW stránce. Celý projekt je naprogramován v Lue, což je prověřený skriptovací jazyk. Na desku jsem vyvedl i programovací konektor kompatibilní s FTDI. Připojit WiFi teploměr k počítači a přeprogramovat ho je tak velmi rychlé.

Přístup z Internetu

Tak, tolik k měření teplot a regulaci v domácí síti. A co když zrovna nebudete doma a přesto vás bude zajímat, jaké jsou aktuální naměřené teploty? Pokud máte pevnou veřejnou IP adresu, můžete si na domácím routeru otevřít port 80 (či jiný) a nasměrovat ho (přes překlad adres) na WiFi teploměr. Pak se můžete zvenčí připojit domů a mrknout se na měřené teploty. Pro vyšší bezpečnost můžete místo NATu použít VPN. Ale co když takové možnosti nemáte? Samozřejmě vím, že sledovat měřené teploty je návykové, a proto plánuji v brzké době přidat jsem přidal do WiFi teploměru doplňkovou možnost přenosu naměřených hodnot na server www.teploty.info, kde by tak byly přístupné i z Internetu (po přihlášení jménem a heslem) a to včetně historie zobrazené v pěkných grafech a s možností varování e-mailem po překročení nastavené teplotní hranice u kteréhokoliv čidla.


Prosím o pochopení rozdílu mezi ostatními podobnými zařízeními, které k provozu cloud vyžadují, a tímto mým serverem teploty.info, které sice možnosti WiFi teploměru dále rozšiřuje, ale vůbec není nutný k běžnému provozu teploměru. ACloudový charakter tak zůstává zachován. Pokud by někomu nevoněl můj server a chtěl by si teplotní data nechat posílat na jiný populární server, je to možné po jednoduché změně ve zdrojových kódech.

EDIT 29.5.2016: WiFi Teploměr již volitelně odesílá data na www.Teploty.info

Chcete ho?

Pokud máte pocit, že tohle vytuněné zařízení musíme mít doma, napište mi mail na petr@pstehlik.cz. Cena řešení se odvíjí od stupně výbavy (s termostatem/bez, počet teplotních čidel, zdroj plus případné další příslušenství) - v základní verzi začíná na 1500 Kč. Další informace naleznete na www.teploty.info.

EDIT 10.10.2016: WiFi Teploměr nově i v AC verzi, která je levnější a má spínané relé.

EDIT 1.1.2017: Novinky u WiFi Teploměru v roce 2017.

neděle 27. března 2016

Displej s dotykovou vrstvou na různých mikrokontrolérech

Podražily OLED displeje, ale zlevnily TFT LCD, tak jsem si koupil další - krásně velký 2,8" s ILI9341 a dotykovou vrstvou, kterou čte XPT2046 (AliExpress):


Tento displej se připojuje k počítači sériově přes SPI, ovšem nenabízí jen jedno SPI rozhraní, ale rovnou tři!

První SPI je pro obrazová data, je na pinech na levé hraně, v dolní části. Druhé SPI rozhraní je pro dotykovou vrstvu a je taktéž na pinech vlevo, ale na horních pěti (označených TOUCH). A poslední SPI rozhraní je pro čtečku SD karet a je vyvedeno na obrázku vpravo (který jsem trošku moc ořízl, takže ty vývody nejsou vidět).

SPI sběrnice umožňuje připojit několik slave zařízení naráz, takže jsem logicky propojil SDI (MOSI) s T_DIN, SDO (MISO) s T_DO a SCK s T_CLK. A pak jsem to zkoušel rozjet na třech různých mikrokontrolérech: Arduinu, STM32F103 a ESP8266.

Ještě než napíšu jak jsem dopadl, musím zdůraznit, že displej je prodejcem inzerován jako "5V/3.3V", což může kvalitně zmást. Pravda je, že napájení (VCC) může být 3,3 nebo 5 V, protože zespodu displeje je lineární regulátor napětí nastavený na 3,0 V. Dokonce bych řekl, že je lepší, když je displej napájený 5 V, protože se mi choval stabilněji, ale možná se mi to jen zdálo (v nepájivém kontaktním poli často zlobí jednotlivé drátky a výsledky pokusů nejsou zrovna směroplatné). Pokud ho napájíme jen 3,3 V, ze kterých si ten regulátor uzobne 0,3 V pro sebe, tak pak displej může dostat i méně než 3 V a nepracuje se mu možná tak dobře. Na to jsou tam ostatně ty dvě pájecí plošky hned pod regulátorem, které můžeme páječkou jednoduše propojit, čímž regulátor vyřadíme z cesty a displej pak má plných 3,3 V.

Zároveň ten prodejcův příslib "5V/3.3V" neznamená, že kterákoliv ze tří SPI sběrnic je 5V tolerantní! Proto pokud připojujeme displej k 5V mikrokontroléru, jakým je například Arduino, musíme zařadit do SPI cesty "level shifter", měnič napěťových úrovní, jinak bychom mohli něco v displeji usmažit. Jako převodník poslouží například obvod CD4050E nebo některý z hotových prodávaných modulů osazených MOSFET tranzistory.

Mimochodem, podsvícení displeje (pin označený jako "LED") funguje stejně dobře na 3,3 V i na 5 V a nevidím tam ani rozdíl v úrovni podsvícení.

Ještě pár slov k použitým knihovnám. Přestože je komunikace s XPT2046 poměrně jednoduchá, neztrácel jsem čas psaním vlastní knihovny, a místo toho jsem si našel již hotová řešení (a pak ztrácel čas s nimi). První knihovnu pro své Teensy napsal Paul Stoffregen a je dostupná pod názvem XPT2046_Touchscreen na https://github.com/PaulStoffregen/XPT2046_Touchscreen. Druhá je od Spirose Papadimitrioua https://github.com/spapadim/XPT2046 a na rozdíl od první vyžaduje zapojení i pinu T_IRQ. Třetí je od Bodmera https://github.com/Bodmer/TFT_Touch/ a nepoužívá hardwarovou SPI sběrnici mikrokontroléru, takže může být připojena na kterékoliv piny a obslouží si je ručně. To jsem zprvu považoval za nevýhodu a knihovnu tak vyřadil z dalších testů, ovšem dnes už to vidím trošku jinak...

Jako grafickou knihovnu pro ILI9341 jsem použil velmi známou Adafruit_GFX se svým Adafruit_ILI9341 ovladačem. Adafruit podporuje už nejen Arduino, ale i ESP8266, takže se mi zdálo super, že použiju jednu knihovnu pro všechny tři mikrokontroléry.

Nyní už tedy jak jsem dopadl: první testy probíhaly na ESP8266. Tam XPT2046_Touchscreen nefungoval při testech vůbec. Ladicí hlášky ukazovaly, že vrací nesmyslně vysoké hodnoty tlaku (od 4 do 8 tisíc) a hodnoty polohy pochodovaly v cyklu v celém ADC rozsahu. Zkusil jsem tedy knihovnu XPT2046 a ta nefungovala taktéž, přestože podle pěkného článku na http://nailbuster.com/?page_id=341 fungovat měla. Asi se ty knihovny nějak nepohodly o právo komunikace na sběrnici, nebo jedna nastavila rychlost, které druhá nestačila nebo něco podobného. Nakonec pomohlo vyměnit grafickou knihovnu od Adafruitu za upravenou verzi zvanou "Adafruit_ILI9341esp" (která je ke stažení na výše uvedeném článku) a pak se vše perfektně rozběhlo. Bohužel jsem nebyl sto na první pohled poznat, co je v té "ILI9341esp" verzi změněno tak, že XPT2046 už s ní nekoliduje (neboť tam bylo příliš mnoho rozdílů), ale neměl jsem dost času, tak jsem to přestal řešit a smířil se s tím, že stačí použít "esp" verzi grafické knihovny a dotyková vrstva funguje (resp. ta daná knihovna pak správně komunikuje).

Další testy proběhly na ARMu STM32F103 - resp. na Maple Mini. Použil jsem "plugin" z www.stm32duino.com, který se "zasune" do Arduino IDE 1.6.x. Díky tomu mi přijela i opět jaksi upravená knihovna Arduino_ILI9341_STM, kterou jsem zkusil a fungovala výborně (asi 20x rychleji než na Arduinu nebo ESP8266). K ní jsem zkusil přidat obě výše zmíněné XPT2046 knihovny, ale dle očekávání žádná nefungovala. Pro sdílení SPI mezi dvěma různými zařízeními jsou totiž potřeba SPI transakce, které ale moje (starší?) verze STM32 "pluginu" pro Arduino IDE nepodporovala. Takže konec, žádné dotyky. Ovšem teď zpětně si říkám, že jsem měl použít tu knihovnu od Bodmera a jednoduše připojit TOUCH piny k některým z 30 volných pinů STM32F103...

Poslední na řadu přišlo Arduino Pro Mini: knihovna XPT2046_Touchscreen fungovala ihned, ale vracela hodnoty otočené o 90 stupňů, nebo prostě prohozené osy X a Y. Chvíli mě to bavilo, ale pak jsem raději přešel na knihovnu XPT2046, která se mi osvědčila na ESP8266. Tady ovšem nefungovala a ještě navíc rozbila kreslení obrazu. Asi se ty dva čipy porvaly o SPI sběrnici jako na ESP8266.

O správném připojení a ovládání více zařízení na jedné SPI sběrnici napsal pěkný článek výše už zmíněný Paul - http://www.dorkbotpdx.org/blog/paul/better_spi_bus_design_in_3_steps. Zkusil jsem upravit knihovnu XPT2046 podle jeho rad: nejdřív jsem do ní přidal podporu transakcí, a když to nestačilo, tak jsem ještě korektně předinicializoval obě CS linky, jak Paul doporučuje.

Přesto příklad kreslicí aplikace XPTPaint (v "examples" u XPT2046) pořád nefungoval, než jsem s úžasem zjistil, že v jedné ose vrací knihovna hodnoty od 0 do 20 a pak naráz skáče až na 56738 a až ke druhé straně obrazovky drží tento nesmyslný ofset (který nevím, kde se bere). Z nedostatku času jsem to vyřešil následujícím hackem (přidáním jednoho řádku do aplikace XPTPaint):

   touch.getPosition(x, y);
   if (x > 56730) x -= 56710; // WTF!?

Od té chvíle fungovalo na Arduinu s Adafruit_ILI9341 a XPT2046 vše v pořádku a mohl jsem nehtem malovat jak na malířském plátně.

Měl bych teď, po správné implementaci transakcí do XPT2046, ji znovu zkusit na ESP8266 s jinými ILI9341 knihovnami, ale nevím, kdy se k tomu dostanu. Taktéž bych měl zjistit, kde se na Arduinu bere ten nesmyslný ofset (možná přeteče nějaká proměnná?). A také bych měl zkusit pohledat na stm32duino.com, jestli už nemají SPI s transakcemi. Hmmm, napíšu, jestli se k něčemu z toho někdy dostanu.

sobota 19. března 2016

Tablet KB901 - smrt a rozborka

Kamarád Marek mi daroval tablet - krásný 9,2" neznačkový (nikde žádný nápis), že prý už je moc pomalý a ať si ho rozdělám a vezmu si z něj třeba displej. To mi přesně káplo do noty, protože se pídím po pořádném displeji pro Arduino/STM32/ESP8266, takže jsem tablet vzal a přinesl domů.

Tablet kupodivu normálně fungoval, i když opravdu pomalu. Běžel v něm Android 4.2.2 a byla předinstalována řada běžných aplikací. Nainstaloval jsem na něj Elixir2, abych zjistil, že zde nejsou žádné zajímavé senzory. Pak jsem nainstaloval Google Chrome a pustil můj oblíbený Peacekeeper web benchmark, ve kterém tablet dosáhl neuvěřitelně nízkého skóre 161 bodů (při splnění pouhých 2 HTML5 testů ze sedmi). To je asi 3x pomalejší než Raspberry Pi, nepletu-li se. Tak pomalý by gigahertzový procesor být neměl - něco tu musí být špatně.

Každého by napadlo, že v pozadí běží zpomalující aplikace, ale ne, žádné tam nebyly. Tak jsem se rozhodl pro rootnutí, že třeba nad tabletem získám lepší kontrolu a na něco přijdu. Po připojení k počítači jsem zjistil, že tablet si říká KB901 a že se ještě nedávno prodával za více než 100 amerických dolarů, tedy u nás tipuji na 3000+ Kč. Je v něm procesor AllWinner A13 běžící na 1 GHz, 512 MB RAM, a více než 9" displej má rozlišení pouhých 800x480 bodů. Ale jak se říká, darovanému koni na zuby nehleď. Navíc, 800x480 by pro Arduino/STM/ESP bylo úplně dostačující rozlišení.

Zde trocha dalších informací přímo z adb shellu:

root@android:/ # cat /proc/cpuinfo                                             
Processor : ARMv7 Processor rev 2 (v7l)
BogoMIPS : 1001.88
Features : swp half thumb fastmult vfp edsp neon vfpv3 
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x3
CPU part : 0xc08
CPU revision : 2

Hardware : sun5i
Revision : a13b
Serial : 060365103731303050564b371625420e

root@android:/ # cat /proc/partitions                                          
major minor  #blocks  name

  93        0      16384 nanda
  93        8      16384 nandb
  93       16      32768 nandc
  93       24     786432 nandd
  93       32    1048576 nande
  93       40      16384 nandf
  93       48      32768 nandg
  93       56     327680 nandh
  93       64     262144 nandi
  93       72    5177344 nandj

Před rootováním mě napadlo nainstalovat CWM. Stáhl jsem si verzi 6.0.28 z XDA a našel dokonce i řadu nějak upravených ROM na ruské adrese. Instalace CWM nebyla úplně přímočará, protože tablet má několik zajímavých vlastností - například nejde zapnout, pokud je vložena SD karta. Také nejde zapnout při držení Volume+, což by mi mělo umožnit nainstalovat ZIP z SD karty. Nakonec jsem tam ručně rozbalený CWM dostal přes adb shell a taktéž ručně nainstaloval. Pak jsem musel ručně rebootovat do CWM a když jsem v něm konečně byl, ze samé euforie jsem dal "wipe cache" a "wipe data". A navrch nainstaloval SuperSU ze ZIPu.

A to jsem asi neměl dělat. Od té doby jsem už normální start neviděl. CWM začal hlásit, že nejde přimountovat žádný oddíl. Když jsem se z toho konečně vzpamatoval a zkontroloval cat /proc/partitions, zjistil jsem, že kernel z původních 10 oddílů nevidí ani jeden. V /dev/block bylo taky docela pusto. Napadlo mě podívat se na výstup dmesg, kterému vévodily stovky řádků následujícího znění:


[    2.728136] PHY_PageReadSpare : too much ecc err,bank 0 block 7,page 0 
[    9.875478] [FORMAT_ERR] There is not enough valid block for using!
[    9.881758] [FORMAT_ERR] There is not enough free blocks for distribute!
[    9.888469] [FORMAT_ERR] Format nand disk failed!
[    9.893184] [NAND]init_blklayer fail 

Pochopil jsem, že tady mi už pšenka nepokvete. Nevím tedy, jestli jsem zavinil smrt nějakým chybným krokem já, nebo jestli tento CWM nebyl to pravé ořechové, nebo jestli jsem se přesně trefil do momentu, kdy se vnitřní eMMC paměť definitivně odporoučela do křemíkového nebe, ale výsledek byl každopádně takový, že Android už nešel nastartovat. Neumím ho ani obnovit, když v /dev/block/ nejsou žádné diskové oddíly, na které by případně šlo nahrát některý z těch ruských firmwarů.

Rozloučil jsem se s ním a vzal do ruky šroubovák. Po chvíli jsem se dostal dovnitř:


Zajímavé, jak je všechno maličké - vlastně zhruba stejně velké, jako Orange Pi Plus. Procesor má na sobě nálepku o výstupní kontrole v prosinci 2013, takže tablet byl nejspíš ještě v české dvouleté záruce. To je docela tristní, že tabletu ještě v záruce odejde paměť - ten čip s ručně napsanou čínskou osmičkou. Zajímavé je, že nad ním je místo na další čip, takže tablet mohl mít i 16 GB vnitřní paměti. Teď kdybych byl frajer, koupím si někde stejnou paměť a normálně ji přepájím.

Místo toho jsem pokračoval v rozborce. Protože tablet nešel vypnout, musel jsem jako první odpájet čerstvě plně nabitou baterii:


Byla přilepena k zádům displeje nějakým hnusně smrdícím asfaltem, takže jsem ji musel vyhodit z domu. Ráno ji zkusím odbalit, asfalt zahodit a použít ji v nějakém Arduino projektu - 6500 čínských mAh se může hodit!

Na desce je ještě zajímavý WiFi modul vpravo dole - je samostatný, připájený shora na plošný spoj tabletu jen čtyřmi body (nepočítaje 2 body dole pro externí anténu). Zřejmě je připojen na vnitřní USB. Vtipná je anténa - drát vedle doprostřed displeje, kde je nalisovaná anténečka na takovém tom pružném "plošném spoji", který je přilepený na plechová záda displeje! To se už nedivím, že recenzenti psali, že už jedna zeď od WiFi routeru způsobuje problémy s příjmem.

Vlevo od něj je zřejmě řadič displeje - GSL 3680. Tento by chtělo nějak osamostatnit a připojit i s displejem k nějakému mému projektu. Ještě dál vlevo je napájecí (a nabíjecí) část se známým AXP209, nad ní slot na mikroSD kartu, nad ní vlevo od procesoru jsou RAM čipy a pak už jen vlevo nahoře dvě kamerky s trapným VGA rozlišením.

Úplně vpravo nahoře na tom výběžku plošného spoje je zřejmě část starající se o podsvícení displeje a na samém chvostu pak zvukový modul, jehož výstup je drátky spojen s maličkým reproduktorem, který se chytře drží zad displeje svým magnetem.

A to je konec. Displej samostatně zapojit neumím, eMMC paměť měnit nebudu - jediná možnost jak tablet oživit by byla naučit ho žít jen s SD kartou a na vnitřní paměť zapomenout. Ale nemá to smysl, když už mám krásný nový tablet. Takže sbohem a snad půjde použít aspoň ta baterie...

EDIT: našel jsem blog, kde se někdo povrtal v jiném tabletu, jehož vnitřnosti jsou velmi podobné. Dobře popsal jednotlivé broučky, tak to sem nalinkuji.

úterý 15. března 2016

Tablet UMAX VisionBook 7Q Plus

Koupil jsem si dnes tablet, abych mohl ladit aplikace, které programuji pro Android. Úmyslně jsem chtěl ten nejlevnější a nejobyčejnější tablet na trhu, aby se mi nestalo, že program odladím na "nabušeném dělu" a potom v praxi u zákazníka narazím na nějaké problémy (způsobené třeba velikostí paměti, pomalostí procesoru, malostí rozlišení atd.). Proto jsem zadal na několika e-shopech "seřadit tablety od nejlevnějšího" a vybral první, který splňoval mé klíčové požadavky: IPS displej, 1 GB RAM a Bluetooth: vyhrál to UMAX VisionBook 7Q Plus za 1690 Kč.
První dojem po rozbalení: tablet je srandovně maličký - jen o málo větší než můj mobil. Je i tenký a lehký. Překvapením je náhradní modrý zadní kryt - asi pro lidi, kterým se celobílé provedení moc nelíbí.

Skvělé je, že kromě dobrého displeje a dostatečné velikosti RAM jsem získal ještě čtyřjádrový 64bitový procesor MT8163 s ARM Cortex-A53 architekturou běžící až na 1300 MHz a grafiku Mali-T720 s podporou OpenGL ES 3.1. Android je tu Lollipop verze 5.1, což je taky paráda (mnoho prodejců bez uzardění pořád prodává zařízení s Androidem 4.x). Rozlišení 1024x600 v 7" neurazí ani nenadchne. Potěší řada senzorů (zrychlení, gravitace, magnetického pole, orientace, rotace), je tu gyroskop a především přijímač GPS, který v levnějších tabletech vůbec nebývá. Kamery 2Mpix/0,3Mpix (zadní/přední) odpovídají ceně tabletu a fotit s nimi nic nebudu. Výborný je ale miniHDMI výstup. USB je OTG: připojená fleška, myš i klávesnice fungovaly skvěle. USB zásuvka je zároveň vstupem pro externí zdroj, takže není potřeba ssebou tahat speciální nabíječku, stačí cokoliv s mikroUSB výstupem (třeba v autě). Slot na mikroSD kartu je tu také, co víc si přát?

Hned po rozbalení jsem tablet podrobil rychlostním testům. AnTuTu benchmark je etalon, použil jsem tedy jej (ve verzi 6.0.1). Celkové skóre je 29111 bodů: 3D test měl 2352 bodů, User eXperience 12035 bodů, výkon CPU 10798 bodů a rychlost RAM 3926 bodů. AnTuTu HTML Test, který jsem omylem pustil samostatně, ukázal 17264 bodů. Pravda, náročné AnTuTu testy 3D grafiky dost pokulhávaly - ukazovaly těsně nad 1 FPS. V praxi by to chtělo zkusit některou ze starších 3D her, měly by díky Mali-T720 jet pěkně (mám koupený Asphalt 6, tak příležitostně zkusím). Při běžném používání je tablet zcela plynulý a reaguje okamžitě.

Zajímavé jsou předinstalované aplikace: OneDrive, Word, Excel a PowerPoint jsem v androidím tabletu opravdu nečekal! Ovšem řadový uživatel přicházející z MS Windows musí být šťastný jak blecha. Dále potěší ES File Explorer (standardní Android přijde bez správce souborů a uživatel tápe) a nakonec je tu i iVysílání, které k mému překvapení normálně funguje a přehrává pořady z archivu ČT (pokud nesáhneme na posuvník v čase pořadu, to už se pak nerozběhne). Samozřejmě je tu kompletní sestava aplikací od Google. Navíc najdeme ještě MX Player, FM Rádio (wow, takže tablet má i rádio!). Boží třešničkou na dortu je plovoucí aplikace (vznáší se nad čímkoliv spuštěným) zobrazující aktuální vytížení každého ze čtyř jader CPU.

Z výše popsaného mám pocit, že tablet je na svou cenu velmi dobře vybavený jak po HW stránce, tak i programově. Podle mého názoru je ihned po vybalení plně použitelný pro kancelářskou práci i multimediální zábavu. Jdu zkusit pustit na něm mé vlastní aplikace :-)

EDIT: doplněno o pár dní později
Ukázalo se, že tento super levný prcek má kromě všech super vlastností zmíněných výše ještě jednu naprosto zásadní - umí 802.11ac, tedy WiFi v pásmu 5 GHz! Tím se morálně posouvá o další level výše a je přímo předurčen do husté bytové zástavby, kde už pásmo 2,4 GHz skomírá a jedinou možností bezdrátového Internetu je přejít na 5 GHz, což dneska ještě málokteré zařízení podporuje.

Ještě zmíním výsledky v testu Peacekeeper - 609 bodů celkem (při třech HTML5 testech ze sedmi). Podrobné výsledky: Rendering 34,4 bodů, webglSphere 57 FPS, HTML5 Canvas 7 bodů, Data 8100 bodů, DOM operace 2254 bodů a Text parsing 19276 bodů.
Pro porovnání Nexus 5 s 2,26 GHz CPU - 678 bodů (a taky jen 3 HTML5 testy ze sedmi). Podrobné výsledky: Rendering 28 bodů, webglSphere 57,6 FPS, HTML5 Canvas 5,7 bodů, Data 11113 bodů, DOM operace 2524 bodů a Text parsing 31925 bodů. Samozřejmě identický browser (Chrome 49). Závěr - tablet je nečekaně rychlý a šlape na paty 5x dražším zařízením!

neděle 31. ledna 2016

Orange Pi Plus - opravdu nabušený mikropočítač

Jak jsem si kupoval maličký počítač Orange Pi Plus v Číně a co z něj v první chvíli vylezlo jsem sepsal, nafotil a právě mi vychází článek na webzinu Root.cz - najdete ho tady.

úterý 12. ledna 2016

Knight Rider a Arduino

Jak už jsem psal před dvěma a půl lety zde na blogu, Arduino mi připadá jako vhodné řešení mnoha drobných problémů: třeba když je potřeba rozblikat světla na kapotě KITTa - bájného to vozidla Michaela Knighta ze seriálu Knight Rider. Když jsem pak před pár týdny na Google Plus narazil na nějakou debatu, kde lidé nevěděli, jak přesně právě ta KITTova světla na Arduinu udělat, neodolal jsem a pustil se do díla. Z původně plánované jednovečerní akce mezi Vánocemi a Novým rokem se vyklubalo něco poněkud většího, a protože mě to mimořádně bavilo, napsal jsem o tom nakonec delší blog post, ve kterém podrobně vysvětluji, jak jsem co naprogramoval a proč.

Ten blog post dnes měl vyjít zde na tomto místě, ale na poslední chvíli byl přesměrován na můj oblíbený webzine Root.cz, kde se za pár minut (už o půlnoci na 13.ledna) objeví online na této adrese. Věřím, že vás pobaví stejně, jako mě bavilo to nejdřív naprogramovat a pak o tom napsat :-)


S malými počítači se roztrhl pytel

Určitě všichni znáte Raspberry Pi - anglický počítač určený původně k výuce (resp. k přilákání školních dětí k programování počítačů). Za 35 amerických dolarů spousta výkonu na maličké destičce. Byl to velký hit 2012/2013 - sám jsem podlehl davu a na konci jara 2013  si ho také koupil. Bohužel jsem pro něj dlouho neměl žádné rozumné využití, snad s výjimkou nočního kamerového hlídače. Jako náhrada stolního počítače, srdce multimediálního centra, webového serveru či síťového disku, jak ho většina lidí používá, je bohužel velmi nevhodný, protože má pomalou grafiku, pomalé síťové rozhraní a chybějící rozhraní pro připojení pevného disku.

Během roku 2015 se vyrojila velká spousta podobných počítačů, které nad původním Raspberry Pi vynikají jak vyšším výkonem, tak i nižší cenou. A jak se blížily Vánoce, nové počítače se vynořovaly prakticky každý týden. Sám jsem nevěděl, který si vybrat, a tak jsem v rámci průzkumu trhu sepsal tento krátký aktuální přehled malých jednodeskových počítačů, který mi vyšel na Root.cz první pracovní den letošního roku. Je pod ním, jak je zvykem, bohatá diskuse s pár užitečnými informacemi.

Na podzim 2015, když na webu raspberrypi.org vyšly aktualizované obrazy operačního systému Debian Jessie, jsem neodolal a pro účely jednoho projektu jsem si koupil "dvojku", tedy čtyřjádrový Raspberry Pi 2. Papírově měl být mnohem rychlejší než "jednička", tak jsem doufal, že už bude použitelný. Bohužel se ukázalo, že pro účely náhrady stolního počítače je téměř stejně nevhodný jako "jednička" - je stále velmi pomalý, akcelerovaná grafika chybí jako sůl. Samozřejmě programy se pomalu spouští a v relativně omezené paměti jich moc naráz nezůstane. Swapovat na SD kartu nemá smysl. Jako multimediální centrum je trochu lepší než jednička, ale pořád to není žádný "blesk".

Po zklamání z Raspberry Pi 2 na 900 MHz jsem neodolal a koupil si v Číně Orange Pi PC - kopii Raspberry Pi 2, ale s jiným procesorem taktovaným na 1,6 GHz. Doufal jsem, že mi dorazí do Vánoc a budu schopen vedle sebe na stole porovnat Raspberry Pi "jedničku" a "dvojku" a také Orange Pi PC. Už jsem plánoval nějaké rozumné testy, připravoval se na Phoronix Test Suite, ale pak uplynulo 49 dní a ukázalo se, že Orange Pi PC nikdy neopustilo hranice Číny a prodejci se vrátilo jako nedoručitelné. Jaká ironie, když mi od téhož prodejce přišla kamerka k Orange Pi, koupená ve stejný moment s tím PC a odeslaná na stejnou adresu.

Aby mi Orange Pi kamerka nezůstala ležet ladem (k ničemu jinému se nedá připojit), objednal jsem obratem jednu z nejdražších a nejvybavenějších verzí - Orange Pi Plus. Ta je v tuto chvíli už tři týdny někde mezi nebem a zemí a jen doufám, že někdy dorazí až ke mně. Potom se pokusím porovnat ji alespoň s Raspberry Pi, nebo co bude zrovna po ruce. Bohužel už teď vím, že bude mít slabé a pomalé SATA rozhraní, takže mé hledání vhodné malé desky na provoz síťového serveru nekončí. A dost možná, že nad ARMovým řešením zlomím hůl a vrátím se do světa amd64, kde síťové a diskové rozhraní fungují bez obav a na plný výkon, o akcelerované grafice ani nemluvě.