Stránka 1 z 2
Problém se stabilitou meteostanice
Napsal: 12 lis 2017, 14:01
od PB1
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
Napsal: 12 lis 2017, 15:36
od Wojta
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.
Re: Problém se stabilitou meteostanice
Napsal: 12 lis 2017, 15:55
od martinius96
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
Napsal: 12 lis 2017, 15:58
od PB1
Žá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
Napsal: 12 lis 2017, 17:31
od Wojta
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.
Re: Problém se stabilitou meteostanice
Napsal: 12 lis 2017, 17:39
od martinius96
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.
Re: Problém se stabilitou meteostanice
Napsal: 12 lis 2017, 18:23
od Wojta
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
Napsal: 13 lis 2017, 07:06
od PB1
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.
Re: Problém se stabilitou meteostanice
Napsal: 13 lis 2017, 12:05
od martinius96
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
Napsal: 14 lis 2017, 16:11
od Wojta
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:
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;
}
......
......
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.