V tomto tutoriálu vytvoříme digitální hodiny propojením RTC modulu DS3231 s MSP430 a zobrazením času a data na 16x2 LCD. MSP-EXP430G2 je vývojový nástroj aka LaunchPad poskytovaný společností Texas Instruments k učení a procvičování používání jejich mikrokontrolérů. Tato deska spadá do kategorie MSP430 Value Line, kde můžeme programovat všechny mikroprocesory řady MSP430. Pokud jste v oblasti MSP noví, podívejte se na náš úvod do kurzu MSP430.
Potřebné materiály:
- MSP430
- Modul RTC DS3231
- POT -10k
- LCD modul 16 * 2
- Připojovací vodiče
- Nepájivá deska
Co je RTC ??
DS3231 je modul RTC (hodiny reálného času). Používá se k udržení data a času pro většinu projektů elektroniky. Tento modul má vlastní napájecí zdroj knoflíkových článků, pomocí kterého udržuje datum a čas, i když je odpojeno hlavní napájení nebo MCU prošel tvrdým resetem. Jakmile tedy v tomto modulu nastavíme datum a čas, bude to vždy sledovat. Existuje několik typů integrovaných obvodů RTC, jako jsou DS1307, DS3231 atd.
Dříve jsme RTC používali s dalšími mikrokontroléry v níže uvedených projektech:
Poznámka: Při prvním použití tohoto modulu musíte nastavit datum a čas. Můžete také použít RTC IC DS1307, dříve jsme používali DS1307 s Arduino.
Připojení DS3231 RTC k MSP430:
Schéma zapojení digitálních hodin založených na mikrokontroléru MSP430 je uvedeno níže. Jak již bylo řečeno, DS3231 pracuje pomocí komunikace I2C, takže bude mít kolík Serial Clock (SCL) a Serial Data (SDA), který musí být připojen k kolíkům I2C na našem MSP430, což je kolík 9 (PIN 2.1, SCL) a kolík 10 (PIN 2.2, SDA).
MSP430 dává 3,3 V Vcc, ale pro připojení k LCD a RTC modulu potřebujeme 5V. Použijeme tedy hack, u konektoru kabelu USB je k dispozici propojka s názvem TP1. Odtud můžete vzít 5V.
Kruhový diagram:
Programování MSP430 pro modul RTC:
Zde používáme pro programování Energia IDE. Je to stejné jako Arduino IDE a snadno se používá. Pokud jste v oblasti MSP a energií nováčkem, projděte si úvodní informace o používání MSP pomocí nástroje Energia IDE. Pro rozhraní modulu RTC potřebujeme knihovnu pro tuto desku. Stáhněte si knihovnu RTC z tohoto odkazu a nainstalujte ji.
Potřebujeme také knihovny Wire (používané pro komunikaci I2C) a knihovny tekutých krystalů, které jsou předinstalovány v Energia IDE.
Kompletní kód pro tyto digitální hodiny MSP430 je uveden na konci tohoto článku. Kód je jednoduchý a snadno srozumitelný. Zde vysvětlujeme několik jeho částí.
Nejprve musíme zahrnout potřebné knihovny.
Níže uvedená knihovna slouží pro komunikaci I2C mezi modulem RTC a MSP430. V této knihovně jsou již definovány piny SDA a SCK, takže tyto piny nemusíme deklarovat samostatně.
#zahrnout
Pak jsme zahrnuli knihovnu RTClib.h pro hodiny RTC a LiquidCrystal.h pro funkce LCD.
#include "RTClib.h" #include
Poté musíme vytvořit instanci pro inicializaci našeho modulu RTC.
RTC_DS3231 rtc;
Poté vytvořte pole o velikosti 7 a uložte do něj všech sedm dní se jménem.
char daysOfTheWeek = {"neděle", "pondělí", "úterý", "středa", "čtvrtek", "pátek", "sobota"};
Zde je prohlášení o pinech MSP430, které má LCD displej používat: (RS (P2.0), EN (P1.4), D4 (P1.5), D5 (P2.3), D6 (P2.4), D7 (P2.5))
LiquidCrystal lcd (8, 6, 7,11,12,13);
V void setup () , jsme inicializaci rozhraní k použití LCD displeje a RTC a specifikovány rozměry (šířka a výška) displeje, begin ()
musí být volána před jakýmikoli jinými příkazy knihovny.
void setup () { lcd.begin (16, 2); lcd.setCursor (3,0); lcd.print ("hodiny RTC"); zpoždění (3000); lcd.clear (); rtc.begin (); // rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); }
Nyní je čas zobrazený na displeji správný, ale je tu problém, pokaždé, když restartujete / resetujete svůj mikrokontrolér, LCD zobrazí čas, kdy jste nahráli kód. Důvodem je, že funkce rtc.adjust () uložila čas vašeho počítače, takže při resetování začne s tímto časem.
Chcete-li tento problém vyřešit, nejprve nahrajte program s funkcí rtc.adjust () bez komentáře. Poté okamžitě okomentujte stejný řádek a znovu nahrajte program. Nyní je nastaveno datum a čas a resetování mikrokontroléru na něj nebude mít vliv.
Ve funkci smyčky vezmeme datum a čas z modulu RTC a uložíme do předdefinované proměnné zvané now a zobrazíme ji na LCD pomocí funkce lcd.print () .
void loop () { DateTime now = rtc.now (); lcd.clear (); lcd.setCursor (3,0); lcd.print (now.day (), DEC); lcd.print ("/");…. …….
Kompletní kód a video jsou uvedeny níže.