- Materiali richiesti:
- Cos'è RTC?
- Collegamento dell'RTC DS3231 con MSP430:
- Programmazione MSP430 per modulo RTC:
In questo tutorial realizzeremo un orologio digitale interfacciando il modulo RTC DS3231 con MSP430 e visualizzeremo l'ora e la data su LCD 16x2. MSP-EXP430G2 è uno strumento di sviluppo noto anche come LaunchPad fornito da Texas Instruments per apprendere ed esercitarsi su come utilizzare i propri microcontrollori. Questa scheda rientra nella categoria MSP430 Value Line dove possiamo programmare tutti i microcontrollori della serie MSP430. Se sei nuovo su MSP, controlla il nostro tutorial per iniziare con MSP430.
Materiali richiesti:
- MSP430
- Modulo RTC DS3231
- POT -10k
- Modulo LCD 16 * 2
- Cavi di collegamento
- Breadboard
Cos'è RTC?
DS3231 è un modulo RTC (Real Time Clock). Viene utilizzato per mantenere la data e l'ora per la maggior parte dei progetti di elettronica. Questo modulo dispone di un proprio alimentatore a celle a bottone che mantiene la data e l'ora anche quando l'alimentazione principale viene rimossa o l'MCU ha subito un hard reset. Quindi una volta impostate la data e l'ora in questo modulo, ne terrà sempre traccia. Sono disponibili diversi tipi di circuiti integrati RTC come DS1307, DS3231 ecc.
Abbiamo già utilizzato RTC con altri microcontrollori nei seguenti progetti:
Nota: quando si utilizza questo modulo per la prima volta è necessario impostare la data e l'ora. Puoi anche utilizzare RTC IC DS1307, abbiamo già utilizzato DS1307 con Arduino.
Collegamento dell'RTC DS3231 con MSP430:
Di seguito è riportato lo schema del circuito dell'orologio digitale basato su microcontrollore MSP430 . Come detto in precedenza, il DS3231 funziona con l'aiuto della comunicazione I2C quindi avrà un pin Serial Clock (SCL) e un pin Serial Data (SDA) che deve essere collegato ai pin I2C sul nostro MSP430 che è il pin 9 (PIN 2.1, SCL) e il pin 10 (PIN 2.2, SDA).
MSP430 fornisce 3,3 V Vcc ma abbiamo bisogno di 5 V per collegarlo con il modulo LCD e RTC. Quindi, useremo un hack, c'è un jumper disponibile chiamato TP1 vicino al connettore del cavo USB. Puoi prendere 5V da lì.
Schema elettrico:
Programmazione MSP430 per modulo RTC:
Qui stiamo usando Energia IDE per la programmazione. È lo stesso di Arduino IDE e facile da usare. Se sei nuovo in MSP ed energia, inizia a utilizzare MSP utilizzando Energia IDE. Per interfacciare il modulo RTC abbiamo bisogno della libreria per questa scheda. Scarica la libreria RTC da questo link e installala.
Abbiamo anche bisogno di librerie Wire (usate per la comunicazione I2C) e liquidcrystal preinstallate in Energia IDE.
Il codice completo per questo orologio digitale MSP430 è fornito alla fine di questo articolo. Il codice è semplice e facilmente comprensibile. Qui stiamo spiegando alcune parti di esso.
Innanzitutto, dobbiamo includere le librerie necessarie.
La libreria di seguito è per la comunicazione I2C tra il modulo RTC e MSP430. I pin SDA e SCK sono già definiti in questa libreria, quindi non è necessario dichiararli separatamente.
#includere
Quindi abbiamo incluso la libreria RTClib.h per l'orologio RTC e LiquidCrystal.h per le funzioni LCD.
#include "RTClib.h" #include
Dopodiché, dobbiamo creare un'istanza per inizializzare il nostro modulo RTC.
RTC_DS3231 rtc;
Quindi crea una matrice di dimensione 7 e memorizza tutti i sette giorni con il nome.
char daysOfTheWeek = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
Ecco la dichiarazione dei Pin di MSP430 da utilizzare sul display LCD: (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 () , abbiamo inizializzato l'interfaccia per lo schermo LCD e RTC e specificato le dimensioni (larghezza e altezza) del display, è necessario chiamare begin ()
prima di qualsiasi altro comando di libreria.
void setup () { lcd.begin (16, 2); lcd.setCursor (3,0); lcd.print ("RTC Clock"); ritardo (3000); lcd.clear (); rtc.begin (); // rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); }
Ora, l'ora visualizzata sul display è corretta ma c'è un problema, ogni volta che riavvii / ripristini il microcontrollore, il display LCD mostrerà l'ora in cui hai caricato il codice. Questo perché la funzione rtc.adjust () ha memorizzato l'ora del tuo computer, quindi quando ripristini, inizia con quell'ora .
Per risolvere questo problema, caricare prima il programma con la funzione rtc.adjust () non commentata. Quindi, commenta immediatamente la stessa riga e carica di nuovo il programma. Ora, la data e l'ora sono impostate e non saranno influenzate dal ripristino del microcontrollore.
Nella funzione loop prendiamo la data e l'ora dal modulo RTC e la memorizziamo nella variabile predefinita chiamata now e la visualizziamo sul display LCD utilizzando la funzione lcd.print () .
void loop () { DateTime now = rtc.now (); lcd.clear (); lcd.setCursor (3,0); lcd.print (now.day (), DEC); lcd.print ("/");…. …….
Di seguito sono riportati il codice completo e il video.