پلتفرم آردوینو: روح آردوینو در کالبدهای دیگر قسمت اول | همراه با راه‌اندازی OLED و سنسور دما DS18B20

پلتفرم آردوینو روح آردوینو در کالبدهای دیگر قسمت اول همراه با راه‌اندازی OLED و سنسور دما DS18B20
59 بازدید
۱۴۰۴-۰۷-۱۴
9 دقیقه
  • نویسنده: gasemi.m100
  • درباره نویسنده: ---

در این آموزش ابتدا نحوه ی راه‌اندازی سنسور DS18B20  و نمایشگر OLED را بررسی می‌کنیم. سپس میخواهیم بدون استفاده از خودِ برد آردوینو و تنها با تکیه بر پلتفرم آن یک محصول را تغییر کاربری دهیم و آن را به ابزاری برای تست و توسعه تبدیل کنیم.

اخیراً در شرکتی که مشغول به کار هستم، برای بردهایی که در آن از سنسور دمای DS18B20 جهت پایش محیطی استفاده می‌شود، مشکلاتی ایجاد شده. به دلیل ارسال اطلاعات به سرور ، عیب‌یابی این مشکلات در محل ساده نبود؛ چرا که ممکن بود ایراد از خودِ برد، سنسور، سوکت یا سیم‌های ارتباطی ــ یا حتی ترکیبی از آن‌ها ــ باشد.
به همین علت تصمیم گرفته شد تستری برای سنسور DS18B20 در سریع ترین زمان و با کمترین هزینه ممکن ساخته شود. اینجاست که آردوینو خودنمایی می‌کند؛ زمانی که نمی‌خواهید “چرخ را از اول اختراع کنید”.
همان‌طور که در یادداشت “آردوینو خوب، بد، زشت اشاره شد، این ابزار در جامعه‌ی الکترونیک با دو نگاه متفاوت دیده می‌شود: گاهی خوب و کاربردی ، و گاهی محدود و آماتوری. اما آردوینو با وجود صدها کتابخانه، مثال‌های آماده و جامعه‌ای گسترده همواره ابزاری برای نمونه سازی و پیشبرد سریع یک ایده یا پروژه در بین همگان شناخته می‌شود.
این نیاز بهانه ای شد برای یادداشت پیش رو ، که در قالب یک مثال کاربردی به بررسی یکی از روش‌های استفاده از پلتفرم آردوینو در کالبد های مختلف بپردازیم.

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

بخش اول : آردوینوی خالص: راه اندازی DS18B20 و OLED(SSD1306) با Arduino

سنسورDS18B20

یک حسگر دیجیتال دماست که به دلیل دقت خوب، سیم‌کشی ساده و خروجی دیجیتال بسیار پرکاربرد است. این سنسور با پروتکل  1-Wire کار می‌کند، بنابراین تنها یک خط داده برای ارتباط نیاز دارد. هر سنسور یک شناسه یکتای ۶۴ بیتی دارد که امکان اتصال چندین سنسور روی یک باس مشترک را فراهم می‌کند. همین ویژگی‌ها باعث می‌شود استفاده از آن نسبت به سنسورهای آنالوگ ساده‌تر و قابل‌اعتمادتر باشد. مخصوصا زمانی که طول اتصالات زیاد است.

🔹 مشخصات کلیدی

  • محدوده دما: -55°C تا +125°C
  • دقت: ±0.5°C در بازه -10°C تا +85°C
  • رزولوشن: 9 تا 12 بیت
  • ولتاژ تغذیه: 3.0V تا 5.5V
  • شماره سریال یکتا 64 بیتی
  • نیاز به تنها یک قطعه ی خارجی (مقاومت 4.7k به عنوان پول آپ خط دیتا)

DS18B20 pinout

نمایشگر OLED

برخلاف نمایشگرهای LCD سنتی، نمایشگرهای OLED به نور پس زمینه نیاز ندارند زیرا پیکسل‌های OLED نور خود را تولید می‌کنند. این امر به  OLEDها کنتراست بالا، زاویه دید عالی و رنگ‌های مشکی واقعاً عمیق می‌دهد. از آنجایی که به نور پس زمینه نیاز ندارند، نمایشگرهای OLED از انرژی کمتری – به طور متوسط ​​حدود 20 میلی‌آمپر – استفاده می‌کنند که آنها را برای پروژه‌های باتری‌دار ایده‌آل می‌کند. این نمایشگرها در بازار ایران در ابعاد مختلف و در پروتکل‌های SPI و I2C موجود است. ما از ماژول ”OLED 0.96 با درایور SSD1306 با پروتکل I2C استفاده می‌کنیم اما شما می توانید از نمونه‌ای که با SPI کار می کند استفاده کنید

نمایشگرهای OLED با ولتاژهای بین ۳.۳ ولت تا ۵ ولت کار می‌کنند. این یعنی می‌توانید به راحتی و بدون هیچ مشکلی نمایشگر OLED خود را به یک میکروکنترلر ۳.۳ ولت یا ۵ ولت (مانند آردوینو) متصل کنید.

SPI OLED display pinout 12C OLED Display Pinout

برای راه اندازی سنسور DS18B20 از کتابخانه‌های OneWire و DallasTemperature استفاده کردیم. و برای راه اندازی OLED از کتابخانه ی u8glib استفاده شد. چرا که توانایی راه‌اندازی طیف وسیعی از نمایشگرها را دارد. و به راحتی می توان با تغییرات اندکی در کد، نمایشگر را تعویض کرد. برای استفاده از دیگر نمایشگرهای پشتیبانی شده این فایل را دانلود و به اول کدتان اضافه کنید. سپس خط مربوط به آن را از حالت کامنت خارج کنید.
برای آشنایی بیشتر با این کتابخانه‌ی جذاب (u8glib) می توانید از صفحه‌ی گیت‌هاب آن بازدید کنید. در این صفحه درایورها و فونت‌های پشتیبانی شده و اطلاعات مفید فراوانی وجود دارد.

شاید برای شما مفید باشد:
آموزش میکروکنترلر STM32 قسمت سوم: چالش تأخیر

✅ نکته

این کتابخانه دیگر آپدیت نمی شود. و ورژن بروزتری به نام u8g2 ارائه شده.

✅ نکته

برای افزودن کتابخانه تنها کافیست به اینترنت متصل باشید و کلید ترکیبی Ctrl + Shif + I را بفشارید یا از نوار منو مسیر Sketch > Include Library > Manage Libraries را دنبال کنید در پنجره باز شده نام کتابخانه را جستجو و آن را نصب کنید.
نحوه متصل کردن قطعات روی بردبورد

نحوه متصل کردن قطعات روی بردبورد

کد و توضیحات

این کد برای تست موارد اشاره شده در مقدمه، سه پارامتر زیر را در سه سطر نمایش می دهد:

  1. وضعیت سنسور DS18B20 : شامل سه حالت اتصال صحیح (نمایش دما) ، عدم اتصال (disconnect) و اتصال کوتاه (Short)
  2. ولتاژ تغذیه ورودی اصلی برد ( که با تقسیم مقاومتی محاسبه می‌شود)
  3. ولتاژ تغذیه سنسور که پس از یک مقاومت کم‌اهم سری اندازه‌گیری می‌شود؛

(افت این ولتاژ نشان‌دهنده اتصال‌کوتاه در سنسور یا اتصالات آن است. برای این ولتاژ تقسیم مقاومتی در نظر گرفته نشده زیرا در محدوده اندازه‌گیری ADC است. اما قابلیت استفاده از تقسیم مقاومتی در کد درنظر گرفته شده.)
در کد زیر امکان راه‌اندازی هر دو پروتکل SPI و I2C برای OLED درنظر گرفته شده. فقط کافیست که پروتکلی که نمایشگر شما از آن استفاده می‌کند را از کامنت خارج و دیگری را کامنت کنید. دقت کنید که از SPI نرم افزاری استفاده شده و پین‌های آن را می‌توان تغییر داد.

✅ نکته

در کتابخانه  u8glib مفهومی به نام لوپ ترسیم وجود دارد که همه اطلاعاتی که باید نمایش داده شود باید در این لوپ قرار بگیرند.

در تابع ترسیم یعنی drawScreen ، ابتدا فونت مورد نظر را با دستور ()u8g.setFont انتخاب می‌کنیم. سپس داده‌های عددی را با تابع  dtostrf به رشته تبدیل می‌کنیم تا بتوان آن‌ها را چاپ کرد.
در داخل لوپ ترسیم با تابع drawStr(x, y, text) موقعیت هر عنصر را با مختصات پیکسلی (x, y) تعیین می‌کنیم. در این مورد مقدار سعی و خطا برای یافتن مختصات مناسب لازم است.

طبق توضیحات ارائه شده با کامپایل کدی که در ادامه آمده ، نتیجه‌ی زیر نمایش داده می‌شود:

نمایشگر OLED در حالت های مختلف

نمایشگر OLED در حالت های مختلف

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

شاید برای شما مفید باشد:
آموزش میکروکنترلر آرم سری STM32F4 قسمت دوم

بخش دوم: پلتفرم آردوینو در کالبد دیگر | هم کالبد

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

البته به دلیل استفاده از OLED این میکرو حافظه ی لازم برای برنامه ما را نخواهد داشت پس آن را با یک میکرو ATmega328P که پین های سازگاری با ATmega8 دارد تعویض می‌کنم.

نکته: ساده‌ترین روش استفاده از پلتفرم آردوینو این است که بوت‌لودر آردوینو را روی میکروکنترلرهایی پروگرام کنیم که مشابه میکروکنترلرهای به‌کاررفته در بردهای آردوینو هستند. در این حالت باید دقت کنید که کریستال هم مشابه کریستال به‌کاررفته در بردهای آردوینو باشد (برای ATmega معمولاً ۱۶ مگاهرتز) چرا که بوت‌لودر با همین فرکانس اسیلاتور کار می‌کند و برای فرکانس‌های دیگر سازگار نیست. همچنین قطعات لازم برای پایدار کردن پایه‌ی ریست نیز لازم است.

در این مرحله به یک ابزار دیگر یعنی پروگرامر AVR هم نیاز داریم. ما از پروگرامر اپن‌سورس USBasp استفاده می‌کنیم که به‌خوبی با پلتفرم آردوینو همگام است. به جای پروگرامر مجزا، می‌توانید از یک برد آردوینو (مثل UNO) که در حالت ISP Programmer  برنامه ریزی شده هم استفاده کنید و به کمک آن میکروکنترلر خود را پروگرام نمایید.

✅ نکته

پروگرامر AVR با رابط USBasp برای برنامه‌ریزی درون‌مداری ISP

پروگرامر AVR با رابط USBasp برای برنامه‌ریزی درون‌مداری ISP

نسخه‌های قدیمی USBasp شاید نیاز به آپدیت فریمور داشته باشند. همچنین برای استفاده از آن نیاز به نصب درایور دارید. برای نصب درایور می‌توانید از برنامه zadig استفاده کنید.(در انتهای این یادداشت اشاره شده)

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

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

بعد از پیدا کردن ترکیب پایه‌های ISP میتوان به سادگی میکروکنترلر روی برد را پروگرام کرد. من حتی آنها را لحیم نمی‌کنم فقط پین‌هدر‌ها در پدهای برد زاویه دار تحت فشار نگه می‌دارم تا متصل باقی بماند (شما لحیم کنید).
در مرحله بعدی در  Arduino IDE در منو Tools ابتدا بردی را انتخاب کنید که از میکروکنترلر مشابه شما استفاده کند من Arduino nano را انتخاب کردم سپس طبق عکس 1 بوت‌لودر آردوینو را روی میکرو بریزید با این کار فقط بوت‌لودر و فیوزبیت‌ها پروگرام می‌شود. حال طبق عکس 2 می‌توانید میکروکنترلر را با پروگرامری که انتخاب کردید، برنامه‌ریزی کنید.

نحوه‌ی ریختن بوت‌لودر با پروگرامر در آردوینو

نحوه‌ی ریختن بوت‌لودر با پروگرامر در آردوینو

ریختن برنامه با پروگرامر در آردوینو

ریختن برنامه با پروگرامر در آردوینو

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

✅ نکته

اگر میخواهید از ATmega8 استفاده کنید. باید “Arduino NG or older” (که از اولین بردهای آردوینو بوده) را به عنوان برد انتخاب کنید. سپس در قسمت “Processor” گزینه ی ATmega8 را انتخاب کنید.

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

محصول نهایی پروژه

اطلاعات
59
0
0
لینک و اشتراک
profile

نویسنده: gasemi.m100

متخصص الکترونیک

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

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

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. جستجو در آیسی
family

سیسوگ‌شاپ | فروشگاه محصولات Quectel

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

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

سیکار | اولین مرجع متن باز ECU در ایران

بررسی و ارائه اطلاعات مربوط به ECU (واحد کنترل الکترونیکی) و نرم‌افزارهای متن باز مرتبط با آن برو به سیکار
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ
سیسوگ‌شاپ

فروشگاه محصولات Quectel

پالت
سیسوگ فروم

محلی برای پاسخ پرسش‌های شما

سیسوگ جابز
سیسوگ
سیسوگ فروم
سی‌کار

اولین مرجع متن باز ECU در ایران

سیسوگ مگ
آی‌سی

موتور جستجوی قطعات الکترونیکی

سیسوگ آکادمی
پالت

بازار خرید و فروش قطعات الکترونیک

دیدگاه ها

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله