Arduino a knihovny

Re:Arduino a knihovny
« Odpověď #75 kdy: 09. 03. 2021, 16:50:39 »
To PlatformIO vypadá podstatně profesionálněji. Chápu to dobře, že PlatformIO  je takové „Arduino pro více platforem“ (+a více hardware), takže tam můžu použít třeba i RTOS? A knihovny pro periferie a další to používá jiný než Arduino? Je to cca tak?


Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Arduino a knihovny
« Odpověď #76 kdy: 09. 03. 2021, 16:51:46 »
Aha, tak to jsem nezkoušel, ale to spíš asi budou nějaký debug symboly nebo tak něco, ne?
Přesně kvůli tomuhle je nejlepší používat co nejjednodušší nástroje/knihovny a třeba i ten vysmívaný asembler, když to člověk umí. Debug symboly nebo zbytečné alokace na haldě rozeseté po pochybných knihovnách by se neměly vyskytovat (v produkci, na hraní to je celkem jedno). Otázka je, kde najít hranici NIH.

Re:Arduino a knihovny
« Odpověď #77 kdy: 09. 03. 2021, 17:05:08 »
potřebujeme sledovat teplotu v kamrlíku se serverem“ → připojím k Arduinu za $2 DHT22 za $2, Examples → DHT, Upload, hotovo. „
No a jak to máš se stabilitou programu a kam tu teplotu vypisuješ ? Já jsem k tomu chtěl použít ten "padající" web :-(

Re:Arduino a knihovny
« Odpověď #78 kdy: 09. 03. 2021, 17:19:31 »
To PlatformIO vypadá podstatně profesionálněji. Chápu to dobře, že PlatformIO  je takové „Arduino pro více platforem“ (+a více hardware), takže tam můžu použít třeba i RTOS? A knihovny pro periferie a další to používá jiný než Arduino? Je to cca tak?
Nevím, jestli "profesionálněji", každopádně je to pohodlnější, komfortnější.

Já bych spíš řekl, že je to takové "apt pro bastlení" - řekneš si, pro jaký procesor píšeš, jaký chceš framework a jaké knihovny (u všeho si můžeš říct i verzi) a ono ti to samo pěkně všechno stáhne, včetně toolů, překladače... nemusíš vůbec nic řešit, celý to přeložíš a nahraješ jedním příkazem přímo z vanilla zdrojáků, nic nemusíš ručně stahovat kromě samotnýho Platformia.

Jo, RTOS můžeš použít několik. Ja jsem říkal, nejsnazší je asi ten FreeRTOS nad Arduino knihovnou ( https://platformio.org/lib/show/2093/STM32duino%20FreeRTOS ).

Jesti chceš, můžu ti pro BluePill připravit prázdný projekt, to je otázka chvilky.

Re:Arduino a knihovny
« Odpověď #79 kdy: 09. 03. 2021, 17:21:13 »
Otázka je, kde najít hranici NIH.
To je podle mě nejtěžší otázka IT vůbec ;)


Re:Arduino a knihovny
« Odpověď #80 kdy: 09. 03. 2021, 17:28:21 »
No a jak to máš se stabilitou programu a kam tu teplotu vypisuješ ? Já jsem k tomu chtěl použít ten "padající" web :-(
Nestavěj to nad AVR, kup si ESP32. Velmi dobrou inspirací by mohl být Wifi Teploměr od Petra Stehlíka, kompletně open source (https://teploty.info/).

Pokud bys AVR nutně chtěl, s ethernetem se budeš trápit. Lepší (ve smyslu "potenciálně stabilnější") je to propojit na normální PC (nebo SBC) pomocí nějakého sériového protokolu, já rád používám https://github.com/bakercp/PacketSerial

Vtipná vychytávka je použít SLIP a pomocí něj odesílat MQTT-SN pakety. Viz https://github.com/mprymek/mqtt-sn-slip

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Arduino a knihovny
« Odpověď #81 kdy: 09. 03. 2021, 17:35:56 »
Otázka je, kde najít hranici NIH.
To je podle mě nejtěžší otázka IT vůbec ;)
Ano. IMHO je to silně individuální.

Re:Arduino a knihovny
« Odpověď #82 kdy: 09. 03. 2021, 18:00:10 »
No a jak to máš se stabilitou programu a kam tu teplotu vypisuješ ? Já jsem k tomu chtěl použít ten "padající" web :-(
Nestavěj to nad AVR, kup si ESP32. Velmi dobrou inspirací by mohl být Wifi Teploměr od Petra Stehlíka, kompletně open source (https://teploty.info/).

Pokud bys AVR nutně chtěl, s ethernetem se budeš trápit. Lepší (ve smyslu "potenciálně stabilnější") je to propojit na normální PC (nebo SBC) pomocí nějakého sériového protokolu, já rád používám https://github.com/bakercp/PacketSerial

Vtipná vychytávka je použít SLIP a pomocí něj odesílat MQTT-SN pakety. Viz https://github.com/mprymek/mqtt-sn-slip
Jj díky, zkusím to esp32 az bude cas. Taky mam jeste arduino uno wifi, tak zkusim i to. Jen mam obavy, ze mi to degraduje rychlost na AP.

_Jenda

  • *****
  • 1 550
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Arduino a knihovny
« Odpověď #83 kdy: 09. 03. 2021, 18:41:59 »
potřebujeme sledovat teplotu v kamrlíku se serverem“ → připojím k Arduinu za $2 DHT22 za $2, Examples → DHT, Upload, hotovo. „
No a jak to máš se stabilitou programu a kam tu teplotu vypisuješ ?
Po sériáku.

Mimochodem tohle je zrovna hezký příklad toho, co se psalo výše: knihovny obsahující v hlavním „vlákně“ čekání. Třeba u DS18S20 trvá změření teploty 750ms. A ta knihovna samozřejmě defaultně čeká… Takže když chceš dělat ještě něco jiného, tak ti program na tuto dobu zatuhne a ty se pak třeba divíš, že ti přetéká buffer sériáku, i když ho přece pravidelně čteš. (a jinak zrovna v této knihovně je i možnost udělat to neblokující)

Re:Arduino a knihovny
« Odpověď #84 kdy: 10. 03. 2021, 00:21:24 »
Když jsem svůj dotaz pokládal, nenapadlo mne, že se tady rozvine taková zajímavá diskuse (několik dní jsem se sem nedostal). Každopádně děkuji za náměty, vyzkouším si teď asi FreeRTOS, případně něco dalšího. Taky když jsem použil výraz Arduino, neměl jsem na mysli konkrétně AVR, ale spíš celý ten ekosystém kolem. Sám mám ESP32 a SAMD51.

Rust by technicky šel (jen teda nevím, nakolik je vhodný pro začátečníky... vlastně vím...), ale to Go — cos zmiňoval výše — není dobrý nápad, ledaže by existovala nějaká verze s korutinami a kanály, ale bez GC (jo, vím o TinyGo, ale to není to pravé). Smalltalk by byl vhodný z didaktických důvodů.
S TinyGo si taky zkouším hrát a zatím jsem u sebe na limity nenarazil (teda až na omezenější nabídku driverů). Na druhou stranu přemýšlím, jestli není na konkrétní projekt lepší si pak ten driver napsat sám, pořádně a podle vlastní potřeby. Příkladů je sice málo, ale když si člověk otestuje těch pár "vzorů", tak vše ostatní je už zase standardní.  Výhledově bych chtěl vyzkoušet i Rust (tam je to s těmi drivery podobné).

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Arduino a knihovny
« Odpověď #85 kdy: 10. 03. 2021, 00:47:02 »
S TinyGo si taky zkouším hrát a zatím jsem u sebe na limity nenarazil (teda až na omezenější nabídku driverů). Na druhou stranu přemýšlím, jestli není na konkrétní projekt lepší si pak ten driver napsat sám, pořádně a podle vlastní potřeby. Příkladů je sice málo, ale když si člověk otestuje těch pár "vzorů", tak vše ostatní je už zase standardní.  Výhledově bych chtěl vyzkoušet i Rust (tam je to s těmi drivery podobné).
TinyGo je na hraní super. Rust taky doporučuju, ani ne tak pro embedded, ale obecně pro rozšíření obzorů.

Jinak napsat si driver sám je užitečné vždy, už jen z didaktických důvodů. Sám se teď chci podívat na Pico, jen tak z hecu (a výhledově pro výuku robotiky apod.).

Re:Arduino a knihovny
« Odpověď #86 kdy: 10. 03. 2021, 08:16:44 »
Děkuju Mirkovi Prýmkovi a dalším za tipy vztahující se k mým četným otázkám k STM32 :). Výhledově snad vyzkouším a kdyby náhodou ne, snad se to aspoň bude hodit i někomu jinému.

Re:Arduino a knihovny
« Odpověď #87 kdy: 10. 03. 2021, 14:36:08 »
Mimochodem tohle je zrovna hezký příklad toho, co se psalo výše: knihovny obsahující v hlavním „vlákně“ čekání. Třeba u DS18S20 trvá změření teploty 750ms. A ta knihovna samozřejmě defaultně čeká… Takže když chceš dělat ještě něco jiného, tak ti program na tuto dobu zatuhne a ty se pak třeba divíš, že ti přetéká buffer sériáku, i když ho přece pravidelně čteš. (a jinak zrovna v této knihovně je i možnost udělat to neblokující)

Pokročileší platformy to mají vyřešené, třeba ESP32 umí měřit mimo hlavní procesor a to dokonce i v deep sleep modu:

Citace
If you want to take measurements using ADC, internal temperature sensor or external I2C sensors, while the main processors are in deep sleep mode you need to use ULP coprocessor. At the moment ULP can be used only with the Espressif IoT Development Framework.

Re:Arduino a knihovny
« Odpověď #88 kdy: 10. 03. 2021, 14:39:40 »
Pokročileší platformy to mají vyřešené, třeba ESP32 umí měřit mimo hlavní procesor a to dokonce i v deep sleep modu:
Tento konkrétní problém není problém měření, ale knihovny. DS18B20 potřebuje nějaký čas na změření hodnoty a její převod na patřičně formátované číslo a má na to asynchornní instrukce ("začni měřit", "už máš změřeno?" apod.)

Takže to s procesorem ani periferií nesouvisí, je to prostě právě relikt toho jednovláknového, ne-eventového arduinovského přístupu. I v této knihovně to jde používat asynchronně, jenom to není default, takže i v examplech se spíš používá busy waiting.

Re:Arduino a knihovny
« Odpověď #89 kdy: 10. 03. 2021, 14:47:40 »
To PlatformIO vypadá podstatně profesionálněji.
Nevím, jestli "profesionálněji", každopádně je to pohodlnější, komfortnější.

Hodnoceno na základě porovnání Arduino IDE (v1.x) vs toho VSCode rozšíření - to VSCode vypadá poněkud pokročileji :D (samosebou to nové Arduino IDE v2.x na tom bude nejspíš lépe - nezkoušel jsem).

Citace: Mirek Prýmek link=topic=24381.msg346472#msg346472
Já bych spíš řekl, že je to takové "apt pro bastlení" - řekneš si, pro jaký procesor píšeš, jaký chceš framework a jaké knihovny (u všeho si můžeš říct i verzi) a ono ti to samo pěkně všechno stáhne, včetně toolů, překladače... nemusíš vůbec nic řešit, celý to přeložíš a nahraješ jedním příkazem přímo z vanilla zdrojáků, nic nemusíš ručně stahovat kromě samotnýho Platformia.

Jj, to vypadá docela to dobře, mít to takhle po kupě. Navíc se člověk může pak nejspíš podívat pod kapotu, pokud ho zajímá jak ty tooly fungujou.