Raspberry Pi පාඩම : Tiny RTC මොඩියුල සවි කරමු

             Raspberry Pi කියන්නෙ මයික්‍රොකොන්ට්‍රෝලර් වලට වඩා එහා ගියපු පහසුකම් තියෙන පරිගණක උපාංඟයක් කියලා ගොඩක් දෙනෙක් දන්නවා ඇති. ඉතිං මේ වටිනා කියන උපකරණයෙන් කරන්න පුළුවන් වැඩ ගොඩයි. ඉතිං ඒ දේවල් වලින්  දන්න දේවල් ටික මේ විදිහට කියලා දෙන්න හිතුවා.
                       Raspberry Pi බෝඩ් එක එකලස් කරගන්න විදිහ ගැන, ඒකෙ අනෙක් විස්තර ගැනත් පෝස්ට් එකක් නොලිය මේකෙන් කරන වැඩ ගැන විතරක් ලියන්න හිතුවා. ඒත් කෙනෙක්ට ඕනි නම් ඒ ගැන දැනගන්න, අලුත් පෝස්ට් එකකින් කියලා දෙන්න පුළුවන්.
                        Raspberry Pi කියන්නෙ අඩු මිලට දෙන්න හදපු, ගොඩක්ම IoT වගේ project එක්ක වැඩ කරන්න හදපු පරිගණකයක්. ඉතිං ඒකට සාමාන්‍ය පරිගණකවල එනවා වගේ Hardware Clock එකක් නෑ. මේ හින්දා RPi බෝඩ් එකේ වෙලාව ඉන්ටනෙට් එකට සම්බන්ධ වුණාම ඉබේම ntp (nework time protocol) හරහා දිනය, වෙලාව අප්ඩේට් වෙනවා. ඒත් ඉතිං ඉන්ටනෙට් නැති හැම වෙලාවටම මේකෙ වෙලාව වෙනස් වෙනවා. ඒකට විසඳුමක් විදිහට අපිට Tiny RTC මොඩියුල් එකක් RPi බෝඩ් එකට හයි කරගන්න පුළුවන්.

Tiny RTC මොඩියුලය ගැන.
                  Tiny RTC (Real Time Clock) කියන්නේ DS1307  කියන චිප් එක (DS3231, PCF8523 මොඩල් එකේ චිප් එහෙමත් තියෙනවා) පාදක කරගෙන හදපු කුඩා ඩිජිටල් ඔරලෝසුවක්. මේකත් එක්ක සන්නිවේදනයට I2C protocol එක භාවිතා වෙනවා.විදුලිය නැති වෙලාවට වැඩ කරන්න කොම්පියුටර් වල තියෙන වර්ගයේ, CR1225 කියන ලිතියම් බැටරි කෑල්ලක් මේ මොඩියුල් එකත් එක්ක එනවා.
වයරින් කරන හැටි.
                     මොඩියුල් එක කෙලින්ම බෝඩ් එක පාස්ස ගන්නෙ නැතුව බ්‍රෙඩ් බෝඩ් එකක ටෙස්ට් කරන්න. මොඩියුල් එකේ VCC, GND, SDA, SCL, DS විදිහට  පින් 5 ක් බලා ගන්න පුළුවන්. ඒකෙන් DS කියන පින් එක හැර අනෙක් පින් රාස්බෙරි බෝඩ් එකට සම්බන්ධ කරගන්න ඕනි.

VCC - 5v  (PCF8523 හෝ DS3231 නම් 3.3v වලට)
GND - GND
SDA - RPi හි GPIO හි ඇති SDA පින් එකට
SCL - RPi හි GPIO හි ඇති SCL පින් එකට
raspberry_pi_ds1307.gif
(learn.adafruit.com)

රාස්බෙරි බෝඩ් එක සූදානම් කිරීම
        මුලින්ම රාස්බෙරි බෝඩ් එකේ I2C සක්‍රිය කරන්න ඕනි. I2C වල තියෙන විශේෂත්වය තමයි දත්ත ගමන් කරන්න වයර් දෙකක් විතරක් වගේම අනෙක් සියලු මොඩියුලත් ඒ වයර් දෙකටම සම්බන්ධ කරන්න පුළුවන් වෙන එක. ඒ හැම මොඩියුල් එකකටම අනන්‍ය වුණු ලිපිනයක් ලැබෙනවා.
        දැන් I2C enable කරන විදිහ බලමු. ඒකට මුලින්ම පහලින් තියන කමාන්ඩ් දෙක ටර්මිනල් එකේ ටයිප් කරන්න. ඒ I2C වලට ඕනි කරන පැකේජ දෙකක් ඉන්ස්ටෝල් කරන්න.

sudo apt-get install -y python-smbus

sudo apt-get install -y i2c-tools

                  දැන් sudo raspi-config කියන කමාන්ඩ් එක ටයිප් කරලා RPi Configuration වින්ඩෝ එක ඕපන් කරගන්න ඕනි. 
 learn_raspberry_pi_interfacing.png
ඊට පස්සේ Interfacing Options තෝරගෙන්න (පරණ os එකේ Advanced Options) 
 learn_raspberry_pi_advancedopt.png
ඒකෙන් I2C තෝරලා Enable කරන්න ඕනි. 
learn_raspberry_pi_i2c.png
learn_raspberry_pi_wouldyoukindly.png
                          දැන් වැඩේ හරි..ඊළඟට sudo reboot කමාන්ඩ් එකෙන් RPi එක Reboot කරන්න ඕනි. රීබූට් උනාට පස්සේ ටර්මිනල් එකේ sudo i2cdetect -y 1 (පරණ os එකේ sudo i2cdetect -y 0) ටයිප් කරලා enter කරාම මෙන්න මේ වගේ output එකක් එනවනම් වැඩේ සාර්ථකයි. ඒ වෙලාවෙ මොඩියුල් එක සම්බන්ධ කරන්නෙ නැතුව මේක කරලා බලන්න.
learn_raspberry_pi_i2c-detect.png

මොඩියුල් එක චෙක් කරමු
                  උඩින් කියපු විදිහට මොඩියුල් එක සම්බන්ධ කරලා sudo i2cdetect -y 1 කමාන්ඩ් එක ටර්මිනල් එකේ දුන්නම මෙන්න මේ විදිහට 0x68 කියලා ඇඩ්‍රස් එකක් පෙන්නවනම් වැඩේ ගොඩ.!
raspberry_pi_addr68.gif

කමාන්ඩ් වැඩ ටික
                                       හාඩ්වෙයා වැඩ ටික හරියට කරානම් දැන් මේ විදිහට RPi එකට Tiny RTC එක හඳුන්වලා දෙන්න පුළුවන්. මුලින්ම sudo nano /boot/config.txt කියලා කමාන්ඩ් එක දීලා configuration එකට යන්න ඕනි. එතනදී # ලකුණ නැති හිස් තැනක පහලින් දීලා තියෙන කමාන්ඩ් වලින් තමන්ගෙ ලඟ තියෙන මොඩියුල් එකේ චිප්  එකට අදාල කමාන්ඩ් එක දෙන්න ඕනි.

DS1307 නම් → dtoverlay=i2c-rtc,ds1307
PCF8523 නම් → dtoverlay=i2c-rtc,pcf8523
DS3231 නම් → dtoverlay=i2c-rtc,ds3231

raspberry_pi_dtoverlay.png
                  ඊට පස්සේ Ctrl+X ඔබලා exit වෙනකොට ෆයිල් එක සේව් කරන්න අහයි. ඒකෙදි y අකුර ටයිප් කරලා enter කරන්න. ඊලඟට sudo i2cdetect -y 1 කමාන්ඩ් එක ආයෙත් ටර්මිනල් එකේ දුන්නම කලින් තිබුණ 0x68 කියන එක 0xUU කියලා වෙනස් වෙලා තියෙනවා පෙනේවි.
raspberry_pi_UU.png
                       දැන් කරන්න තියෙන්නෙ කලින් තිබුණ fake hwclock එක වෙනුවට මේ අලුත් 'real' hwclock එක සෙටප් කරන එක. ඒක කරන්න මෙන්න මේ කමාන්ඩ් ටික පිළිවෙලට ටර්මිනල් එකේ දෙන්න ඕනි.

sudo apt-get -y remove fake-hwclock
sudo update-rc.d -f fake-hwclock remove
sudo systemctl disable fake-hwclock
raspberry_pi_removehwclock.png
                  දැන් fake hwclock එක off වෙලා තියෙන නිසා තවත් ඒක වැඩ කරන්නේ නෑ. ඒ නිසා sudo nano /lib/udev/hwclock-set කමාන්ඩ් එක දීලා ඒකෙ පහලින් දීලා තියෙන කමාන්ඩ් එක # දාලා කමෙන්ට් කරන්න ඕනි.

#if [ -e /run/systemd/system ] ; then
# exit 0
#fi
raspberry_pi_hwclock-set.png
ඔරලෝසුවේ වෙලාව හදමු.
             sudo hwclock -D -r කියන කමාන්ඩ් එකෙන් ඕනෙම වෙලාවක RPi එකේ වෙලාව කියවන්න පුලුවන්. 
raspberry_pi_invalidclok.png
                      ඒත් සමහරවිට වෙලාව වැරදී ඇති. ඒ අලුතින් එකතු කරපු මොඩියුල් එකේ වෙලාව හරියට හදලා නැති නිසා. මුලින්ම date කියන කමාන්ඩ් එක දීලා වෙලාව හරිද කියලා බලන්න. වැරදියි නම්, RPi එක ඉන්ටනෙට් එකට කනෙක්ට් කරලා sudo hwclock -w ටයිප් කරලා enter කරන්න. ඒකෙන් මොඩියුල් එකේ වෙලාව update වෙයි.  දැන් ආයෙත් date කියල ගහලා බලන්න වැඩේ හරි ඇති. ඊලඟ සැරේ RPi එක ඔන් කරනකොට ඉන්ටනෙට් නැතත් වෙලාව වැඩ.!

5 Comments

Blogger profile එකෙන් comment දාන්න ගැටලුවක් තියෙනවනම් මේ ලිපිය කියවන්න.

  1. ඔහේ මේ Piයක් ගැන කතාකරනව. ඊට කලින් ආඩියුනෝ කරල ඉන්න එපැයි. හැක්..

    ReplyDelete
    Replies
    1. ඊටත් කලින් ලයිට් බිල ගෙවලා ඉන්න එපැයි හැක්..!

      Delete
    2. Praසන්னයා,

      ඇහක්නං මේං මේකට ගොහිං බලන්ට හිටං

      https://www.sites.google.com/site/unoardusim/services

      Delete
  2. අපි නොදන්න Piයක් ගැන කතාකරනව. අපොයි මට නම් පෙනෙන්නේ තැපැල් මගින් ග‍්‍රික් ඉගෙන ගන්නවා වාගේ.

    ReplyDelete
    Replies
    1. අපොයි..! එච්චරටම අවුල්ද අප්පා..?

      Delete
Previous Post Next Post

Recent Post

Features