آموزش آردوینو و ساعت زمان واقعی DS3231
در این آموزش آردینو راه اندازی ماژول ds3231 با آردوینو را یاد خواهیم گرفت. شما میتوانید برنامه آموزشی نوشته شده در زیر را بخوانید.
مرور کلی راه اندازی ماژول DS3231 با آردوینو
اولین سوالی که در اینجا مطرح میشود این است که چرا ما در واقع به یک RTC جداگانه برای پروژه آردینو نیاز داریم در حالی که خود آردینو یک زمان سنج ساخته شده است. خوب نکته این است که ماژول RTC بر روی یک باتری اجرا میشود و میتواند مسیر زمان را حفظ کند حتی اگر ما میکروکنترلر را دوباره برنامهریزی کنیم یا ولتاژ اصلی را قطع کنیم. بهدا در پروژه ها ی آموزش رباتیک ما از این ماژول و انواع دیگر ماژولها استفاده خواهیم کرد.
ساعت زمان واقعی DS3231
DS3231 یک ساعت زمان واقعی کمهزینه و بسیار دقیق است که میتواند ساعتها، دقیقه و ثانیه و همچنین اطلاعات روز، ماه و سال را حفظ کند. همچنین به طور خودکار برای جهش – سالها و ماههای با کمتر از ۳۱ روز – جبران کننده دارد.
ماژول میتواند بر روی 3/3 یا ۵ ولت کار کند که آن را برای بسیاری از پلتفرمهای توسعه یا میکروکنترلرها مناسب میسازد. ورودی باتری ۳ ولت است و یک باتری معمولی 3 ولت CR2032 میتواند به ماژول توان بدهد و اطلاعات را برای بیش از یک سال نگه دارد.
این ماژول از پروتکل ارتباطی I2C استفاده میکند که اتصال به برد آردینو را بسیار آسان میکند.
این تصویر طرح های مدار است:
بنابراین تمام چیزی که ما نیاز داریم ۴ سیم، پین VCC و GND برای تقویت ماژول، و دو پین ارتباطی SDA، I2C و SCL است.
آموزش آردوینو و ساعت زمان واقعی DS3231
برنامه نویسی
زمانی که ما ماژول را به هم متصل میکنیم، باید برد آردینو را برنامه نویسی کنیم تا با ساعت زمان واقعی کار کند. با این حال، زمانی که بحث برنامه نویسی یک ارتباط بین آردوینو و یک ماژول I2C مطرح میشود، کد آن آنقدر کم و آسان نیست. خوشبختانه، در حال حاضر چندین کتابخانه برای DS3231 RTC وجود دارد که می توان آنها را در اینترنت یافت.
بنابراین وقتی کتابخانه را دانلود و نصب میکنیم میتوانیم از اولین نمونه دمو آن برای فعال کردن ساعت ماژول RTC استفاده کنیم. در بخش تنظیم کد نمونه دمو، میتوانیم متوجه شویم که سه خط وجود دارد که نباید آنها را به منظور تنظیم اولیه روز هفته، زمان و داده، توضیح دهیم.
// Code from the Demo Example of the DS3231 Library void setup() { // Setup Serial connection Serial.begin(115200); // Uncomment the next line if you are using an Arduino Leonardo //while (!Serial) {} // Initialize the rtc object rtc.begin(); // The following lines can be uncommented to set the date and time //rtc.setDOW(WEDNESDAY); // Set Day-of-Week to SUNDAY //rtc.setTime(12, 0, 0); // Set the time to 12:00:00 (24hr format) //rtc.setDate(1, 1, 2014); // Set the date to January 1st, 2014 }
خط اول برای تنظیم روز هفته، خط دوم برای تنظیم زمان در ساعت، دقیقه و ثانیه، و خط سوم برای تنظیم تاریخ در روزها، ماهها و سالها است.
هنگامی که ما این کد را آپلود میکنیم، نیاز به توضیح سه خط و دوباره آپلود کردن کد داریم.
// Code from the Demo Example of the DS3231 Library void loop() { // Send Day-of-Week Serial.print(rtc.getDOWStr()); Serial.print(" "); // Send date Serial.print(rtc.getDateStr()); Serial.print(" -- "); // Send time Serial.println(rtc.getTimeStr()); // Wait one second before repeating delay (1000); }
اگر نگاهی به بخش حلقه کد بیندازیم، میتوانیم ببینیم که اکنون با استفاده از سه تابع سفارشی، اطلاعات RTC را میگیریم و آنها را در نمایشگر سریال چاپ میکنیم. در اینجا به نحوه ظاهر شدن اطلاعات در نمایشگر سریال میپردازیم.
حالا حتی اگر ما توان آردوینو را قطع کنیم و دوباره آن را وصل کنیم و نمایشگر سریال را دوباره اجرا کنیم میتوانیم متوجه شویم که زمان بدون تنظیم مجدد پیش میرود.
بنابراین حالا ما ساعت زمان واقعی خود را داریم و میتوانیم در هر پروژه آردینو از آن استفاده کنیم. به عنوان مثال، من یک LCD را به آردینو متصل کردم و زمان و تاریخ آن را چاپ کردم.
این کد منبع این مثال است.
/* * Arduino DS3231 Real Time Clock Module Tutorial * * Crated by Dejan Nedelkovski, * www.HowToMechatronics.com * * DS3231 Library made by Henning Karlsen which can be found and downloaded from his website, www.rinkydinkelectronics.com. * */ #include <DS3231.h> #include <LiquidCrystal.h> // includes the LiquidCrystal Library DS3231 rtc(SDA, SCL); LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7) void setup() { rtc.begin(); // Initialize the rtc object lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display } } void loop() { lcd.setCursor(0,0); lcd.print("Time: "); lcd.print(rtc.getTimeStr()); lcd.setCursor(0,1); lcd.print("Date: "); lcd.print(rtc.getDateStr()); delay(1000); }
این تمام چیزی است که برای این آموزش آردوینو وجود دارد، لطفاً در بخش نظرات هر سوالی را بپرسید.