Systém pro výstrahu
Je to systém, který umožňuje sledovat teplotu a vlhkost ve vašem bytě. Jeho nastavení je hodně snadné.
Projekt pokročilé meteostanice s důrazem na extrémně nízkou spotřebu a dlouhou výdrž na Li-ion článek. Postaveno na čipu ATmega328PB (8MHz, 3.3V).
Hlavní vychytávky:
Agresivní Power-Management: Průměrná spotřeba kolem 5 mA. Vypíná se nejen procesor, ale i I2C sběrnice a napájení SD čtečky (přes tranzistor). Odstraněny prvky zvyšující spotřebu.
Chytré trendy: Tlak se neporovnává s poslední naměřenou hodnotou, ale využívá kruhový buffer, aby určil trend za poslední hodinu (odfiltruje šum senzoru).
Inteligentní alarm: Detekce prudkého poklesu tlaku (>1.5 hPa) s varováním před bouřkou a automatickým vypnutím po 6 hodinách.
Robustní RTC: Čas se při startu nastaví jen tehdy, pokud modul DS3231 skutečně ztratil napájení (kontrola OSF bitu).
Diagnostika: Displej střídavě zobrazuje čas a chybové hlášky (chyba senzoru, SD karty nebo vybitá baterie pod 15 %).
Poznámky k instalaci:
EEPROM: Nastavené korekce a intervaly se ukládají automaticky při opuštění menu.
Knihovny: Je nutné mít nainstalované knihovny SdFat, OneButton, DS3231, Adafruit_BME280 a LowPower328PB.
Kalibrace baterie: V kódu je popsán postup pro doladění konstanty napěťového děliče pro přesné měření % kapacity.
Podrobný popis v hlavičce kódu.
Všechny důležité poznámky jsou v kódu i co se HW úprav týče.
Zobrazuje se teplota, vlhkost, tlak, reálný čas, ukazatel nabití baterie.
Dataloger na mikroSD kartu ve výchozím stavu po 10minutách.
Zobrazení aktuálních hodnot na displeji včetně trendu teploty a tlaku.
1. řádek 1056h(trend šipkou)-11.7C(trend šipkou)58%(relativní vlhkost)
2. řádek 19:20 12.12 : („:“dvojtečka při zápisu na SD po dobu jedné minuty) z (indikátor zápisu na SD"z")99%(kapacita baterie)
Zápis na kartu v intervalu 10 min (lze změnit). Zobrazení rosného bodu a denních minim a maxim po dlouhém stisku tlačítka 2.
Úsporné funkce pro úsporu baterie. Uložení nastavených hodnot do EEPROM a jejich načtení při obnově napájení.
V kódu je uveden i popis verzí, pro ilustraci postupné práce. Verze 1 není zmíněna, to byl první kód na zcela jiné úrovni začátečníka).
Zobrazení: Základní hodnoty na displeji.
Střídání varování: Pokud tlak spadne o více než 1.5 hPa za 10 min, na displeji se začne střídat čas s nápisem "TLAK PRUDCE PADA".
Inteligentní alarm: Dokud se tlak nezačne zvedat, alarm zůstane aktivní s textem "EXTREMNI TLAK". To samé platí pro upozornění na Bouřku. Upozornění je signalizováno maximálně 6h.
Min/Max: Podrž Tlačítko 2 a na 5 sekund uvidíš extrémy teplot. O půlnoci se samy vyresetují.
Rosný bod: Po podržení tlačítka 2 vidíš kromě Min/Max i vypočítaný rosný bod a procento nabití.
Trendy: U tlaku a teploty vidíš šipky nahoru/dolů nebo prázdný znak.
Autodiagnostika: Pokud selže SD karta nebo senzor BME280 nebo se vybyje baterie na 15%, displej začne střídavě zobrazovat chybovou hlášku (např. PORUCHA SD KARTA).
Indikační dvojtečka: Dvojtečka na pozici 11 druhého řádku se objeví pouze na minutu ve chvíli, kdy probíhá aktivní cyklus měření a zápisu. Je to z důvodu indikace funkce, nedošlo k zaseknutí.
Úspora: Arduino většinu času spí, probouzí se jen pro měření a obsluhu tlačítek.
Konstanta pro napětí:
pokud naměříš multimetrem napětí na baterii a na displeji meteostanice uvidíš jinou hodnotu,
novou konstantu spočítáš takto: Nová_konstanta = Stará_konstanta (0.0047987f) * (U_bat / U_disp)
Plně nabij baterii a změř napětí baterie, pak uprav v map horní hranici v mV, z 4100 na napětí, které jsi naměřil při nabití (např. 4200).
Plně vybij baterii a změř napětí baterie, pak uprav v map spodní hranici v mV, z 3100 na napětí, které jsi naměřil při vybitíí (např. 3000).
Pro měření baterie je nutné odkomentovat a zakomentovat patřičné řádky v kódu a pak je vrátit zpět. Tím se místo procenta baterie zobrazí hodnota napětí v mV na baterii.
Změnit pocitadloSpanku zpět na z 1 na 450. řádek 206
Odkomentovat řádek s % a zakomentovat výpis v mV. řádek 710
Změnit hodnoty v map. řádek 245
Spotřeba je 3,7mA a každých 8s cca 10mA na 1s, průměrně to bude kolem 5mA (ještě zápis na SD). Výdrž na baterii tedy kolem 20 dnů.
Displej bere 2,25mA, buck boost bere 0,02mA, arduino normálně 0mA (mimo rozsah) při probuzení 4,5mA.
Původně byla spotřeba v klidu cca 20mA u verze 2.0.
Projekt zabírá 30942 bytů (95%) úložného místa pro program (FLASH).
Globální proměnné zabírají 1438 bytů (70%) RAM.
S RAM byl velký boj, proto je kód psán maximálně úsporně (minimální datové typy, texty jako makra).
millis() se během powerDown zastavuje. Pro účel (zobrazení extrémů na 5s) je to v pořádku, protože po stisku tlačítka procesor stejně 1,5 s nesmí usnout, takže časovač proběhne korektně.
Meteostanici jsem zkoušel pouze uvnitř ne venku, ani jsem ji nezamýšlel stavět pro venkovní použití.
Zapojení je pomocí drátů a není ideální, ale můj účel to splnilo.
Je osazen i konektor pro IPS programátor, pro jedno nahrání není nutný.
Přikládám i modely pro 3D tisk, ale upozorňuji, že to nemusí úplně sedět, ale takto jsem tiskl.
Je to systém, který umožňuje sledovat teplotu a vlhkost ve vašem bytě. Jeho nastavení je hodně snadné.
Cílem tohoto Arduino projektu je testování a kalibrace obousměrného regulátoru otáček (ESC) pomocí PWM signálu. Program simuluje sekvenci pohybů: dopředu, neutrální pozici a reverzní chod, což umožňuje ověřit správnou funkci ESC včetně přepínání směru otáčení motoru.