- Vereiste materialen:
- Wat is RTC ??
- De DS3231 RTC verbinden met MSP430:
- MSP430 programmeren voor RTC-module:
In deze tutorial maken we een digitale klok door de RTC-module DS3231 te koppelen aan MSP430 en de tijd en datum weer te geven op een 16x2 LCD. De MSP-EXP430G2 is een Development Tool, ook wel LaunchPad genoemd, geleverd door Texas Instruments om te leren en te oefenen met het gebruik van hun microcontrollers. Dit bord valt onder de categorie MSP430 Value Line waar we alle MSP430 serie microcontrollers kunnen programmeren. Als u nieuw bent bij MSP, bekijk dan onze handleiding Aan de slag met MSP430.
Vereiste materialen:
- MSP430
- DS3231 RTC-module
- POT -10k
- LCD-module 16 * 2
- Draden aansluiten
- Breadboard
Wat is RTC ??
DS3231 is een RTC- module (Real Time Clock). Het wordt gebruikt om de datum en tijd bij te houden voor de meeste elektronicaprojecten. Deze module heeft zijn eigen knoopcelvoeding waarmee hij de datum en tijd behoudt, zelfs wanneer de hoofdstroom is verwijderd of de MCU een harde reset heeft ondergaan. Dus zodra we de datum en tijd in deze module hebben ingesteld, houdt deze deze altijd bij. Er zijn verschillende soorten RTC IC's beschikbaar zoals DS1307, DS3231 etc.
We hebben RTC eerder gebruikt met andere microcontrollers in onderstaande projecten:
Let op: Als u deze module voor het eerst gebruikt, moet u de datum en tijd instellen. Je kunt ook RTC IC DS1307 gebruiken, we hebben eerder DS1307 gebruikt met Arduino.
De DS3231 RTC verbinden met MSP430:
Het schakelschema voor MSP430 Microcontroller gebaseerde digitale klok wordt hieronder gegeven. Zoals eerder verteld werkt de DS3231 met behulp van I2C-communicatie, dus hij heeft een Serial Clock (SCL) en een Serial Data (SDA) -pin die moet worden verbonden met de I2C-pinnen op onze MSP430, de pin 9 (PIN 2.1, SCL) en pin 10 (PIN 2.2, SDA).
MSP430 geeft 3.3V Vcc, maar we hebben 5V nodig om het te verbinden met LCD en RTC-module. Dus we zullen een hack gebruiken, er is een jumper beschikbaar genaamd TP1 in de buurt van de USB-kabelconnector. Je kunt vanaf daar 5V nemen.
Schakelschema:
MSP430 programmeren voor RTC-module:
Hier gebruiken we Energia IDE voor het programmeren. Het is hetzelfde als Arduino IDE en gemakkelijk te gebruiken. Als MSP en energia nieuw voor je zijn, ga dan door met het aan de slag gaan met MSP met Energia IDE. Om de RTC-module te koppelen hebben we een bibliotheek nodig voor dit bord. Download de RTC-bibliotheek via deze link en installeer deze.
We hebben ook Wire (gebruikt voor I2C-communicatie) en liquidcrystal- bibliotheken nodig die vooraf zijn geïnstalleerd in Energia IDE.
De volledige code voor deze MSP430 digitale klok vindt u aan het einde van dit artikel. Code is eenvoudig en gemakkelijk te begrijpen. Hier leggen we enkele delen ervan uit.
Ten eerste moeten we de nodige bibliotheken opnemen.
Onderstaande bibliotheek is voor I2C-communicatie tussen RTC-module en MSP430. SDA- en SCK-pinnen zijn al gedefinieerd in deze bibliotheek, dus we hoeven deze pinnen niet afzonderlijk te declareren.
# omvatten
Vervolgens hebben we de RTClib.h- bibliotheek voor RTC-klok en LiquidCrystal.h voor LCD-functies toegevoegd.
#include "RTClib.h" #include
Hierna moeten we een instantie maken om onze RTC-module te initialiseren.
RTC_DS3231 rtc;
Maak vervolgens een array van maat 7 en bewaar alle zeven dagen met de naam erin.
char daysOfTheWeek = {"zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"};
Hier is de PIN-verklaring van MSP430 voor gebruik op het LCD-scherm: (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);
In void setup () hebben we de interface naar het LCD-scherm en RTC geïnitialiseerd en de afmetingen (breedte en hoogte) van het scherm gespecificeerd, begin ()
moet worden aangeroepen vóór andere bibliotheekopdrachten.
leegte setup () { lcd.begin (16, 2); lcd.setCursor (3,0); lcd.print ("RTC Clock"); vertraging (3000); lcd.clear (); rtc.begin (); // rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); }
Nu is de weergegeven tijd correct, maar er is een probleem. Elke keer dat u uw microcontroller herstart / reset, zal het LCD-scherm de tijd weergeven waarop u de code heeft geüpload. Dit komt doordat de functie rtc.adjust () de tijd van uw computer heeft opgeslagen, dus wanneer u een reset uitvoert , begint het met die tijd.
Om dit probleem op te lossen, upload je het programma eerst met de functie rtc.adjust () zonder commentaar. Geef dan onmiddellijk commentaar op dezelfde regel en upload het programma opnieuw. Nu zijn uw datum en tijd ingesteld en worden deze niet beïnvloed door het resetten van de microcontroller.
In loop- functie nemen we de datum en tijd van de RTC-module en slaan deze op in de vooraf gedefinieerde variabele die nu wordt genoemd en geven deze weer op het LCD-scherm met de functie lcd.print () .
void loop () { DateTime now = rtc.now (); lcd.clear (); lcd.setCursor (3,0); lcd.print (now.day (), DEC); lcd.print ("/");…. …….
Volledige code en video wordt hieronder gegeven.