- Mga Materyal na Kinakailangan:
- Ano ang RTC ??
- Pagkonekta sa DS3231 RTC sa MSP430:
- Programming MSP430 para sa RTC Module:
Sa tutorial na ito gagawa kami ng isang Digital Clock sa pamamagitan ng interfacing RTC module DS3231 sa MSP430 at ipakita ang oras at petsa sa 16x2 LCD. Ang MSP-EXP430G2 ay isang Development Tool aka LaunchPad na ibinigay ng Texas Instruments upang matuto at magsanay sa kung paano gamitin ang kanilang Microcontrollers. Ang lupon na ito ay nasa ilalim ng kategorya ng Halaga ng MSP430 Halaga kung saan maaari naming mai-program ang lahat ng mga serye ng Microcontroller ng MSP430. Kung bago ka sa MSP pagkatapos suriin ang aming pagsisimula sa tutorial ng MSP430.
Mga Materyal na Kinakailangan:
- MSP430
- Modulong DS3231 RTC
- POT -10k
- LCD Modyul 16 * 2
- Mga kumokonekta na mga wire
- Breadboard
Ano ang RTC ??
Ang DS3231 ay isang RTC (Real Time Clock) na module. Ginagamit ito upang mapanatili ang petsa at oras para sa karamihan ng mga proyekto sa Elektronika. Ang module na ito ay may sariling coin cell power supply na ginagamit kung saan pinapanatili nito ang petsa at oras kahit na ang pangunahing lakas ay tinanggal o ang MCU ay dumaan sa isang hard reset. Kaya't sa sandaling itinakda namin ang petsa at oras sa modyul na ito ay susubaybayan ito palagi. Mayroong maraming uri ng mga RTC IC na magagamit tulad ng DS1307, DS3231 atbp.
Ginamit namin dati ang RTC sa Ibang mga microcontroller sa mga ibaba na proyekto:
Tandaan: Kapag ginagamit ang modyul na ito sa kauna-unahang pagkakataon kailangan mong itakda ang petsa at oras. Maaari mo ring gamitin ang RTC IC DS1307, dati naming ginamit ang DS1307 kasama ang Arduino.
Pagkonekta sa DS3231 RTC sa MSP430:
Ang diagram ng circuit para sa MSP430 Microcontroller batay sa Digital Clock ay ibinibigay sa ibaba. Tulad ng sinabi nang mas maaga ang DS3231 ay gumagana sa tulong ng komunikasyon ng I2C kaya magkakaroon ito ng Serial Clock (SCL) at isang Serial Data (SDA) na pin na dapat na konektado sa mga pin ng I2C sa aming MSP430 na kung saan ay ang pin 9 (PIN 2.1, SCL) at pin 10 (PIN 2.2, SDA).
Nagbibigay ang MSP430 ng 3.3V Vcc ngunit kailangan namin ng 5V upang ikonekta ito sa LCD at RTC module. Kaya, gagamit kami ng isang pag-hack, mayroong isang magagamit na lumulukso na pinangalanan bilang TP1 malapit sa konektor ng USB cable. Maaari kang kumuha ng 5V mula doon.
Diagram ng Circuit:
Programming MSP430 para sa RTC Module:
Narito ginagamit namin ang Energia IDE para sa pag-program. Kapareho ito ng Arduino IDE at madaling gamitin. Kung bago ka sa MSP at energia, pagkatapos ay magsimula sa pagsisimula sa MSP gamit ang Energia IDE. Upang mai-interface ang module ng RTC kailangan namin ng library para sa board na ito. I-download ang RTC library mula sa link na ito at i-install ito.
Kailangan din namin ang Wire (ginagamit para sa komunikasyon ng I2C) at mga library ng liquidcrystal na na-preinstall sa Energia IDE.
Kumpletuhin ang code para sa MSP430 digital na orasan na ito ay ibinigay sa pagtatapos ng artikulong ito. Ang code ay simple at madaling maunawaan. Narito ipinapaliwanag namin ang ilang bahagi nito.
Una, kailangan nating isama ang mga kinakailangang aklatan.
Sa ibaba ng library ay para sa komunikasyon ng I2C sa pagitan ng module ng RTC at MSP430. Ang mga pin ng SDA at SCK ay tinukoy na sa library na ito, kaya hindi namin kailangang ideklara nang magkahiwalay ang mga pin na ito.
# isama
Pagkatapos ay isinama namin ang RTClib.h library para sa RTC na orasan at LiquidCrystal.h para sa mga pagpapaandar ng LCD.
# isama ang "RTClib.h" # isama
Pagkatapos nito, kailangan naming lumikha ng isang halimbawa upang simulan ang aming module na RTC.
RTC_DS3231 rtc;
Pagkatapos ay gumawa ng isang hanay ng laki ng 7 at iimbak ang lahat ng pitong araw na may pangalan dito.
char daysOfTheWeek = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
Narito ang pagdeklara ng Pins ng MSP430 upang magamit ng LCD display: (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);
Sa void setup () , nasimulan namin ang interface sa LCD screen at RTC at tinukoy ang mga sukat (lapad at taas) ng display, simulan ang ()
kailangang tawagan bago ang anumang iba pang mga utos sa library.
void setup () { lcd.begin (16, 2); lcd.setCursor (3,0); lcd.print ("RTC Clock"); pagkaantala (3000); lcd.clear (); rtc.begin (); // rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); }
Ngayon, ang oras na ipinapakita sa display ay tama ngunit mayroong isang problema, sa tuwing i-restart / i-reset mo ang iyong microcontroller, ipapakita ng LCD ang Oras kung saan mo na-upload ang code. Ito ay dahil ang function ng rtc.adjust () ay nakaimbak ng oras ng iyong computer, kaya kapag nag-reset ka, nagsisimula ito sa oras na iyon.
Upang ayusin ang problemang ito, i-upload muna ang programa na may function na rtc.adjust () na hindi kumpleto . Pagkatapos, agad na magkomento sa parehong linya at i-upload muli ang programa. Ngayon, ang iyong petsa at oras ay nakatakda at hindi maaapektuhan ng pag-reset ng microcontroller.
Sa pag- andar ng loop ay tumatagal kami ng petsa at oras mula sa module ng RTC at iimbak sa paunang natukoy na variable na tinatawag na ngayon at ipakita ito sa LCD gamit ang lcd.print () function.
void loop () { DateTime now = rtc.now (); lcd.clear (); lcd.setCursor (3,0); lcd.print (now.day (), DEC); lcd.print ("/");…. …….
Ang kumpletong code at Video ay ibinibigay sa ibaba.