در پروژه مرتب‌سازی سکه با استفاده از آردوینو، با استفاده از سنسورهای IR در حال ساخت دستگاه شمارش آردوینو هستیم. دستگاه مرتب‌سازی سکه با استفاده از آردوینو، سکه‌ها را در بخش‌های مختلف با کمک یک سنسور مادون‌قرمز شمارش و مرتب‌سازی می‌کند. در اینجا ترتیبی ساخته شده است که در آن حسگرهای IR قرار دارند تا سکه‌های مختلفی را حس کنند و از Arduino UNO برای پردازش داده‌ها و نشان دادن مقدار کل شمارش در LCD 16×2 استفاده می‌شود.

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

  • آردوینو UNO
  • سنسور IR
  • برد‌بورد
  • ال سی دی Alphanumeric 16 * 2
  • ماژول I2C برای LCD Alphanumeric 2 x16 (1602)
  • سیم‌های اتصال

ساختار دستگاه مرتب سازی سکه با آردوینو

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

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

ساختار مرتب کردن سکه با آردوینو

مرحله 2: تنظیم بالا را در یک ساختار شیب‌دار مطابق تصویر زیر قرار دهید. پس از تنظیم، آن را با درج سکه‌های مختلف روی شیب بررسی کنید تا اطمینان حاصل شود که تنظیمات به خوبی کار می‌کند.

اگر سکه به درستی درج نشده است، به منظور مرتب‌سازی سکه با استفاده از آردوینو، اندازه سوراخ را با توجه به سکه کمی افزایش داده و دوباره بررسی کنید و این کار را ادامه دهید تا زمانیکه موفق شوید.

تنظیم ساختار مرتب‌سازی سکه با استفاده از آردوینو

تنظیم دستگاه مرتب‌سازی سکه با آردوینو

مرحله 3: در مرتب‌سازی سکه با استفاده از آردوینو، سنسورهای IR را در نزدیکی مسیر خروجی سکه‌های تعیین‌شده قرار دهید. بسیار مهم است که سنسورها را به درستی قرار دهید، با استفاده از پتانسیل‌سنج آنها را کالیبره کنید.

سپس دوباره سکه‌ها را وارد کنید تا عملکرد سنسور را چک کنید. درباره مدار سنسور IR در اینجا بیشتر بدانید.

مرتب‌سازی سکه با استفاده از آردوینو

مدار مرتب سازی سکه با آردوینو

در زیر نمودار مدار دستگاه شمارش آردوینو آمده است:

دیاگرام مدار مرتب‌سازی سکه با استفاده از آردوینو

در اینجا، سنسورهای IR در مسیرهای خروجی مختلف دستگاه مرتب‌سازی سکه با آردوینو، قرار گرفته‌اند تا سکه‌ها را حس کنند. هنگامی که یک سکه وارد شمارنده آردوینو می‌شود، طبق طرح مکانیکی وارد مسیر اختصاصی می‌شود و سنسور IR مربوطه، سکه را حس می‌کند و مقدار خروجی بالا را به آردوینو می‌دهد که می‌تواند توسط پین‌های آنالوگ آردوینو خوانده شود. سنسور IR که مقدار بالایی دارد، مقدار سکه مانند سکه 100تومانی، 200 تومانی و 500تومانی را تعیین می‌کند.

در اینجا یک ال‌سی‌دی Alphanumeric 16×2 با استفاده از ماژول I2C با آردوینو در ارتباط است تا تعداد سکه‌های وارد شده در جعبه را نمایش دهد. این ال‌سی‌دی همچنین بدون استفاده از ماژول I2C می‌تواند مستقیماً به آردوینو متصل شود، اما مرتب‌سازی سکه با استفاده از آردوینو، به تعداد اتصالات بیشتری نیاز دارد.

بنابراین برای ساده‌تر شدن آن، از ماژول I2C به همراه LCD استفاده می‌شود که فقط از 2 پین، یعنی SCL ،SDA برای اتصال LCD با آردوینو استفاده می‌کند. برای تغذیه آردوینو از آداپتور 12VDC ،1 AMP AC-DC استفاده شده است که می‌تواند مستقیماً به پایه برق آردوینو متصل شود. پس از کمی لمس، راه‌اندازی کامل مرتب‌کننده سکه بر پایه آردوینو (Arduino based Coin Sorter) مانند زیر خواهد بود:

دستگاه مرتب‌سازی سکه با استفاده از آردوینو

برنامه نویسی Arduino برای مرتب کردن سکه

پس از اتصال موفقیت‌آمیز سخت‌افزار، اکنون زمان آن رسیده است که Arduino را برنامه‌ریزی کنید. کد کامل آردوینو در قسمت پایین این آموزش آورده شده است. توضیحات مرحله‌ای از کد در زیر آورده شده است: اولین کاری که باید در برنامه انجام شود، شامل کلیه کتابخانه‌های مورد نیاز است. در اینجا ما، کتابخانه “LiquidCrystal_I2C.h” را برای استفاده از رابط I2C یک LCD و “Wire.h” را برای عملکرد I2C در آردوینو گنجانده‌ایم.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);

در داخل  () setup، دستورات LCD برای نمایش پیام خوش آمدگویی در LCD نوشته شده است.

lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("  ARDUINO BASED       ");
lcd.setCursor(0,1);
lcd.print("  COIN SORTING       ");
delay(2000);
lcd.clear();

در داخل() loop از تابع analogRead برای خواندن مقادیر سنسور مادون قرمز، از کانال‌های مختلف آنالوگ آردوینو و ذخیره آنها در متغیرهای مختلف استفاده می‌شود.

int s1=analogRead(A0);
int s2=analogRead(A1);
int s3=analogRead(A2);

سپس کد زیر برای تشخیص سکه‌ها در پروژه مرتب‌سازی سکه با استفاده از آردوینو و افزایش مقادیر شمارنده سکه نوشته شده است. در اینجا از یک متغیر f1 برای جلوگیری از شمارش چندین سکه استفاده می‌شود.

if(s1>=200 && f1==0)
{
  f1=1;
}
else if(s1<200 && f1==1)
{
  f1=0;
  c1++;
}

در آخرین مرحله مرتب‌سازی سکه با استفاده از آردوینو، مقادیر شمارش با استفاده از دستورات زیر روی LCD نمایش داده می‌شوند.

lcd.setCursor(0,0);
lcd.print("RS10   RS2   RS5");
lcd.setCursor(1,1);
lcd.print(c1);
lcd.setCursor(7,1);
lcd.print(c2);
lcd.setCursor(14,1);
lcd.print(c3);

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

پس از تنظیم کامل و بارگذاری کد مرتب‌سازی سکه با استفاده از آردوینو، منبع تغذیه  12v dcرا روشن کنید. ابتدا یک پیام “خوش آمدید” روی LCD نمایش داده می‌شود و بعد از چند ثانیه صفحه نمایش با تعداد تمام سکه‌های موجود در LCD نمایش داده می‌شود. در ابتدا صفر نشان داده می‌شود زیرا هنوز سکه‌ای دراختیار وارد نکرده‌ایم.

در مرحله بعد، هر سکه‌ای (100/200/500 تومانی) را در بالای دستگاه که در آن “واردکردن سکه” نوشته شده است وارد کنید. اکنون خواهید دید که مقدار شمارش سکه باید بر روی LCD به روز شود. سپس چندین سکه از مقادیر مختلف را وارد کنید و تعداد سکه‌های مربوطه را بر روی LCD بررسی کنید.

دستگاه مرتب‌سازی سکه توسط آردوینو

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

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); 
int f1=0,f2=0,f3=0;
int c1=0,c2=0,c3=0;
void setup() 
{
lcd.init(); 
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("  ARDUINO BASED       ");
lcd.setCursor(0,1);
lcd.print("  COIN SORTING       ");
delay(2000);
lcd.clear();
}
void loop() 
{
int s1=analogRead(A0);
int s2=analogRead(A1);
int s3=analogRead(A2);
 lcd.setCursor(0,0);
 lcd.print("RS10   RS2   RS5");
if(s1>=200 && f1==0)
{
  f1=1;
}
else if(s1<200 && f1==1)
{
  f1=0;
  c1++;
}
if(s2>=200 && f2==0)
{
  f2=1;
}
else if(s2<200 && f2==1)
{
  f2=0;
  c2++;
}
if(s3>=200 && f3==0)
{
  f3=1;
}
else if(s3<200 && f3==1)
{
  f3=0;
  c3++;
}
lcd.setCursor(1,1);
lcd.print(c1);
lcd.setCursor(7,1);
lcd.print(c2);
lcd.setCursor(14,1);
lcd.print(c3);
}