
معرفی پروژه
ARDUnia Smart Clock یک ساعت دیجیتال چندمنظوره مبتنی بر Arduino Nano یا Arduino Uno است. این دستگاه علاوه بر نمایش ساعت و تاریخ شمسی، امکاناتی مانند اندازهگیری دما و رطوبت، نمایش فاز ماه، کرونومتر دقیق و نمایش سطح تقریبی باتری را در یک نمایشگر OLED کوچک فراهم میکند.
کنترل دستگاه با یک ماژول لمسی TTP223 انجام میشود و کاربر میتواند با ضربه کوتاه، ضربه دوگانه و لمس طولانی میان حالتهای مختلف جابهجا شود.
امکانات اصلی
- نمایش ساعت و دقیقه با اندازه بزرگ و ثانیه با اندازه کوچک
- نمایش تاریخ شمسی با تبدیل تاریخ میلادی به جلالی
- نمایش دما و رطوبت محیط با حسگر DHT11
- امکان کالیبراسیون دستی دما و رطوبت
- نمایش فاز ماه در ۸ حالت
- نمایش سطح تقریبی باتری به شکل نوار درصدی
- کرونومتر با دقت صدم ثانیه
- تغییر حالت نمایش با معکوس کردن رنگهای OLED
- ریست نرمافزاری با نگهداشتن طولانی کلید لمسی
- حفظ زمان با استفاده از ماژول RTC مدل DS1307
سختافزار مورد نیاز
| قطعه | تعداد | کاربرد |
|---|---|---|
| Arduino Nano یا Uno | ۱ | کنترل اصلی دستگاه |
| نمایشگر OLED با ابعاد 128×32 و رابط I2C | ۱ | نمایش اطلاعات |
| ماژول RTC مدل DS1307 | ۱ | حفظ و ارائه زمان |
| حسگر دما و رطوبت DHT11 | ۱ | اندازهگیری شرایط محیط |
| ماژول لمسی TTP223 | ۱ | کنترل دستگاه با لمس |
| مقاومت ۱ کیلو اهم | ۱ | مطابق فهرست قطعات مخزن |
| مقاومت ۱۰ کیلو اهم | ۲ | تقسیم ولتاژ باتری |
| باتری لیتیومی ۳.۷ ولت | ۱ | منبع تغذیه قابلحمل، اختیاری |
| سیم اتصال و برد آزمایشی | به میزان لازم | مونتاژ مدار |
نقشه اتصالات
نمایشگر OLED
| پایه نمایشگر | پایه Arduino Nano/Uno |
|---|---|
| VCC | 5V |
| GND | GND |
| SDA | A4 |
| SCL | A5 |
ماژول ساعت DS1307
| پایه RTC | پایه Arduino Nano/Uno |
|---|---|
| VCC | 5V |
| GND | GND |
| SDA | A4 |
| SCL | A5 |
نمایشگر OLED و ماژول RTC از باس I2C مشترک استفاده میکنند. این اتصال با توجه به آدرسهای متفاوت دو ماژول امکانپذیر است.
حسگر DHT11
| پایه حسگر | پایه Arduino |
|---|---|
| DATA | D12 |
| VCC | 5V، مطابق نوع ماژول و مدار مورد استفاده |
| GND | GND |
در صورت استفاده از حسگر خام DHT11، مقاومت Pull-up مناسب برای خط DATA را مطابق مدار حسگر در نظر بگیرید. مقاومت سری روی تغذیه با مقاومت Pull-up خط داده یکسان نیست؛ بنابراین پیش از مونتاژ نهایی، اتصال تغذیه را با شماتیک واقعی ماژول بررسی کنید.
ماژول لمسی TTP223
| پایه ماژول | پایه Arduino |
|---|---|
| VCC | 3.3V یا 5V، متناسب با ماژول |
| GND | GND |
| SIG | D2 |
اندازهگیری ولتاژ باتری
برای خواندن ولتاژ باتری از تقسیم مقاومتی متصل به ورودی A0 استفاده میشود. در نمونه مستندشده، دو مقاومت ۱۰ کیلو اهم به صورت سری بین مثبت باتری و GND قرار میگیرند و نقطه میانی به A0 متصل میشود.
با دو مقاومت مساوی، ولتاژ نقطه میانی تقریبا نصف ولتاژ ورودی خواهد بود. ضریب تقسیم در کد باید با مقدار واقعی مقاومتها و محدوده مجاز ورودی آنالوگ برد هماهنگ باشد.
نکته ایمنی: پیش از اتصال باتری به A0، حداکثر ولتاژ نقطه میانی و محدوده مجاز ورودی برد را بررسی کنید. ورودی آنالوگ نباید از محدوده مجاز خود فراتر برود.
روش کنترل دستگاه
| نوع لمس | عملکرد در حالت ساعت | عملکرد در حالت کرونومتر |
|---|---|---|
| ضربه کوتاه | جابهجایی میان ساعت، تاریخ و دما/رطوبت | شروع یا توقف |
| دو ضربه سریع | ورود به حالت کرونومتر | بازگشت به حالت ساعت |
| لمس طولانی بین ۱ تا ۵ ثانیه | معکوس کردن رنگ نمایشگر | ریست کرونومتر |
| لمس ۵ ثانیه یا بیشتر | ریست کامل میکروکنترلر | ریست کامل میکروکنترلر |
کتابخانههای مورد نیاز
کتابخانههای زیر را از بخش Library Manager در Arduino IDE نصب کنید:
- RTClib: کتابخانه Adafruit برای ارتباط با RTC
- U8g2: مدیریت و رسم اطلاعات روی نمایشگر OLED
- DHT sensor library: خواندن دادههای حسگر DHT11
- Wire: کتابخانه ارتباط I2C که به صورت پیشفرض در Arduino IDE وجود دارد
راهاندازی
- Arduino IDE را نصب کنید.
- کتابخانههای مورد نیاز را از Library Manager نصب کنید.
- مخزن پروژه را از GitHub دریافت کنید:
- فایل
ARDUnia_SmartClock.inoرا باز کنید.
- برد Arduino Nano یا Uno و پورت ارتباطی مناسب را انتخاب کنید.
- کد را روی برد آپلود کنید.
- پس از راهاندازی، پیام خوشآمدگویی نمایش داده میشود و سپس دستگاه وارد حالت ساعت خواهد شد.
تنظیمات نرمافزاری
در ابتدای برنامه، تعدادی از تنظیمات سختافزاری و رفتاری با دستورهای #define مشخص شدهاند؛ از جمله پایه ماژول لمسی، پایه داده حسگر DHT11، ورودی اندازهگیری باتری و ضریب تقسیم ولتاژ.
همچنین میتوان مقادیر کالیبراسیون دما و رطوبت را متناسب با اندازهگیری مرجع تغییر داد.
عیبیابی
- نمایشگر روشن نمیشود: تغذیه، اتصال SDA و SCL و سازگاری ولتاژ نمایشگر را بررسی کنید.
- زمان پس از خاموشی حفظ نمیشود: باتری پشتیبان ماژول RTC و تنظیم اولیه زمان را بررسی کنید.
- دما یا رطوبت صحیح نیست: زمان لازم برای قرائت حسگر و مقادیر کالیبراسیون را بررسی کنید.
- لمس دوگانه تشخیص داده نمیشود: زمانبندی دو لمس را بررسی کنید.
- درصد باتری نادرست است: مقادیر واقعی مقاومتهای تقسیم ولتاژ و ضریب تعریفشده در برنامه را کنترل کنید.
تصاویر برد مدار چاپی
تصاویر بخشهای مختلف PCB در مخزن پروژه قرار دارند:
- نمای جلو: ARDUnia_SmartClock_F.png
- نمای پشت: ARDUnia_SmartClock_B.png
مجوز و مشارکت
این پروژه تحت مجوز MIT منتشر شده است. استفاده، تغییر و بازتوزیع کد با رعایت شرایط مجوز امکانپذیر است.
مخزن پروژه:
جمعبندی
ARDUnia Smart Clock نمونهای از ترکیب میکروکنترلر، نمایشگر OLED، ساعت بلادرنگ و حسگرهای محیطی در یک ابزار کوچک و کاربردی است. کنترل لمسی تککلیدی و امکانات متنوع نمایش اطلاعات، آن را به پروژهای مناسب برای یادگیری و توسعه سیستمهای مبتنی بر Arduino تبدیل میکند.
قطعات و تجهیزات
- Arduino Nano یا Uno
- نمایشگر OLED 128×32 I2C
- ماژول RTC DS1307
- حسگر DHT11
- ماژول لمسی TTP223
- یک مقاومت ۱ کیلو اهم
- دو مقاومت ۱۰ کیلو اهم
- باتری لیتیومی ۳.۷ ولت اختیاری
- سیم جامپر و برد آزمایشی
اتصالات و راه اندازی
- OLED: پایه SDA به A4، پایه SCL به A5، تغذیه 5V و GND
- RTC DS1307: پایه SDA به A4، پایه SCL به A5، تغذیه 5V و GND
- DHT11: پایه DATA به D12، به همراه تغذیه و اتصال زمین مناسب
- TTP223: پایه SIG به D2 و تغذیه متناسب با ماژول
- تقسیم ولتاژ باتری: نقطه میانی دو مقاومت ۱۰ کیلو اهم به A0
برای راهاندازی، کتابخانههای RTClib، U8g2 و DHT Sensor Library را نصب کنید، فایل ARDUnia_SmartClock.ino را در Arduino IDE باز کنید و برنامه را روی Arduino Nano یا Uno آپلود کنید.
نکته: پیش از مونتاژ نهایی، اتصالات تغذیه حسگر، محدوده ولتاژ ورودی A0 و سازگاری ولتاژ نمایشگر و ماژولها را بررسی کنید.
