Máme nasazeny vyšší stovky RPi3 v průmyslových a consumer zařízeních, naběháno dejme tomu 1000 let. Kromě SD karty přispívá k absolutní nevhodnosti ještě mizerná a oficiálně nespecifikovaná teplotní odolnost: výrobce používá na různých várkách RPi různě specifikované komponenty, a je to opravdu panika když si něco ocertifikujete do 50 °C a najednou vám tam potichu dají čipy s teplotní odolností o 20 °C horší.
A ano, SD karty nemají rády ani čtení. Co jsme zatím vypozorovali (i ve spolupráci s kolegy z Apaceru) je, že nejčastější failure mode SD karet vůbec nesouvisí s degradací flashe. Jde o poškození způsobené tepelnými cykly, a bohužel čtení i zápis kartu ohřeje stejně. V případě RPi je SD karta předehřátá blízkým napěťovým regulátorem rovnou na nějakých 45 °C, a při každé operaci její teplota vyskočí na 80 °C. Takto stačí pár desítek tisíc cyklů a už začínají praskat spoje.
S "normálním linuxem" typu Armbian, který má /var/log na ext4, to i v klidu zapisuje jednou za 30-60 s. SD karta na termokameře krásně bliká.
Takže klíčové je z těch SD karet nabootovat a pak na ně už nesahat. RO fs, všechno ostatní ve vfs cache, co nejvíc po síti. S kartou se pracuje jen při bootu, změnách konfigurace nebo upgradu firmwaru.
Jsem rád, že někdo konečně potvrzuje moje názory a zkušenosti. Prostě pokud by chtěl RPi nasadit do nějaké profi produktu co má fungovat různě po republice přímo u zákazníků, bude muset použít na SD kartě RO filesystém a zapisovat jen výjimečně. A i tak to zjevně nebude úplně snadné. To zjevně vysvětluje, proč takových zařízení moc není.
Nasazením RO filesystému ztrácíte tu eleganci, že můžete použít Linux jak jste zvyklí a jak hlásí falešní PR Raspberry foundation.
Kdyby měl RPi fungovat jako opravdový Desktop jak hlásá PR, na kterém pracuje někdo denně několik hodin jako na běžném počítači, myslím že se životnost bude počítat ne na roky ale na měsíce. Má to vůbec smysl stavět?
Proto je myslím na zvážení si připlatit za jiné obdobné zařízení s eMMC pamětí a proto jsem napsal tento článek.
Nemám už z principu moc důvěru k někomu, kdo je natolik posedlý svým PR, že přehlíží závažné nedostatky. Co jiného ještě přehlédly?
No, a přesně proto je další generace zařízení postavená na klasickém microcontrolleru. Statický firmware, variabilní věci v NOR flashi. V důsledku to umí totéž, ale místo několika miliard LOC to má celé asi 20k řádků včetně všech driverů. Audit za hubičku. Už se nemůže stát, že se někde změní nějaký default v systemd nebo název CONFIG_ v Linuxu a my pak trávíme čas updatem.
Mně na Raspberry (a Arduino) nejvíc vadí ta komunita. Jednak je tam velmi nízká průměrná úroveň znalostí, ale to se dá tak nějak chápat, je to marketováno jako platformy pro začátečníky. Štvou mě ty prvky jakéhosi nacionalismu nebo kultismu. V Raspberry komunitě je řešením všeho dát tam Linux, i když jde třeba jen o aplikace typu "rozsviť LEDku když je teplota přes 25°". V Arduino komunitě zase musíte použít otřesně zastaralou ATmegu, nebo jste vyvrhel. Velmi špatně se z takových děr vyhrabává a bohužel jsem viděl dost nadějných lidí a projektů, kteří ztroskotali právě kvůli tomuto.
Na blikání LEDkou je buďto Raspberry Pi Pico (a pár řádků bare-metal programu v MicroPythonu nebo rovnou kompilovaného z C, jako u arduina), nebo je blikání LEDkou jen úvodem do složitějšího programování a pak není důvod si stěžovat na nevyužitý výkon.
Arduino ve své původní ATmega verzi, i ve svých výkonnějších (a o dost dražších!) variantách, dnes moc neobstojí v konkurenci různých Raspberry a podobných desek. Ale úplně špatné také není a chápu, že setrvačnost je velká.
Není. K tomu kdysi na nakole.cz byla poučná historka: někdo si objednal vývoj custom červené blikačky. Vývojář řešil, jestli tam má dát AtTiny nebo NE555, nakonec se rozhodl, přesně jako ty, že tam dá tu 555. Zákazník byl prototypem blikačky naprosto nadšen. Měl jen jediný požadavek: jestli by náhodou nešlo udělat, aby to vždycky třikrát rychle bliklo.
A tak autor musel desku smazat a udělat znova, s tou AtTiny. Kdyby to tak udělal rovnou, tak by ve firmwaru připsal tři řádky.
Jaká má být výhoda s řešení s 555, nebo nedejbože astabilní klopný obvod s tranzistory (=spousta součástek, sourcování součástek, routování větší desky, vyšší náklady na sestavení/pick-and-place; OTOH tranzistory, rezistory a kondenzátory jsou dostupné od víc výrobců než attiny, takže v současné době to snad půjde líp postavit)?
17. 11. 2021, 23:55 editováno autorem komentáře
Děkuji, je to lépe formulovaná verze toho, co jsem se snažil napsat také. Podotýkám, že PIC16F15213 nebo ATTiny13 vyjdou do 20 Kč; předpokládám, že většinu ceny tvoří obal a distribuce. Což odpovídá tomu, že čínské fabriky zakápnou křemíkový čip epoxidem rovnou na desce blikačky a dostávají se na podobné výrobní náklady za celý kus.
Ty seš z těch počítačů úplně zblblej.
Když jsem byl na střední, indikátor stavu baterky jako bargraf byl stabilík a LM3914.10 komprátorů a budičů LEDky, stačí přidat jeden rezistor na nastavení proudu, nastavit na jedné noze minimum, na druhé maximum a jede se.
Dneska? Vrazí se tam Arduino. Autor konstrukce obtěžuje na fóru, jestli a jak velký hodit rezistory do série s LEDkama a pak se snaží rozchodit software. Na pájení je toho u Arduina víc a ještě se musí zbytečně crcat s programem...
To je rozdíl mezi elektronikem a programátorem. Můj spolužák na SŠ loni vytvořil 3f frekvenční měnič na asynchronní motor bez jediného mikroprocesoru. Já osobně se při projektech snažím programování vyhnout pokud to jde vzhledem k tomu, že mě to nikdo pořádně nenaučil a navíc v knize o Arduinu, ze které nas učili byly chyby.
Tvou první větu přeskočím a konstruktivně se vyjádřím ke zbytku.
Zapojit NE555 nebo nějaký LMXXX umí kdekdo. Pokud to stačí, je to dobrý nápad. Moje zkušenost to jen potvrzuje.
Ale za chvíli to stačit nemusí a s tím mám zkušenost také. Když Arduino nano stojí 60 Kč a RP2 necelý dvojnásobek, ve spoustě případů je víc futureproof je tam dát.
Není.
Pokud to zvládne do 20ks 74xxx a není potřeba variabilita chování nebo složitější komunikace, tak je levnější to ralizovat bez jakýhokoliv procesoru. HW stejně drahý, ale ušetříš náklady na psaní SW. A osazovací automat je leckdy rychlejší, než nalívání software (teď mám na stole desku, do které se SW nalívá 6 minut a osazovací automat nám dává 10 součástek za sekundu).
Arduino je předražený, pomalý, nespolehlivý, moc žere, stojí na bývalým Atmelu a většinu SW dělali matláci. to je šest pádných důvodů, proč to do profi konstrukce nedávat.
U maliny je zase problém, že tam je toho SW prostě moc, takže je tam i moc chyb a málo deterministický chování (hlavně časování), takže to není na real time věci. + hodně věcí od matláků. Navíc dobrý na první prototyp, špatný na 100ks ověřovačku a v produkci mimo realitu...
> Arduino je předražený
Tebou navržený LM3914 stojí na Mouseru, Farnellu i DigiKey víc než AtMega. Na JLC pro změnu není skladem, takže ti ho neosadí a budeš to pájet ručně.
> pomalý
To je veliká překážka při řízení bargrafu v porovnání s LM3914.
> nespolehlivý
To se nám nějak nestalo zatím.
> moc žere
Tebou navržený LM3914 má "Standby Supply Current (All Outputs Off)" 3 mA, to je snad víc než ta AtMega aniž by se člověk nějak moc snažil s lowpower módy.
Vidíš, další požadavek: pro šetření proudem se budou LEDky stmívat (PWM) když bude docházet šťáva. Zase něco co v tom MCU uděláš na pár řádků.
> teď mám na stole desku, do které se SW nalívá 6 minut
To nevypadá že by souviselo s arduinem.
18. 11. 2021, 00:13 editováno autorem komentáře
Já takovou křišťálovou kouli mám. Říká se tomu produktová specifikace a je přílohou smlouvy o dílo. Pokud tam není napsáno, že má zařízení mít displej, tak ho nemusím řešit do chvíle, než zákazník podepíše smlouvu na jiný projekt s displejem...
LM3914 je sice o něco dražší, ale o kolik? O 10Kč? Ušetří programování ve výrobě (člověka, co to připojí / zavře o mašiny). Dej mu 15 hrubýho a zajisíš, že pokud neděláš 25k sérii měsíčně, tak na tom proděláš (superhrubá, bonusy, dovolená, ...). A to v tom není vývoj SW, pořízení programovacího aparátu,... Takže pokud vyhoví, klidně si ji obhájím.
A ohledně stmívání, je tam jeden referenční rezistor na nastavení jasu. Stačí přidat dva rezistory a tranzistor. A jede to bez spínání, takže EMC solved. Navíc jas LED se řídí proudově, budou tam menší rozdíly mezi LEDkama. Nehledě na to, že pokud s tím zákazník přijde dodatečně a ty nemáš do ADC vyvedený měření napájení, taky překopáváš desku.
Co se spolehlivosti týká, mám trochu jinou zkušenost. Dělal jsem jednu dobu FAE pro jednoho distributora a dělali jsme i Atmel. Co chvíli se stalo, že zákazník koupil 500ks a 200ks nefungovalo. Akorát když to koupíš jako hotový modul, tak to za tebe přebral ten, kdo vyrábí moduly. A při tom tlaku na cenu bych se hodně divil, kdyby tam bylo nějaký důslednější testování a zahořování.
Co se spotřeby týká, udělej spínač napájení pro proudy do 10A, ovládaný jedním tlačítkem, s napájením 8-15V DC a vlastní spotřebou do 10uA. Uvidíš, jak jsou AVR hladový bestie...
> Říká se tomu produktová specifikace a je přílohou smlouvy o dílo. Pokud tam není napsáno, že má zařízení mít displej, tak ho nemusím řešit do chvíle, než zákazník podepíše smlouvu na jiný projekt s displejem...
No vždyť píšu, korporát a waterfall vs. startup a agile :)
> Ušetří programování ve výrobě (člověka, co to připojí / zavře o mašiny).
Tak jako nějakej output testing snad děláte stejně, ne?
Ale jo, jasně, když sekáš 10k série, tak to bude úplně jiné než ta jedna výrobní linka, kterou diskuze začala.
To není korporát vs. startup ani agile vs. waterfall. Kdysi, v malé firmě (měl jsem osobní číslo 5), jsme měli jeden problém. Zákazníci furt měnili zadání. Přidávali rozhraní, měnili velikost paměti... A odmítali zaplatit vícepráce, nebo se hádali, že je to drahý, popř. že tohle si neobjednali...
Všechno se to vyřešilo tím, že se sepsalo, co má zařízení umět, jaký má být rozhraní (konektor, zapojení, počet), ovládací prvky, zobrazovače a displeje...
Podle toho se udělaly odhady, nacenil se materiál a práce hodilo se to do smlouvy. Specifikace byla příloha k ní. A když došel, že tam potřebuje ještě vrtuli a fontánu, tak se to nacenilo extra (včetně toho, co se odpracovalo a muselo zahodit), udělala se revize specifikace a příloha ke smlouvě. Místo deseti změn HW na projektu byla jedna změna z 10 projektů. A člověk mohl v klidu dělat svou práci.
Testování se sice dělá, ale ne vždycky jde programovat procesor během testů. Uměl by to nahrát třeba HP3070? A udělá programování zákazník, pokud máš dodat jenom funkční desku a kompletaci + finální test si dělá zákazník?
U každé programovatelné součástky si musím obhájit pět věcí:
- proč tam je a jestli se to zaplatí
- kdo a za kolik napíše program
- kdo, jak dlouho a za co bude SW udržovat
- jak a kdy se to do ní bude lít ve výrobě
- jestli a jak se to bude updatovat u zákazníka
Když si to neobhájím, tak tam holt procesor ani PLD nebude...
RPi dobrý na první prototyp, špatný na 100ks ověřovačku a v produkci mimo realitu...
Naprostý souhlas. To by vysvětlovalo, proč jsem RPi ještě nikdy neviděl v něčem profi co se dodává ve větších sériích. Otázka je jestli se na RPi nevykašlat úplně a i ten prototyp a ověřovačku nedělat na něčem spolehlivějším. (Odroid?) Protože podle mne zabývat se více RPi nemá moc smysl, když se to v praxi stejně nedá nasadit ve velkém. Ani argument, že je to hlavně na výuku moc neobstojí, protože nemá smysl se učit něco špatně, co pak stejně nejde v praxi použít.
V dnešní době se dá totiž vydělat (a nebýt drahý) jen na tom, když se něco ujme ve velkém, proto dělat něco ve velkém, dobře a spolehlivě je prostě cíl na který je třeba se soustředit..
Pak by se vidělo, jestli se to dá i nasadit pro produkci nebo ne, nebo zůstane jen u o něco méně problémové ověřovačky než s RPI s SD kartou.
Bohužel ale když tohle někde nahlas řeknu, ta mě fandové RPi doslova umlátí pochybnými argumenty. Co si to dovoluji pomlouvat jejich miláčka.
Argumentace ve smyslu, nikdy jsem nic profi neviděl, tak to nejspíše nebude existovat, není z nejlepších, níže tedy pár odkazů, kde se používá Raspberry Pi CM:
https://revolutionpi.com/revolution-pi-series/
https://www.sferalabs.cc/strato-pi/
https://modberry.techbase.eu/
https://www.compulab.com/products/iot-gateways/iot-gate-rpi-industrial-raspberry-pi-iot-gateway/
https://www.kontron.com/products/systems/embedded-box-pc/kbox-a-series/en/products/kbox-a-330-rpi/p156007
https://www.embeddedpi.com/edge-gateway
https://www.brainboxes.com/product/industrial-edge-controller/bb-400
https://papouch.com/disppi-dotykovy-displej-s-periferiemi-pro-raspbbery-pi-cm-p5262/
https://www.openembed.com/products/51.html
Navrhovaný Odroid XU4 má garanci výroby do konce roku 2022, i když se pravděpodobně bude vyrábět dále, u průmyslových produktů je třeba garance výroby minimálně 5 let, pokud to není splněno, nemá smysl o tom ani uvažovat...
> Dneska? Vrazí se tam Arduino. Autor konstrukce obtěžuje na fóru, jestli a jak velký hodit rezistory do série s LEDkama
Jo, to kdyby to udělali s LM3914, tak by určitě tahle neznalost nevadila. /s
Vidíš, další problém co se objevil po návrhu zařízení: zjistilo se, že lineární bargraf neodpovídá stavu baterky tak, jak to uživatel očekává. Potřebujeme, aby stupnice byla logaritmická, resp. určená tabulkou vybíjecí charakteristiky!
18. 11. 2021, 00:15 editováno autorem komentáře
To jsme se špatně pochopili. Nepsal jsem o blikání ledkou jako o "hello world", myslel jsem skutečné projekty, pro které různí začátečníci sbírají informace na foru.
Jako příklad jsem uváděl čtení NTC teploměru a reakci na teplotu přesahující pevný práh (rozsvícení LED, sepnutí relé). Aplikace pro jeden napěťový regulátor a jeden operační zesilovač, nebo i holý tranzistor. BOM ve velmi nízkých desetikorunách. Tento návrh místní akolyté zadupali do země, a místo toho nebožákovi doporučili Raspberry Pi, k tomu přídavnou desku s nějakým ADC (protože Pi nemá...nic), a samozřejmě 32gigovou SD kartu a pořádnou USB nabíječku která by natočila zmrzlou Felicii. V nákladech to bylo někde u 1500 Kč. Tazatel to chtěl na 500 ks. Nakonec jsem jim tu desku nakreslil a nechal vyrobit u JLC, vyšlo to těsně nad $1/ks i s dopravou a mojí prací.
Bohužel když mladou mysl napadne tohle tmářství, je pak na mnoho let se z toho dostat. Neumí problémy řešit jinak, než tam dát svoji all-in-one univerzální krabičku a napsat program, čímž se cenou vyřazuje z velké části příležitostí a zbytečnou komplexitou si zadělává na problémy (bugy ve firmwaru, příkon atd).
Ale to jsou stejní začátečníci, kteří by se jinak na fóru ptali ohledně NE555.
A místo copy&paste jejich vadného kódu by se 10x déle pátralo po tom, že tam opačně připojili elektrolytický kondenzátor.
Každý jsme nějak začínali, elektronických kroužků je bohužel docela málo. Tam by se vyřešily problémy s analogovou i digi technikou.
"BOM ve velmi nízkých desetikorunách." OK, ale RP2 se v ČR dá pořídit od 109 Kč.
1500 Kč na projekt "čtení z NTC" teploměru může působit komicky. Ale proti armádním a lékařským (a někdy i akademickým) výdajům za podobný úkon je to úplná drobnost. Tuhle jsem potřeboval vakuově těsnou průchodku na optické vlákno; ve firmě mi ji nabídli za 8000 Kč, tak jsem do příruby navrtal díru, prostrčil vlákno a zalepil silikonem. A tak to bývá se vším. Může vás to zlobit, ale 1500 Kč za teploměr je relativně pohoda.
"Jako příklad jsem uváděl čtení NTC teploměru a reakci na teplotu přesahující pevný práh (rozsvícení LED, sepnutí relé)."
Tady by hlavně člověk vůbec nemusel vytahovat páječku, pokud má v šuplíku nakoupené moduly W1209. Jsou battle-tested, mají kalibraci a docela přívětivé ovládání na LCD, řeší hysterezi (důležitá věc, na niž se zapomíná!). A stojí stovku.
Když chce člověk ale bastlit, neměli bychom ho odsuzovat za volbu digitální desky třeba za 1500 Kč, i když zrovna řeší "jen" termostat. Člověk roste s úkoly, jež řeší.
Dominecf:
Chtěli toho 500ks.
- Kdyby tam byla blbá 78L05 + LM311 + termistor + relé + pár součástek okolo, tak to má schéma za hodinu, spočítaný za dvě, za den desku a várobní podklady, zbytek do druhýho dne návod k použití a návod k oživení. Výrobní cena pod 100Kč a je to bezúdržbový, když něco, součástky seženu vždycky a při té ceně není problém 50ks držet skladem.
- Kdybych tam narval kupovaný moduly za 500, byť se sebekrásnějším displejem, tak firmu připravím o (500-100)*500=200 000Kč. Nemám jistotu, že to samý koupím a pět let.
- Kdybych ta narval malinu, stejně tam nějaký komparátor nebo ADC a to relé potřebuju, takže na to musím tu destičku stejně udělat. Jenom k tomu přidat za 300 kartu, za 2000 malinu, za 500 výkonnější zdroj a připlatit minimálně práce programátora a tesťáka - 2800*500+100 000=1 500 000 na HW. A pokud výjezd techniků k nefunkčnímu zařízení vyjde na 15 000 a ročně chcípne 10% karet, je to dalších 500*0.1*15 000=750 000 na každý rok provozu. Za 10 let provozu se to prodraží o 9M. Za pár let neseženu náhradní díly.
Prachy jsou v profi sféře až na prvním místě... A když někdo nabídne místo řešení za 0.5M zákazníkovi tu samou funkcionalitu za 9.5M s výpadkama a vyšší spotřebou, kdo asi ten kšeft dostane?
> Arduino ve své původní ATmega verzi, i ve svých výkonnějších (a o dost dražších!) variantách, dnes moc neobstojí v konkurenci různých Raspberry a podobných desek.
Obstojí, protože má hromadu knihoven a softwaru. Potřebuju termostat a měření teploty? Na tři kliknutí mám knihovnu na DS18B20 s třířádkovým examplem, nemusím řešit inicializaci onewire periferie a programovat a debugovat poslání příkazu pro měření a odpověď. Knihovny jsou typicky pro úplně všechny čipy co na ně nějaký SparkFun dodává moduly.
Pokud vám stačí tak nízký výkon, tak bych zkusil https://www.acmesystems.it/aria s openwrt a SPI flash. MCU jsme nechtěli, protože to znamená buď from scratch nebo na nějakém RTOSu implementovat věci jako bezpečné spojení, over the air upgrade a tak. Na OpenWRT mám SSH.
A to je taky důvod, proč bych dal na "rozsviť LEDku pokud je přes 25°C" nejspíš nějaký Mikrotik (s OpenWRT) nebo tu Arii - protože až to budu chtít na dálku změnit na 27°C a dvě zablikání, tak to znamená editaci jednoho souboru a ne řešení že to vůbec musí být nějak připojené k síti a jak flashnout firmware aniž by se to bricklo. Pokud toho děláš jednotky či desítky kusů, tak je cena toho HW nižší než čas a opruz s tím řešit tyhle věci.
17. 11. 2021, 23:47 editováno autorem komentáře
On totiž obyčejný router a to i ten nejlevnější noname z číny dosahuje lepší dlouhodobé spolehlivosti než RPi.
A náhrada za jiný v budoucnosti je zajištěna, protože routery s USB portama a openwrt jistě v budoucnosti budou k dispozici.
Na většinu aplikací není potřebný žádný surový výkon.
Níže odkazy na to jak jsem přes USB řídil relátka.
https://www.selfcontrol.cz/navod_re8usb.htm
http://www.odorik.cz/w/selfcontrol
> A to je taky důvod, proč bych dal na "rozsviť LEDku pokud je přes 25°C" nejspíš nějaký Mikrotik (s OpenWRT) nebo tu Arii
Jinak teda samozřejmě s rozumem - pokud se fakt dá předpokládat, že nic dalšího potřeba nebude, tak je to nesmysl. Ale u mě zatím vždycky v těchto případech následovaly věci jako „potřebujeme vědět jak často bylo přes 25°C“, „kolik tam bylo nejvíc a nejmíň“, „zjistit že to stále funguje“, „změnit tu rozhodnou teplotu“ a tak.
Tyhle snahy jsou vždycky, ale je dobrým zvykem nabídnout zákazníkovi několik řešení s různou pracností, cenou a rozšiřitelností. A pokud se rozhodne pro levnou variantu bez displeje, tak je mimo mísu chtít zobrazit minimum, maximum,... Vyvíjet se začne to, co zákazník po pečlivé úvaze objednal jako pro něho nejvhodnější řešení.
No a když si vymyslí nějakou blbost, je slušností mu dopředu sdělit, o kolik to prodlouží / prodraží vývoj a co to obnáší z hlediska úprav hardware / software. Divil by ses, jak rychle dokáže zákazník zapomenout na nějaký svůj skvělý nápad, když se dozví, že se musí předělat deska, koupit matroš, vyrobit prototypy a znovu jet do zkušebny, takže se výroba spustí minimálně o měsíc pozděj. A že ten měsíc práce a zkušebnu si zaplatí a zbudou mu nakoupený součástky za 20 litrů, který se nepoužijou.