Arduino knižnica na kontrolu dátumu a teploty integrovaného DS3231 cez I2C

Arduino knižnica na kontrolu dátumu a teploty integrovaného DS3231 cez I2C

Arduino knižnica na kontrolu dátumu a teploty integrovaného DS3231 cez I2C

AKTUALIZOVANÉ: Navštívte aj nové knižnica na správu dátumu a času pomocou modulu DS3231 RTC a Arduina s vylepšeniami, ako je sezónny čas.

Prevádzka IC de hodiny reálneho času (RTC) najpopulárnejšie, ktoré sa ovládajú pomocou autobus I2C Väčšinou je to veľmi podobné. Okrem toho, Drôtená knižnica de Arduino výrazne zjednodušuje komunikáciu so zariadeniami Dvojvodičové sériové rozhranie (TWI), I2C, konkrétne.

Obsah

    Všeobecne povedané, proces pozostáva z

    1. S touto funkciou spustite komunikáciu ako podriadený alebo hlavný (štandardne nastavený). Wire.begin(adresa). Ak je „adresa“ vynechaná, komunikácia začína reťazcom μC učiteľ z autobus I2C.

    2. Aktivujte komunikáciu I2C so zariadením prostredníctvom adresy pamäte, kde sa nachádza, pomocou príkazu Wire.beginPrenos(adresa).

    3. Napíšte objednávku do autobus I2C aby ste povedali zariadeniu operáciu, ktorú chcete vykonať, pomocou Wire.write(príkaz), v ktorom "poradie" je kód operácie.

    4. Deaktivujte komunikáciu, aby ste uvoľnili autobus I2C s funkciou Wire.endTransmission().

    5. Požiadajte zariadenie o odoslanie určitého množstva údajov, ktoré zodpovedajú operácii, ktorá bola požadovaná (v tomto prípade dátum a čas) pomocou funkcie Wire.requestFrom(adresa,suma).

    6. Počkajte, kým budú údaje požadované funkciou dostupné na čítanie Wire.available(), ktorá vráti počet údajov, ktoré už boli prijaté a je možné ich prečítať.

    7. Prečítajte si údaje odoslané zariadením (t hodiny reálneho času, v tomto prípade) pomocou funkcie Wire.read() toľkokrát, koľko bajtov je uvedené Wire.available() ktoré sú k dispozícii.

    8. Normálne sa dáta posielajú vo veľmi kompaktných formátoch, takže je veľmi pravdepodobné, že bude potrebné interpretovať prijaté dáta spôsobom, ktorý zodpovedá reprezentácii dát vytvorených v programe, ktorý používa zariadenie.

    Pokiaľ ide o DS3231 (a kompatibilné zariadenia z rovnakej série, ako napr DS3232) a interpretáciu údajov podľa špecifikácií integrovaného systému, napríklad hodnoty rôznych číslic, ktoré predstavujú čas, sú zastúpené v binárne kódované desiatkové číslo (BCD) ktorú bude vhodnejšie vyjadriť ako desatinnú hodnotu (a byte) použiť v Arduino

    Na rovnakom riadku je teplota vyjadrená ako byte in dvojkový doplnok pre celočíselnú časť a dva bity pre krok s rozlíšením štvrť stupňa desatinnej časti. Tieto a ďalšie aspekty reprezentácie údajov na hodinách boli podrobne diskutované v kóde knižnice nižšie. DS3231

    Ak chcete skontrolovať teplotu pomocou tejto knižnice, použite metódu read_temperature() objektu DS3231 inštanciované na začiatku. Na prečítanie dátumu a času sa najprv načítajú a potom sa vyžiadajú v jednom z formátov (kompaktný, ľudský...) dostupných na rôzne použitie, zdokumentované v hlavičkovom dokumente knižnice kódov nižšie.

    Nasleduje príklad kódu, ktorý ukazuje, ako používať knižnicu. Ako bolo uvedené vyššie, teplota sa jednoducho odčíta pomocou funkcie read_temperature() objektu triedy DS3231 ale na ignorovanie chýb v odčítaní sa používajú dve konštanty, ktoré uchovávajú maximálnu a minimálnu teplotu zariadenia podľa údajového listu a ktoré sa čítajú pomocou zodpovedajúcich funkcií.

    Odčítanie teploty prebieha v dvoch fázach: najprv sa načíta hodnota, takže rôzne použitia dátumu alebo času budú konzistentné (neukážu vyššiu hodnotu v nepriaznivých prípadoch) a po druhé sa použije podľa formátu, ktorý je potrebné. Vzorový program (ktorý nie je veľmi praktický, hoci vysvetľuje všetky možnosti) zobrazuje všetky dostupné formáty

    • Funkcia date_time_value() ktorý vráti ukazovateľ na pole spáliť (bajty) obsahujúce sedem číselných hodnôt, ktoré predstavujú dátum a čas na hodinách DS3231 prevedené na desatinné číslo (sú v BCD na zariadení)

    • Pomocou funkcie číslo_dní v týždni() Získa sa hodnota, ktorá zodpovedá číslu dňa v týždni, ktorý začína nedeľou. Ak ho chcete zobraziť ako text, použije sa pole a jeden sa odčíta, aby sa začalo na indexe nula, v nedeľu.

    • Ak chcete zobraziť dátum v „miestnom“ (španielskom) formáte, použite funkciu human_date(), ktorý vráti ukazovateľ na reťazec, v ktorom je dátum zastúpený vo formáte DD/MM/RRRR, kde DD je deň reprezentovaný 2 číslicami, MM je mesiac s 2 číslicami a RRRR je rok so 4 číslicami.

    • Funkcia ľudská_hodina() vráti čas vo formáte hh:mm:ss, pričom hh je hodina (vo formáte 24) reprezentovaná 2 číslicami, mm sú minúty s 2 číslicami a ss sú sekundy s 2 číslicami.

    • Na jednoduché používanie dátumu a času log súbory funkcia bola naprogramovaná kompaktný_dátum_čas(), ktorý dodáva hodnotu dátumu a času vo formáte RRMMDDhhmmss, pričom AA je rok reprezentovaný poslednými 2 číslicami, MM mesiac 2 číslicami, DD deň 2 číslicami, hh hodina (vo formáte 24) 2 číslice, mm minúty s 2 číslicami a ss sekundy s 2 číslicami. Tento formát, aj keď ide o text, zaberá málo miesta a umožňuje veľmi jednoduché abecedné zoradenie.

    • Funkcia dátum_čas_MySQL() slúži na zobrazenie dátumu a času vo formáte používanom správcom databázy MySQL (alebo nové a slobodnejšie mariadb) RRRR-MM-DD hh:mm:ss, kde RRRR je rok znázornený 4 číslicami, MM je mesiac s 2 číslicami, DD je deň s 2 číslicami, hh je hodina (vo formáte 24) s 2 číslicami , mm sú minúty s 2 číslicami a sekundy s 2 číslicami.

    Hoci existuje veľa formátov, pomocou ktorých je možné znázorniť dátum a čas, ten, ktorý potrebujete, tam nemusí byť, ale určite na základe jedného z existujúcich a na jeho príklade bude ľahké pridať novú metódu podľa iné špecifikácie. Prosím, ak pridáte nové funkcie, zdieľajte kód (uvoľnite ho!) a vysvetlite nám, ako to funguje, aby sme mohli knižnicu postupne zlepšovať. Ďakujeme!

    Výstup vyššie uvedeného vzorového programu môže byť niečo ako to, čo je zobrazené na nasledujúcom obrázku: zoznam 7 hodnôt (sekundy, minúty, hodiny, deň v týždni, deň v mesiaci, mesiac a rok) dátum a čas vyjadrený „ľudsky“ (podľa španielskeho štýlu) čas ako celé číslo v štvorcifernom formáte hodín, dátum a čas v databázovom formáte MySQL, dátum a čas v kompaktnom formáte (napr Záznamy) a vnútornú teplotu DS3231.

    Výstupná knižnica konzoly Arduino hodiny reálneho času (RTC) a teplota DS3231 cez zbernicu I2C

    Pridať komentár

    Možno ste zmeškali