Arduino a knihovny

Arduino a knihovny
« kdy: 04. 03. 2021, 14:08:33 »
Protože teď není až zas tak moc co dělat, pořídil jsem si nějaké Arduino klony a začal experimentovat. A protože jsem trochu víc na sw než na hw, začal jsem se hrabat i v sw knihovnách. A nemile mne překvapila jejich kvalita. Vše je zpravidla podřízeno jednoduchosti a rychlosti, objevují se i systematické chyby. Pro příklady typu blikání led nebo čtení teploty to vystačí, ale pokud začnete uvažovat nad nízkou spotřebou a optimalizací, začíná to být problém. Neobvyklé nejsou prázdné časové smyčky a podobné záležitosti, naprosto nevhodné pro dlouhodobé používání. Fóra jsou pak plná stížností, že nějaký program přestává fungovat po x hodinách nebo dnech.

Chtěl bych se zeptat zkušenějších, jak to řeší? Existují nějaké zdroje nebo ukázky, jak to správně řešit? Máte potřebu si upravovat knihovny, když děláte něco "profesionálnějšího"? Díky za každou odezvu a zkušenost.


Re:Arduino a knihovny
« Odpověď #1 kdy: 04. 03. 2021, 14:18:26 »
Jsou ty knihovny open source? Že by člověk mohl přímo opravovat ty chyby a dělat pull requesty v daných volně dostupných repozitářích.

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Arduino a knihovny
« Odpověď #2 kdy: 04. 03. 2021, 14:30:59 »
Záleží na HW, u něčeho hodně primitivního není smyčka s nopy nic divného. IMHO nejrozumnější je jasně oddělit logiku aplikace ("business logic") od nízkoúrovňových částí kódu, pro experimenty pak stačí třeba i pochybné knihovny a v případě potřeby se vymění jen ta nízkoúrovňová vrstva (podle HW a zaměření projektu třeba FreeRTOS, na něčem výkonnějším Linux apod.).

Re:Arduino a knihovny
« Odpověď #3 kdy: 04. 03. 2021, 19:51:20 »
Arduino knihovny jsou otřesné skrz na skrz a nikde v profesionálním prostředí by se používat neměly. Je to kontroverzní názor, že Arduino tím nováčkům vlastně škodí - kvalita je špatná, některé koncepty to abstrahuje/skrývá až moc, a dokumentace je vyloženě k ničemu (v poslední iteraci dokumentace už dokonce i skrývají datové typy).

Lidem, co na tomhle uvízli, doporučuju většinou Zephyr (RTOS a ekosystém okolo od Linux Foundation), případně PlatformIO a tam si už něco naklikat (mbed).

Longin

  • ***
  • 104
    • Zobrazit profil
    • E-mail
Re:Arduino a knihovny
« Odpověď #4 kdy: 04. 03. 2021, 20:22:09 »
Lidem, co na tomhle uvízli, doporučuju většinou Zephyr (RTOS a ekosystém okolo od Linux Foundation), případně PlatformIO a tam si už něco naklikat (mbed).
Hmmm a co když nejsem čistej softwérář, co právě nikdy neprogramoval pod Linuxem, ale jako "embeďák" chtěl bych se posunout z RTOS na něco takového? Co bys doporučil? Jak s tím začít?
Makefile, Linker apod nejsou pro mě sprostá slova.


Re:Arduino a knihovny
« Odpověď #5 kdy: 04. 03. 2021, 20:44:00 »
Ten Zephyr je teď asi nejjednodušší volba. Dokumentace je výborná, práce s tím je podobná jako s jádrem Linuxu (stejnej styl konfigurace) a ve své podstatě to nic neskrývá — tj. uživatel si může užívat ty komfortní nástroje, ale když chce, může do toho snadno rejpat (je to v postatě taky jen čitelnej "Makefile").

Getting Started je na 20 minut včetně instalace toolchainu... stačí mít po ruce nějakou běžnou destičku s stm32 nebo něčím podobným a můžete blikat :-) https://zephyrproject.org/

Re:Arduino a knihovny
« Odpověď #6 kdy: 04. 03. 2021, 20:49:46 »
Ještě mám rád ChibiOS, ten má fantastickou dokumentaci, je aktuální, má excelentní kernel i HAL (většinu driverů pro stm32). Je ale na dnešní dobu vyvíjen trochu zastaralým způsobem (maily, source force, ...).

Na stm32 obecně funguje velmi dobře libopencm3 - je to jen spousta pomocných funkcí a driverů pro různé MCU s Cortexem, tj. není to RTOS. Hello worldy jsou tam asi nejjednodušší - opravdu jen tucet řádků Cčka, linker script, a Makefile.

Re:Arduino a knihovny
« Odpověď #7 kdy: 05. 03. 2021, 12:50:49 »
Je to kontroverzní názor, že Arduino tím nováčkům vlastně škodí - kvalita je špatná, některé koncepty to abstrahuje/skrývá až moc, a dokumentace je vyloženě k ničemu (v poslední iteraci dokumentace už dokonce i skrývají datové typy).
Zaslechl jsem někde i ostřejší názor, že Arduino sice otevřelo embedded svět širokému publiku, ale zároveň vrátilo vývoj o deset let zpátky, protože místo RTOSu a asynchronního/event driven/task-based programování zavedlo jednovláknový přístup.

Nemůžu říct, že bych s tím nesouhlasil. Už nějakou dobu je vidět, že ten jednoduchý až stupidní setup/loop přístup přestává stačit a je velkou limitací. Tak se na to různě krkolomnými způsoby začínají roubovat přístupy jiné - od jednoduchého Taskeru přes (zatajené) interrupt handlery až po zabalení FreeRTOSu do setup/loop high-level kabátu...

Naopak ale na Arduinu fakt oceňuju, že se z něj stal extrémně rozšířený HAL. Pokud je člověk s projektem v nějaké objevovací fázi, je fakt nejjednodušší použít Arduino (právě jako HAL), protože pak může s nulovým úsilím přejít na úplně jiný hardware.

Ještě mám rád ChibiOS
Souhlas, mám na něj taky skvělé vzpomínky, v současnosti ale nepoužívám (žádnej racionální důvod to nemá, prostě jsem ho nějak poslední dobou nepotřeboval).

Na stm32 obecně funguje velmi dobře libopencm3
Taky souhlas. Slušná, snadno použitelná knihovna se slušnou dokumentaci.

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Arduino a knihovny
« Odpověď #8 kdy: 05. 03. 2021, 13:34:34 »
zabalení FreeRTOSu do setup/loop high-level kabátu
To dělá kdo? Slušnej úlet...

Re:Arduino a knihovny
« Odpověď #9 kdy: 05. 03. 2021, 13:43:30 »
zabalení FreeRTOSu do setup/loop high-level kabátu
To dělá kdo? Slušnej úlet...
Např. https://platformio.org/lib/show/2093/STM32duino%20FreeRTOS

Zas takovej úlet to není, je to prostě normální FreeRTOS, akorát je to přibalený k Arduino knihovnám, "main" se de facto jmenuje "setup" a config FreeRTOSu je schovanej někde v útrobách, takže se myslím dost dobře nedá upravovat. Ale používat se to dá - pokud si někdo chce FreeRTOS zkusit, zná Arduino a nechce se mu řešit nějaké krkolomné HAL knihovny, je to docela fajn.

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Arduino a knihovny
« Odpověď #10 kdy: 05. 03. 2021, 13:59:03 »
zabalení FreeRTOSu do setup/loop high-level kabátu
To dělá kdo? Slušnej úlet...
Např. https://platformio.org/lib/show/2093/STM32duino%20FreeRTOS
Ta funkce loop je v tom kódu fakt zajímavá...

Re:Arduino a knihovny
« Odpověď #11 kdy: 05. 03. 2021, 14:44:39 »
Ta funkce loop je v tom kódu fakt zajímavá...
Hlavně je tam jenom na okrasu, protože main task se zastaví na tom while(1) v setupu. EDIT: Teda respektive na startu scheduleru před tím, pokud nezhavaruje.

Je to trochu bizár, ale tak proč ne, hlavně že je to užitečný.

Re:Arduino a knihovny
« Odpověď #12 kdy: 05. 03. 2021, 14:58:58 »
Kua ja sa som sa tiež nechal ovplyvniť reklamou na facebooku na VisualMicro (nejaké Audrino IDE pre Visual Studio) a keďźe som na to pár krát zo zvedavosti klikol, google ad sense mi začal zobrazovať (na Amazone, Aliexpresse a Banggood) reklamu na rôzne zaujímavé súčiastky pre audrino a ja som na to všetko pažravo klikal a objednával. Nakoniec som si kúpil na Amazone Audrino Starter pack + ELEGOO Starter Pack + Sadu senzorov a ďalšie veci či už originál dosku tak aj pár lacných čínskych klonov. Dnes mi to doviezol kurie v takých plastových kufríkoch.

Natom predraženom originále (Audrino UNO R3) sa to plánujem učiť a pri reálnej aplikácii chcem potom používať tie lacné čínske dosky. Už som do toho zainvestoval cca 150 EURO (ak počítam profi spájkovačku, náradie do dielne a profi meracie prístroje (LCR meter, multimeter, osciloskop) tak možno aj 500 euro). Dnes mi priniesol kurier tú základnú sadu. A plánujem si večer začať tutorial.

Velice sa na to teším, kúpil som si to preto lebo sa chcem venovať C++ a low level programovaniu, ale ak som správne pochopil z podobných fór tak audrino je nakoniec v nejakom vlastnom jazyku? Čo je vlastne Cčko a nejaké makrá?

Dá sa pre audrino kódiť aj v normálnom C++? so všetkým čo k tomu patrí (templaty, classy, type traity atď)? lebo ešte som sa na to nepozeral (som v práci), ale už sa na to teším, ak sa to naučím, tak by som to mohol ponúkať ako službu.

Robiť rôzne riěšenia do domu, alebo do auta na zákazku (vrámci voľného času) A neskôr keby sa mi v tom darilo tak by som nahradil moj terajší zdroj obživy (FE development v ReactJS), tým čo ma baví naj-viac (elektronika a low level programovanie v C++).

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Arduino a knihovny
« Odpověď #13 kdy: 05. 03. 2021, 15:00:26 »
Ta funkce loop je v tom kódu fakt zajímavá...
Hlavně je tam jenom na okrasu [...] Je to trochu bizár
Však právě. Ale jinak hezký přiohnutí...

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Arduino a knihovny
« Odpověď #14 kdy: 05. 03. 2021, 15:06:41 »
Dá sa pre audrino kódiť aj v normálnom C++? so všetkým čo k tomu patrí (templaty, classy, type traity atď)?
Nedávno si někdo stěžoval, že tam nejsou výjimky, takže osekané to asi je, ale přežít se to dá. Už to nějakou dobu nesleduju, třeba to někdo s aktuální znalostí potvrdí/vyvrátí.