- Materiais requisitados:
- O que é RTC ??
- Conectando o DS3231 RTC com MSP430:
- Programando MSP430 para Módulo RTC:
Neste tutorial faremos um relógio digital através da interface do módulo RTC DS3231 com o MSP430 e exibiremos a hora e a data em um LCD 16x2. O MSP-EXP430G2 é uma ferramenta de desenvolvimento também conhecida como LaunchPad fornecida pela Texas Instruments para aprender e praticar como usar seus microcontroladores. Esta placa se enquadra na categoria de Linha de valor MSP430, onde podemos programar todos os microcontroladores da série MSP430. Se você é novo no MSP, verifique nosso tutorial de introdução ao MSP430.
Materiais requisitados:
- MSP430
- Módulo DS3231 RTC
- POT -10k
- Módulo LCD 16 * 2
- Fios de conexão
- Tábua de pão
O que é RTC ??
DS3231 é um módulo RTC (Real Time Clock). É usado para manter a data e a hora da maioria dos projetos de Eletrônica. Este módulo tem sua própria fonte de alimentação de célula tipo moeda, usando a qual ele mantém a data e a hora mesmo quando a alimentação principal é removida ou o MCU passou por um hard reset. Assim, uma vez que definimos a data e a hora neste módulo, ele manterá o controle sempre. Existem vários tipos de ICs RTC disponíveis como DS1307, DS3231 etc.
Anteriormente, usamos RTC com outros microcontroladores nos projetos abaixo:
Nota: Ao usar este módulo pela primeira vez, você deve definir a data e a hora. Você também pode usar o RTC IC DS1307, já usamos o DS1307 com o Arduino.
Conectando o DS3231 RTC com MSP430:
O diagrama de circuito para relógio digital baseado em microcontrolador MSP430 é fornecido abaixo. Como dito anteriormente, o DS3231 funciona com a ajuda da comunicação I2C, então terá um pino de relógio serial (SCL) e um de dados serial (SDA) que deve ser conectado aos pinos I2C em nosso MSP430 que é o pino 9 (PIN 2.1, SCL) e pino 10 (PIN 2.2, SDA).
MSP430 fornece 3,3 V Vcc, mas precisamos de 5 V para conectá-lo com o módulo LCD e RTC. Portanto, usaremos um hack, existe um jumper disponível chamado TP1 próximo ao conector do cabo USB. Você pode tirar 5V de lá.
Diagrama de circuito:
Programando MSP430 para Módulo RTC:
Aqui estamos usando Energia IDE para programação. É o mesmo que o Arduino IDE e fácil de usar. Se você é novo no MSP e na energia, comece a usar o MSP usando o IDE Energia. Para fazer a interface do módulo RTC, precisamos de uma biblioteca para esta placa. Baixe a biblioteca RTC deste link e instale-a.
Também precisamos de Wire (usado para comunicação I2C) e bibliotecas de cristal líquido que estão pré-instaladas no Energia IDE.
O código completo para este relógio digital MSP430 é fornecido no final deste artigo. O código é simples e de fácil compreensão. Aqui estamos explicando algumas partes dele.
Primeiro, temos que incluir as bibliotecas necessárias.
A biblioteca abaixo é para comunicação I2C entre o módulo RTC e o MSP430. Os pinos SDA e SCK já estão definidos nesta biblioteca, portanto, não precisamos declarar esses pinos separadamente.
#incluir
Em seguida, incluímos a biblioteca RTClib.h para relógio RTC e LiquidCrystal.h para funções LCD.
#include "RTClib.h" #include
Depois disso, temos que criar uma instância para inicializar nosso módulo RTC.
RTC_DS3231 rtc;
Em seguida, faça um array de tamanho 7 e armazene todos os sete dias com o nome nele.
char daysOfTheWeek = {"Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"};
Aqui está a declaração dos pinos de MSP430 a ser usada pelo 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);
Em void setup () , inicializamos a interface para a tela LCD e RTC e especificamos as dimensões (largura e altura) da tela, begin ()
precisa ser chamado antes de quaisquer outros comandos da biblioteca.
configuração vazia () { lcd.begin (16, 2); lcd.setCursor (3,0); lcd.print ("RTC Clock"); atraso (3000); lcd.clear (); rtc.begin (); // rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); }
Agora, o tempo mostrado no display está correto, mas há um problema, toda vez que você reiniciar / redefinir seu microcontrolador, o LCD mostrará a hora em que você carregou o código. Isso ocorre porque a função rtc.adjust () armazenou a hora do seu computador, portanto, quando você redefine, ela começa com essa hora.
Para corrigir esse problema, primeiro carregue o programa com a função rtc.adjust () não comentada. Em seguida, comente imediatamente a mesma linha e carregue o programa novamente. Agora, sua data e hora estão definidas e não serão afetadas pela reinicialização do microcontrolador.
Na função de loop , pegamos a data e a hora do módulo RTC e armazenamos na variável predefinida chamada now e a exibimos no LCD usando a função lcd.print () .
void loop () { DateTime now = rtc.now (); lcd.clear (); lcd.setCursor (3,0); lcd.print (now.day (), DEC); lcd.print ("/");…. …….
O código completo e o vídeo são fornecidos abaixo.