زمان و سنجش زمان از پارامترهای مهم ساخت پروژه های اینترنت اشیا است. در آموزش ساخت ساعت دیجیتال با آردوینو و سگمنت به بررسی کامل کدها و راه اندازی آن پرداختیم. حال با توجه به نیاز و درخواست کاربران آموزش ساخت ساعت دیجیتال با استفاده از ماژول ساعت دقیق DS1307 را در این پست در اختیار شما قرار دادهایم. این آموزش توسط یکی از کاربران فعال ما ارسال شده است. از این رو از همکاری کاربران در راستای تحقق اهداف بزرگ از جمله رشد سطح علمی جامعه و تلاش برای تبادل اطلاعات کاربران با یکدیگر در مرجع تخصصی الکترونیک دیجی اسپارک صمیمانه سپاسگزاریم. در ادامه این آموزش با مرجع تخصصی آردوینو دیجی اسپارکهمراه باشید.
ساختار ماژول سگمنت ۷Segment 4 Digit با تراشه TM1637
ماژول سگمنت، نوعی نمایشگر دیودی است. هر بلوک از سون سگمنت از ۷ ال ای دی مجزا تشکیل شده است. ماژول سگمنت به کار رفته یک نمایشگر چهار دیجیت با ابعاد ۴۲*۲۴ میلی متر است. تراشه این ماژول TM1637 میباشد و دارای پروتکل ارتباطی I2C است. همچنین این ماژول دارای ۴ پایه به ترتیب CLK ,DIN ,VCC ,GND بوده و ولتاژ کاری آن بین ۳٫۵ تا ۵ ولت است.
ساختار ماژول ماژول ساعت DS1307
کاربرد ماژول DS1307 محصول dallas محاسبه و نگهداری زمان واقعی real time clock میباشد. ماژول ساعت دقیق DS1307 میتواند ساعت، دقیقه، ثانیه، روز، ماه، سال و ایام هفته را نگهداری و پردازش کند. باطری لیتیومی این ماژول امکان تغذیه و نگهداری زمان DS1307 را به مدت چندین سال فراهم میکند. ماژول ساعت DS1307 از طریق ارتباط ۲ سیمه I2C به آردوینو متصل میشود. بر روی این ماژول علاوه بر RTC، یک EEPROM سریال به شماره ۲۴C32 با حافظه ۳۲ کیلوبیت تعبیه شده که از طریق رابط I2C مشترک میتوان به آن دسترسی داشت. همچنین میتوان بر روی آن حسگر دما نیز به کار برد.
وسایل مورد نیاز:
ماژول سگمنت ۷Segment 4 Digit با تراشه TM1637
ماژول ساعت DS1307 به همراه باتری Battery
کابل فلت ۴۰ رشته نری به مادگی Male to Female
برد آردوینو Arduino Uno R3 با تراشه R3 اورجینال
اتصال به آردوینو:
ابتدا اتصالات ماژول ساعت دقیق DS1307 به برد آردوینو را انجام میدهیم:
- پین SLK ماژول ساعت دقیق DS1307 را به پین آنالوگ A5 آردوینو وصل کنید.
- پین SDA ماژول ساعت دقیق DS1307 را به پبن آنالوگ A4 آردوینو وصل کنید.
- پین VCC ماژول ساعت دقیق DS1307 را به پین ۳٫۳ ولت آردوینو وصل کنید.
- پین GND ماژول ساعت دقیق DS1307 را به پبن GND آردوینو وصل کنید.
حال اتصالات ماژول سگمنت TM1637 را به برد آردوینو انجام میدهیم:
- پین CLK ماژول سگمنت را به پین ۶ آردوینو اتصال دهید.
- پین DIO ماژول سگمنت را به پبن ۵ آردوینو اتصال دهید.
- پین VCC ماژول سگمنت را به پین ۵ ولت آردوینو اتصال دهید.
- پین GND ماژول سگمنت را به پبن GND آردوینو اتصال دهید.
کتابخانه آردوینو Arduino:
کتابخانههای مورد نیاز برای آپلود کدها به ترتیب زیر میباشد.
- (DS1307RTC (by Michael Marglois Version 1.4.0
- (Time (by Michael Marglois Version 1.5.0)
- (SevenSegmentTM1637 (by Bram Harmsen Version 1.0.0
- (TM1637 (Version unknown
- (Wire (by Arduino Version 1.0.0
لینک دانلود کتابخانهها در صفحه محصول ماژول ساعت DS1307 به همراه باتری Battery و ماژول سگمنت ۷Segment 4 Digit با تراشه TM1637 قرار گرفته شده است و میتوانید دانلود کنید. توجه کنید که کتابخانه wire در قسمت Sketch – include library به صورت پیشفرض قرار گرفته شده است.
کد برنامه :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
#include <TM1637.h> #include <Wire.h> #include <Time.h> #include <DS1307RTC.h> #define CLK 6 #define DIO 5 TM1637 Display1(CLK, DIO); int8_t Digitos[] = {0,1,2,3}; int horas; int minutos; boolean alterna; void setup() { Serial.begin(9600); while (!Serial) ; // Wait For Serial delay(200); Serial.println("DS1307RTC Read Test"); Serial.println("-------------------"); Display1.set(); Display1.init(); } void loop() { tmElements_t tm; if (RTC.read(tm)) { Serial.print("Ok, Time = "); print2digits(tm.Hour); Serial.write(':'); print2digits(tm.Minute); Serial.write(':'); print2digits(tm.Second); Serial.print(", Date (D/M/Y) = "); Serial.print(tm.Day); Serial.write('/'); Serial.print(tm.Month); Serial.write('/'); Serial.print(tmYearToCalendar(tm.Year)); Serial.println(); horas = tm.Hour; minutos = tm.Minute; CalculaDigitos(horas, minutos); if (alterna) { Display1.point(POINT_OFF); alterna = false; } else { Display1.point(POINT_ON); alterna = true; } } else { if (RTC.chipPresent()) { Serial.println("The DS1307 is stopped. Please run the SetTime"); Serial.println("Example To Initialize The Time And Begin Running."); Serial.println(); } else { Serial.println("DS1307 Read Error ! Please Check The Circuitry."); Serial.println(); } delay(9000); } delay(1000); } void print2digits(int number) { if (number >= 0 && number < 10) { Serial.write('0'); } Serial.print(number); } void CalculaDigitos( int hor, int minu) { int8_t Digit0 = minu %10 ; int8_t Digit1 = (minu % 100) / 10 ; int8_t Digit2 = hor % 10 ; int8_t Digit3 = (hor % 100) / 10 ; Digitos[3] = Digit0 ; Digitos[2] = Digit1 ; Digitos[1] = Digit2 ; Digitos[0] = Digit3 ; Display1.display(Digitos); } |
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد.
پروژه:
برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکههای اجتماعی از جمله آپارات و اینستگرام، با هشتگهای دیجی_اسپارک دانشجوکیت digispark daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
سلام خسته نباشید
میدونم اینجا جاش نیست ولی میخواستم بدونم میشه کاری کرد که با گوشی و یک مدار که به گوشی وصل بشه کنترل مادون قرمز ساخت
یعنی برای گوشی هایی که سنسور مادون قرمز ندارن یه فرستنده خارجی ساخت البته با تقویت کننده.
ممنون میشم یه راهنمایی بفرمایید
سلام
در این زمینه من تجربه و اطلاعات کافی ندارم اما همکارانم در پستهای مربوطه در این زمینه آموزش دادهاند. میتوانید از طریق پست آموزش راه اندازی ماژول فرستنده گیرنده مادون قرمز TCRT5000 یا پست آموزش ماژول سنسور فرستنده گیرنده Avoidance با آردوینو سوال خود را مطرح نمایید تا همکارانم پاسخگو باشند.
ممنون از پاسخگویی شما
بله میشه خیلی ساده
به ماژول بلوتوث و یه گیرنده فرستنده مادون قرمز نیاز دارید.
روش کار هم اینه یه برنامه خیلی ساده مینویسید و با کمک گیرنده مادون قرمز کد های هر دکمه روی کنترل رو پیدا میکنید.
بعدش یه برنامه اندروید ساده طراحی میکنید که به صورت سریال بلوتوث با میکرو در ارتباط باشه (تو یوتیوب هست)و در کد میکرو هم تعریف میکنید مثلا اگه a از سریال دریافت کردی با فرستنده مادون قرمز اون سیگنال خاص و بفرست.
خیلی ساده میتونید یه کنترل بسازید.
سلام
یک سوال ساده اما مهم.
اگر کسی بخواهد که به جای استفاده از بردهای آموزشی خودش بردی رو طراحی کنه باید برای تامین کلاک میکروی ARM که مثلاً قرار هست با فرکانس ۱۰۰MHz یا بالاتر کار کنه باید از چه روشی استفاده کرد؟
خود میکرو اوسیلاتور داخلی داره تا جایی که من تو کاتالوگ ها خوندم نهایتاً تا ۲۵MHz رو ساپورت میکنه
آیا از کریستال استفاده می کنند؟
اصلاً کریستالی با این فرکانس پیدا میشه؟
سلام
از توجه شما ممنونم.
اول از همه بنده در این زمینه تخصصی ندارم و سوالات مرتبط با پست آموزشی را باید مطرح کنید. دوم اینکه با پیشرفت بردهای امبدد و میکروکنترل هایی که هر کدام کارآیی خاص و منحصر به فردی دارند دیگر نیازی به طراحی برد نخواهید داشت.
درود
بخاطر دقّت نظر و دلسوزی شما و همکارانتون نسبت به خواسته های کاربران و نیز پاسخگویی به سئوالاتشون، بواقع سپاسگذارم..
ماژول ساعت دقیق DS1307 دچار دو مشکل میشه. یا از ساعت دقیق عقب میفته، یا سریع تر ثانیه میندازه. جایی خونده بودم که مشکل نخست غیرقابل رفعه. امّا در خصوص مشکل دوّم، درست یادم نیست; مثل اینکه باید سر کریستال رو به زمین مدار متّصل کنیم و یادمه تأکید شده بود به هیچ عنوان از لحیم کردن سر کریستال نبایستی استفاده کرد. آیا این راه درسته ؟ و اگر بله، چطور بدون لحیم کردن این کار رو انجام بدم ؟
سپاسم
سلام
از دقت نظر شما سپاسگزارم.
در واقع این همان کدهاى ارسالی شماست، اگر در این زمینه راهکارى دارید میتوانید بیان کنید، از دیگر کاربران هم که تجربه کافى دارند تقاضا دارم در این بحث شرکت کنند.
درود مجدّد
مشکل رو حل کردم. از یک موتور ساعت دیواری، المان کریستالش رو جایگزین کریستال ماژول کردم.
چون ساعت دیواری یک ساعت همگانیه، بنابراین حتّی اگر موتور اون ساعت چینی هم باشه، همیشه از مرغوب ترین کریستال ها در ساخت اون استفاده میشه. بجای خرید کریستال از بازار، بهترین گزینه جایگزینی اون با کریستال موجود در موتور یک ساعت دیواریه..
سپاسم
ایده شما جالب است ولی به نظر بنده اینطور درست نیست. باید علمی تر بررسی شود. حتما اطلاعات کریستال را بیان کنید تا توجیه بهتری برای این قضیه داشته باشیم.
این کریستال که به نام کریستال ساعت معروف است ، با فرکانس ۳۲۷۶۸ هرتز کار می کند که از آن برای ایجاد تاخیرهای دقیق زمانی مانند ۱ ثانیه استفاده می شود و در مداراتی مانند تایمر ، ساعت ، کرنومتر و . .. کاربرد دارد .
سلام – در مورد ds1307 باید عرض کنم چون از کریستال خارجی استفاده می شود به شدت ناپایدار هست و تحت شرایط محیطی ممکن هست فرکانس از حالت پیش فرض کمی بیشتر یا کمتر باشد ، من در پروژه های صنعتی از ds1307 استفاده نمیکنم و پیشنهاد می کنم از ماژول هایی استفاده کنید که دارای کریستال داخلی می باشند ، نمونه ای از این ماژول ها DS3231 هست که دارای کریستال داخلی بوده و با استفاده از الگو های تعریف شده و تکنیک های شرکت سازنده بر حسب دمای محیط فرکانس را تصحیح میکند و عملکرد دقیق تری ارائه میدهد ، با این حال شاید ماژول های دقیق تری هم موجود باشه اما بنده تا بحال باهاشون کار نکردم – موفق باشید
سلام
از اینکه اطلاعات و تجربیات خود را با دیگر کاربران به اشتراک میگذارید، سپاسگزارم.
موفق باشید.
با سلام.من این ماژول رو چجوری به DUE وصل کنم؟
خوده ds1307 رو به تنهایی دارم(ماژول نیستش)،تقسیم ولتاژِی کردم برای ۳٫۳ ولت اما برای پول آپ چیکار کنم؟
سلام
در این خصوص نیاز است که به دیتاشیت تراشه ۱۳۰۷ مراجعه بفرمایید.
سلام خسته نباشین
من میخوام وقتی که کلیدی زده شد این ماژول ساعت و تاریخ فشرده شدن اون کلید رو تو حافظه ی خودش ذخیره کنه ،چیکار باید کنم ؟
سلام
باید از ماژول میکرو SD جهت ذخیره اطلاعات استفاده کنید.
آخه به من گفتن باید با همین ماژول DS1307 اینکارو انجام بدم
کامل توضیح دهید تا راهنمایی کنم.
سلام مجدد
پروژه اینه که به وسیله ی بلوتوث یک رله روشن و خاموش شود !
اسم بلوتوثی که به ماژول بلوتوث ما وصل شده و تایم و تاریخ که تونسته رله رو خاموش و روشن کنه رو ذخیره کنه!
همچنین ذکر شده با ماژول بلوتوث hc05 و ماژول ds1307 اینکار انجام شود
در این خصوص به آموزش های hc05 مراجعه کنید. همچنین طبق اطلاعات گفته شده در دیتاشیت ماژول DS1307، توانایی ذخیره دیتا در حافظه EEPROM را دارد و باید کتابخانه آن را فراخوانی کنید.
سلام
من وقتی دکمه ریست آردوینو را فشار میدهم یا وقتی برق قطع می شود از اول شروع می شود
سلام
طبیعتا با فشردن کلید reset برنامه ریست خواهد شد.
سلام
من یه پروزه دارم که led ها بر روی یک پروانه سوار اند و با فرستادن اطلاعات ساعت از روی این ماژول ds 1307 به اردینو برنامه ساعت را بگیرد و موتور با چرخش ساعت دقیق را نشان دهد
اول میخام ماژول ساعت رو پروگرم کنم با اردینو که روی lcd نشون بده و بعدش به اردینو وصل کنم میشه تو این دو قسمت کمکم کنید
ممنون خانم بلورچیان
با سلام
بله راهنمایی خواهم کرد. مطابق با آموزش ها پیش بروید و در صورت برخورد به مشکل از همین طریق سوالات خود را بپرسید.
سلام حالتون خوبه ببخشید من تونستم با ال سی دی ماژول ds1307 رو پروگرام کنم و الان میخام اونو در مدارم قرار بدم تا با استفاده از ماژول تاریخ و ساعت رو بخونه و به ال ای دی هام بفرسته… چه جوری بخونمش از کد؟؟؟
میشه کمک کنید قسمتا اخره
با سلام
منظور شما از خواندن از کد چیست؟ جهت دریافت راهنمایی دقیق میبایست توضیحات شفاف ارائه دهید.
ببخشین جواب نمیدین؟؟؟
پاسخ داده شد.
بررسی کنید.
من یه پروزه دارم که داخلش به صورت دستی ساعت و تاریخ رو دادم الان میخام ساعت و تاریخ رو از مازول ds1307 بگیره چه حوری اون رو به نرم افزتر اردینو بگم
سلام
در این خصوص میبایست کتابخانه DS1307 را فراخوانی و کدنویسی کنید.
از آموزش ساخت ساعت دیجیتال ماژول DS1307 نمایشگر سگمنت TM1637 ایده بگیرید و در صورت سوال از همان طریق بپرسید.
سلام.
اگر تغذیه ماژول DS1307 جداگانه تامین بشه بهتر نیست؟ یعنی ممکنه وقتی از آردینو میگیره دچار نویز بشه؟
من در مدارم df player رو دارم که اونطور که بررسی کردم وقتی از آردینو تغذیه میگیره دچار نویز میشه. چون میخوام پروژه دچار هیچ مشکلی نشه، به نظرتون بهتر نیست تغذیه جدا باشه؟
با سلام
تا به حال در این مورد نویز در مدار صورت نگرفته است و تغذیه ماژول از طریق آردوینو تاثیری ندارد.
سلام وقت بخیر
من یه کیت میخواستم که از ۴ تا ال ای دی به رنگ های مختلف باشه و نسبت به صدایی که توسط میکروفون ازمحیط دریافت میکنه ال ای دی هارو بصورت رندوم روشن کنه /و همچنین ریموت کنترل هم داشته باشه/آیا شما کیتی مشابه با این دارید؟یا طراحی این کیت را میتونید انجام بدید؟
با سلام
در این خصوص از آموزش زیر میتوانید استفاده کنید.
آموزش ساخت رقص نور با ماژول میکروفن و حلقه ال ای دی Neopixel صوت سنجهمچنین در خصوص پروژه از طریق لینک زیر پروژه را تعریف کنید تا شرایط اجرای پروژه به شما اعلام شود.
daneshjookit.com/support
سلام خسته نباشید . چرا هر ماژولی ک اموزششو درست میکنید با اردینو میسازین؟ خیلیامون کلا از اردینو استفاده نمیکنیم . اردینو خودش از میکرو avr درست میشه . الان من این ماژولو دارم ولی هیچ جایی اموزش راه اندازیش نیست.
با سلام
با توجه به اینکه میکروکنترلرهای امبدد هر روز در حال توسعه هستند و مدل های جدید با امکانات جدید عرضه میشود، نیاز به یادگیری خواهد داشت.
آموزش های AVR در سایت موجود است، در پست های مرتبط با این موضوع کامنت بگذارید تا توسط کارشناسان AVR بررسی و راهنمایی شود.
من با پلکسی و اسامدی ساعتشو ساختم و تمام مثبت هارو به هم وصل کردم..
حالا چطوری این منفی های تک تک رو به اردوئینو وصل کنم..
با سپاس
با سلام
در این خصوص پیشنهاد میشود آموزش زیر را مطالعه کنید و سپس در صورت هرگونه سوال از آن طریق اقدام فرمایید.
آموزش راه اندازی سون سگمنت Seven Segment با آردوینو Arduino