O objektu, struktuře a gotu

A taky o globální proměnné.

Programátoři se od pradávna dělili na Opravdové Programátory a Pojídače koláčů. Tenhle sloupek Eda Posta je tak notoricky známý, že ho ani nebudu připomínat, a místo toho rovnou řeknu, co mám na srdci…

Totiž já už to psal, ale klidně to připomenu: Učte se programovat mikrokontroléry, naučte se assembler aspoň jednoho procesoru, a uvidíte, jak vám věci začnou dávat smysl.

Uvědomil jsem si to, když mi jeden velmi zkušený programátor ukazoval svůj kód pro Arduino a divil se, že se mu to nevejde do paměti. Koukám do kódu, a ten byl – přátelé! – ten byl nádherný! Srdce každého učitele programování by nad tím zaplesalo. Nahoře měl konstruktor a destruktor, pod tím ty struktury, správně přetypované malloc()…

Polknul jsem.

„Co? Mám chybu v tom pointerovém typecastu? To snad ne…“

Povídám: „Co to tady tím mallocem tvoříš?“

Prý že nějaké úložiště dat… V hlavní smyčce se volají dvě funkce, první nějak sebere data, vytvoří tuhle strukturu, předá ji druhé, ta je zpracuje a strukturu zase zruší. Napsal bych objekt, ale nemělo to metody. Tady by asi ten učitel povytáhnul obočí.

Funkce, která data zpracovávala, měla taky nějaké lokální proměnné. Ještě že nepoužil rekurzi, pak by bylo neštěstí hotové.

Dal jsem mu stručnou nalejvárnu. Naštěstí šlo o chápavého a velmi liberálního programátora. Kdyby byl rigidní, tak mě ještě dneska škrtí a křičí, že globální proměnná neexistuje a GOTO je ďábel!

Pojďme si to trošku nahodit na koleje. Pokud jste programátor bankovních systémů v Javě, pokud děláte weby nebo pokud programujete, cojávím, matematické algoritmy v … čemkoli, zkrátka pokud programujete cokoli s výjimkou low level systémů, tak si opravdu vystačíte s objektovým / objektově orientovaným přístupem, ti drsnější z vás se naučí funkcionální, a neberte to teď nijak zle: vystačíte si s tím a budete v tom klidně dobří. Ale nepouštějte se, probůh, do low level, protože tam jsou lvi a temnota a zmatení a jistoty přestávají platit.

Trošku to připomíná situaci člověka, který je zvyklý na newtonovskou mechaniku, a najednou je postaven před teorii relativity. Všechno je jinak a sčítání rychlostí není sčítání a tak. Jenže platí, a to si zapište červenou tužkou hned vedle tabulky ASCII kódů, že v normálním životě si většina lidí vystačí s newtonovskou mechanikou, a kdo by při výpočtu doby dojezdu z Prahy do Brna autem po D1 montoval relativistické vzorce, dopočítal by se téhož, ale působil by značně nepatřičně. Tam stačí obyčejné „vzdálenost lomeno rychlost“. Teda – na D1 je to potřeba ještě vynásobit imaginární jednotkou i, protože D1 se řídí vlastními zákony a žádný vzorec nikdy nezohlední počet bílých Transitů, Felicií jedoucích 110 v levém pruhu, vymletý pravý pruh od Humpolce po Jihlavu ani Slováků v audinách tak temných, že mají zatemněné i přední sklo, ale – rozumíme si, ne?

Zkrátka úplně stejně, jako jsou relativistické vzorce vhodné jen pro některé oblasti, tak jsou low level postupy taky vhodné převážně pro low level programování. Ale zase je dobré je znát, abyste si nepřipadali před cyklotronem a Arduinem jako mistři světa, protože umíte newtonovskou fyziku a Quicksort.

Pár základních věcí tedy zde:

Zaprvé – globální proměnné existují a jsou užitečné. Pokud se pracuje s jednou instancí něčeho (tedy jako že singleton), tak to uložte do „globální proměnné“. V praxi to dostane v RAMce, které v jednočipu není nikdy dost, tolik bajtů, kolik to skutečně zabírá, bude to na konstantní adrese, a nazdar bazar, bude to tam furt, přistupuje se k tomu jednoduše a hotovo dvacet.

Zadruhé – žádná halda. Víte vy, jak se pracuje s haldou? Jasně že víte, ale otázka zní: jak to ten procesor vlastně dělá, že tu haldu má, a že vám z ní přiděluje paměť, o kterou si řeknete? No, on si totiž vezme celou volnou paměť, co má k dispozici (a to se liší podle architektury), a udělá si v ní bloky. V zásadě si na začátku zapíše na začátek celé haldy pár servisních bajtů, typicky: toto je prázdný blok, má délku tolik a tolik. Pak uděláte malloc(), knihovna koukne do paměti, najde značku pro „prázdný blok“, z ní odpočítá požadovaný počet bajtů, a na začátek zapíše: Alokovaný blok, tolik a tolik bajtů, a za konec zapíše: Prázdný blok, tolik a tolik bajtů. Chvilku je přidělujte a rušte, nejlépe s různými a nesoudělnými délkami, a za chvilku v RAMce nebudete mít k hnutí. Prostě ne, dynamická alokace paměti je v jednočipu prostě hloupý nápad a pokud můžete, tak se jí vyhněte.

Zadvouapůlté – ukazatel. Když už máte nějakou dynamickou paměť přidělenou, tak k ní přistupujete přes ukazatel a přes index. Což tedy v praxi znamená, že buď má procesor nějaké indexové registry, a do nich si uloží hodnotu ukazatele a pak přistupuje k paměti prostřednictvím nepřímé adresy, nebo je nemá, a pak si musí pokaždé adresu dopočítat. Naštěstí je dneska mají, taky překladače umí hodně dobře optimalizovat, ale raději se na to nespoléhejte, protože i překladač může narazit na omezení, buď svoje, nebo procesoru.

Zatřetí – žádné lokální proměnné. Taková lokální proměnná, to je místo na zásobníku. Zásobník, helejte, to není nějaká abstraktní struktura ze skript „Algoritmy I – datové struktury“, ale docela zásadní součást procesoru na nízké úrovni. Když voláte podprogram (což je ve vyšších jazycích plusmínus ekvivalent „volání funkce“), tak se na zásobník, což je struktura v paměti, uloží adresa, ze které se skáče, aby se po returnu mohl procesor vrátit tam, kde byl naposledy. Na zásobník se taky ukládají věci, které si potřebujete na chvíli někam schovat. Zkrátka zásobník je velmi důležitá věc, bez ní by vám program ve strojáku fungoval naprosto nestrukturovaně. U „velkých“ procesorů to nebývá úplně takový problém, tam bývá zásobník hodně velký a s chybou „stack overflow“, která nastává ve chvíli, kdy toho na zásobník uložíte moc, se setkáte jen zřídka. Nebo ještě hůř – nesetkáte se s ní až do chvíle, než vám někdo pomocí téhle chyby nezruší systém a nenabourá se do něj. U malých procesorů to už problém je, tam není dost RAMky. Některé dokonce mají omezenou velikost (třeba 6502 měl jen 256 bajtů na zásobníku) a některé jednočipy mají hardwarově zásobník zcela mimo adresní prostor a pevně omezený například na 16 hodnot.

No, a proč o zásobníku mluvím? Protože zrovna lokální proměnné se dělají tak, že po vstupu do podprogramu (=funkce, procedury, jakkoli) se na zásobníku alokuje množství paměti, potřebné pro všechny proměnné, a pak se k nim přistupuje (zase) nepřímo. Moderní překladače to řeší tak, že se snaží alokovat pro tyto situace některé z registrů, ale zase: nejde to vždy a všude, nespoléhejte na to.

Mimochodem – když předáváte funkci parametry, víte, co se stane? Záleží na překladači, ale obecně platí, že zase uloží všechny na zásobník a zavolají podprogram. Pak je opět zahodí. Znovu: překladače optimalizují a snaží se nacpat parametry do registrů, ale když jich je moc, tak i registry dojdou.

Začtvrté – rekurze. Není to dobrý nápad, důvod viz výš.

Za páté – goto. Nebo GO TO. Zkrátka přímý skok na nějaké místo programu. Od dob strukturovaného programování je to zlo, protože to rozbíjí strukturu. Ve skutečnosti za všemi těmi for a loop a while není nic jiného než prachsprosté goto, jen zakapotované tak, že cílovou adresu skoku řeší překladač a ne chybující programátor. I známé breakcontinue jsou jen syntaktický cukřík místo goto. V assembleru se mu ale říká většinou jump (JMP, JP, JUMP) nebo branch. Je to velmi silný nástroj, takže chápu, proč ve vyšších jazycích moc nebývá, ale tam dole, tam, kde to smrdí křemíkem, se bez něj neobejdete. A stačí jedna chyba, a program vám najednou skáče, kam nemá, kde ho nikdo nečekal, a dějou se věci veliké.

Holt jednočipy, osmibity a assembler nejsou pro měkkýše… Jsou to mocné nástroje, ale nebezpečné a v rukou nezkušeného můžou napáchat obrovské škody. Ale rozhodně pomůže, když se je naučíte – i kdyby hlavním důvodem měla být ta úleva, že programujete v něčem s podstatně vyšší mírou abstrakce.

Rubriky: Jen tak, Software | Štítky: , , , | 2 komentáře

BigClown

Před pár lety, kdy jsem si redefinoval svoje profesní cíle a fantazie, tak jsem si říkal: Jaká by byla úplně ideální práce, kterou bych chtěl dělat? A uvědomil jsem si, že by mě ze všeho nejvíc bavilo:

  • Hrát si s elektronikou. Jako že mě zaujme nějaké zajímavé čidlo, tak si ho koupím, zkusím s ním něco dělat, nějaké zapojení navrhnout, vyzkoušet to, pohrát si. A pak sednout a…
  • Psát o tom, jak se s čipem pracuje, na jaké problémy jsem narazil, co se mi líbilo a co ne… Dát dohromady tipy, odpovídat lidem, které to zaujalo, pomoci s použitím a nasazením…
  • Programovat pro to – drobné utility, uživatelské rozhraní a tak. Nic velkého, žádný bankovní systém v Javě, ale spíš jen malá aplikace, drobnost, proof of concept
  • Školit to, učit, psát o elektronice…

Celé to dohromady se jaksi přirozeně točí okolo Internetu věcí, ať už to je co chce.

No a tak jsem decentně směřoval k tomu cíli. Kombinoval jsem něco jako zaměstnání, něco jako koníček, však víte sami, pokud mě sledujete.

Logicky se na mne časem začali obracet různí lidé, abych jim buď poradil, nebo řekl svůj názor na jejich „IoT technologii“. Tak jsem se dostal k Sigfoxu, k LoRaWan od Things.cz a ke spoustě dalších věcí. Jedním z týmů, který mě oslovil a žádal o zpětnou vazbu, byla parta z Jablotronu, která přišla s platformou pro domácí automatizaci, nazvanou BigClown. Na první letmý pohled jedním okem to vypadalo jako ekosystém „a la Arduino + vybrané senzory a aktuátory + koncentrátor“, ale jedna věc mě zaujala enormně, a to… Zkusíte hádat?

Když Jablotron, tak bezpečnost!

Ty jednotlivé endpointy, tedy samotné „věci“, jsou modulární. Hlavní modul („core“) je postavený na procesoru STM32L083CZ, což je Cortex M0+, s low power, s generátorem náhodných čísel a akcelerací AES128. U něj je čip ATSHA204, tedy kryptografický čip, který umožňuje bezpečné ukládání klíčů a další kryptografické lahůdky (do podrobností se hodlat nehodlám, nemám nyní na to čas…)

Takže máme „věci“ s integrovaným kryptografickým hardware, kde šifrování není možnost, ale vlastnost. Komunikace s koncentrátorem (hubem) probíhá po rádiu (v pásmu 868MHz) a je šifrovaná. Zprávy jsou technicky MQTT s JSON payloadem, serializované, komprimované a šifrované.

bigclown

V roli koncentrátoru může být jakýkoli počítač, klidně i Raspberry Pi nebo Turris Omnia (router od CZ.NIC), který se stará o další věci – příjem zpráv, odesílání, jejich zpracování, komunikaci do internetu (ostatně ani být nemusí; můžete si to připojit třeba k televizi a sledovat či řídit) a další věci. Důležitá vlastnost je tu automatická aktualizace a záplatování. Koncentrátor hraje rovněž zásadní roli při distribuci klíčů a párování se zařízením – to probíhá fyzicky přes NFC.

Idea „modulární stavebnice domácí automatizace, kde je bezpečnost nikoli přidaná hodnota, ale transparentní vlastnost“ je něco, co Michal Altair Valášek ohodnotil slovy: „Tohle jsem u IoT hledal, takovouhle stavebnici, kde je kryptografie vyřešená, ale nikde nenašel!“

A celé tohle je open source hardware a open source software, uvolněné pod licencemi MIT, CC apod. (ne, žádné GPL, naštěstí!)

No a když jsme se bavili o mém názoru na věc, tak jsem říkal, že se mi to moc líbí, že rád pomůžu a že se to blíží mé „práci snů“.

A tak jsme si plácli.

Jestli vás to zaujalo, tak si přihlašte newsletter na firemní stránce BigClown Labs, nebo pište mně.

Rubriky: Hardware, Jen tak | Štítky: , , , , , | 2 komentáře

Pravidelný přehled

Přátelé, mám toho dost.

Teda ne že bych byl jako že úplně hotovej, jak se říká, ale že mám hodně věcí, kterým se věnuji. Třeba píšu pro Lupu, což dělám zčásti pro peníze a zčásti z ryzí zlomyslnosti, když si představím, jak tamní komentátoři nadskakují. Ale je pravda, že elektroniku jsem teď nějaký čas kvůli pracovnímu vytížení zanedbával… Respektive jsem se jí nevěnoval tak intenzivně, jak by si zasloužila. Pojďme to napravit.

Náš výukový shield už existuje v dvou prototypech. Jeden mám já, druhý má Štěpán, a dokonce už i otestoval fungování shieldu s Ethernet shieldem. Fungují! Takže jupí! Včera navíc přišly termistory, tak můžu udělat třetí kus, tentokrát už s kompletní výbavou, a jet ho ukázat přátelům v CZ.NIC.

Do toho tu testuju Smarteverything, Loru a nejnovější přírustek, Arduino Uno Wifi. Ale protože je času málo, tak to jde jak psovi pastva.

Jediné, co si ale nenechám ujít, je pravidelné procházení Flipboardu a vybírání těch nejvhodnějších kandidátů pro svůj magazín. To se takhle ráno probudím a mám čas, tak si zalistuju novinkama na blozích a magazínech o mikroelektronice a bastlení, a když mě něco zaujme, tak si to přihodím do svého magazínu. Běžte se podívat sami, uvidíte, jaká spousta zajímavých konstrukcí se denně objevuje!

Ať se vám dobře listuje!

Rubriky: Hardware | Štítky: , , | 1 komentář

Odpor k LEDce

Mám odpor k LEDce. Vy ne? To byste měli mít, protože prostě… víte proč, že?

Jsou dva typy elektroinžinýrů. Jedni vědí, že „u LEDky musí být rezistor“, kouknou do schématu, vidí LEDku bez rezistoru, a je jim jasné: To navrhoval patlač, klikač, amatér, bastlič, Satanáš a debil, protože všichni vědí, že u LEDky musí být rezistor a bez něj to může zapojit jen prase.

No a pak je ta, kupodivu menší, skupina lidí, kteří vědí, že „LEDka vydrží jen určitý proud“ (plus samozřejmě že určitý proud potřebuje k tomu, aby vůbec svítila, ale tím se teď tady nezatěžujme). A že nejjednodušší je zapojit sériově rezistor, který proud omezí, ale – a to je důležité – není to jediné správné řešení.

Totiž,on ten rezistor má dvě zásadní nevýhody. Zaprvé: topíte jím pánubohu do oken. Není to nic podstatného, ale přeci jen – topíte. Zadruhé: je to další součástka v obvodu, a když držíte náklady nebo prostor na minimu, tak se každý rezistor počítá.

Tady je dobré vědět, že k LEDce není „povinný rezistor“, ale „maximální proud“. A pokud se vám LEDka ocitne v místě, kde je jaksi z podstaty proud, který je nižší než maximální povolený, tak se nemusíte už s rezistorem babrat. Však proč taky – o proud jde, ne o to, že máte rezistor u LEDky!

Maximální proud je kupodivu na spoustě různých míst. Například na výstupech a vstupech jednočipů. Nebo tam, kde se budí pomocí PWM. Například si představte takový displej, složený ze čtyř sedmisegmentovek, a jeho buzení pomocí jednočipu. Na porty připojím rovnou anody a katody, protože vím, že budím postupně jednu pozici po druhé, tedy každá LED je vlastně buzena PWM se střídou 1/4. Navíc vím, že jednočip má omezený proud per pin, takže nehrozí nebezpečí, že by tekly velké proudy. A proto vím, že v tomto případě není nutné použít rezistor.

Ale obávám se, že do finální verze shieldu jich asi budu muset osm strčit. Sice jsou ty LEDky připojený mezi vývody ATtiny2313 a jsou buzené přes PWM, ale asi bych neměl na to vysvětlovat stále dokola to, co jsem napsal tady, každému, kdo se naučil mantru o LEDkách v té blbé verzi (tedy s rezistorem místo té verze s proudem)!

Já to na jednu stranu chápu: Začátečníkovi je lepší říct, že „k LEDce patří rezistor“, tím začátečník nic nezkazí… Jenže pak je taky dobré mu říct, proč to dělá, a dbát na to, aby to pochopil. Jinak se to naučí jak Ohmův zákon a bude to naprosto mechanicky aplikovat pořád, všude, a co hůř: bude se chodit hádat do diskusí…

PS: Tady máte trošku detailnější počtení o LEDkách a rezistoru a jednočipu, ale je to v angličtině.

Rubriky: Hardware | Štítky: , , , | 5 komentáře

Liška kontra papoušek

Tak se to nějak sešlo, že mám teď doma tři kousky na testování. Dvakrát Sigfox, jednou LoRa od Things.cz. (Fox a Lóra, jasný? Slovní hříčka…)

Desky na shieldy přijdou zítra nebo pozítří, takže je zatím čas na hraní. Zde jsou moje první dojmy z vybraných kitů.

Jako první dorazil Arduino shield pro Sigfox. Je na něm modul od ATIM, připojený tím nejjednodušším možným způsobem přes adaptér úrovní 3.3V – 5V.

Abych to konkretizoval: Nejjednodušší možný způsob zde znamená, že modul, co komunikuje přes sériový port, připojili na sériový port Arduina. Já nevím, jestli víte, co to znamená… na tomtéž sériovém portu totiž probíhá programování Arduina. Data, co tečou při programování do Arduina, se volně míchají s daty, co tečou z toho modulu po resetu (a že jich tam teče dost), a když Arduino něco odpoví, tak to modul pošle do sítě. A nakonec to, logicky, skončí s chybou. Takže programování, přátelé, programování znamená, že musíte odpojit Arduino, sundat shield, připojit Arduino, naprogramovat, odpojit Arduino, připojit shield, připojit Arduino.

Navíc ten modul má takovou zvláštnost. On totiž sice umí takové ty standardní AT příkazy, co má Sigfox, ale nejdřív mu musíte nějakou escape sekvencí znaků (podle manuálu je to „+++“, ale taky možná „&&&“) říct, že budete posílat AT příkazy. Pokud to neuděláte, tak modul bere to, co mu pošlete, a po shlucích dvanácti bajtů to posílá do sítě. Damned.

A než jsem na to metodou pokus – omyl přišel, tak byl shield ošoupaný jako levné sako. Manuál je roztomilý, protože půlka je ve francouzštině, půlka v angličtině, naštěstí ta, co se týká Sigfoxu, je anglicky. Le jupí!

Přitom ten modul má, jestli jsem to dobře pochopil, něco jako enable vstup. Kdyby na té destičce bylo prosté, himbajs, tlačítko, které by odpojilo modul, takže by ho při programování stačilo přidržet, bylo by to rázem řádově lepší! No, tlačítko není, a v SimpleCell by se asi zlobili, kdybych si ho na zapůjčený shield přimontoval sám. 🙂

Jinak jako jo, práce s tím je extrémně jednoduchá (když si tímhle projdete), a pokud si sestavíte zařízení, co bude někde fungovat, tak to je naprostá pohoda a vystačíte si s naprosto obyčejným Serial.print, ani ty AT příkazy neřešíte. Ale NEŽ to zařízení sestavíte a odladíte, tak to bude asi bolest.

Od bolesti dál. Druhý testovací bazmeg dorazil od Things.cz, tedy od společnosti, co chce provozovat nekomerční síť na standardu LoRa, resp. LoRaWAN. A protože okolí mého bydliště pokryté není, pokryl jsem si ho vlastními silami, respektive zapůjčeným přístupovým bodem. Zatím nemohu potvrdit dosah, protože testuju z ložnice do obýváku, a to doslova. Testuju to na dodaném LoRaWAN modulu, který je zatím, jestli to správně chápu, neveřejný, takže ho ani fotit nebudu…

Po kratších peripetiích, způsobených nastavením přístupového bodu a tím, že klíč je nutno poslat UPPERCASE, což jsem netušil, začalo zařízení fungovat takříkajíc na první dobrou. Vyzkoušel jsem uplink, tedy posílání zpráv, i downlink, tedy příjem odpovědí, a nezaznamenal jsem žádný problém, s jedinou výjimkou, a to bylo potvrzování downlinku, které se občas neodeslalo. Podle výrobce je příčinou použitý chipset v tom kusu, co mám k dispozici, s novým by to mělo fungovat bez problémů.

Třetí deska, co dorazila, je takový bastlířský ekvivalent šlehačkového dortu s karamelovou polevou, zmrzlinou a želatinovými bonbóny. Jmenuje se SmartEverything a je to taková, pardon za to slovo, „beruška“. Ani jsem se nedíval na cenu, protože… Helejte:

Je to deska, velká jako Arduino. Je tam Atmel SAMD, tedy 32bitový Cortex. Je tam GPS. Je tam Sigfox. A taky teplotní čidlo, vlhkostní čidlo, akcelerometr, gyroskop, kompas, tlakoměr, NFC, proximity senzor, RGB ledka a vodotrysk. Ne, kecám, jedno z toho tam není…

Připojil jsem, dle návodu nainstaloval prostředí pro desky, spustil blink.ino, přeložil, a v půlce získal zvláštní chybu.

Totiž ono je takové pravidlo. Jakmile se pokouším instalovat nebo zprovoznit něco, o čem je někde v nějakém diskusním fóru napsáno „Zkouším to a objevila se mi tam taková chyba“ a na to třicet odpovědí: „To se nestává, to slyším prvně“, tak mně se ta chyba projeví. Takže tady taky. Nakonec pomohlo aktualizovat Arduino IDE, a už to šlapalo jak hodinky.

Ke všem těm komponentám jsou i knihovny a demíčka, takže jsem vesele posílal data přes Sigfox, měřil teplotu, tlak, vlhkost, blikal LEDkou, zjišťoval pozici (což šlo doma docela blbě) – ta výbava zkrátka slibuje velkou radost při hraní. Dokonce jsem někde koutkem oka zahlédl, že to lze napájet i z baterie, to by bylo fakt pěkné…

(Jo, a ta cena je nějakých pětasedmdesát liber…)

(Doplnění, díky Pavlovi Sodomkovi: Na českém rs-online se to skrývá pod kryptickým označením Vývojová sada MCS7561, cena necelých 2900 Kč)

Víc jsem zatím po večerech nestihnul, ale zůstaňte vytuněni, jak se říká, jen co bude Troška času, budu experimentovat dál.

Rubriky: Hardware | Štítky: , , | 2 komentáře

Výukový shield pro Arduino, díl druhý

Po minulém dilematu s deskami plošných spojů jsme opět pokročili. Výroba PCB už běží, nakonec přes SeeedStudio

Klasika.

Dokončuju plošňák, a poslední akce je „zalití země“ – tedy použít zbývající měď na desce jako zem. Zalil jsem, znelíbila se mi, odlil jsem. Upravil jsem, zase jsem zalil, zase se mi nelíbilo… a tak dál. Asi šestkrát. Nakonec jsem to celé vyexportoval, poslal do formuláře SeeedStudia, viděl jsem cenu 25 USD i s poštovným za 10 desek, kliknul jsem na Objednat, zaplatil kartou…

… a neuvěříte, co se stalo! Tedy uvěříte, pokud jste staří praktici. Samozřejmě že se kochám svým výtvorem, prohlížím si ty masky, které jsem předtím kontroloval, a najednou… najednou TO vidím! Ta zem! Ta blbá rozlitá zem! Není spojená se zemí u IO! Já to, pokud znáte Eagle, tak víte, zapomněl přejmenovat před rozlitím na GND! Ale co, je to prototyp, a jak pravil Štěpán – nic, co by nespravil kus drátu!

Ale když tu o tom točím, tak bych rád tak jako vypíchnul dvě věci. Zaprvé: U SeeedStudia mě vyjde 10 desek i s poštovným na necelých šest stovek, tedy tolik, kolik si Pragoboard chtěl nechat zaplatit za jednu desku. Ale to mi vadí nejmíň…

Víc mi vadí jiná věc. Ani Pragoboard, ani další oslovení nedokážou říct na rovinu: Plošňák X krát Y milimetrů, oboustraně s prokovy a maskou, bude stát tolik, plus mínus 10 procent podle náročnosti úprav. Ne, neumí. Ani do telefonu vám to neřeknou. „Pošlete mailem poptávku…“

Víte, já nechci posílat mailem poptávku, protože nežiju v roce 1999. Já chci, jako se to dělá všude jinde, tím SeeedStudiem počínaje a různými OSHParky konče, nahrát podklady k desce do formuláře, a za půl minuty vidět vyrenderované náhledy ke kontrole a k tomu cenu zakázky. Hned. A zaplatit to kartou. Rozumíme si? Tady neexistuje důvod, proč by „to nešlo“. Je to stejný opruz jako ty další (nejen) české služby, co tají cenu: „Pošlete si poptávku, rádi vám ji sdělíme!“ Bože, a ty argumenty, proč to takhle dělají? Jako z panoptika: „Konkurence by viděla ceník na webu!“ nebo „Ceny jsou individuální…“ Fajn, OK, nakoupím jinde, protože jestli něco nesnáším, tak je to smlouvání. Chci se rozhodnout na základě relevantních informací, a když mi je neposkytnete tam, kde je chci, jdu jinam, víme?

Takže čekám na desky, a budu čekat dvakrát delší dobu, než kdybych si to objednal v ČR, ale bude to levnější, kvalita stejná, a s prominutím – při procesu objednání jsem neměl pocit, že se doprošuju, aby mi laskavě něco řekli, ale měl jsem pocit, že nakupuju službu.

Rubriky: Hardware | Štítky: , , | 6 komentáře

Výukový shield pro Arduino, díl první

V kurzu Arduino 101 učíme lidi pracovat s Arduinem. Používáme k tomu takzvaný „Clock Shield“, což je shield, pomocí kterého se dělají různé „hodinové“ aplikace. Má docela zajímavou sestavu senzorů a periferií, ale trošku nešikovně zapojenou. Takže jsme se rozhodli udělat to znovu, a lépe!

Celý příspěvek

Rubriky: Hardware | Štítky: , , , | 4 komentáře