LowPowerLab – Laboratoř nízkého odběru

Tento projekt vznikl na podzim roku 2016. Jeho úkolem bylo umožnit mi ověření a pokusy s bateriovým napájením (a tudíž velmi malou spotřebou) modulu ESP8266. Také měl sloužit jako základ pro konstrukci nové elektroniky meteostanice, nahrazující starý projekt LyMet. Vzhledem k povaze čidel meteostanice (nutnost stálého odečtu například srážkoměru), požadavku na bateriové napájení a nutnosti solárního dobíjení nakonec vzniklo experimentální zařízení, které bych zde rád představil…

Schéma zapojení není příliš složité a obsahuje jen nejnutnější komponenty pro zabezpečení správné funkce:

Nabíjení a hlídání podpětí baterie zajišťuje MCP73871, který jsem použil namísto BQ24072, použitého v Lymet. MCP se chová mravněji než BQ, zejména v případě, že je odpojená baterie (nebo má velmi nízké napětí). Zapojení MCP je převzato z nabíječe Adafruit, který se mi líbil svojí jednoduchostí a účinností. Pro stabilizaci výstupního napětí je použit XC6203P332PR, který vyniká dostatečným výkonem pro napájení ESP a velmi malým vlastním odběrem (typicky 8uA). Zapojení ESP je klasické s propojením GPIO16 na RESET kvůli používání Deep Sleep režimu. Pro čidla, která je nutno snímat trvale je zapojení doplněno o procesor ATTiny1634 – jde o relativně levný mikrokontrolér s poměrně velkou flash pamětí 16kB. ATTiny je napájený přímo z výstupu MCP73871 abych minimalizoval výkonové ztráty na stabilizátoru. ESP je s ATTiny propojeno pomocí I2C sběrnice a protože každá strana pracuje na jiné napěťové hladině je použité napěťové přizpůsobení pomocí tranzistorů Q2 a Q3. Toto řešení mi umožnilo vyvést dva konektory pro připojení dalších I2C čidel jak na úrovni 3V3, tak na úrovni vyšší (4.2V), Měření napětí baterie je přivedeno na A/D převodník, obsažený v ATTiny a pro minimalizaci spotřeby napěťového děliče je použit trik, kdy pro skutečné měření je třeba nejdříve vývod VBGND nastavit programově do L a teprve pak je možné měřit. Volné GPIO jak u ESP, tak u ATTiny jsou pak vyvedeny na hřebínky. Celé zapojení je ještě doplněno o tranzistor Q1, který měl spínat napájení napětí pro ESP, ale o něm podrobněji v odstavci Lessons learned, aneb co se tak úplně nepovedlo.Plošné spoje ze SeeedStudia přišly k mé spokojenosti…

… a osazení proběhlo též bez potíží.

Pokusy zatím ukazují, že s použitím DeepSleep režimu klesne spotřeba ESP8266 na 77uA – níž jsem se nedokázal dostat i když vím, že na internetu jsou projekty se spotřebou cca 45uA.

Lessons learned, aneb co se tak úplně nepovedlo

Bohužel se mi nezřídka stane, že se v první revizi zapojení objeví nějaké nedostatky, které jsem nedomyslel a nebo na ně vůbec nepomyslel 🙁 Nevyhlo se to ani laboratoři nízkého odběru, která obsahuje dvě věci, které mohly být vyřešeny lépe:

  1. Tranzistor Q1, který měl odepínat napájecí napětí do ESP8266 je zapojený tak nešťastně, že jeho udržení v zavřeném stavu odebírá více proudu, než ESP v režimu DeepSleep – nakonec jsem ho tedy vůbec neosadil a napětí do ESP nevypínám.
  2. Sériový port z ESP8266 (signály TXD a RXD) jsou vyvedeny jen na programovací konektor (lépe by bylo je vyvést také na hřebínek), takže se na ně nedá prakticky nic připojit – připojení JPEG kamery jsem tedy musel přibastlit, což nemám moc rád.

No a na závěr jako obyvkle celý projekt v Kicadu ke stažení:

 

Thl Ss
Thl Ss
thl_ss.zip
127.0 KiB
971 Downloads
Detaily

20 komentářů u „LowPowerLab – Laboratoř nízkého odběru“

  1. Zdravím. To je parádní. Budete to mít i na prodej?
    Neuvažujete i místo ESP tam dát nějaký LORA radio modul ( jako P2P) a ATMEGA 328?
    Děkuji

    1. Dobrý den,
      díky. Zatím mám 8 kusů neosazených PCB – cena je 43,-Kč + poštovné. Ohledně dalšího dotazu – postupně na tom pracuji – v současnosti se osazuje prototypová série univerzálního koncentrátoru s možností osadit RFM69, takže píšu firmware. Dál připravuji k odeslání do SeeedStudia vzdálené čidlo, které má tu Atmegu a RFM69/95 (takže i LoRa)… Chystám toho spoustu, jen bych potřeboval mnohem víc času a hlavně energie 🙂

      1. S casem a energii to mame asi všichni podobne. Lide jako vy, nam ostatním ten cas setri a dodavaji i trochu te energie. Tak bych za tuto cinnost chtěl podekovat, urcite i za ostatní. Drzte se! 😉
        Hafajs

        1. Díky. Čas sice pokročil a články mám rozepsané, ale (nejspíš) s větší várkou informací budou čtenáři muset vydržet do zimního klidu – snad najdu čas i energii…

  2. Díky. Nešlo by to i osadit? Já ty malé součástky nejsem schopný zapájet.
    Na tu LORU se těším. Já jsem jakž takž zprovoznil tu moji meteo stanici s RN2483.

    1. Osadit to můžu nechat (přítelkyně se tím živí), ale součástky mám od Farnella (nejsou nejlevnější), takže bych musel spočítat cenu… Raději se dál domlouvejme mailem, pokud máte zájem…

  3. Přeji hezký den. Jak bych si mohl 2ks koupit? Závazně. Jestli tedy ještě máte. Raději osazené, oči za ten život odešly. Ale i bez součástek.

  4. Dobrý den chtěl bych se zeptat za kolik a kde jste objednával io mcp… A dále zda již je zde na vašem webu někde ukázka kódu s využitím deep sleep režimu? Dekuji

    1. Dobrý den,
      MCP73871 jsem bral normálně od Farnella za cenu cca 50,-Kč bez DPH. Ohledně DeepSleep režimu zatím nemám žádný projekt, který by mi klienti dovolili zveřejnit pod Open Source licencí, takže ukázka kódu zde není.
      Hezký den.

  5. A byli by možné třeba zde v dotazech alespoň uvést syntaxi, kde příkaz použít a případně třeba jak ho implementovat do příkladů meteostanice vedené dříve. Jde mi o to zda lze tento jednoduše takto popsat či zda je jeho implementace podstatně složitější. Hardwarové jsem zapojení našel jde mi o software. Diky

    1. Tak doufám, že ničemu neuškodím, když napíšu pár bodů:
      1. krásný článek na téma DeepSleep je zde https://www.losant.com/blog/making-the-esp8266-low-powered-with-deep-sleep
      2. takové to běžné měř-odešli-usni-měř-odešli-… mi nevyhovovalo, takže jsem ho rozšířil o to, že během stavu “odešli” současně přijmu povel pro modul (zůstaň vzhůru X sekund, aktualizuj FW, aktualizuj SPIFFS, …)
      3. konkrétně u meteostanice to znamená, že mám attiny, které měří vítr (otáčky, směr) a vyhodnocuje poryvy větru, dále počítá impulzy z detektoru srážek a ještě jedním čidlem měří výšku sněhové pokrývky. ESP po probuzení přes I2C z ATtiny vyčte blok registrů, ve kterých jsou výsledky měření. Toto vyčtení probíhá max. po 15min (kvůli poryvům) a min. … no tady už dál popisovat nemůžu…

      1. Napsal jste komentář s jinou adresou, kterou neschválím, nicméně ho (protentokrát) překopíruji – příště prosím dávejte pozor na adresu:

        Ja jsem mel na mysli ten priklad ktery meril pouze teplotu a vlhkost pro zacatecniky. Ale zajimave info jsou i zde
        http://embedded-lab.com/blog/esp8266-temperature-humidity-logger-deep-sleep-enabled/
        Ale doby na ktere to usina jsou v prikladech jen velmi kratke. Ja bych to potreboval uspat na hodinu. Je to mozne? Dale jsem se chtel zeptat zda by bylo mozne vytvorit z arduina a web shildu server co by tuto odeslanou informaci odchytaval.

        Ohledně maximální délky deepSleep je toho možné najít na internetu spousty (např. http://www.esp8266.com/viewtopic.php?f=32&t=7867 ) Délka také záleží na verzi SDK a jádra. Já používám časy kratší, takže jsem na limity nenarazil. Ohledně zachytávání informace jiným IP zařízením – možné to je, komunikují mi takhle dvě ESP mezi sebou.

  6. Zdravím,
    zajímalo by mě jak vypadá ten programovací “konektor” nebo jak to nazvat, kterým to pak programujete. A to je samovýroba?
    Děkuji za odpověď 🙂

    1. Dobrý den,
      programovací konektor je “na koleně” vyrobený ze dvou kousků PCB (no ne tak úplně – ty dva kousky PCB jsou vyrobeny v Číně 🙂 ), 4ks pogo pinů a dvou silnějších kusů drátu. Zkusím vymyslet,jak sem dostat fotografii mimo článek.

  7. Tak nějak jsem si to představoval no 😀
    Jinak super nápad na úsporu místa a materiálu.

    1. No já se musím přiznat – v posledních konstrukcích (pokud to jde) od tohoto “konektoru” upouštím. Pokud potřebuji něco ladit (třeba zrovna ladící výpisy z ESP32), tak je dost nepohodlné to stále přidržovat na místě. Pokud mám prostor na PCB, tak už raději používám stranové konektory, vyleptané na PCB z WII nunchuck.

      1. To chápu no. Ale tak šlo by to vyřešit třeba šroubkem z druhé strany DPS místo toho jednoho “čepu”.
        Každopádně toto jsem si ještě představit zvládl, ale u stranových konektorů z nunchuků už se nechytám 😀

  8. Aha, taky zajímavé řešení 🙂 Jen musí být vždy u hrany no… Ale to u vícevrstvých desek asi není problém zajistit.

  9. Kvuli srazkomeru neni nutne delat zarizeni ktere musi stale odecitac hodnoty. Staci srazkomer otevrit a jazyckovy kontakt posunout vice na stranu. Tak aby byl snimac sepnut pri krajni poloze vahadla. Pak se staci jen programem podivat jestli se hodnota nezmenila od minule a cip klidne na x-sekund uspat a zase dokola. Vahadlo srazkomeru se tak rychle nepreklopi. Mam to tak udelane a porovnavam to s mechanickym srakomerem a hodnoty sedi.

Komentáře nejsou povoleny.