Meteostanice

Meteostanice v3.0 (Low-Power & SD Datalogger)

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.

POPIS:

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).

HW:

  • Arduino Pro mini - ATmega328PB, 8MHz, 3,3V , odstraněn regulátor napětí a PWR LED, ponechána LED 13 - indikace zápisu na SD

    Červeně vyznačen odstraněný regulátor napětí a PWR LED
  • snímač tlaku, teploty a vlhkosti BME280 I2C 0x77, 3,3V, v režimu FORCED měří jen na vyžádání
  • displej 16 znaků 2 řádky I2C 0x27, 3,3V, odpájena power LED, na propojce I2C konvertoru tlačítko 3 pro podsvícení

    Červeně vyznačena propojka místo které je připojeno tlačítko Tl3 pro podsvícení
    Modře vyznačeno – zde musí být osazen čip (nábojová pumpa), pokud není jako na obrázku je displej na 5V a ne na 3,3V
  • Reálný čas DS3231 I2C 0x68, 3,3V, odstraněná LED a cesta nabíjení baterie (zenerova dioda)
    Červeně vyznačena odstraněná LED a zenerova dioda. Lze tedy použit baterii CR2032 (není nabíjecí)
  • Čtečka SD karet SPI, 3,3V, čtečka na 3,3V bez elektroniky nefunguje, použita na 5V VCC připojeno na chladící plech regulátoru tím se obejde regulátor a je možné napájet jen 3,3V

    Červeně vyznačeno místo napojení VCC, připájet
  • Napájení čtečky přes tranzistor PN2222 na PINu 5, přes odpor 330Ω
  • Zdroj napájení Li-ion článek 2500mAh
  • Automatický step up down buck boost TPS63020 3.3V, odpájená power LED, odpájený pullup u SP, zapnutý SP režim, spotřeba 0,02mA

    Modře vyznačené - propojit plošky 3,3V (mohou být propojeny jiné, stačí přerušit a propojit správnou), propojit plošky u PS (zapnutí power saving).
    Červeně vyznačený pullup, který je třeba odstranit a LED kterou je třeba odstranit. Odpor R2 nemusí být osazen.
  • Nabíječka Li-ion článku TP4056 s ochranou USB-C

POPIS FUNKCE:

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.

POPIS OVLÁDÁNÍ:

  • Přesunutí přepínač ON/OFF zapnutí nebo vypnutí meteostanice
  • Při stisku tlačítka 3 rozsvícení podsvícení displeje - pouze po dobu držení tlačítka
  • Při stisku tlačítka 2 dlouze se zobrazí obrazovka s denním maximem a minimem a rosným bodem - o půlnoci se minima maxima resetují
  • Při stisku tlačítka 1 dlouze se zobrazí menu s nastavením času a data, korekcí teploty, tlaku a vlhkosti a s možností zapnutí zápisu na SD kartu
  • V menu při stisku tlačítka 1 krátce se přidává k hodnotě
  • V menu při stisku tlačítka 2 krátce se odebírá od hodnoty
  • V menu při stisku tlačítka 1 dlouze pohyb v menu
  • V menu při stisku tlačítka 1 dvakrát (dvojklik) opouštění menu z dané pozice (nemusí se procházet celé)

NÁVOD PRO KALIBRACI INDIKÁTORU BATERIE:

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

ZÁVĚR:

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).

POZNÁMKY:

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.

Další podobné články

Test ESC a BLDC motoru

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.