آردوینو Pro Mini آموزش آردوینو اینترنت اشیا IOT برد ESP8266 پروژه های آردوینو

پروژه سیستم نوبت دهی با پخش صدا و نمایش نوبت با آردوینو Arduino

نوشته شده توسط معین صابری

سیستم های نوبت دهی، یکی از ابزارهای بسیار پرکاربرد در بانک ها، دفاتر پیشخوان، صرافی ها، ادارات و…. هستند. به کمک این دستگاه، مشتریان و یا ارباب رجوع، می توانند با دریافت شماره، منتظر نوبت برای سرویس دهی، بمانند. از طرفی کارمندان، با فشار دادن یک دکمه، می توانند مشتری را برای سرویس گیری، فرا بخوانند. در این آموزش به کمک برد آردویینو UNO، اقدام به طراحی و پیاده سازی یک سیستم نوبت دهی بانکی، می نماییم. در این سیستم، یک کلید برای دریافت شماره توسط مشتریان، تعیین می نماییم. در طرف دیگر، به ازای هر باجه، یک کلید تعریف کرده که با فشردن آن کلید، ضمن اعلام صوتی شماره و باجه، می توان با اتصال آردویینو به تلویزیون، وضعیت نوبت دهی را نمایش داد. پیشتر در رابطه با نحوه اتصال آردویینو به تلویزیون، در این آموزش، صحبت کرده ایم. در این آموزش با به کارگیری ماژول DF mini player به عنوان پخش صدا جهت معرفی باجه و شماره، و ماژول نمایشگر Seven Segment جهت نمایش شماره به مشتری، سیستم نوبت دهی را طراحی و پیاده سازی می نماییم. در ادامه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.


نحوه عملکرد سیستم نوبت دهی بانکی


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

 

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

آرایه را می توان از انوع مختلفی تعریف نمود. به عنوان مثال، یک آرایه می تواند از نوع char، float و int باشد. جهت دسترسی به اعضای آرایه، به عنوان مثال عضو سوم، به صورت زیر عمل می شود.

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

 


برد آردویینو UNO


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

 

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

 turn system with audio playback and show turn with Arduino

 

از دیگر مزایای بردهای آردویینو، وجود رگولاتور تغذیه ۳٫۳ ولتی است. این رگولاتور می تواند برای تغذیه سنسورها و ماژول های مختلف، مناسب باشد. همچنین، این برد دارای رگولاتور داخلی ۵ بوده که علاوه بر تغذیه میکروکنترلر خود، می تواند سنسورها و دستگاه های دیگر را تغذیه نماید. همچنین وجود پین هادرهای مادگی جهت دسترسی به پایه ای ورودی/خروجی میکروکنترلر، کار با این برد را بسیار ساده می نماید.

 


ماژول MP3 PLAYER


ماژول MP3 PLAYER از نوع DF، یکی از پرکاربردترین ماژول های پخش صدا به شمار می رود. ابعداد کوچک، قیمت مناسب و سهولت در راه اندازی، این ماژول را به انتخابی ماسب در پروژه های مختلف که نیاز به پخش صدا است، بدل می نماید. این ماژول می تواند فایل های MP3 ذخیره شده در کارت SD را به سادگی خوانده و از طریق بلندگو، پخش نماید.

turn system with audio playback and show turn with Arduino

 

از دیگر قابلیت های این ماژول با توان پخش سه وات، می توان به رابط سریال آن اشاره نمود. ماژول DF PLAYER با پشتیبانی از پروتکل UART، به سادگی با میکروکنترلرها ارتباط برقرار کرده و فرامین مربوط به پخش صدا را دریافت می نماید. برای این ماژول، شرکت سازنده آن کتابخانه ای توسعه داده که به سادگی می توان از آن در پروژه ها، استفاده نمود. برای راه اندازی و کار با این ماژول، کافیست فایل های صوتی را در یک کارت SD و در صورت تمایل در فولدرهای مختلف، ذخیره کرده و با ارسال فرمان به ماژول، فایل های هر فولدر را پخش نمایید. در نهایت، این ماژول بازه تغذیه بین ۳٫۲الی ۵ ولت داشته که ۴٫۲ ایده ال است. همچنین، بهتر است تغذیه این ماژول از آردویینو تامین نشده و از منبع تغذیه مستقل و قدرتمند تر تغذیه این ماژول تامین گردد.

 


ماژول SEVEN SEGMENT


نمایشگرهای هفت قسمتی یا Seven Segment، یکی از پرکاربردترین ماژول ها در نمایش پارامترها و خروجی به کاربر هستند. اما یکی از معایب این نمایشگرها، تعداد زیاد پایه جهت راه اندازی است. اما ماژول TM1637 با حل این مشکل و با بهره گیری از پروتکل I2C، تنها نیاز به دو پایه جهت راه اندازی دارد.

turn system with audio playback and show turn with Arduino

 

نمایشگر TM1637 سازگاری کامل با بردهای آردویینو داشته و به لطف کتابخانه قدرتمند آن، به سادگی راه اندازی می شود. از آنجاییکه تغذیه این ماژول ۵ ولت است، به سادگی این تغذیه را می توان از آردویینو تامین نمود. در این پروژه از این نمایشگر جهت نمایش شماره مشتری به وی، استفاده می کنیم. با توجه به اشغال تنها دو پایه از آردویینو و کتابخانه قدرتمند آن، این نمایشگر انتخابی بسیار مناسب در پروژه ها جهت نمایش پارامترهایی نظیر دما، رطوبت و… به شمار می رود.

 


ماژول مبدل کاهنده ولتاژ LM2596


ماژول کاهنده ولتاژ LM2596، یکی از ابزارهای تنظیم ولتاژ در پروژه های مختلف است. این ماژول که در حقیقت رگولاتور کاهنده از نوع سوییچینگ به شمار می آید، قادر است تا با دریافت ولتاژ ورودی، خروجی مورد نظر کاربر را تنظیم نماید. خروجی این ماژول تا ۳ امپر بوده و بسیار مناسب برای پروژه های مختلف با ولتاژهای تغذیه خاص است.

turn system with audio playback and show turn with Arduino

ماژول کاهنده ولتاژ LM2596 دارای ولتاژ ورودی ۳ الی ۴۰ بوده و می تواند خروجی را بین ۱٫۵ الی ۴۰ تنظیم کند. نوع دیگر این ماژول که HVS یا ولتاژ بالا نام دارد، می تواند ولتاژ ورودی را از ۴٫۵ الی ۶۰ ولت دریافت نماید.

 


کتابخانه های مورد نیاز و نحوه نصب


در این پروژه از ماژول TM1637 جهت نمایش شماره به مشتری و از ماژول DF PLAYER جهت پخش صدا استفاده می کنیم. بنابراین نیاز است تا در ابتدا، کتابخانه مربوط به هرکدام را در نرم افزار آردویینو، نصب نماییم. برای نصب کتابخانه نمایشگر Seven Segment، ابتدا در نرم افزار آردویینو، مطابق تصویر زیر و با توجه به فلش های قرمز رنگ، بر روی منوی Tools و سپس Manage Libraries کلیک کنید.

 

در قدم بعدی، در منوی ظاهر شده، در کادر جستجو، عبارت TM1637 را جستجو کرده و در میان کتابخانه های ظاهر شده، کتابخانه مشخص شده با کادر قرمز رنگ در تصویر زیر را نصب نمایید.

 

پس از این مرحله، نوبت به نصب کتابخانه پخش صدای DF MINI PLAYER  می رسد. مطابق مرحله، پیشین با کلیک بر روی منوی Tools وسپس انتخاب گزینه Manage Libraries، در کادر جست و جو، عبارت DFPlayer_Mini را تایپ کرده و مطابق کادر قرمز رنگ در تصویر زیر، کتابخانه DF ROBOT را نصب نمایید.

 


شماتیک و اتصالات


در این قسمت به بررسی شماتیک و اتصالات مدار پروژه نوبت دهی بانکی می پردازیم. در ابتدا، تصویر زیر را که شماتیک کلی پروژه را نشان می دهد، بررسی کنید.

شماتیک پروژه نوبت دهی بانکی با آردوینو - دیجی اسپارک

 

 

با توجه به تصویر شماتیک فوق، سیم کشی های مدار را به صورت زیر، در پیش گرفته و اجرا کنید. در ابتدا، ماژول نمایشگر Seven Segment را به صورت زیر به آردویینو متصل کنید.

  • اتصال پایه VCC ماژول نمایشگر به ۵ ولت
  • اتصال پایه GND ماژول نمایشگر به GND آردویینو
  • اتصال پایه CLK ماژول نمایشگر به پایه A4 آردویینو
  • اتصال پایه DIO ماژول نمایشگر به پایه A5 آردویینو

در ادامه، جهت تغذیه ماژول MP3، بهتر است از یک منبع تغذیه جداگانه استفاده کرده و تغذیه این ماژول از آردویینو تامین نگردد. به همین دلیل، ما از یک مبدل کاهنده ولتاژ LM2596 جهت تامین تغذیه این ماژول و تنظیم ولتاژ خروجی آن بر روی ۴٫۲ ولت، استفاده کرده ایم. برای اتصالات این ماژول، به صورت زیر عمل کنید.

  • اتصال پایه خروجی مثبت مبدل کاهنده به VCC ماژول MP3
  • اتصال پایه خروجی منفی مبدل کاهنده به GND ماژول MP3
  • اتصال پایه RX ماژول MP3 به کمک یک مقاومت یک کیلو اهمی به پایه ۱۱ آردویینو
  • اتصال پایه TX ماژول MP3 به کمک یک مقاومت یک کیلو اهمی به پایه ۱۰ آردویینو
  • اتصال پایه GND ماژول MP3 به پایه GND آردویینو
  • اتصال پایه مثبت بلندگو به پایه SPK1 ماژول MP3
  • اتصال پایه منفی بلندگو به SPK2 ماژول MP3

در این پروژه، پایه A0 برای دریافت شماره و پایه های ۲و ۳ و ۴ برای باجه های ۱ الی ۳ جهت فراخوان مشتری، تعریف شده اند. این پایه ها با مقاومت داخلی آردویینو پول آپ شده و نیاز است تا برای هر یک، یک کلید فشاری(Push Button) قرار دهید. هریک از این کلید ها را به صورتیکه یک پایه آن به زمین و پایه دیگر به پایه مورد نظر آردویینو متصل شود، سیم کشی کنید.

 


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


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

 

جهت دسترسی به این بخش، اشتراک اسپارکر پلاس تهیه کنید.

 

 


تحلیل کدهای پروژه سیستم نوبت دهی


در این قسمت به بررسی و تحلیل کدها می پردازیم. توجه داشته باشید که درون کدهای این پروژه، شرح کاملی از نحوه عملکرد کدها به صورت کامنت درج شده است. بنابراین در این قسمت، به صورت مختصر، به بررسی کدهای به کار رفته می پردازیم. در این برنامه، از کتابخانه DF PLAYER جهت پخش صدای فراخوان مشتری به باجه و کتابخانه TM1637 جهت نمایش شماره مشتری بر روی نمایشگر، استفاده شده است. در ادامه، دو متغیر اصلی، یکی به نام number و دیگری یک  آرایه با نام ar، به ترتیب وظیفه نگه داری شماره مشتری و ایجاد صف مشتریان را دارند.

 

جهت دسترسی به این بخش، اشتراک اسپارکر پلاس تهیه کنید.

 

 


اجرا پروژه نوبت دهی بانکی با آردوینو


در این قسمت به اجرای پروژه می پردازیم. پیش از اجرا، می بایست در کارت SD دو فولدر به نام های ۱۵ و ۱۶ ایجاد کنید. سپس به سراغ ایجاد فایل ها برای پخش می رویم. پخش صدا در سیستم نوبت دهی بانکی، با فرمت شماره x به باجه y انجام می شود. بنابراین، در دو فولدر، یکی فایل های شماره ها و در فولدر دیگر، عبارت های “به باجه” و “شماره” ذخیره می گردد. فایل ها م یبایست از نوع MP3 باشد. فایل مربوط به عبارت “شماره” را به صورت ۰۰۱ با پسوند mp3 و فایل مربوط به به باجه را به صورت ۰۰۲ با پسوند mp3 ذخیره کرده و رد فولدر ۱۵ قرار دهید. برای ذخیره سازی شماره ها، با الگوی فوق، فایل های شماره ها را از شماره ۱ به صورت ۰۰۱ با پسوند mp3 شروع به ذخیره سازی کرده و در فولدر ۱۶ قرار دهید. پیش از استفاده از کارت SD، لطفا آن را فرمت کرده و سپس فولدرها را درون کارت SD قرار دهید.

Project the turn system with audio playback and show turn with Arduino

 

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

 


وسایل مورد نیاز


برد آردویینو UNO

ماژول نمایشگر TM1637 سون سگمنت با رابط I2C

ماژول MP3 PLAYER از نوع DF MINI 

کارت SD

برد بورد و کابل

کلید فشاری

 


جمع بندی


در این آموزش به طراحی و پیاده سازی سیستم نوبت دهی بانکی پرداختیم. از سیستم نوبت دهی در ادارات، بانک ها، دفاتر پیشخوان و…. به وفور استفاده می گردد. این سیستم سبب ایجاد نظم و آرامش در اماکن مختلف شده و به طور خودکار به مشتریان، شماره تخصیص می دهد. در طرف دیگر کارمندان باجه ها با فشردن کلید، می توانند مشتریان را جهت سرویس دهی، فرابخوانند. با توجه به ارائه توضیحات مرحله به مرحله در رابطه با شماتیک مدار، کدها و نحوه اجرا، می توانید سیستم نوبت دهی خود را به کمک آردویینو، بسازید.

 

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

 

درباره نویسنده

معین صابری

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

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۲ دیدگاه

  • سلام خسته نباشید
    من فکر میکردم این پروژه را نمیشه با آردوینو ساخت، حالا واقعا کاربردی هست؟ یا در حد پروژه ساده است؟

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

  • سلام
    میخواستم بدونم اگر دو تا باجه همزمان عدد فراخوان را کلیک کنند چه اتفاقی رخ می‌دهد؟

    • سلام
      در این برنامه کلیدهای هر باجه به ترتیب اسکن می شوند. به عبارت دیگر، ابتدا کلید باجه یک، سپس کلید باجه دو بعد از آن کلید باجه سه و… الی آخر. بنابراین همزمانی رخ نخواهد داد.

  • سلام وتشکر بابت این آموزش و لایو درجه یک شما با استاد طباطبایی
    میخواستم بدونم که اگر بخواهیم از عددی بجز یک نوبت دهی شروع شود، چه کار باید بکنیم؟

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

    • سلام
      هر برد دیگری که مد نظر شماست این پروژه قابلیت اجرا دارد، بردهای نظیر آردوینو مگا با تعداد بیشتری پایه و یا رزبری پای با قدرت پردازشی بالاتر

  • با سلام
    ضمن تشکر از لایو فوق العاده تون، میخواستم بدونم که تعداد باجه را هم توی این پروژه تعیین کردید؟ و نکته بعدی اگر هر باجه بخواد نمایشگر مجزا داشته باشه چیکار باید کرد؟

    • سلام و متشکرم از شما
      بله تعداد باجه ها در برنامه تعیین شده، اما شما م یتوانید با ایجاد یک واسط کاربری ساده، تعداد باجه ها را تعیین کنید.
      برای قرار دادان نمایشگر برای هر باجه می توانید به صورت با سیسم از مبدل های RS485 به UART استفاده کنید. همچنین می توانید از ماژول های وای فای و یا بلوتوث، به صورت بیسیم داده ها را از آردوینو مرکزی به باجه ها ارسال نمایید.

  • سلام
    خسته نباشید، پروژه ی کاربردی و عالی بود، از لایو اینستا هم استفاده کردیم. به نظر شما این پروژه اگر پرینتر هم داشته باشه بهتر نیست؟ در کل برای این منظور اقدام خاصی باید انجام داد؟

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