Elektroměr + arduino + wifi modul ESP8266 Esp-13
Ahoj,
mám doma podružný elektroměr, který mi měří spotřebu tepelného čerpadla. Já každý večer jdu dolů do kotelny opsat stav a nadatluju ho do excelu (což samozřejmě někdy zapomenu).
Elektroměr má výstup a - <30v <27mA pro odečítání impulsů (800 imp = 1kw myslím).
Já mám doma nevyužité arduino + z aliexpressu desku s wi-fi esp8266 (ESP8266 Esp-13) z aliexpressu (tuhle: esp13w1.jpg)
Tak mě napadlo udělat nějak že by arduino počítalo impulsy a když jich bude těch 800, tak zavolá přes wifi url (bude běžet na mém serveru) a tím se do mé DB zaznamená spotřebovaná kilowata.
Jsem PHP programátor, k C a C++ jsem si taky čuchnul, takže s pomocí a návody na netu bych i ten wifi modul nějak rozběhl asi, ale potřeboval bych poradit s tím propojením arduina s elektroměrem, protože relátko by se asi z těch impulsů zbláznilo, takže asi nějaké tranzistory, ale to jsem měl naposled před dvaceti lety na škole a vše jsem zapomněl.
Mohl by mi prosím tedy v této první fázi poradit jak to zapojit nejlépe schéma? Já už si součástky seženu a zapojí/propájím, to není problém...
Díky moc!
Edit: ještě mě napadlo použít DC-DC měnič který udělá z 30v 5v a připojit na arduino, ale nevím zda by to fungovalo s impulsy. Například tento: menic-xl6009e1
Na to ti stačí obyčajný optočlen, napr. takto.
Plus bych se vykašlal na to arduino a řešil čítač pulzů rovnou na ESPčku…
No mám doma jen arduino uno a esp-13 shield, takže to připojuji přes usb v arduinu. Zkusil jsem tento jednoduchý návod (esp-13-wifi-shield-web-server.html), ale u toho jsem zkončil.
Je nějaký problém s komunikací - dostávám chyby:
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
Když si otevřu serial monitor a stisknu na esp reset, tak dostanu změť klikyháků, když snížím rychlost, tak dostanu ets Jan 8 2013,rst cause:2, boot mode:(1,7) což by mělo být správně.
Je možné, že mám propojení mezi arduinem a esp i pomocí jehel (došli mi propojovací kabílky, mám jen samec-samice)
Nevím co teď s tím, zkusím v úterý sehnat káble, ale tím to asi nebude
Nahrával jsi něco na tu ESP jestli ano, nebyli k PC připojeny i jiné zařízení ?
Ty klikyháky, znaky, se zobrazují při nastavení nekorektní rychlosti, zkus jí snížit a nastavit na 74880.
Před tou 'warning' zprávou v tom sériovém terminálu nebyla i chyba o portu COM ?
(jestli jsi ten kod nahrával před tools, podívej se, zda-li jsi zvolil správný model modulu. Github esp8266/Arduino na stahnuti)
PS : Může se hodit: mimo ručni reset modulu Serial Monitor for ESP8266
viz : [DTR] a [RTS] nejsou správně spravovány původním sériovým monitorem, který po otevření udržuje ESP8266 v režimu resetování.
NN esp je čerstvě vybalené. Uno je testovací, tam už toho bylo nahrané víc, ale před připojením jsem tam nahrál jen blikání led - tedy nahrávání na samotné uno funguje...
Serial monitor jsem teď nainstaloval, ale ničemu zatím nepomohl
kašlu na to, celý den se s tím smolím, x návodů na netu přečteno, ale prostě to nekomunikuje. Pokud by měl někdo zájem to za poplatek udělat, budu rád...
Napadlo mě, že to ESP8266 na tom shieldu nemá naprogramovaný firmware pro serial wifi. Nevím přesně, jak si představuješ že hodláš to ESP ovládat, ale předpokládám, že přes AT příkazy posílané přes sériový port. V tom případě musíš do toho shieldu prvně nahrát AT firmware.
Zkus se inspirovat na https://osoyoo.com/ja/2019/04/18/how-to-burn-the-an-thinker-at-command-firmware-for-the-esp-wifi-shield/ kde nahrávají An-Thinker AT firmware, ale klidně ten návod můžeš použít i pro jiný firmware, třeba oficiální od Espressif.
ahá, díky za odkaz. Zítra zkusím...
Nemusis ani pouzivat arduino. ESP má také GIOP a programovat se dá podobně jako arduino
jj, jenže si musím pořídit nějaký bazmek abych to připojil k usb...
Nemusíš, jako bazmek na naprogramování použiješ to arduino…
No a to právě nějak nefunguje - při nahrávání programu dostanu chybu
No, a jak máš to arduino propojené s tím shieldem? Jakým způsobem do toho shieldu nahráváš firmware?
Btw, když chceš nahrát firmware do toho ESPčka, tak po spuštění uploadu musíš udělat reset toho ESP, jinak se nenaflashuje…
Postupoval jsem přesně podle tohoto návodu a nešlo to: esp-13-wifi-shield-web-server.html
V týdnu zkusím návody co poslal user Tbrthg iodzvj...
Děkuji! Už to komunikuje - dle toho odkazu jsem zapojil a nyní už programuju rovnou to ESP, takže můžu pokročit dál, teĎ musím zjistit, jak na tom ESP sledovat na nějakém pinu 5V jako signál z toho elektroměru
Elektrický interface bych řešil jednoduše, jestli má elektroměr spínací výstup, tak neni nic jednoduššího, než ho použít (<37V <27mA podle mě znamená, že 5V pár mili je v pohodě). Pokusy asi nebudete dělat ve sklepě, takže je dobré mít nějaký model toho výstupu (je to kontakt (to by byl vopruz, bylo by nutné zbavit se zákmitů - debouncing se to obvykle nazývá), tranzistor, ...). V první fázi bude nutné získat signál, který sleduje stav toho výstupu, ať už z blikání ledky (to by bylo nepraktické, ale proveditelné) nebo z výstupu elektroměru. Tuhle fázi bych udělal bez adruina, prostě by mi blikala ledka tak, jak bliká ten elektroměr (či jeho model).
Až v další fázi bych tohle připojil na nějaký vstup arduina, ideálně IRQ nebo capture vstup některého z čítačů (pozor na to, že čítač0 používá arduino interně, někdy jsem na tom ztroskotal a až rozebrání knihoven mě na tuhle příčinu přivedlo), ale při četnosti těch pulzů by stačil i obyčejný vstup.
Mě by se jako nejjednodušší jevilo použít 16 bitový čítač, impulzy by byly jeho vstupem (snad je někam vyvedený, naposledy, když jsem to u avr používal, to bylo ještě před arduinem), a cyklus by měl zkrácený na 800, na vrcholu by vyvolal přerušení, které by nastavilo příznak a v hlavní smyčce by se ta událost odeslala nebo i zaznamenala (nechci navádět k prasárnám, ale možná by se to celé dalo zajistit i v tom přerušení).
To by bylo čistě hw řešení, které ale znamená nastudovat si datasheet použitého procesoru (předpokládám ATmega328 pokud je to uno) (neni potřeba číst všech cca 500 stránek, stačí prolistovat a přečíst si jen partie o čítačích a časovačích, je to sice náročné a trochu nepřehledné (názvy jako phase correct pwm a podobně je pro tento účel potřeba ignorovat a spíš se zaměřit na to, co to znamená, tady je potřeba externí vstup hodin a nulování po dosažení zvoleného stavu s tím, že to vyvolává přerušení, ono pak z těch třeba 4 módů co vypadají jako ten pravý vyjde jenom jeden), ale zvládnutelné).
Jinak pak je postup asi stejný jako u jakéhokoliv jiného programování, prostě se vezmou funkční kousíčky (examply, kterých je pro arduino víc, než může člověk vyzkoušet, ale na ty čítače jsem osobně vždy musel přijít sám), které se spojí do složitějšího programu tak, aby dělal, co je potřeba.
no a protože chodím domů večer a u žteď spím jen 5 hodin denně, tak nereálné - na to nemám čas, ještě tohle studovat..., bohužel...
Tak už mi to funguje a používám jen esp 13 shield bez arduina (arduino používám jen jako převodník při nahrávání programu z PC). Nechal jsem to běžet přes noc a zatím to zapisuje do DB....