در پایان این آموزش قادر خواهید بود تا با استفاده از آردوینو ساعتی بسازید که توسط زمان منتشرشده از ماهواره های GPSتنظیم می شود. با ما همراه باشید.

این پروژه به شما نشان می دهد که چگونه می توانید با استفاده از کمترین وقت و هزینه ساعت دست ساز دلخواه تان را بسازید.
برای ساخت این ساعت دو راه وجود دارد. راه اول این است که زمان ساعت به صورت خودکار با گیرنده GPS تنظیم شود. تعداد زیادی ماهواره در مدار بالای زمین در حال چرخشند - و از ساعت های بسیار دقیقی استفاده می کنند و با استفاده از آن ها می توانید موقعیت خود را بر روی زمین به طور دقیق محاسبه نمایید. با دریافت سیگنال از این ماهواره ها، می توانید ساعت خود را به سادگی و با دقت بالا بسازید .
روش دوم برای ساخت این پروژه استفاده از ماژول  ساعت زمان واقعی با باتری پشتیبان (battery-backed real time clock) است. در این روش ساعت به صورت خودکار تنظیم نمی شود اما برای سال های زیاد از دقت خوبی برخوردار است. هر دو روش برای ساخت این ساعت بسیار مناسب است.

بهترین بخش این پروژه این است که می توانید دقیقا چیزی که در تصورتان است را بسازید. شما می توانید از یک جعبه مقوایی گرفته تا یک قاب جالب و زیبا برای این ساعت در نظر بگیرید. با یادگیری و ساخت چیزهایی از این قبیل مورد تشویق افراد از هر سنی قرار خواهید گرفت. کسی چه می داند، شاید یادگیری این پروژه ها آغاز مسیری باشد که به یک اختراع از جانب شما ختم شود !

گام اول: ابزار و قطعات مورد نیاز

آردوینو UNO Rev3 × 1  
ماژول ساعت زمان واقعی (RTC) × 1  
برد بورد × 1  
سیم جامپر × 1  
منبع تغذیه 7 تا 12 ولت × 1  
صفحه نمایش LED سون سگمنت × 1  
یک محفظه برای ساعت × 1  
هویه × 1  
سیم لحیم × 1  

academy 940811 arduino clock 02

  1. یک آردوینو Uno. می توانید از انواع دیگر آردوینو مانند Megaو Leonardo و ... استفاده کنید. چیزی که نیاز دارید اعمال تغییرات کوچکی در کد آن است که بتواند از GPS استفاده کند (راهنمای GPS را ببینید).
  2.  یک صفحه نمایش LED سون سگمنت . هر دو مدل 1.2 اینچی (که اندازه بزرگ است و در بالای تصویر نشان داده شده است) و 0/56 اینچی (که اندازه متوسط است و در وسط تصویر نشان داده شده است)، قابل استفاده است.
  3. یکی از موارد زیر به عنوان منبع زمان:
    1. شیلد یا بریک اوت GPS (The ultimate GPS shield or breakout). اگر از GPS استفاده کنید، ساعت به صورت خودکار با استفاده از سیگنال های دریافت شده از ماهواره های GPS تنظیم می شود. برای ثابت شدن گیرنده ی GPS روی ماهواره ها، باید اطمینان حاصل کنید که ساعت دید خوبی نسبت به آسمان دارد. بهتر است به بورد GPS یک باتری بیندازید تا با از دست رفتن سیگنال ماهواره هم تنظیم ساعت بهم نخورد.
    2. ماژول ساعت زمان واقعی (RTC) مانند DS1307. این ماژول از GPS ارزان تر است ، اما باید یکبار ساعت را تنظیم کنید و عمر باتری را به خاطر داشته باشید تا قبل از از کار افتادن ساعت، باتری آن را تعویض کنید. یکی دیگر از ساعت های زمان واقعی خوب ChronoDot است. البته باید بدانید که برای استفاده از DS1307 به کمی لحیم کاری نیاز دارید.
  4. بردبورد و سیم jumper
  5. یک محفظه برای ساعت. بسته به سلیقه شما، هر جعبه ای حتی جعبه های مقوایی برای این کار مناسب است. می توانید با انتخاب یک محفظه، ساعت ساده یا فانتزی درست کنید. یا حتی می توانید کار را بدون جعبه بگذارید تا اجزای درونی ساعتتان در معرض نمایش قرار گیرد!
  6. ابزار لحیم کاری. باید صفحه نمایش، GPS و ماژول ساعت را لحیم کنید. اگر تاکنون لحیم کاری انجام نداده اید، با اندکی تمرین می توانید به صورت حرفه ای عمل کنید. با مطالعه راهنمای لحیم کاری، به راحتی می توانید این کار را انجام دهید.
  7. منبع تغذیه آردوینو. می توانید از منبع های 7 تا 12 ولتی یا حتی یک بسته باتری کوچک برای اینکار استفاده کنید. بهتر است ساعت را به منبع تغذیه وصل کنید تا مجبور نباشد مدت زیادی از باتری استفاده کند.

گام دوم : سیم کشی و سخت افزار

 قبل از اینکه هر بخش را روی ساعت مونتاژ کنید، از سالم بودن آن مطمین شوید. با این کار رفع مشکلات احتمالی بسیار ساده تر از زمانی است که یک ساعت به صورت کامل مونتاژ شده باشد.
هنگامیکه برای سیم بندی ساعت آماده شدید، بسته به اینکه کدام ماژول GPS یا DS1307 را انتخاب می کنید، بخش مناسب را دنبال کنید.

سیم کشی ساعت GPS


برای ساخت ساعت با استفاده از GPS، سیم کشی اجزا مطابق شکل زیر است.
دیاگرام زیر فقط سیم بندی در حالت استفاده از GPS breakout را نشان می دهد. برای سیم بندی شیلد GPS از همه سیم کشی هایی که به GPS breakout رفته صرف نظر کنید و به جای آن شیلد GPS را به آردوینو وصل کنید و سپس نمایشگر سون سگمنت را به شیلد GPS/آردوینو که در دیاگرام نشان داده شده است، متصل کنید.

academy 940811 arduino clock 03

پین 5 ولت آردوینو را به پین 7-segment +/VIN power و پین VIN ultimate GPS breakout VIN (سیمهای قرمز) وصل کنید.

اگر از صفحه نمایش سون سگمنت بزرگ 1.2 اینچی استفاده می کنید، آردوینو 5v را به پین IO سون سگمنت وصل کنید. صفحه نمایش های کوچک تر این پین را ندارند.

پین GND آردوینو را به پین -GND سون سگمنت و پین GND ultimate GPS breakout (سیم های سیاه) وصل کنید.

پین A5 یا SCL آردوینو را به پین C/clock سون سگمنت وصل کنید. (سیم زرد)

پین A4 یا SDA آردوینو را به پین D/data سون سگمنت وصل کنید. (سیم نارنجی)

پین D8آردوینو را به پین ultimate GPS breakout TX وصل کنید. (سیم آبی)

پین D7آردوینو را به پین ultimate GPS breakout RX وصل کنید. (سیم سبز)

هنگامی که همه چیز را در سر جایش وصل کردید، چیزی شبیه به تصویر زیر می بینید:

academy 940811 arduino clock 04


سیم کشی ساعت زمان واقعی DS1307


برای ساخت ساعت زمان واقعی با استفاده از DS1307، سیم کشی اجزا مطابق شکل زیر است.

academy 940811 arduino clock 05

آردوینو 5V را به پین 7-segment +/VIN power و پینDS1307 5V وصل کنید.

اگر از صفحه نمایش 7 بخشی بزرگ 1.2 اینچی استفاده می کنید، آردوینو 5V را به پین 7-segment IO وصل کنید. صفحه نمایش های کوچک تر این پین را ندارند.

پین GND آردوینو را به پین GND سون سگمنت و پین GND DS1307 وصل کنید.

پین A5 یا SCL آردوینو را به پین C/clock سون سگمنت و پین DS1307 SCL وصل کنید.

پین A4 یا SDA آردوینو را به پین D/data سون سگمنت و پین DS1307 SDA وصل کنید.

هنگامی که همه چیز را در سر جایش وصل کردید، چیزی شبیه به تصویر زیر می بینید:

academy 940811 arduino clock 06


حالا برای اطلاع از چگونگی نصب نرم افزار و راه اندازی اسکچ ساعت به قسمت نرم افزار بروید.


گام سوم: نرم افزار


برای راه اندازی ساعت از آخرین نسخه IDE آردوینو استفاده کنید.

با استفاده از آموزش های مقدماتی، به راحتی می توانید با روش کار IDE آردوینو آشنا شوید، یک اسکچ (sketch) لود کنید و یا یک کد را آپلود نمایید.

 پس از آن باید از نصب کتابخانه هایی که مورد استفاده اسکچ قرار میگیرند، اطمینان حاصل کنید. در آخرین نسخه ی IDE آردوینو، میتوانید برای نصب کتابخانه ها و همچنین دسترسی به راهنمای نصب آنها، به راحتی از مدیریت کتابخانه (library manager) استفاده کنید. باید کتابخانه های زیر را نصب کنید:

 

(اگر از GPS استفاده می کنید)

(اگر از RTClib استفاده می کنید)

این کتابخانه ها را در قسمت مدیریت کتابخانه جست و جو کنید و سپس نصب نمایید:

academy 940811 arduino clock 07


بعد از نصب کتابخانه ها، آن ها را به روز رسانی کنید. مخصوصا باید کتابخانه LED backpack را برای تنظیم ساعت به روز کنید.
با توجه به اینکه از GPS یا DS1307 استفاده می کنید، بخش مناسب را دنبال کنید.

 اسکچ ساعت با استفاده از GPS


برای بارگذاری اسکچ ساعت GPS اطمینان حاصل کنید که سخت افزار به درستی ساخته شده، کتابخانه های بالا نصب شده اند و آردوینو با استفاده از کابل USB به کامپیوتر متصل شده است. پس از آن به عنوان مثال مسیر زیر را انتخاب کنید:
File -> Examples -> Adafruit LED Backpack Library -> clock_sevenseg_gps
صفحه ای مانند زیر باید درIDE لود شود:

academy 940811 arduino clock 08


ممکن است بخواهید قبل از آپلود کردن آردوینو، دو چیز را در اسکچ تغییر دهید. اول، انتخاب فرمت 24 ساعته یا 12 ساعته برای ساعتتان است. که به صورت پیش فرض توسط خط زیر فرمت 12 ساعته تعریف شده است:


// Set to false to display time in 12 hour format, or true to use 24 hour:
#define TIME_24_HOUR      false
 


اگر میخواهید از فرمت 24 ساعته استفاده کنید، کد را طبق خط زیر نغییر دهید:


// Set to false to display time in 12 hour format, or true to use 24 hour:
#define TIME_24_HOUR      true
 


دومین چیزی که ممکن است بخواهید تغییر دهید، آفست زمان محلی است. زمان ماهواره های GPS مطابق با GMT یا زمان جهانی UTC است و زمان محلی شما احتمالا با این مقادیر متفاوت است. برای اطلاع از اختلاف زمان محلی تان و GMT/ UTC میتوانید از سایت worldtimeserver.com یا این صفحه ویکیپدیا استفاده کنید.

اسکچ به صورت پیش فرض از زمان UTC-7 (منطقه زمانی آمریکا در اقیانوس آرام) استفاده می کند، شما باید در کد زیر مقدار زمان محلی خود را وارد کنید:


// Offset the hours from UTC (universal time) to your local time by changing
// this value.  The GPS time will be in UTC so lookup the offset for your
// local time from a site like:
//   https://en.wikipedia.org/wiki/List_of_UTC_time_offsets
// This value, -7, will set the time to UTC-7 or Pacific Standard Time during
// daylight savings time.
#define HOUR_OFFSET       -7
 


و برای ایران به آفست جدید به مقدار UTC +3:30 تغییر دهید.


// Offset the hours from UTC (universal time) to your local time by changing
// this value.  The GPS time will be in UTC so lookup the offset for your
// local time from a site like:
//   https://en.wikipedia.org/wiki/List_of_UTC_time_offsets
// This value, -7, will set the time to UTC-7 or Pacific Standard Time during
// daylight savings time.
#define HOUR_OFFSET       -3:30
 


با ذخیره کردن این اطلاعات، آردوینو برای آپلود آماده است. در منو آدوینو Uno از قسمت Tools -> Board را انتخاب کنید و پورت سریال را از قسمت Tools -> Port انتخاب کنید . سپس در قسمت پایین روی upload کلیک کنید و یا از قسمت Sketch -> Upload را انتخاب کنید تا کد به آردوینو ارسال شود. هم اکنون باید ساعت شروع به کار کند.
زمانی که اسکچ ساعت لود شد، باید کمی صبر کنید تا گیرنده GPS روی ماهواره قفل شود و زمان دقیق نمایش داده شود. زمانیکه ارتباط GPS با ماهواره برقرار شد، LED شروع به چشمک زدن می کند (یک بار در ثانیه چشمک می زند) . هنگامیکه GPS روی ماهواره ثابت شد، LED با سرعت کمتری (هر 15 ثانیه) چشمک می زند.
مطمئن شوید که شیلد GPS و یا break out دید کافی و مناسب به سمت آسمان دارند. بسته به مکانی که قرار دارید ممکن است بین 45 ثانیه تا نیم ساعت طول بکشد تا GPS روی ماهواره ثابت شود.
اگر در حال حاضر این کار را انجام ندادید، می توانید با استفاده از یک باتری زمان ساعت را ذخیره کنید. این باعث می شود که حتی وقتی GPS روی ماهواره ای ثابت نیست، ساعت شما عدد درستی را نشان دهد.
تبریک! شما توانستید یک ساعت GPS بسازید.


اسکچ ساعت با استفاده از DS1307


برای بارگذاری اسکچ ساعت با استفاده از DS1307 اطمینان حاصل کنید که سخت افزار به درستی ساخته شده، کتابخانه های بالا نصب شده اند و آردوینو با استفاده از کابل USB به کامپیوتر متصل شده است. پس از آن به عنوان مثال مسیر زیر را انتخاب کنید:
File -> Examples -> Adafruit LED Backpack Library -> clock_sevenseg_ds1307
صفحه ای مانند زیر باید در IDE لود شود:
academy 940811 arduino clock 09
در کد زیر فرمت 12 ساعته استفاده شده است. ممکن است بخواهید فرمت پیش فرض ساعت را تغییر دهید و فرمت 24 ساعته را استفاده کنید.


// Set to false to display time in 12 hour format, or true to use 24 hour:
#define TIME_24_HOUR      false
 


اگر میخواهید از فرمت 24 ساعته استفاده کنید، کد را طبق خط زیر نغییر دهید:


// Set to false to display time in 12 hour format, or true to use 24 hour:
#define TIME_24_HOUR      true
 


چیز دیگری که نیاز به تغییر داشته باشد وجود ندارد.
با ذخیره کردن این اصلاحات، آردوینو برای آپلود شدن آماده است. در منو آدوینو Uno از قسمت Tools -> Board را انتخاب کنید و پورت سریال را از قسمت Tools -> Port را انتخاب کنید . سپس در قسمت پایین روی upload کلیک کنید و یا از قسمت Sketch -> Upload را انتخاب کنید تا کد به آردوینو ارسال شود. هم اکنون باید ساعت شروع به کار کند.
اگر اولین باری است که از DS1307 استفاده می کنید، ساعت به صورت خودکار با زمانی که وارد و آپلود شده بود، تنظیم می شود. البته با استفاده از کد زیر در تنظیمات اسکچ شما به صورت دستی هم می توانید زمان را تنظیم کنید:


// Set the DS1307 clock if it hasn't been set before.
bool setClockTime = !rtc.isrunning();
// Alternatively you can force the clock to be set again by
// uncommenting this line:
//setClockTime = true;
if (setClockTime) {
  Serial.println("Setting DS1307 time!");
  // This line sets the DS1307 time to the exact date and time the
  // sketch was compiled:
  rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  // Alternatively you can set the RTC with an explicit date & time, 
  // for example to set January 21, 2014 at 3am you would uncomment:
  //rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
 


دستورات ذکر شده، نحوه ی تنظیم دستی زمان و تاریخ است. برای مثال برای تنظیم زمان، برای روز 21 ژانویه 2014، باید کدی شبیه به این نوشته شود:


// Set the DS1307 clock if it hasn't been set before.
bool setClockTime = !rtc.isrunning();
// Alternatively you can force the clock to be set again by
// uncommenting this line:
setClockTime = true;
if (setClockTime) {
  Serial.println("Setting DS1307 time!");
  // This line sets the DS1307 time to the exact date and time the
  // sketch was compiled:
  //rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  // Alternatively you can set the RTC with an explicit date & time, 
  // for example to set January 21, 2014 at 3am you would uncomment:
  rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
 


با آپلود کردن مجدد اسکچ زمان تغییر می کند.
تبریک! شما موفق شدید با استفاده از DS1307 یک ساعت آردوینو بسازید.
منبع : سایت adafruit

افزودن نظر
  • هیچ نظری یافت نشد