اگه دقت کرده باشید روی مادربرد کامپیوتر یه باتری وجود داره و بصورت کلی همه میدونیم که وظیفه این قسمت نگهداری یه سری اطلاعات مثل زمان و تاریخه که با قطع شدن برق مادربرد نباید از بین بره. دستگاه رزبری پای این قطعه رو نداره و زمانی که دستگاه خاموش بشه و بعد از مدتی دوباره دستگاه روشن بشه آخرین زمانی که سیستم عامل داشته رو نشون میده مثلا اگه ساعت 8 شب خاموش بشه و 10 صبح دوباره روشن بشه دستگاه ساعت 8 شب رو نشون میده. اگه برق دستگاه قطع بشه ممکنه کلا تاریخ و ساعت ریست بشه و تاریخ نا مربوطی رو نشون میده .
زمانی که دسترسی به اینترنت وجود داشته باشه با انتخاب منطقه زمانی و فعال کردن automatic update این مشکل برطرف میشه و دستگاه تاریخ و زمان خودش رو آپدیت میکنه.
اخیرا پروژه ای داشتم که باید دستگاه توی ساعات مختلف کار های متفاوتی رو انجام میداد پروژه رو تماما با bash script نوشتم توی محیطی که دستگاه قرار میگرفت دسترسی به اینترنت نداشت و اگه به هر دلیل دستگاه خاموش میشد و یا برق قطع میشد تایم دستگاه بهم میریخت و پروژه شکست میخورد.
با پرس وجو هایی که انجام دادم متوجه شدم ماژولی برای اینکار وجود داره ولی این که این ماژول رو از کجا تهیه کنم و چجوری به رزبری پای متصلش کنم و چجوری برنامه نویسیش کنم کمی پیچیده به نظرم می رسید.
توی مطلب زیر نحوه استفاده از ماژول real-time clock در زربری پای رو آموزش دادم ممکنه یه روزی به دردتون بخوره.
نحوه اتصال این ماژول به رزبری پای بصورت زیر هستش از سیم هایی که مخصوص این ماژول ها هست استفاده کنید باید دو طرف مادگی باشه و نیازی به لحیم کاری هم نداره .
فقط پین های زیر رو به دستگاه متصل کنید و دقت کنید که دستگاه خاموش باشه وقتی اینکار رو میکنید.
پین SCL که Serial Clock Input هستش و مطابق شکل به سومین پین وصل میشه
پین SDA که Serial Data Input نام داره و مطابق شکل به دومین پین رزبری پای وصل میشه.
پین VCC که برق ورودی ماژول هست که باید به اولین پین رزبری پای که 3.3 ولت هست وصل بشه
پین GND اتصال به زمین هست که میتونید به یکی از پین های 9 یا 25 یا 39 وصل کنید.
توی اتصال پین ها دقت کنید که اگه اشتباه وارد کنید ماژول داغ میشه و یه سری کریستال هایی داره که روی اون وجود داره ممکنه بسوزه و دردسر درست بشه .
به پین های 32K و SQW هم کاری نداریم و متصلشون نمی کنیم. این ها کاربرد های دیگه ای دارن.
ابتدا دستگاه را بروزرسانی می کنیم و پیش نیاز های ماژول را نصب میکنیم.
باید در تنظیمات رزبری پای ماژول I2C را فعال کنید؛ دستور زیر را وارد می کنیم و Advanced Options را انتخاب و i2c را enable میکنیم.
· sudo raspi-config
فایل زیر را باز کرده
sudo nano /etc/modules
و مقادیر زیر را در ان قرار می دهیم
i2c-bcm2708
i2c-dev
rtc-ds1307
با دستور زیر Bus را تست میکنیم.
sudo i2cdetect -y 1
خروجی باید بصورت زیر باشد.
سپس در ادامه فایل زیر را باز کرده
sudo nano /etc/rc.local
مقادیر زیر را قبل از عبارت exit 0 قرار می دهیم.
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
hwclock -s
سپس دستگاه را ریبوت می کنیم .
Sudo reboot
بعد از بالا امدن دستگاه ساعت دستگاه را تنظیم کرده و با دستور sudo hwclock -w ساعت سیستم را به ماژول می دهیم.
با دستور sudo hwclock -r میتوانیم ساعت فعلی ماژول را بخوانیم.
امیدوارم این اموزش واستون مفید بوده باشه 😊
تمام