Problém se stabilitou meteostanice
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Problém se stabilitou meteostanice
Zdravím, měl bych dotaz ohledně meteostanice postavena na desce Wemos D1 s dvěma senzory DS18B20 (vše pořízeno na Aliexpress). Jde o nestabilitu cele stanice která obsahuje celkem 3 desky Wemos D1 a data jsou odesílaná na jeden účet na Thingspeak. Někdy je to z odstupem několika hodina a někdy zase během 5 minut všechny desky přestanou data na Thingspeak odesílat. Související problém je takový že po restartovaní Wemos D1 přes WIFI zásuvku je počáteční hodnota vždy 85 což je dost nevhodné při zobrazeni v grafu. Děkuji za Váš čas pokud by měl někdo nějaký návrh na zlepšeni stability.
Re: Problém se stabilitou meteostanice
3 WEMOSy to už nejsou malé proudy. Klidně bych sázel na problém s napájením. Máte na napájení nějaké větší kondíky? Ty by mohli pomoct.
-
- Příspěvky: 585
- Registrován: 01 srp 2017, 19:29
- Bydliště: Poprad
- Kontaktovat uživatele:
Re: Problém se stabilitou meteostanice
85 sa zobrazí preto, lebo málo čakáte pri prvom meraní. Keď už zbehne prvá slučka, tak je tam určitý delay, ktorí postačuje. Dajte napríklad 250ms delay za to meranie, aby sa počkalo na jeho dokončenie. Problém by som hľadal tam.
Re: Problém se stabilitou meteostanice
Žádné kondenzátory nepoužívám, každá deska je v jiné místnosti a vše napájeno celkem obyč USB nabíječkou. 

Re: Problém se stabilitou meteostanice
Těch 85 při restartu skoro jistě vyřeší ten delay. Ale to že se deska zasekne už může být problémem se zdrojem. Možná bych zkusil přidat nějaký kondík mezi 3.3V a GND desky. Něco jako 4700uF, na zkoušku, třeba to s tím něco udělá. Taky to ale může být něco v programu. Může tam být někde místo kde se při chybě dostanete do smyčky a už z ní nevylezete. To je nejspíš i pravděpodobnější než problém se zdrojem.
-
- Příspěvky: 585
- Registrován: 01 srp 2017, 19:29
- Bydliště: Poprad
- Kontaktovat uživatele:
Re: Problém se stabilitou meteostanice
Nie je to nejaký moc veľký kondík?
NodeMCU (zrovnateľná doska) má napríklad na doske 100uF ak sa nemýlim integrovaný. Pripoj si na ten modul Počítač, spusť Putty a čítaj výpisy na UART, aby si vedel, kde sa to seklo
Myslím si, ale že to bude iba chybka v kóde.
Ja si napríklad s NodeMCU posielam real-time (bez delayu) teplotu na môj server + čítam + spúšťam 1 PHP script a ešte sa mi to neseklo a už to beží viac ako mesiac vkuse.


Ja si napríklad s NodeMCU posielam real-time (bez delayu) teplotu na môj server + čítam + spúšťam 1 PHP script a ešte sa mi to neseklo a už to beží viac ako mesiac vkuse.
Re: Problém se stabilitou meteostanice
Je to nadsazený
ale pokud ho má v repertoáru tak by uškodit neměl. Ale jak říkáte, chybka bude spíš v kódu. Zkuste nám ho sem poslat PB1.

Re: Problém se stabilitou meteostanice
Jsem úplný amatér v programovaní takže se přikloním k názoru že chyba bude v kódu
posilám teda své kódy, na jedné desce jsou pouze dva senzory DS18B20 a na dalších dvou deskách je navíc senzor DHT22 a fotorezistor + displej. Děkuji za další pomoc.

- Přílohy
-
- WIFI_meteostanice.ino
- (2.71 KiB) Staženo 287 x
-
- WIFI_DS_18B20.ino
- (1.55 KiB) Staženo 260 x
-
- Příspěvky: 585
- Registrován: 01 srp 2017, 19:29
- Bydliště: Poprad
- Kontaktovat uživatele:
Re: Problém se stabilitou meteostanice
Tiež nie som profi programátor, millis neovládam, ale myslím si, že sa môže biť to, že máš v kóde millis a delay
Nechal by som to buď jedno alebo druhé. Ale to si iba čisto myslím
Možno to problém nie je. Kód nie je ako taký zle napísaný. Na mňa to pôsobí dobrým dojmom.


Re: Problém se stabilitou meteostanice
Zkusil bych si ten delay nahradit millis jak píše martinius96. Stačí si deklarovat někde nahoře nad programem unsigned long millis_old. Pak si jen dáte celý program do podmínky a zpouštíte ho pokud je millis() >= millis_old + 60000. Pak si jen do předchvílí zmíněné podmínky dáte millis_old = millis();. Pokud to nic neudělá tak bych si udělal nějakou errorovou rutinku. Něco jako pokud jsou naměřené teploty o X větší než ty předchozí, něco dělej.
Mohlo by to být klidně takto:
Pokud je teplota o 10 stupňů větší nebo menší než ta předchozí tak se spustí chybová smyčka. Tam už můžete dělat co chcete.
Mohlo by to být klidně takto:
Kód: Vybrat vše
float teplota_old;
.....
smyčky a kód
.....
//Merime teplotu
float teplota_now = sensors.getTempCByIndex(0);
if(teplota_now > (teplota_old + 10) ││ teplota_now < (teplota_old - 10)){
//Asi mame chybu, neco delej
// Muzete treba merit znovu, resetovat arduino nebo dalsic X veci
}else{
teplota_old = teplota_new;
}
......
......
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 0 hostů