- Matériaux nécessaires:
- Qu'est-ce que RTC ??
- Connexion du DS3231 RTC au MSP430:
- Programmation du MSP430 pour le module RTC:
Dans ce tutoriel, nous allons créer une horloge numérique en interfaçant le module RTC DS3231 avec MSP430 et afficher l'heure et la date sur un écran LCD 16x2. Le MSP-EXP430G2 est un outil de développement aka LaunchPad fourni par Texas Instruments pour apprendre et s'exercer à utiliser leurs microcontrôleurs. Cette carte fait partie de la catégorie MSP430 Value Line où nous pouvons programmer tous les microcontrôleurs de la série MSP430. Si vous êtes nouveau sur MSP, consultez notre tutoriel de démarrage avec MSP430.
Matériaux nécessaires:
- MSP430
- Module DS3231 RTC
- POT -10k
- Module LCD 16 * 2
- Fils de connexion
- Planche à pain
Qu'est-ce que RTC ??
DS3231 est un module RTC (Real Time Clock). Il est utilisé pour maintenir la date et l'heure de la plupart des projets électroniques. Ce module dispose de sa propre alimentation à pile bouton à l'aide de laquelle il maintient la date et l'heure même lorsque l'alimentation principale est coupée ou que le MCU a subi une réinitialisation matérielle. Donc, une fois que nous avons défini la date et l'heure dans ce module, il en gardera toujours une trace. Il existe plusieurs types de circuits intégrés RTC disponibles tels que DS1307, DS3231, etc.
Nous avons précédemment utilisé RTC avec d'autres microcontrôleurs dans les projets ci-dessous:
Remarque: lorsque vous utilisez ce module pour la première fois, vous devez régler la date et l'heure. Vous pouvez également utiliser RTC IC DS1307, nous avons précédemment utilisé DS1307 avec Arduino.
Connexion du DS3231 RTC au MSP430:
Le schéma de circuit de l' horloge numérique basée sur le microcontrôleur MSP430 est donné ci-dessous. Comme indiqué précédemment, le DS3231 fonctionne à l'aide de la communication I2C, il aura donc une horloge série (SCL) et une broche de données série (SDA) qui doit être connectée aux broches I2C de notre MSP430 qui est la broche 9 (PIN 2.1, SCL) et la broche 10 (PIN 2.2, SDA).
Le MSP430 donne 3,3 V Vcc mais nous avons besoin de 5 V pour le connecter au module LCD et RTC. Donc, nous allons utiliser un hack, il y a un cavalier disponible nommé TP1 près du connecteur de câble USB. Vous pouvez prendre 5V à partir de là.
Schéma:
Programmation du MSP430 pour le module RTC:
Ici, nous utilisons Energia IDE pour la programmation. Il est identique à Arduino IDE et facile à utiliser. Si vous êtes nouveau dans MSP et energia, commencez par démarrer avec MSP en utilisant Energia IDE. Pour interfacer le module RTC, nous avons besoin d'une bibliothèque pour cette carte. Téléchargez la bibliothèque RTC à partir de ce lien et installez-la.
Nous avons également besoin de bibliothèques Wire (utilisées pour la communication I2C) et Liquidcrystal qui sont préinstallées dans Energia IDE.
Le code complet de cette horloge numérique MSP430 est donné à la fin de cet article. Le code est simple et facilement compréhensible. Nous en expliquons ici quelques parties.
Premièrement, nous devons inclure les bibliothèques nécessaires.
La bibliothèque ci-dessous concerne la communication I2C entre le module RTC et le MSP430. Les broches SDA et SCK sont déjà définies dans cette bibliothèque, nous n'avons donc pas à déclarer ces broches séparément.
#comprendre
Ensuite, nous avons inclus la bibliothèque RTClib.h pour l'horloge RTC et LiquidCrystal.h pour les fonctions LCD.
#include "RTClib.h" #include
Après cela, nous devons créer une instance pour initialiser notre module RTC.
RTC_DS3231 rtc;
Ensuite, créez un tableau de taille 7 et stockez tous les sept jours avec le nom.
char daysOfTheWeek = {"dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"};
Voici la déclaration des broches du MSP430 à utiliser par l'écran LCD: (RS (P2.0), EN (P1.4), D4 (P1.5), D5 (P2.3), D6 (P2.4), D7 (P2.5))
LCD LiquidCrystal (8, 6, 7, 11, 12, 13);
Dans void setup () , nous avons initialisé l'interface avec l'écran LCD et RTC et spécifié les dimensions (largeur et hauteur) de l'affichage, begin ()
doit être appelé avant toute autre commande de la bibliothèque.
void setup () { lcd.begin (16, 2); lcd.setCursor (3,0); lcd.print ("Horloge RTC"); retard (3000); lcd.clear (); rtc.begin (); // rtc.adjust (DateHeure (F (__ DATE__), F (__ HEURE__))); }
Maintenant, l'heure affichée à l'écran est correcte mais il y a un problème, chaque fois que vous redémarrez / réinitialisez votre microcontrôleur, l'écran LCD affichera l'heure à laquelle vous avez téléchargé le code. C'est parce que la fonction rtc.adjust () a stocké l'heure de votre ordinateur, donc lorsque vous réinitialisez, elle commence par cette heure.
Pour résoudre ce problème, téléchargez d'abord le programme avec la fonction rtc.adjust () non commentée . Ensuite, commentez immédiatement la même ligne et téléchargez à nouveau le programme. Maintenant, votre date et heure sont réglées et ne seront pas affectées par la réinitialisation du microcontrôleur.
Dans la fonction de boucle , nous prenons la date et l'heure du module RTC et les stockons dans la variable prédéfinie appelée now et l'affiche sur l'écran LCD à l'aide de la fonction lcd.print () .
void loop () { DateTime now = rtc.now (); lcd.clear (); lcd.setCursor (3,0); lcd.print (now.day (), DEC); lcd.print ("/");…. …….
Le code complet et la vidéo sont donnés ci-dessous.