ورکشاپ آموزشی - آیسی مدار
رفتن به محتوا

ساعت هوشمند دست‌ساز با آردوینو و بلوتوث

ابزار و گجت
۰ نظر
۵۷ نفر
کد ۴۵۸۸

داشتن یه ساعت هوشمند خیلی جذابه، اما فکرشو می‌کردی بتونی یکی برای خودت بسازی؟ با ترکیب چند تا قطعه کوچیک الکترونیکی و کمی برنامه‌نویسی، می‌تونی یه گجت پوشیدنی خفن بسازی که پیام‌ها، ساعت و اعلانات گوشیت رو مستقیما روی مچ دستت نشون بده.

تو این آموزش از آیسی‌مدار، می‌خوایم با هم پروژه هیجان‌انگیز RetroWatch رو پیاده‌سازی کنیم. این ساعت هوشمند با استفاده از یه برد آردوینو مینی، ماژول بلوتوث و یه نمایشگر نقلی OLED کار می‌کنه و به کمک یه اپلیکیشن اندرویدی به گوشیت وصل میشه تا دیتای مورد نیاز رو بخونه.

با این پروژه نه تنها صاحب یه ساعت جذاب میشی، بلکه حسابی با دنیای اینترنت اشیا و ارتباطات بلوتوثی آشنا میشی. پس وسایلت رو آماده کن تا بریم سراغ ساخت این ساعت هوشمند دوست‌داشتنی!

قطعات موردنیاز

  • برد آردوینو پرو مینی (نسخه 3.3 ولت و 8 مگاهرتز)
  • ماژول بلوتوث HC-06 (بدون برد راه‌انداز)
  • نمایشگر OLED سایز 0.96 اینچ (پشتیبانی از I2C یا SPI)
  • باتری لیتیوم پلیمر (LiPo) 3.7 ولت تک‌سلول (حدود 140 میلی‌آمپر)
  • ماژول مبدل USB به سریال (USB to UART)
  • دکمه فشاری کوچک (Push Button)
  • مقاومت 10 کیلواهم
  • سیم لاکی یا جامپر، هویه و سوکت باتری
  • تلفن هوشمند اندرویدی (ترجیحا اندروید 4.3 به بالا)
مرحله ۱

ساختار کلی سیستم ساعت هوشمند

این ساعت هوشمند یه سیستم ساده‌ست که بر پایه آردوینو و یه اپلیکیشن اندرویدی کار می‌کنه. ساختار کلی سیستم دقیقا مثل تصویر بالاست. تصور کن یه کامپیوتر خیلی کوچیک رو مچ دستت بستی!

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

مرحله ۲

انتخاب و آماده‌سازی قطعات سخت‌افزاری

برای اینکه ساعتت روی مچ دست جا بشه، باید قطعات رو تا حد ممکن نقلی و کوچیک انتخاب کنی. گزینه‌های زیادی تو بازار هست اما من ارزون‌ترین و رایج‌ترین قطعات رو پیشنهاد می‌دم.

برای پردازشگر، آردوینو پرو مینی (Pro Mini) بهترین انتخابه. این برد نسخه سبک‌شده UNO هست و برای اینکه ابعاد و قیمتش کم بشه، چیپ مبدل USB از روش حذف شده.

این برد تو دو نسخه 5 ولت و 3.3 ولت موجوده. حتما نسخه 3.3 ولتی رو بخر، چون هم با ولتاژ ماژول بلوتوث و نمایشگر همخوانی داره و هم با باتری‌های لیتیوم پلیمر 3.7 ولتی خیلی خوب کار می‌کنه. سرعت 8 مگاهرتزش هم برای کار ما کاملا کافیه.

یه نکته مهم: میکروکنترلر روی برد حتما باید ATmega328 باشه تا حافظه رم کافی (2 کیلوبایت) برای اجرای کدها رو داشته باشی؛ بعضی بردهای قدیمی چیپ‌های ضعیف‌تری دارن که جوابگو نیستن.

برای بلوتوث، ماژول HC-06 بدون برد راه‌انداز (Base board) بهترین گزینه‌ست. نسخه‌هایی که برد راه‌انداز دارن یکم بزرگ‌ترن و ال‌ای‌دی روشون باتری رو هدر میده، پس مدل بدون برد رو بگیر تا جای کمتری بگیره.

برای نمایشگر هم یه OLED سایز 0.96 اینچ عالیه. این نمایشگرها هم خیلی کم‌مصرفن، هم کیفیت خوبی دارن و هم با پروتکل‌های I2C یا SPI خیلی راحت به آردوینو وصل میشن. (این پروژه از کتابخونه u8glib هم پشتیبانی می‌کنه که باعث میشه بتونی از مدل‌های متنوع‌تری برای نمایشگر استفاده کنی).

انرژی این ساعت رو یه باتری لیتیوم پلیمر 3.7 ولتی تأمین می‌کنه. حتما باتری‌ای بگیر که مدار محافظ (برای جلوگیری از شارژ و دشارژ بیش از حد) داشته باشه. اگه بتونی یه سوکت کوچیک هم براش تعبیه کنی که راحت شارژ بشه خیلی عالی میشه.

برای بخش نرم‌افزار هم به یه گوشی اندرویدی نیاز داری. اگه اندروید گوشیت 4.3 به بالا باشه، می‌تونه تمام نوتیفیکیشن‌ها رو روی ساعت بفرسته. برای نسخه‌های پایین‌تر اندروید هم یه اپلیکیشن سبک‌تر طراحی شده که امکانات پایه‌تر رو پشتیبانی می‌کنه. اپلیکیشنRetroWatch رو می‌تونی با یه سرچ ساده پیدا و دانلود کنی.

در نهایت هم به سیم، هویه، یه دکمه فشاری و مقاومت نیاز داری تا همه‌چیز رو به هم وصل کنیم. حالا که قطعات حاضره، بریم سراغ ساخت! اگه آماده‌ای بریم مرحله بعد.

فقط مطمئن شو همه قطعات رو روی میز کارت مرتب چیدی. ماژول مبدل USB رو هم دم دستت بذار که برای پروگرام کردن لازمش داریم. پس پیش به سوی مونتاژ! هیجان‌انگیزه، نه؟

مرحله ۳

سیم‌کشی و مونتاژ قطعات ساعت

اگه تاحالا با آردوینو کار کردی، این مرحله برات خیلی آشناست. پیشنهاد می‌کنم قبل از لحیم‌کاری نهایی قطعات رو مینی‌برد و فشرده کردنشون، یه بار همه‌چیز رو روی بردبورد ببندی و تست کنی تا خیالت راحت باشه.

  • پایه VCC به 3.3 ولت آردوینو
  • پایه GND به GND
  • پایه TX به پین D2
  • پایه RX به پین D3

اتصالات نمایشگر OLED (مدل I2C):

  • پایه GND به GND
  • پایه VCC به VCC
  • پایه SDA به پین A4
  • پایه SCL به پین A5

اگه از نمایشگر OLED مدل SPI هفت پین استفاده می‌کنی، اتصالاتش به این شکله:

  • پایه D1 (MOSI) به پین D11
  • پایه D2 (MISO) به پین D12 (این پین اختیاریه)
  • پایه D0 (CLK) به پین D13
  • پایه DC به پین D8
  • پایه CS به پین D10
  • پایه RES به پین D9

برای راه‌اندازی دکمه، یه سر دکمه رو به پین 5 آردوینو وصل کن و با یه مقاومت 10 کیلواهم اون رو به زمین (GND) پول‌داون (Pull-down) کن.

باتری رو هم خیلی ساده وصل می‌کنیم. سیم مثبت باتری به پین RAW و سیم منفی به GND وصل میشه. یادت باشه همیشه تغذیه خارجی رو به پین RAW بدی تا رگولاتور خود برد ولتاژ رو تنظیم کنه و برد نسوزه. اتصالات مبدل USB به سریال (برای پروگرام کردن):

  • پایه 3.3 ولت مبدل به VCC آردوینو
  • پایه TXD مبدل به RXD آردوینو
  • پایه RXD مبدل به TXD آردوینو
  • پایه GND مبدل به GND آردوینو
مرحله ۴

آپلود کدهای آردوینو و تنظیمات نرم‌افزاری

حالا باید کدهای آردوینو مخصوص RetroWatch رو دانلود کنی. اما قبل از اینکه کد رو کامپایل کنی، باید یه سری تنظیمات رو روی نرم‌افزارت اعمال کنی.

برای اینکه نمایشگر بتونه تصاویر و متن‌ها رو نشون بده، باید کتابخونه‌های گرافیکی Adafruit_SSD1306 و Adafruit-GFX-Library رو نصب کنی. (اگه دیدی این کتابخونه با کتابخونه Robot_xxx تداخل داره، کافیه کتابخونه Robot_xxx رو از پوشه لایبرری‌های آردوینو پاک کنی).

اگه از چیپ SH1106 برای نمایشگرت استفاده می‌کنی، باید درایور مخصوص همون رو دانلود و نصب کنی و تو کد هم تغییرات مربوط بهش رو اعمال کنی.

البته پیشنهاد من اینه که از کتابخونه u8glib استفاده کنی. این کتابخونه هم رم کمتری مصرف می‌کنه، هم کار باهاش راحت‌تره و هم مدل‌های خیلی بیشتری از نمایشگرها رو پشتیبانی می‌کنه.

تو فایل‌های سورس دانلود شده، یه فایل هدر به اسم bitmap.h وجود داره که آیکون‌های ساعت داخلشه. این فایل رو باید کپی کنی تو مسیر کتابخونه‌های آردوینوت (مثلا تو پوشه‌ای به اسم RetroWatch بساز و اونجا کپی کن). اگه این پوشه وجود نداره، خودت بسازش تا آیکون‌ها موقع کامپایل به مشکل نخورن. حالا فایل اصلی کد (RetroWtchArduino.ino) رو تو نرم‌افزار باز کن.

اگه پین‌های بلوتوث یا دکمه رو دقیقا مثل مراحل قبل وصل کردی، نیازی نیست چیزی رو عوض کنی. اما اگه پین‌ها رو تغییر دادی، باید خط‌های مربوط به SoftwareSerial و buttonPin رو تو کد پیدا کنی و اعدادش رو با پین‌های خودت جایگزین کنی.

اگه از کتابخونه u8glib استفاده می‌کنی، باید فایل مخصوصش (RetroWatchArduino_u8glib.ino) رو باز کنی و خط مربوط به تعریف نوع نمایشگرت رو از حالت کامنت خارج کنی تا با قطعه‌ات مچ بشه. همچنین آدرس I2C نمایشگر رو هم چک کن که درست باشه. یه نکته مهم: اگه از کتابخونه Adafruit استفاده می‌کنی، حواست باشه که پین ریست نمایشگر روی پین D8 تنظیم شده باشه.

حتما بررسی کن که این پین با پین بلوتوث یا دکمه تداخلی نداشته باشه. کدها الان از نمایشگرهای SPI هم به خوبی پشتیبانی می‌کنن. حالا کد رو کامپایل و روی برد آپلود کن. اگه خطایی گرفتی، یه دور پیام ارور رو بخون تا متوجه بشی مشکل از اتصالاته یا کتابخونه‌ها.

وقتی آپلود با موفقیت تموم بشه، لوگوی RetroWatch و لوگوی شرکت سازنده نمایشگر روی صفحه ظاهر میشه. بعدش ساعت 00:00 رو می‌بینی که یعنی همه‌چیز تا اینجا عالی پیش رفته. حالا وقتشه بلوتوث رو تست کنی.

بلوتوث گوشیت رو روشن کن و دنبال دستگاه‌های اطراف بگرد تا ماژول ساعت رو پیدا کنه. وقتی ماژول رو پیدا کرد، باهاش جفت (Pair) شو. رمز پیش‌فرض بلوتوث‌های HC-06 معمولا 1234 هست.

مرحله ۵

نصب و راه‌اندازی اپلیکیشن اندروید

می‌تونی سورس کدهای اپلیکیشن اندروید رو هم تو فایل‌های دانلود شده پیدا کنی و در صورت نیاز خودت کامپایلش کنی، اما راحت‌ترین راه اینه که اپلیکیشن RetroWatch (یا نسخه LE برای اندرویدهای قدیمی‌تر) رو مستقیما از مارکت‌ها دانلود و نصب کنی. بعد از نصب، اول بلوتوث گوشیت رو روشن کن تا به ماژولی که تو مرحله قبل Pair کردیم متصل بشه.

وارد اپلیکیشن شو و از منوی بالای صفحه، تب Notification access رو انتخاب کن. اینجا باید به برنامه اجازه بدی تا بتونه اعلانات و پیام‌های گوشیت رو بخونه.

حالا از منوی Choose the device، برد آردوینو خودت رو از لیست بلوتوث‌ها انتخاب کن. اگه ماژول رو ندیدی، تغذیه مدار و بلوتوث گوشیت رو یه بار دیگه چک کن.

اگه اتصال موفقیت‌آمیز باشه، پایین صفحه پیغام Connected ظاهر میشه. حالا از منوی تنظیمات بالا گزینه Data transfer to Watch رو لمس کن تا اطلاعات زمان و پیام‌ها به ساعتت مخابره بشه.

اگه ارتباط بلوتوثی سالم باشه و پایه‌های TX و RX رو درست وصل کرده باشی، ساعت روی نمایشگرت تنظیم میشه و همه‌چیز جون می‌گیره. حالا تو صاحب یه ساعت هوشمند دست‌ساز شدی! تصاویر بالا دقیقا محیط برنامه و اتصال موفقیت‌آمیز رو نشون می‌دن.

مرحله ۶

آشنایی با منوها و رابط کاربری ساعت

رابط کاربری این ساعت خیلی بهینه طراحی شده و حالت‌های مختلفش به صورت چرخشی عوض میشن. اول از همه وقتی ساعت روشن میشه، لوگوی اولیه رو می‌بینی. بعدش صفحه اصلی ساعت (Clock display) میاد که زمان رو بهت نشون میده.

می‌تونی استایل نمایش زمان (دیجیتال، آنالوگ یا ترکیبی) رو از داخل اپلیکیشن اندروید تغییر بدی. وقتی دکمه روی ساعت رو فشار بدی، میری تو صفحه پیام‌های اضطراری (Emergency message). اگه پیام جدیدی بیاد، خودش مستقیم این صفحه رو باز می‌کنه. با هر بار فشردن دکمه یا گذشت 10 ثانیه، پیام بعدی نشون داده میشه.

بعد از تموم شدن پیام‌های اضطراری، ساعت وارد صفحه پیام‌های عادی (Normal message) میشه و اون‌ها رو هم یکی‌یکی نمایش میده. وقتی آخرین پیام هم تموم شد، دوباره به صفحه اصلی ساعت برمی‌گردی. اگه تا 10 دقیقه هیچ دیتای جدیدی از بلوتوث دریافت نشه، ساعت برای کاهش مصرف باتری وارد حالت استراحت (Idle display) میشه.

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

به خاطر محدودیت شدید حافظه رم میکروکنترلر (فقط 2 کیلوبایت)، این ساعت می‌تونه نهایتا 3 تا پیام اضطراری رو تو خودش ذخیره کنه و وقتی پیام جدیدی بیاد، قدیمی‌ترین پیام پاک میشه. برای پیام‌های عادی هم ظرفیت ذخیره‌سازی 7 تا پیامه.

البته دستت بازه که تو کدهای آردوینو دست ببری و استایل‌های جدیدی برای ساعتت طراحی کنی. خود سیستم 65 تا آیکون پیش‌فرض داره که موقع نمایش پیام‌ها استفاده میشن و می‌تونی آیکون‌های خودت رو هم بهشون اضافه کنی. با یه باتری 140 میلی‌آمپری، ساعتت تو استفاده معمولی حدود 7 ساعت مداوم روشن می‌مونه که عدد قابل قبولی برای یه گجت دست‌سازه.

مرحله ۷

امکانات اپلیکیشن مدیریت ساعت هوشمند

با اینکه خود ساعت پردازشگر قوی‌ای نداره، اما اپلیکیشن اندرویدی امکانات فوق‌العاده و جذابی بهش میده. مهم‌ترین قابلیتش فیلتر کردن پیام‌هاست تا فقط چیزهایی که برات مهمه رو روی مچ دستت ببینی. اپلیکیشن 4 تا تب اصلی داره: تب لیست پیام‌ها (Message list tab): اینجا تمام پیام‌ها و نوتیفیکیشن‌هایی که گوشیت دریافت کرده لیست میشه. به صورت پیش‌فرض همه پیام‌ها غیرفعال هستن تا ساعتت شلوغ نشه.

می‌تونی روی هر پیام بزنی و تنظیم کنی که پیام‌های اون برنامه خاص به ساعت فرستاده بشن یا نه. تب تنظیمات فیلتر (Filter setting tab):

این بخش قلب تپنده برنامه‌ست! اینجا می‌تونی فیلترهای مختلفی تعریف کنی؛ مثلا پیام‌هایی که کلمه خاصی دارن رو کلا حذف کنی یا متن پیام رو قبل از ارسال به ساعت تغییر بدی (مثلا چون ساعت از فارسی پشتیبانی نمی‌کنه، می‌تونی کلمات رو به فینگلیش یا انگلیسی تبدیل کنی). تب فید خوان (RSS tab):

این یه قابلیت فوق‌العاده‌ست! می‌تونی فید RSS سایت‌های هواشناسی یا خبری رو اینجا وارد کنی تا آپدیت‌هاش مستقیم روی مچ دستت بیاد و همیشه از جدیدترین خبرها باخبر باشی. تب کنترل ساعت (Watch control tab):

اینجا می‌تونی استایل نمایش زمان رو تغییر بدی، نشانگرها رو فعال یا غیرفعال کنی و با وارد کردن جیمیلت، آمار ایمیل‌های نخونده رو مستقیما روی ساعتت ببینی. در کل، این اپلیکیشن سه نوع دیتا رو برای ساعت می‌فرسته: نوتیفیکیشن‌ها (که روی اندروید 4.3 به بالا عالی کار می‌کنه)، اطلاعات سیستم (مثل وضعیت باتری گوشی، آنتن، وای‌فای و وضعیت شارژ) و در نهایت فیدهای RSS.

اپلیکیشن هر 30 دقیقه این اطلاعات رو آپدیت می‌کنه و تو پس‌زمینه گوشی بی‌سروصدا به کارش ادامه میده تا تجربه روونی از یه گجت هوشمند داشته باشی. امکانات دیگه‌ای هم برای شخصی‌سازی آیکون‌ها و دسته‌بندی پیام‌های عادی و اضطراری وجود داره که خودت می‌تونی باهاشون کار کنی. همه این موارد دست تو رو برای شخصی‌سازی باز می‌ذاره. به مرور زمان که با برنامه کار کنی، قلق‌هاش کاملا دستت میاد.

پس با خیال راحت تنظیمات مختلف رو تست کن. هیچ‌چیزی خراب نمیشه!

مرحله ۸

بسته‌بندی و ساخت قاب برای ساعت

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

  • پردازنده: ATmega328 با ولتاژ 3.3 ولت (8 مگاهرتز)
  • حافظه فلش: 32 کیلوبایت (2 کیلوبایت برای بوت‌لودر استفاده میشه)
  • حافظه رم: 2 کیلوبایت
  • ابعاد بدون قاب: 34 در 32 در 12 میلی‌متر
  • باتری: لیتیوم پلیمر 140 میلی‌آمپر (6 تا 7 ساعت استفاده، 1 تا 2 ساعت زمان شارژ)
  • اتصال بی‌سیم از طریق بلوتوث به اندروید
  • پشتیبانی از نوتیفیکیشن‌ها، دیتای سیستم و فید RSS
  • قابلیت فیلتر پیام‌ها
  • کاملا متن‌باز و قابل شخصی‌سازی
مرحله ۹

جمع‌بندی و نتیجه‌گیری

تو این پروژه دیدیم که دنیای متن‌باز (Open Source) چقدر قدرتمند و هیجان‌انگیزه! حتی اگه متخصص الکترونیک نباشی، با دسترسی به قطعات ارزون‌قیمت و کدهای آماده می‌تونی ایده‌های جذابی مثل یه ساعت هوشمند رو به واقعیت تبدیل کنی. کافیه کمی خلاقیت به خرج بدی و کدهای آردوینو یا تنظیمات اپلیکیشن رو شخصی‌سازی کنی تا ساعتت دقیقا همون چیزی بشه که خودت نیاز داری.

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

پیش به سوی پروژه‌های هیجان‌انگیز بعدی در آیسی‌مدار!

فایل‌های پیوست

ZIP retrowatch-master.zip
ZIP Adafruit_SSD1306-master.zip
ZIP Adafruit-GFX-Library-master.zip

تو میتونی اولین سازنده باشی!

اگه پروژه رو ساختی به اشتراک بزار و اعتبار هدیه بگیر

این آموزش با استانداردهای اختصاصی آیسی‌مدار بازنویسی و بهینه‌سازی شده و تمامی حقوق انتشار آن متعلق به این مجموعه است و در صورت کپی یا بازنشر پیگرد قانونی خواهد داشت.

آموزش‌های مشابه

گفتگو‌های کاربران

هنوز نظری ثبت نشده؛ تو شروع کن!