pondělí 16. října 2017

Přednáška o novinkách u Espressif Systems na LinuxDays 2017

Na letošních LinuxDays jsem měl i přednášku věnovanou výrobci známých a nesmírně populárních WiFi čipů ESP8266 a ESP32 (a jejich dalších variant). Přednášky věnované ESP8266 a ESP32 jsem měl už dříve (jak na LinuxDays a InstallFestu v Praze, tak i na OpenAltu v Brně), takže tentokrát jsem se mohl zaměřit jen na některé konkrétní věci, a samozřejmě zmínit všechno nové, co se u ESP událo od poslední přednášky.

Seznam mých přednášek s prezentacemi v PDF a videi na Youtube najdete zde: pstehlik.cz/prezent


Pozor, ironický sarkasmus!

Po mé minulé naprosto nadšené přednášce o ESP32, kde jsem nešetřil superlativy při popisu všech těch fantastických novinek a hardwarových vychytávek, které Espressif Systems dokázali nacpat do jádra ESP32, jsem dostal krom řady pozitivních i jednu negativní reakci. Spočívala v tom, že když jen takto nekriticky chválím, tak působím nedůvěryhodně, protože skutečný odborník by prý zmínil i negativa. Vzal jsem si to k srdci a rozhodl se tuto přednášku, nebo alespoň její větší část, vést sarkasticky v rádoby velmi kritickém duchu, abych uklidnil skutečné odborníky a spravil si u nich svou "pošramocenou pověst" :-)

Cítil jsem, že je to poměrně riskantní krok, protože mě málokdo zná dost dobře na to, aby věděl, kdy si dělám legraci. Proto jsem rovnou na první slajd celé přednášky v PDF napsal 

Nemilosrdná kritika skutečného odborníka

a jelikož jsem si pořád ještě nebyl jist, jestli to diváci pochopí jako nadsázku, tak jsem ještě výslovně v přednášce vysvětloval, že tento text měl být v uvozovkách - nejdřív ten skutečný odborník, protože jím zdaleka nejsem, no a pak i ta nemilosrdná kritika, neboť to bylo celé míněno velmi ironicky.

Dlužno dodat, že i když jsem se snažil rádoby drsně kritizovat, tak všechno, co jsem říkal, byla neustále fakticky pravda - tj. v ESP32 jsou skutečně hardwarové chyby, v nové revizi se podařilo opravit jen část z nich, jedna chyba se dokonce objevila při opravě předchozí chyby a navíc je tam ten nelineární a poněkud nepřesný ADC převodník, takže měřit analogové veličiny není s ESP32 moc dobrý nápad. 

Při tom jsem se mimochodem spletl - ESP32 má přepínatelnou přesnost ADC, takže není jen 10bitová (jak jsem uváděl), ale i 9, 11 a 12bitová. Navíc umí přepínat "zesílení", takže jakoby mění referenční napětí. A z této komplexnosti asi plyne i nějaká ta chybička v hardware, kterou se inženýři v Espressif Systems snaží prozatím obejít softwarově.

Zároveň je ale i pravda, a to jsem na přednášce také zdůrazňoval, že v reálu se s většinou těchto chyb nepotkáte. Velkou většinu z nich se podařilo obejít v SDK (v knihovnách, které použijete při programování ESP32) a pokud nepřipojíte externí SRAM a nebo nebudete v assembleru šachovat ve vícevláknovém procesu na určitých specifických adresách v paměti, nemělo by vás při programování nic trápit.

A to nepřesné ADC? To by bylo nejjednodušší vyřešit připojením externího ADC komunikujícího přes I2C. Takových broučků za pár korun budou na trhu mraky.

Brno je zlatá loď, za děvčaty z Brna choď...

Na přednášce jsem též s chutí zmínil novinky, kterých je u Espressif Systems hodně. Nejzajímavější je otevření prvního zahraničního vývojářského centra, pro které si Číňani nějakým zázrakem vybrali z celého světa právě Brno. Je neuvěřitelné, že naši čeští (a slovenští) inženýři můžou být přímo u zdroje ESP čipů a svou každodenní pečlivou prací vylepšovat softwarovou podporu pro tento celosvětově úspěšný čínský čip. Přiznejme si, že i když na ESP-IDF (SDK pro ESP32) odvedli v Číně obrovský kus práce, tak pořád je nejméně stejný díl před nimi. Bude naprosto super, jestli k tomu přispějí i kluci a holky v Brně.

ESP32-PICO-D4

Díky Johnu Lee z Espressif Systems jsem i letos mohl přímo na přednášce něco unboxovat, tedy rozbalit a v přímém přenosu předvést celému sálu a světu. Bohužel jsme to technicky nezvládli - i když jsem si původně plánoval připravit pětikorunu jako měřítko, tak jsem zapomněl položit na tu promítací zvětšovací věc, tím pádem jsem neměl vychytané zaostření na tak maličký čip, jakým je ESP32-PICO-D4, a na tom to celé selhalo. Omlouvám se a doufám, že to alespoň pobavilo. Zde je zaostřená fotka, která ukazuje, jak miniaturní ESP32-PICO-D4 doopravdy je:



Je zřejmé, že ESP32-PICO-D4 je opravdu fantasticky integrovaný systém. Stačí fakt jen anténa a zdroj a máme funkční WiFi počítač s několika procesory, na 240 MHz, s velkou pamětí a se spoustou vnitřních senzorů. Jsem tím doslova uchvácen a je mi fuk, že to nekritizuju, takže odborníci z toho budou zase mimo. Doufám, že budu mít chvíli času k tomuto doslova mikročipu připojit miniaturní anténu a pak ho zprovoznit třeba jen na CR2032 :-)

Přednáška o Orange Pi na LinuxDays 2017

Installfest a LinuxDays

Přednášku věnovanou jen Orange Pi jsem měl na jaře na Installfestu. Tudíž na LinuxDays jsem se chtěl zaměřit především na novinky, abych se moc neopakoval. Bohužel na přednášku jsem měl v programu jen 25 minut, takže jsem už předem věděl, že toho moc říct nestihnu. Téma Orange Pi a vůbec těch malých jednodeskových počítačů v čele s Raspberry Pi je nesmírně obsáhlé a dalo by se o něm hovořit a hlavně předvádět různé věci celé hodiny.

Prezentaci z přednášky v PDF najdete tady: https://www.pstehlik.cz/prezent/

Zbytek tohoto článku shrnuje, doplňuje a opravuje informace, které zazní ve videu z letošních LinuxDays:




Raspberry Pi

Kromě Raspberry Pi s jeho novým desktopem Pixel (dostupným i pro Mac a PC) je zajímavé, že máme oficiálního českého distributora, díky čemuž už ceny Raspberry Pi Zero nedosahují takových výšin. Původně Zero nebylo dlouhodobě dostupné, případně se prodávalo v balíčku s tolika nesmyslnými kabely a redukcemi, že to vyšlo dráž, než si ho poslat přímo z UK. Nyní je to za 157 korun myslím velmi dostupný gigahertzový stroj.

ODROID a další

Dále jsem chtěl využít toho, že mám osobní zkušenosti s platformou ODROID a jejich nejvýkonnějším modelem XU4. Přivezl jsem jeden kousek a nechal ho kolovat, aby si návštěvníci LinuxDays mohli osobně zblízka osahat jihokorejskou kvalitu. XU4 má už několik let USB3 port, gigabitový ethernet a hodiny zálohovaného času, takže je velmi vhodný na všechna ta serverová nasazení s externími disky, kde lidé pořád nesmyslně trápí Raspberry Pi. Osobně jsem na ODROID XU4 vyvinul rozpoznávání obrazu v reálném čase, kdy všech 8 jader jede naplno a paralelně rozpoznávají následující snímky z kamery. Na Raspberry Pi by něco podobného bylo 4x pomalejší, tedy mimo reálný čas.

ODROID XU4

Stručně jsem prolétl i ostatní konkurenty na poli SBC, ale nezacházel jsem do detailů, neboť je neznám. Publikovat údaje z marketingových letáků jsem nechtěl, protože se často hodně rozcházejí s realitou v praxi.

Vlastní Orange Pi

Konečně jsem se dostal k Orange Pi, kde jsem stručně prošel všechny čtyři kusy, se kterými mám osobní zkušenost: Orange Pi Plus, Orange Pi One, Orange Pi Zero a Orange Pi PC Plus - ten poslední jsem si koupil speciálně kvůli letošním LinuxDays, neboť jsem doufal v živou ukázku. Měl jsem nainstalovaný systém z www.h3droid.com, který je velmi zajímavý tím, že na začátku nainstaluje něco jako "grub" - jednoduchý, ale mocný systém pro instalaci a konfiguraci dalších věcí, a to nejen Androidu, ale i Armbianu.

Orange Pi Zero

Ve výsledku mám nyní na SD kartě dual boot, tedy při startu možnost vybrat jeden ze dvou různých operačních systémů - Android nebo Debian. Je to velmi pohodlné a mocné - člověk tak rychle porovná například stav hardwarové akcelerace grafického výstupu nebo HDMI CEC, které prý u tohoto konkrétního typu opravdu funguje.

Orange Pi PC Plus

Tři důležité novinky u Orange Pi

Dále jsem chtěl zdůraznit tři velmi důležité novinky z Orange Pi "kuchyně". Za prvé - firma Shenzen Xunlong Software je nesmírně rychlá, neustále rostoucí a má skutečně velké ambice. Brzy bude produkovat takové množství hardware, že snad doroste i Raspberry Pi. To pro uživatele znamená, že se zřejmě nemusejí obávat, že by Orange Pi jakoby "zmizelo z trhu".

Druhá důležitá novinka je, že se firma vyrábějící hardware snaží o lepší softwarovou podporu - ať už partnerstvím s Ubuntu, anebo finanční podporou Armbianu, který je defacto jediným fungujícím operačním systémem pro Orange Pi.

Třetí novinkou, především pro české uživatele, je nově vzniklá skupina na Facebooku, kde se česky/slovensky domlouvají mezi sebou uživatelé (nejen) Raspberry Pi. Běžně se lidé trochu bojí koupit si něco jiného než Raspberry Pi, protože cítí, že by mohli s exotickým čínským hardwarem zůstat osamoceni jako kůl v plotě. U Orange Pi už to myslím nehrozí - kromě obří mezinárodní anglicky hovořící skupiny na Facebooku (8000+ členů) je tu nyní nejméně 200 československých lidí připravených sdílet své zkušenosti. A to je pro rozšiřování Orange Pi zásadní věc.

H5? H5!

Velmi zajímavé je, že jsem chtěl přednášku využít též jako varování uživatelům, kteří by si chtěli koupit některé z novějších Orange Pi s 64bitovým Allwinner H5 procesorem. Podle informací z Armbian fóra i facebookové skupiny jsem věděl, že procesory H5 nemají dobrou SW podporu - nová linuxová jádra na nich neběžela vůbec, takže uživatel byl odsouzen k používání starého děravého jádra od výrobce. Před tímto jsem na přednášce v sobotu 7. října varoval a měl jsem dobrý pocit, že jsem možná někoho uchránil před zklamáním.

Ovšem už o pouhé tři dny později, v úterý 10. října, se všechno změnilo! Igor slavnostně oznámil, že po mnoha měsících tvrdé práce pár dobrovolníků nyní Allwinner H5 běží i s nejnovějším jádrem Linuxu! A aby toho nebylo málo, už následující den oznámil tuším NetBSD taky plnou podporu pro Orange Pi s Allwinner H5! Takže celé měsíce nic, a naráz si člověk může vybrat hned ze dvou kvalitních operačních systémů. To je skvělé!

Závěrem

Jednou bych si chtěl najít 3 hodiny času a udělat přehlednou srovnávací tabulku všech typů Orange Pi, které Xunlong aktuálně chrlí - ovšem už za další měsíc by ta tabulka byla neaktuální, protože tak rychle na trh uvádějí nové modely. Je jich skutečná záplava a je kumšt si vybrat správně. Snad jsem svou přednáškou aspoň trošku pomohl ukázat jak levné modely (Zero, One), tak i "střední" třídu (Plus, PC Plus). Nejvýkonnější 64bitové novinky či specialitky typu GSM IoT nebo dvousíťové routery jsem ještě v ruce neměl, tak jsem o nich zatím mluvit konkrétně nechtěl. Ale jak se znám, u čtyřech pomerančů neskončím a časem nakoupím další, tak třeba za rok budu mít nové zkušenosti či zprávy, o které se budu chtít někde podělit :-)

pátek 22. září 2017

WiFi Teploměry - novinky letošního léta

Od března jsem o WiFi Teploměrech nic nového nenapsal, tak dnes, v den podzimní rovnodennosti, se hodí malé ohlédnutí a nějaké novinky k tomu. Možná bude někoho zajímat, že používám už dvanáctou verzi plošného spoje (tedy že už proběhlo dvanáct cyklů zlepšení návrhu a zapojení), a zrovna v těchto dnech chystám verzi třináctou. Stejně tak verze firmware je nyní na hodnotě 11.0 a s přicházejícím podzimním počasím chystám další zajímavé změny a zlepšení.

Teď už ale pár slov o větších hardwarových změnách u WiFi Teploměrů za poslední půlrok:

Přepětí

Letní bouřky ukázaly, že venkovní vedení k teplotním čidlům funguje jako skvělá anténa na indukované přepětí, které poté chce zabít jak čidla, tak i samotný WiFi Teploměr. Proto všechny WiFi Teploměry, co vyjíždějí z mé "manufaktury", už od června obsahují ochranu proti přepětí na vstupu, kam se připojují čidla (teplotní a další).

Tato přepěťová ochrana by měla zachránit WiFi Teploměr i čidla k němu připojená při bouřce - blízký úder blesku by to sice nejspíš neustálo ani tak, ale na indukovaná přepětí v řádu tisíců voltů by to mělo pomoci výrazně. Samozřejmě ještě lepší je vést vedení k čidlům pod zemí nebo v kovových trubkách, které slouží jako Faradayova klec a stíní kabeláž před indukovaným přepětím...

Bezpotenciálový kontakt

DC verze WiFi Teploměru původně měla na termostatickém výstupu napětí zdroje, tedy nejčastěji 9 V. Bylo to kvůli prapůvodnímu PWM. Čas ale ukázal, že mnohem praktičtější je mít bezpotenciálový kontakt, tedy jen spínač, který se dá připojit třeba na místo tlačítka, co zapíná kotel či jakékoliv jiné zařízení s vlastním napájením. Proto DC verze WiFi Teploměru už někdy od jara obsahuje vestavěné maličké relé, jehož spínací kontakty jsou vyvedeny ven (v případě, že je vestavěn termostatický výstup).



Tímto relé a celým WiFi Teploměrem jsem také zachránil ledničku před jistou smrtí. Obecně je díky tomuto relé a jeho bezpotenciálovým kontaktům DC verze WiFi Teploměru správnou náhradou za typický termostat, ať už je v ledničce, nebo třeba v obývacím pokoji, odkud řídí vytápění celého bytu/domu.

Zatím je toto relé opravdu maličké - zvládne spínat jen 0,5 A, ale chystám se vyvinout další verzi plošného spoje, kde ještě víc přeskládám vnitřnosti a tak se mi tam snad vejde i o něco větší, a hlavně výkonnější relé.

16 A = 3500 W

AC verze WiFi Teploměru dostala většího bratříčka, který dokáže při sepnutí termostatického relé přes sebe propustit až 16A proud nebo 3500 W výkonu.


Kromě silnějšího relé je tu ještě jedna zásadní výhoda: svorky terminálu už umožňují připojit nejen fázi (L) a nulák (N), ale i ochranný vodič (E), takže je možné jednoduše připojit kompletní trojlinku od zástrčky, a pak na výstup směrem k zásuvce či přímo spotřebiči.



Ostatní vlastnosti jsou stejné jako u 10A AC verze WiFi Teploměru - tedy stejný 3,5mm konektor pro teplotní čidla, stejná ochrana proti přepětí, stejný firmware. Tato verze ještě není zmíněná na webu www.teploty.info, ale snad brzy bude.

Co s WiFi Teploměrem/termostatem?

Baví mě, s jakými nápady lidé v e-mailech na info@teploty.info přicházejí - co všechno se dá měřit a řídit. Kromě obligátního vytápění vzdálených místností (nejčastěji na chatách a chalupách), a samozřejmě řízení topení v domech (často extrémně komplexních - s akumulačními nádržemi, soláry, kotli na pevná paliva řízenými dle teplot spalin v komíně!), se na jaře vyskytly udírny, přes léto vinné sklípky a bazény a teď na podzim vířivky a sauny. Po loňských tenisových kurtech (teplota povrchu) a rozvážkových chladírenských vozech jsou to myslím pěkné příklady použití. Málem jsem zapomněl na terária a teď nejnověji pak dokonce nápad měřit teplotu regenerace DPF (filtru pevných částic ve výfuku) za jízdy autem :-)

čtvrtek 21. září 2017

Huawei P10 Lite - zkušenosti

Rád bych navázal na blogpost o kupování telefonu a popsal zkušenosti s Huawei P10 Lite po téměř pěti měsících střídmého používání..

První a nejdůležitější věc - bezpečnost systému: jeden z dvou hlavních důvodů pro koupi nového telefonu byl, že na můj předchozí telefon, skvěle fungující Nexus 5, výrobce přestal poskytovat bezpečnostní záplaty. Proto jsem koupil co možná nejnovější telefon (v podstatě v prvních týdnech distribuce v Česku), abych měl po co nejdelší dobu plnou podporu od výrobce. Od syna s Huawei P8 Lite jsem věděl, že Huawei se o Lite telefony celkem stará a záplaty pravidelně posílá.

U P10 Lite tomu tak však není a mám-li být upřímný, tak na tento model výrobce doslova sere (promiňte expresivní, leč naprosto přesný termín). Ještě začátkem července jsem měl "úroveň záplat 5. února", tedy pětiměsíční skluz! Pak se Huawei "pochlapil" a poslal první update systému, který posunul "úroveň záplat" o pouhé dva měsíce, tedy na začátek dubna. Je 21. září a já mám v telefonu pořád 5. duben!! Přes pět měsíců už je telefon děravý jak řešeto - aktuální útok přes Bluetooth mi dokáže hacknout přístroj do 10 sekund. Za tohle jsem platil 9 tisíc korun? Dopr!!

Nejhorší je, že jsem se nějak po fórech dopídil k tomu, že Huawei ve skutečnosti potichu nějaké updaty systému ubastlil, dokonce nejnovější má snad datum 24. srpna, ale jaksi je zapomíná pouštět mezi lidi přes OTA update. Navíc začátkem září nepochopitelně zrušil stránky, ze kterých si lidé mohli stahovat firmware a aplikovat nové verze svépomocí. Nyní jsou všichni odkázaní na OTA update, které, jak jsem výše uvedl, má nejméně 3-5 měsíční zpoždění, což je u této "vlajkové lodi nižší střední třídy" trestuhodná nedbalost!

Další věc - rychlost: telefon má sice neuvěřitelných 8 jader (4x víc než můj stolní počítač!), ale občas se očividně zamyslí, než dokreslí nějakou pitomou animaci třeba při spouštění či zavírání aplikace. Musím najít, kde se všechny vypínají. Když mi jednou docházela baterka, tak se mi systém sám nabídl, že animace dočasně vypne, a jak to byl potom svižný telefon!

Periferie: foťák celkem fotí, video natáčí (ale ne ve více FPS, pokud se člověk nespokojí se sedmkrát horším rozlišením nahrávky), displej je rozumný, čtečka otisků prstů spolehlivá a rychlá - celkem to jde.

Senzory: ty jsou docela peklo. Kdo by byl býval čekal nepřesnou GPS v roce 2017? Přitom tato čínská sleduje satelity americké, ruské a navíc i čínské. A stejně dokáže určit pozici s NEpřesností +- 13 metrů, zatímco Nexus 5 na stejném místě pracuje s +- 3 metry. Dost zlé! Asi jsem se měl držet Snapdragonu za každou cenu..

Dále elektronický kompas - ukazuje mírně šejdrem a ještě se u toho celou dobu třese jak ratlík. Kompas u Nexu je mnohem klidnější.

Baterie: to je snad jediný klad na celém přístroji. Při mém mírném používání vydrží telefon běžně 4 dny v provozu bez dobití. Pokud za 4-5 dní poklesne pod 20 % kapacity baterie, nabídne se automatické vypnutí animací a podobných nesmyslů, čímž se zbývající životnost protáhne z necelého dne na další třeba tři dny. A to ještě není ta nejagresivnější optimalizace, kterou systém nabízí - to by pak běžel ještě mnohem déle. Nevím, jestli tu tleskat Androidu 7, anebo Huawei/EMUI. Nevím, kdo z nich k tomuto přispěl více.

Navíc pokud už baterie potřebuje dobít, tak se s originální nabíječkou dobije z nuly na 100 % za necelou hodinu (protože nabíječka valí 9 V a 2 A). To je tak dobré, že jsem mu skoro odpustil chybějící indukční dobíjení.

Jinak mě velmi mrzí, že tento čínský telefon nemá probuzení poklepem na obrazovku. To, co má každý drek z Číny i za blbých 1000 korun, tento telefon postrádá. Nejhorší na tom je, že je to zase jen nějaká "vlastnost" konkrétního modelu dováženého do Česka. Modely pro jiné země tuto vlastnost mají dostupnou (sice někde "v tajném menu", ale mají). Přitom má kreslení gesty na obrazovku pro spuštění aplikací, ale probuzení poklepem či zvednutím ze stolu nejde. Ach jo.

To je tak asi vše, co si aktuálně vybavuju, že mě pálí. Podruhé bych si tento telefon nekoupil ani za 4000 Kč, větší cenu opravdu nemá (pro někoho, komu záleží na výše uvedených věcech). Sáhl bych nejspíš po Xiaomi či nějakém jiném Číňanovi (Lenovo / Motorola).

EDIT: zapomněl jsem na nové Nokie, taky výborné čínské telefony s čistým Androidem. A samozřejmě pak další telefony v edici Android One...

pondělí 24. července 2017

OctoPrint - instalace na Orange Pi

Jak se vlastně 3D tiskne

Už přes půl roku mám 3D tiskárnu i3 MK2 a tisknu na ní různé roztodivné věci:


Vybraný model k tisku je obvykle ve formátu STL. Ten musím nařezat na plátky (naslicovat) a pak z nich vygenerovat instrukce pro pohyb tiskové hlavy, tiskové podložky a dávkování roztaveného plastu - tzv. G kód (čistě textový soubor s koncovkou .gcode).

Tento soubor s pokyny potom načítá mikrokontrolér v tiskárně a jednotlivé pokyny postupně vykonává. Tiskárna má k tomu vestavěný vlastní maličký mikropočítač se čtečkou SD karet, displejem a jedním otočným ovládacím knoflíkem. Stačí soubor s G kódem nahrát na PC na (mikro)SD kartu, tuto přenést k tiskárně, vložit do její čtečky karet a nechat vytisknout.


Toto funguje spolehlivě, ale brzy začne být přenášení paměťové karty mezi PC a tiskárnou méně a méně zábavné, později dokonce více a více otravné. Displej na tiskárně má malé rozlišení, není jednoduché vybrat mezi vícero soubory připravenými k tisku. Informace během tisku jsou minimální - jen procenta načtení souboru a aktuální výška výtisku. Chtělo by to nějak vylepšit.

Tiskárnový mikrokontrolér jde ovládat i přes USB. Můžeme například připojit tiskárnu přímo k pracovnímu PC a díky programu Pronterface posílat instrukce G kódu přímo z PC po USB kabelu. Během tisku vidíme mnohem víc informací, třeba grafy s teplotami podložky a tiskové hlavy, nebo aktuální pozici hlavy na tiskové vrstvě atd. Vypadá to, že takto je to pohodlnější než neustálé přenášení karty sem a tam.

Ovšem pak zjistíme, že u 12hodinového tisku nemůžeme vypnout PC, protože by se tisk přerušil. Nemůžeme ho ani restartovat (třeba kvůli aktualizacím). A když se rozhodne nejmenovaný systém jedné monopolní firmy restartovat sám (jak to má v oblibě), zničí tím celý mnohahodinový tisk. Program taky nesmí spadnout, USB nesmí nikdo rozpojit, s notebookem nesmíme nikam odejít atd. Ani toto není ideální.

Nejlepší řešení by bylo věnovat jeden počítač jen a pouze tiskárně. Mohl by být přístupný po síti nebo i z Internetu, umožnit tisky pouštět, hlídat a v případě poruchy zastavovat i na dálku, mohl by mít připojenou kamerku, takže bychom mohli tisknout a přitom si třeba odskočit na pár hodin "na jedno" a přitom mít dokonalý vizuální přehled, jako bychom se od tiskárny nevzdálili ani na krok. Nic jiného by na tomto počítači neběželo, žádné aktualizace a další zdroje poruch - prostě specializovaný, dedikovaný počítač jen pro tiskárnu. A mohl by mít pěkné webové rozhraní, které by všechno umožnilo řídit. To by asi bylo ideální.

OctoPrint

No a protože žijeme v úžasném světě svobodného software, tak tento řídicí program s pěkným webovým rozhraním a mnoha dalšími vymoženostmi už existuje - jmenuje se OctoPrint - a je dostupný zdarma a se všemi zdrojovými kódy (vývoj probíhá na GitHubu). Kdybych chtěl být genderově nekorektní, nebo dokonce pozitivně diskriminační, zmínil bych i tu zajímavost, že tento skvělý program vyvíjí žena - Gina Häußge. Ale protože na pohlaví u programátorů nehledíme, tak jen zmíním, že je dobré jí přispět nejen kvalitním bug reportem, pull requestem s nějakým vylepšením, ale i třeba drobnou mincí (Patreon, Paypal), protože OctoPrintu věnuje spoustu času a musí taky z něčeho žít.

Takže software máme (v Pythonu, tedy přenositelný na jakoukoliv platformu) a chybí už jen počítač. Místo PC, které je neskladné, žere elektřinu a točí se v něm součástky, bude mnohem lepší volbou jednodeskový minipočítač. Například něco jako Raspberry Pi za 35 dolarů (plus dražší poštovné plus smrt na poštovní celnici za překročení limitu). Pro Raspberry Pi existuje hotový obraz paměťové karty s předinstalovaným operačním systémem a OctoPrintem - jmenuje se OctoPi a není s ním žádná práce, takže tady by mohl tento návod končit.

Orange Pi

Pokud jste ale fandové levnějšího ovoce než Malin z Anglie, můžete číst dál. Popíšu totiž, jak jsem OctoPrint nainstaloval na Pomeranč z Číny, tedy Orange Pi od Shenzhen Xunlong Software. To ale není moc důležité, protože rozumný operační systém pro tyto malé počítače - Armbian - běží na desítkách různých desek, takže tento postup jde aplikovat i na Banány, Borovice a mnohé další stroje.

Konkrétně jsem použil Orange Pi One za necelých 10 dolarů (plus levné poštovné $3.61). K němu jsem rovnou přikoupil i originální 2Mpix kamerku. Není to žádný zázrak, ale za necelých 6 dolarů paráda. Tím pádem jsem byl hluboko od obávaným celním limitem a za pouhých 400 českých korun získal počítač, který bude jen a pouze sloužit tiskárně.

Pokud bych nechtěl použít originální kamerku k Orange Pi, ale sáhl místo toho po nějaké s USB rozhraním, mohl bych vzít ještě levnější počítač - Orange Pi Zero za neuvěřitelných 6 dolarů. Zero totiž nemá CSI konektor pro kameru, bohužel. Anebo kterýkoliv jiný Orange Pi, jejich výrobce se zbláznil a skoro každý měsíc vychrlí nový typ...

Instalace HW

Instalace "železa" vyžaduje vyrobit či sehnat kryt na počítač, protože nechceme nic zkratovat. Nejlepší je kryt si sám vytisknout. Na Thingiverse jsem našel krásný hotový model.


Dále potřebujeme držák na kameru. Opět nejlépe vytisknout, a zase jde najít hotový model držáčku kamery na Thingiverse.



Teď je potřeba počítač přichytit třeba na rám tiskárny, kde nebude zavazet, zatímco kameru je potřeba postavit tak, aby viděla na tiskovou plochu. Bohužel, originální kamerka připojená přes CSI rozhraní může mít jen kratičký kablík, takže je nutno najít takovou pozici pro počítač, kde bude mít kamerka dobrý výhled. Toto jsem v době psaní tohoto článku ještě nevyřešil...

USB kamerka by zde byla výhodnější, neboť USB kablík může být mnohem delší, takže počítač by mohl být zezadu na rámu tiskárny, a kamerka jen na nějakém měkkém drátku nastavena někde z boku tak, aby pěkně viděla na scénu.

Počítač můžeme napájet originálním zdrojem z další zásuvky, ale do budoucna se chystám spíš udělat rozdvojku na USB vedoucím z mikrokontroléru tiskárny a napájet Orange Pi přímo z tiskárny. Jestli si na to koupím kablík pro napájení z USB, nebo jestli se připojím přímo na piny konektoru v Orange Pi, ještě netuším, ale obě možnosti jsou schůdné.

V neposlední řadě je dobré nezapomenout na osvětlení tiskové plochy. Určitě postačí pár jasně bílých LEDek, nejlépe taky napájených z USB tiskárny, ať je všechno na jednom zdroji. Fajnšmekr by dokonce mohl k počítači připojit senzor úrovně okolního světla a řídit svit LEDek podle toho (přes den vůbec, v noci na max, ale jen při tisku, samozřejmě).

Zajímavé by mohlo být osvětlit pracovní plochu infračervenými LEDkami a snímat kamerkou bez IR filtru. Pak by tisková sestava nepřispívala ke světelnému smogu (zbývá ještě hlukový smog a plastový smrad, což vyřeší jedině separátní tiskařská kobka s odsáváním zplodin).

Instalace SW

Tak za prvé nainstalujeme určitě operační systém, tedy rozhodně Armbian. Stáhnout správnou verzi na PC, zapsat na paměťovou kartu, vložit do Pomeranče a nastartovat. Napoprvé se tam dějí věci (rozšiřují diskové oddíly), tak je potřeba to nechat, případně restartovat, updatovat balíčky atd. Přesný návod najdete u Armbianu.

Dále můžeme instalovat samotný OctoPrint. Postupujeme podle návodu pro Raspberry Pi, protože Debian jako Debian (tj. Raspbian jako Armbian). Jeden důležitý balíček jim tam (kvůli chybě v Debian Wheezy) ale chybí - "virtualenv". Takže do příkazové řádky napište:
sudo apt-get install python-pip python-dev python-setuptools python-virtualenv virtualenv git libyaml-dev build-essential
Zajímavé je (pro lidi jako já, kteří neznají python a jeho virtualenv), že po zkompilování všech těch zbytečných věcí není možné výsledný adresář někam přesunout, protože všechny ty blbosti mají v sobě zakompilovanou absolutní cestu. Takže když jsem to zkompiloval na zkoušku v /tmp/OctoPrint-master/, tak už to tam musím pořát mít, i když nechci (protože /tmp/ se po každém restartu promazává). "Vyřešil" jsem to tak, že jsem ten zkompilovaný adresář přejmenoval a přesunul do /home/, a teď si jen vždy před spuštěním udělám symbolický link - nějak takto:

ln -s /home/OctoPrint /tmp/OctoPrint-master

Tím jsem se nechtěl pochlubit, je to takové škrábání se levou rukou za pravým uchem - spíš jsem chtěl jen upozornit na něco, co jsem původně netušil, a že to jde obejít i bez kompletní rekompilace. Počítám, že v diskusi mě nějaký pythonista upozorní, že to jde vyřešit ještě nějak jinak - to jsem zvědav.

OctoPrint máme spouštět v tom adresáři, kde jsme ho zkompilovali, a navíc s parametrem "serve", takže v mém popleteném případě nějak takto:
cd /tmp/OctoPrint-master && ./venv/bin/octoprint serve

V tu chvíli se spustí web server na portu 5000, takže v dobře nakonfigurované síti je možné hned poté otevřít webový prohlížeč na PC/tabletu/mobilu a napsat do něj http://orangepione:5000/

Trošku oříšek může být zařídit spuštění programu hned po startu operačního systému. Zkušený uživatel Debianu by napsal init skript (do /etc/init.d/), případně systemd službu, a nejspíš by přitom využil parametr "daemon" OctoPrintu. Je ale možné i trošku "podvádět" a spustit program přímo z /etc/rc.local, což je skript, který se pouští při startu systému. Jen je potřeba spustit OctoPrint pod správným uživatelem a navíc mu zprostředkovat terminál, tedy jeho emulaci programem screen:

su - ja -c "/usr/bin/screen -dmS octoprint /X/venv/bin/octoprint"

V předchozím řádku je potřeba nahradit "ja" jménem vybraného uživatele a "X" cestou ke zkompilovanému OctoPrintu.

Video streaming

Na Orange Pi s originální kamerkou je zajímavý fakt, že přestože používá ovladač "gc2035" přítomný v Armbianu, tak přesto nefunguje ŽÁDNÝ program pro práci s videem kromě jediného - "motion". Proto drtivá většina návodů na Internetu popisuje konfiguraci programu "motion" - například na cnx-software.com.

Fór je v tom, že motion na tohle není dělaný, resp. je kanónem na vrabce. Motion má totiž hlavně hlídat změny v obraze, zatímco nám by stačilo obyčejný video streaming, jak to umí například program mjpg-streamer.

Kdysi jsem našel vysvětlení, proč ostatní programy nefungují, a zajímavý návod, jak to obejít: zavede se modul "v4l2loopback", který vytvoří virtuální video zařízení, a pak se spustí jednoduchý prográmek nazvaný "vidcopy", který kopíruje data z reálného video zařízení (z kamery) do toho virtuálního, se kterým už poté umí pracovat běžné video programy. Ta stránka už na Internetu neexistuje, ale popsáno je to třeba i na tomto blogu.

Poté je možné například zkompilovat mjpg-streamer (potřebujeme ale jistý fork s doplněným klíčovým parametrem "-u"), který bude brát obraz z virtuálního zařízení a streamovat přes web.

Výsledný skript (nazvaný třeba streaming.sh) na zavedení modulů do kernelu ve správném pořadí a spuštění nezbytných programů je zde:
sudo modprobe gc2035
sleep 2
sudo modprobe vfe_v4l2
sleep 2
sudo modprobe v4l2loopback
sleep 2
SIRKA=1280
VYSKA=720
FPS=5
ROZLISENI=$SIRKA"x"$VYSKA
cd $HOME/streaming
(cd vidcopy && ./vidcopy -w $SIRKA -h $VYSKA -r $FPS -i /dev/video0 -o /dev/video1 -f UYVY &)
sleep 3
cd mjpg-streamer/mjpg-streamer-experimental && ./mjpg_streamer -i "./input_uvc.so -r $ROZLISENI -f $FPS -n -u -d /dev/video1" -o "./output_http.so -w ./www"
Tento skript opět spustíme při startu systému přidáním následujícího řádku do /etc/rc.local:
su - ja -c "/usr/bin/screen -dmS streaming /cesta/k/streaming.sh"
Tím se spustí další web server, tentokrát na portu 8080: http://orangepione:8080/

Konfigurace OctoPrintu

Ještě bych rád zdokumentoval pár drobností, které jsem objevil při počáteční konfiguraci OctoPrintu. Například určitě chceme, aby se hned po startu serveru připojil k tiskárně, protože to trvá asi 20 sekund a kdo má na to čekat. Úvodní nastavení komunikačního portu je "AUTO" a když klikneme na "Connect", tak se připojí. "Auto-connect" po startu serveru ale nefunguje, dokud nezvolíme konkrétní sériový port ("/dev/ttyACM0").

Dále, názvy souborů na kartě se objevují ve zkráceném tvaru (jen prvních šest znaků, pak vlnka a číslo) - tohle je známá, ale stále nevyřešená chyba OctoPrintu. Vzhledem k tomu, že SD kartu už nebudeme potřebovat, to asi nevadí.

Zajímavá je též chyba "pozor, tištěný objekt se nevejde na tiskovou plochu". Je to kvůli tomu, že Průšův Slic3r přidává před samotný tisk jakési "rozcvičení" tiskové hlavy, kdy na samém předním okraji tiskové plochy vyjede asi 5cm proužek plastu. Tento proužek je na souřadnici -3, což OctoPrint správně prohlásí jako mimo tiskovou plochu. Vidím několik způsobů, jak to vyřešit. Přesunout inicializační G kód ze Slic3ru do OctoPrintu, nahlásit jako chybu a prosit Ginu o "opravu" (ignorováním počáteční sekvence), anebo to prostě rovnou ignorovat selským rozumem (když v náhledu vidím, že se na plochu vejde, tak věřím, že to bude OK).

V nastavení "Webcam & timelapse" zadáme URL video streamu, který je: http://orangepione:8080/?action=stream. Timelapse jsem neřešil, takže URL na fotky si v mjpg-streameru najdete sami.

Propojení se Slic3rem

Když Slic3r vygeneruje G kód, tak jak ho dostaneme do Orange Pi? Jedna z možností je přes sdílenou složku na Orange Pi (to bysme si tam ale museli nainstalovat Sambu, NFS nebo použít sshfs či něco podobného). Druhou možností je použít tlačítko "Upload" ve webovém rozhraní a nahrát G kód přes prohlížeč.

To je pořád ale "ruční práce". Přitom existuje fantastická možnost automatizace - Slic3r umí vygenerovaný kód poslat přímo do OctoPrintu! V záložce "Printer Settings" je sekce "OctoPrint upload", kam stačí zadat adresu a port našeho nového tiskového prohlížeče ("orangepione:5000") a pak "API Key", který zkopírujeme z OctoPrintu z nastavení "API". Tím se v hlavní obrazovce Slic3ru objeví nové tlačítko "Send to printer" a svět začne být zase o notný kus automatizovanější :-)

Printoid

OctoPrint se svým webovým rozhraním je bezva na práci v lokální síti, ale pokud člověk vyrazí ven, tak prý tou pravou bombou je mobilní aplikace Printoid. To jsem ještě nestihl vyzkoušet, takže sem případně doplním osobní zkušenosti posléze.

Credits:
Tomáš Vít, můj strážný anděl 3D tisku, mě krom jiného upozornil, že Cura má stejnou integraci jako Slic3r.
Pavel Novotný mě doslova dotlačil k instalaci OctoPrintu slovy "čas strávený instalací se ti tisíckrát vrátí při tisku". Také neustále pěje ódy na Printoid, že šetří mnoho času při ladění tiskových profilů.

čtvrtek 20. července 2017

WiFi lednička

Tohle v plánu vůbec nebylo, ale okolnosti si to doslova vynutily. Z ničeho nic mi žena říká, že v ledničce (nebo vlastně v chladničce) je nějak teplo - a skutečně, uvnitř byla stejná teplota jako v kuchyni. Zřejmě opět odešel termostat:


Termostat je takový malý mechanický bazmek, od kterého vede dlouhá kapilára (spíš drátek) až někam za zadní stěnu ledničky. Otočný prvek nahoře má umožnit uživateli nastavit, při jaké teplotě se začně lednička kompresorem ochlazovat. Číslování 0 - 7 znamená, že jeden nikdy neví, na jakou teplotu si ledničku nastavil - jen tuší, že "1" znamená tepleji a "7" chladněji (možná). V ledničce má být kolem 5 ℃, což tímto bazmekem těžko půjde nastavit. Termostat je schovaný uvnitř tohoto plastového modulu:


Jak vidno, je tam integrováno i osvětlení, a tohle je snad ještě původní žárovka, které by tak bylo přes 20 (slovy dvacet) let - a pořád svítí :) V modulu je ještě mechanický spínač světla otevřením dveří (vpravo nahoře):


Celé je to namontováno někde nahoře na boku ledničky. Modul dozadu pokračuje apartním krytem kabeláže a v rohu z něj doleva trčí ta kapilára termostatu.


 Kabel ke světlu a od termostatu vychází zadní stěnou ledničky ven:


Stál jsem před volbou okamžitě koupit novou ledničku (což zavání průšvihem), nebo zavolat opraváře na tuto již historickou (už minule brblal a dal tam nejspíš nevhodný termostat), anebo si zkusit termostat opravit výměnou za nový sám. Ale proč kupovat za 200 - 400 Kč zase jen nějaký mechanický krám, který nejde pořádně nastavit na žádanou teplotu, hysterezi (rozptyl mezi sepnutím a rozepnutím) má zcela neovladatelnou a navíc se opět kdykoliv pokazí, aniž bychom se o tom včas dověděli?

Nebylo by mnohem lepší vrazit do ledničky oblíbené digitální teplotní čidlo DS18B20, teplotu měřit přesně a řídit spínání kompresoru mikrokontrolérem? No samozřejmě! Neměl jsem ale po ruce žádnou destičku s Arduinem a relé, a tak jsem prostě sáhl po něčem už hotovém - WiFi Teploměru! Díky tomu teď lednička teplotu nejen měří a řídí, ale zároveň ji i hlásí na server, který kreslí šikovný graf a navíc hlídá, že teplota nepřekročí nastavené meze. To bych pak dostal varovný mail, že něco není v pořádku a mohl bych reagovat dřív, než se potraviny uvnitř ledničky zazelenají...


Jak na to? Stačí vytáhnout kabel k termostatu z ledničky ven, bez schématu prostudovat dráty v konektoru, pochopit podle barev či původního zapojení, které dva je potřeba spojit pro spuštění kompresoru a tyto ustřihnout od konektoru a zapojit do relé ve WiFi Teploměru:


Dále je potřeba dovnitř dostat teplotní čidlo, a když už jsme v tom, tak průchodkou natáhnout i napájecí kabel pro budoucí LEDové osvětlení:


WiFi Teploměr jsem postavil na lednici a zapojil do něj jak kabel ke kompresoru, tak samozřejmě i teplotní čidlo:



Při tom se mi povedlo najít schéma zapojení, které bylo nalepeno na zadní stěně lednice:


Překladač nebo Ostravák by mi přeložili barvy kablíků, kdyby bylo potřeba...

A to je vlastně vše, přátelé (tádydádydáá). Lednička opět chladí potravu, ale nyní to dělá digitálně s přesností na setiny stupně Celsia, s rozumně nastavenou hysterezí a ještě je navíc dálkově ovladatelná a hlídaná. Takový funkční upgrade ledničky o dobrých 25 let - a to se vyplatí :-)

EDIT: přidávám graf teplot v ledničce po první noci - chlazení je nastaveno na 8 ℃ s hysterezí 2,5 ℃ (takže kompresor spíná při dosažení 8 stupňů a jede dokud teplota neklesne pod 5,5 stupně).  Neuvěřitelné, jak to jede v nočním klidu stejnoměrně - by se podle toho snad daly seřizovat hodinky :-)



pátek 9. června 2017

Krokové motory s Arduinem - mikrokroky

Rád bych se ještě krátce vrátil k minulému článku a videu o krokových motorech řízených softwarově pomocí Arduina: arduino-openscad-krokove-motory

Tady je vysvětlen princip krokových motorů hezky česky: robotika.cz/articles/steppers/cs

Řídit celé kroky Arduinem jde v pohodě, na to není ani potřeba knihovna Stepper, protože je to vlastně velmi jednoduché. Ovšem vzhledem k tomu, že kroků je na celou 360° otáčku třeba jen 50 (jako v případě mého motoru ve videu), tak je to otáčení takové nepříjemně skokové a trhané. Proto byly vymyšleny půlkroky, které jsou krásně zobrazené v této animaci:
www.8051projects.net/wiki/Stepper_Motor_Tutorial#Half_Step_Sequence

Od půlkroků se dá jít na čtvrtkroky a ještě menší - tzv. mikrokroky. Normálně to umí samy od sebe hardwarové ovladače pro krokové motory, ale když je nemáme, jde si chytrým programováním pomoci i softwarově. Jistý Honza z Belgie to celé popsal včetně fotek z osciloskopu, podle kterého ladil časování:
www.jangeox.be/2013/12/microstepping-with-arduino.html
Pokud jste si nevšimli, tak na konci jeho článku najdete odkazy na zdrojový kód.

Tady jsem natočil video, jak Janův algoritmus krásně zjemní otáčení mého krokového motoru pomocí zvýšení kroků z 50 na 50 * 16 = 800 kroků na jednu otáčku:


P.S. právě jsem vygoogloval ještě jeden pěkný český článek na téma mikrokroků, tak ho sem linkuji, třeba se bude hodit: robodoupe.cz/2016/mikrokrokovani-sny-a-skutecnost/