Komunikace mezi ESP a RPi

Komunikace mezi ESP a RPi
« kdy: 04. 10. 2024, 11:31:02 »
Ahoj vespolek,
nevím jestli se tohle úplně hodí sem, ale zkusím to:
dostal se mi do pazour tenhle displej. Přikoupil jsem k němu RPi zero 2w. Plán je takový, že na tom rozjedu v kiosk režimu webový prohlížeč s HTML stránkou, která bude dělat GUI, zobrazovat informace o stavu a hodnotě čidel,... . Protože displej zabírá prakticky všechny piny z headeru RPi, tak různé I/O periferie plánuji napojit na ESP32, které bych připojil pomocí USB a přilepil ho zezadu na RPi. Moje otázka: jak co nejlépe, nejsnáze, nejefektivněji, nej... dostat informace z ESP do RPI a zpět? Půjde o nějaké 1/0, analogové hodnoty atd...
Zatím mě napadlo toto: data z ESP posílat přes USB sériovou linkou, v RPi spustit nějaký python script, který by tu sériovou linku četl a zapisoval do souboru (nejspíš v ramdisku, aby nezabil SD kartu neustálými přepisy) který by byl přístupný přes webserver odkud by si jej JS na stránce tahal pomocí AJAXu?
Přiznám se, že něco takového řeším poprvé, takže nevím jaké jsou možnosti.

Předek díky za případné tipy  :)


alex6bbc

  • *****
  • 1 677
    • Zobrazit profil
    • E-mail
Re:Komunikace mezi ESP a RPi
« Odpověď #1 kdy: 04. 10. 2024, 12:12:34 »
muzes tam mit js a casovy event, ktery nacte nova data. nebo nemusis mit js a nastavis autorefresh webovky a ta se cela stahne s novymi udaji. moznosti je habakuk.

Re:Komunikace mezi ESP a RPi
« Odpověď #2 kdy: 04. 10. 2024, 14:32:13 »
Moznost pripojeni ESP32: S ohledem na to, ze nejsem softwerar a nevidim zas tak dobre za hardwarovy horizont, pripojovani pres USB a vsechen ten SW balast kolem toho by me desil (nerikam ze opravnene) a snazil bych se to pripojit treba pres I2C, ktere se zjevne u toho display pouziva jako I2C a tudiz by melo jit sdilet i s jinou perferkou (treba tim ESP32). Na ESP32 existuje spousta hotoveho SW (esphome, tasmota, atd.), ktery by sel mozna vyuzit aniz by se muselo neco programovat.

Kdyz to trochu rozvedu: Jednim smerem - ESP32 ma mizerny AD prevodnik, takze analogove vstupy by se nejspis stejne resily externim ADCckem, tedy pokud bude I2C na RPIcku uchoditelne, mozna by stacilo na to I2C pripojit primo I/O expander (PCA9xxx) na digitalni vstupy a nejaky AD prevodnik na ty analogove. Spousta tedlech brouku je v linuxu podporovana naprimo, staci naloadovat prislusny modul... a ESP32-ce se uplne vyhnout.

Anebo druhym smerem - vyhodit to RPIcko. Co ten display pohanet tou ESP32-kou s podporou LGVL, nebo komplexnejsim resenim jako OpenHASP, nebo nakonec i ta Tasmota myslim umi pohanet displaye? A I/Ocka resit bud z te ESP32 jako na zacatku anebo, kdyz by jich bylo potreba moc, tak prizvat ten I2C expander.


mhepp

  • ***
  • 160
    • Zobrazit profil
    • E-mail
Re:Komunikace mezi ESP a RPi
« Odpověď #3 kdy: 04. 10. 2024, 15:49:29 »
Osobně by mohly být nejjednodušší dvě cesty: sériový port nebo I2C.

I2C - RPi by byl master, esp32 slave.
sériový port - RPi má TTL  3.3V sériový port, tak to máš přímo propojitelné. ESP32 by pak periodicky vypisovalo měření na port, ty bys to jen vyčítal.

Ale zamyslel bych se nad tím, co píše kolemctouci. Co konkrétně chceš připojovat za čidla?

Re:Komunikace mezi ESP a RPi
« Odpověď #4 kdy: 05. 10. 2024, 13:37:51 »
Ahoj,
díky za odpovědi. Takže: nad obsluhou displeje přímo pomocí ESP32 (LGVL) jsem taky uvažoval, ale došel jsem k závěru, že moje znalosti programování ESP/Arduino jsou tak chabé, že na to prostě nemám. Já začínám a končím u zapínání/vypínání výstupů, vyčítání analogových hodnot a čtení signálů přes I2C. Řízení displeje je úplně jiná liga; zvlášť na úrovni, které bych rád dosáhl. Navíc displeje kolem 2", mají 40pin rozhraní, takže stejně obsadí všechny I/O i u ESP32S3 :)

Můj dotaz byl spíš myšlený tak, jestli neexistuje "kratší" cesta, jak dostat data do prohlížeče. Přeci jenom - rpi zero zrovna výkonem moc neoplývá a čím míň věcí bude muset běžet, tím lépe. A když si vezmu co jsem vymyslel (Sériová linka -> Python skript -> web server -> prohlížeč) a když chci co nejrychlejší odezvy, tak jestli například není nějaká možnost jak rozumně číst/zapisovat sériovou linku zrovna z prohlížeče, nebo tak něco...?! Nerad bych zahltil rpi jenom tím, že si těch pár čísel bude předávat milion věcí a potom to bude mít odezvy jak holubí pošta  :D

Aktuálně chci připojit 3osý akcelerometr & gyro (i2c), 4 hallovy snímače ("hloupé" 1/0), dva spínače a jedno relé na výstup.

T.


alex6bbc

  • *****
  • 1 677
    • Zobrazit profil
    • E-mail
Re:Komunikace mezi ESP a RPi
« Odpověď #5 kdy: 05. 10. 2024, 13:49:54 »
Ahoj,
díky za odpovědi. Takže: nad obsluhou displeje přímo pomocí ESP32 (LGVL) jsem taky uvažoval, ale došel jsem k závěru, že moje znalosti programování ESP/Arduino jsou tak chabé, že na to prostě nemám. Já začínám a končím u zapínání/vypínání výstupů, vyčítání analogových hodnot a čtení signálů přes I2C. Řízení displeje je úplně jiná liga; zvlášť na úrovni, které bych rád dosáhl. Navíc displeje kolem 2", mají 40pin rozhraní, takže stejně obsadí všechny I/O i u ESP32S3 :)

Můj dotaz byl spíš myšlený tak, jestli neexistuje "kratší" cesta, jak dostat data do prohlížeče. Přeci jenom - rpi zero zrovna výkonem moc neoplývá a čím míň věcí bude muset běžet, tím lépe. A když si vezmu co jsem vymyslel (Sériová linka -> Python skript -> web server -> prohlížeč) a když chci co nejrychlejší odezvy, tak jestli například není nějaká možnost jak rozumně číst/zapisovat sériovou linku zrovna z prohlížeče, nebo tak něco...?! Nerad bych zahltil rpi jenom tím, že si těch pár čísel bude předávat milion věcí a potom to bude mít odezvy jak holubí pošta  :D

Aktuálně chci připojit 3osý akcelerometr & gyro (i2c), 4 hallovy snímače ("hloupé" 1/0), dva spínače a jedno relé na výstup.

T.

no tak proc se zabyvat esp32, sehnal bych moduly s pozadovanymi senzory a napojil to na gpio rpi a programovat uz to na vyssim levelu pro rpi. a na rpi muze jet jednoduchy webserver sbirajici hodnoty a treba proxy nginx z toho udela navenek slusny webserver.

Re:Komunikace mezi ESP a RPi
« Odpověď #6 kdy: 05. 10. 2024, 17:38:12 »
udělal bych to pomocí ESP webserver a rpi by bylo pouze robrazovadlo....

Re:Komunikace mezi ESP a RPi
« Odpověď #7 kdy: 05. 10. 2024, 20:58:46 »
No a když už to RPi má WiFi, tak proč to tam neposílat přes síť?
A můžete mít ty senzory kdekoli.
A nebudete na ESP muset programovat čtení těch čidel a posílání po sériové lince, ale využijete hotové projekty jako ESPeasy, Tasmota, esphome atd.

wajta

Re:Komunikace mezi ESP a RPi
« Odpověď #8 kdy: 16. 11. 2024, 10:39:50 »
Zkusím také přispět.
Pokud není podmínkou "drátová" komunikace, šel bych touto cestou:

RPi - nainstalovat mqtt brokera, např. moquitto, NodeRed a na něm postavit dashboard
 
ESP32 - bude číst čidla a data posílat přes mqtt do RPi, zde je pak možnost programovat vše např. pomocí Arduino IDE nebo využít nějaký hotový firmware jako je třeba zmiňovaná Tasmota.

Pokud se vydáte touto cestou máte výhodu v tom, že už budou existovat hotové příklady, které stačí jen přizpůsobit a nevymýšlet kolo. Navíc každý zásek bude již v takovém scénáři, který chystáte někde popsán.

Re:Komunikace mezi ESP a RPi
« Odpověď #9 kdy: 17. 11. 2024, 15:03:06 »
Díky za nápady. Nakonec jsem to vyřešil (ještě nemám 100% hotovo, ale základ funguje) jinak: místo ESP jsem nakonec použil RP2040, to běží na circuitpythonu a tváří se jako klávesnice, která simuluje mačkání tlačítek. Kód je trapně jednoduchý a internet je plný příkladů, takže to zvládne i dřevo jako já  8)
No a webová stránka, která běží v RPi má skrytý input, na kterém je onkeydown event, který kontroluje délku "textu" v inputu a pokud dosáhne správné délky, tak jej načte do proměnné, rozřeže na jednotlivé hodnoty a ty vepíše do správných elementů ve stránce, input vymaže a vše se opakuje.
Ono Zero 2W je fakt zoufale nevýkonné a čím méně toho na něm běží, tím lépe.