آردوینو پروژه های آردوینو

ساخت دستگاه حضور و غیاب تحت وب به کمک برد MEGA2560 WIFI

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

سیستم های حضور و غیاب، سالیان سال است که در ادارات، دانشگاه ها، مراکز علمی و… مورد استفاده قرار می گیرند. به کمک این سیستم ها می توان ساعت ورود و خروج کارمندان را کنترل نمود. به کمک این دستگاه ساعت حضور کارمندان مشخص شده و با توجه به میزان ساعت حضور، پرداخت صورت بگیرد. همچنین، در مراکز مختلف، می توان ورود و خروج افراد مهمان را به کمک این دستگاه ها، کنترل نمود. در طرف دیگر، با اتصال این دستگاه به اینترنت، می توان به صورت آنلاین وضعیت حضور و غیاب کارمندان را رصد نمود. در این آموزش به طراحی و پیاده سازی یک سیستم حضور و غیاب تحت وب به کمک برد MEGA2560 WIFI می پردازیم. در رابطه با این برد و معرفی آن، در این آموزش(لینک آموزش-کلیک کنید) به طور کامل صحبت شده است.  در این آموزش به کمک این برد و قابلیت وای فای آن، اقدام. ساخت دستگاه کنترل تردد تحت وب می نماییم. در ادامه با مرجع تخصصی آردوینو به زبان فارسی ، دیجی اسپارک همراه باشید.

 


دستگاه حضور و غیاب و کنترل تردد


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

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

 


برد آردویینو مگا ۲۵۶۰ وای فای


برد مگا ۲۵۶۰ وای فای با تراشه ESP8266، در حقیقت نسخه توسعه یافته برد مگا۲۵۶۰ به شمار می رود. با اضافه شدن تراشه ESP8266 به این برد، از یک مادر برد مخصوص اینترنت اشیا با قبالیت های بی شمار بهره مند خواهید شد. به کمک این برد می توانید خیلی ساده به اینترنت متصل شده و به ارسال و دریافت داده بپردازید. همچنین، این برد مکمل دو پردازنده MEGA2560 و ESP8266 خواهد بود. همانطور که می دانید، پردازنده مگا۲۵۶۰ دارای تعداد بیشماری GPIO، اما با سرعت پردازش پایین تر و حجم حافظه کمتر نسبت به پردازنده ESP8266 است. در طرف دیگر،  پردازنده ESP8266 در کنار قابلیت اتصال به وای فای و فرکانس و حافظه بالاتر نسبت به مگا۲۵۶۰، تعداد GPIO های بسیار کمی دارد. اما در این برد، با برقراری ارتباط سریال بین این دو تراشه، مشکل کمبود پایه های GPIO و حافظه، به طور کامل حل می شود. برای اطلاعات بیشتر در رابطه با این برد و نحوه کار و راه اندازی آن، حتما آموزش معرفی و راه اندازی آن(لینک آموزش، کلیک کنید) را بررسی نمایید.

 


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


در این آموزش، همانند سایر آموزش ها، می بایست به نصب کتابخانه های مورد نیاز خود، بپردازیم. در این قسمت نیاز است تا به نصب کتابخانه NTP مخصوص تراشه ESP8266، اقدام شود. سرویس NTP یک سرویس رایگان جهت دریافت زمان فعلی است. از آنجاییکه در دستگاه های حضور و غیاب، ثبت ساعت ورود و خروج بسیار ضروری است، به همین منظور از این کتابخانه استفاده می نماییم. برای دانلود و نصب این کتابخانه، کافیست از طریق منوی Tools نرم افزار آردویینو، بر روی گزینه Manage libraries کلیک کرده و در قسمت جستجوی ظاهر شده، عبارت ntpclient را تایپ نمایید.

مطابق تصویر فوق، کتابخانه مشخص شده در کادر قرمز رنگ با نام fabric weinberg را انتخاب و نصب نمایید.

 


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


در این قسمت به بررسی شماتیک و اتصالات مدار می پردازیم. در این مدار، از یک برد مگا ۲۵۶۰ همراه با تراشه وای فای ESP8266 استفاده شده است. جهت دریافت ورودی از کاربر، از یک صفحه کلید ۳*۴ ماتریسی استفاده نموده ایم. در این پروژه، از طریق صفحه کلید، شماره پرسنلی دریافت و به سرور ارسال می شود.

در ادامه، جهت اتصال کی پد به برد آردویینو، مطابق فلش زیر، از راست به چپ، پایه های کی پد را به پایه های ۳ الی ۹ برد آردویینو متصل نمایید.

 


تنظیم کلیدهای سلکتور برد MEGA2560 WIFI برای آپلود


همانطور که گفته شد، برد آردویینو MEGA2560WIFI، دارای دو پردازنده MEGA2560 و تراشه ESP8266 است. توجه داشته باشید بر روی این برد، دو قسمت کد، یکی کدهای میکروکنترلر مگا ۲۵۶۰ و دیگری کدهای تراشه وای فای ESP8266 قرار خواهند گرفت. جهت آپلود برنامه بر روی قسمت های مختلف برد MEGA2560 WIFI، با توجه به آموزش معرفی و راه اندازی آن، مطابق جدول زیر عمل نمایید.

 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

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

 

 


کدهای بخش وای فای ESP8266


در این قسمت، کدهای بخش تراشه وای فای ESP8266 را مشاهده می نمایید. جهت آپلود کدهای بخش وای فای، مطابق جدول تنظیم حالت های کاری برد مگا۲۵۶۰، کلیدهای سلکتور را تنظبم و کدهای زیر را بر روی برد آپلود می نماییم. توجه داشته باشید که پیش از آپلود، یکبار دکمه mode را فشار داده تا تراشه ESP8266 در حالت پروگرام قرار گیرد. پس از اتمام آپلود برنامه، لطفا یکبار دکمه ریست برد را بفشارید.

 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

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

 

 


کدهای وب سایت پروژه ثبت حضور و غیاب


در این قسمت کدهای بخش وب سایت را مشاهده می نمایید. برای اطلاعات بیشتر در این زمینه، پیشنهاد می شود آموزش ساخت پلتفرم اختصاصی جهت کنترل وسایل برقی(لینک آموزش، کلیک کنید) را مطالعه نمایید. برای آپلود کدها، طبیعتا نیاز به یک هاست و دامین خواهید داشت. توجه داشته باشید که هاست های رایگان که به صورت ساب دامین هستند، در این پروژه قابل استفاده نخواهند بود. در ادامه، توجه داشته باشید که هاست خود را لینوکسی انتخاب نمایید. پس از ثبت هاست و دامنه، وارد کنترل پنل هاست خود شده و در قسمت public html و یا htdocs در هاست های لینوکسی، فایل به اسم data_st.php ایجاد نموده و کدهای زیر را درون آن، قرار دهید.

<?php
$x=$_POST["tmp"];
//********************************ذخیره شماره پرسنلی و زمان در سرور
$myfile = fopen("tmp.txt", "w") or die("Unable to open file!");
fwrite($myfile, $x);
fclose($myfile);
?>

 


اجرای پروژه دستگاه ثبت حضور و غیاب آنلاین تحت وب


در این قسمت به اجرای پروژه حضور وغیاب آنلاین می پردازیم. پیش از هر چیز، مطابق جدول تعیین مد کاری برد مگا۲۵۶۰ وای فای، می باست مد کاری برد را به کمک سوییچ های سلکتور، به صورت زیر تعیین نمایید. همچنین کلید تعیین پورت سریال، جهت ارتباط بین بخش مگا۲۵۶۰ و ESP8266، بر روی پورت ۳ قرار گرفته باشد.

پس از تعیین وضعیت سلکتور و روشن نمودن برد، می بایست در صفحه کلید، یک عبارت عددی وارد کرده و  در انتها کلید # را بفشاریم. به عنوان مثال، ما عدد ۷۸۵۱ را انتخاب کرده و در انتها عبارت # را برای تایید و ارسال، انتخاب می نماییم. این عدد از ما دریافت شده و به سرور ارسال می شود. سپس بعد از گذشت چند لحظه، دوباره همین عدد را وارد می نماییم. بدین ترتیب یک ورود و یک خروج را ثبت کرده ایم. برای مشاده ورود و خروج به همراه زمان درج شده، کافیست در سرور، فایل tmp.txt که داده ها در آن ذخیره می شوند را مشاهده می نمایید. بنابراین، برای مشاهده این فایل، در مرورگر خود عبارت example.com/tmp.txt ( به جای عبارت example نام سرور خود را قرار دهید) را وارد نمایید. پس از وارد کردن آدرس، با تصویر زیر رو به رو خواهید شد.

 

در تصویر فوق، دو ستون داده مشاهده می شود. ستون اول شماره پرسنلی و ستون دوم، ساعت درج و ثبت است. به عنون مثال، شماره پرسنلی ۷۸۵۱ در ساعت ۱:۳۱ ورود و در ساعت ۱:۳۲ خروج داشته است. این مورد برای سایر شماره پرسنلی ها، صادق است. در نهایت شماره پرسنلی ۷۸۵۱ یکبار در ساعت ۲:۰۳ ورود و در نهایت در ساعت ۲:۲۳ خروج خود را ثبت کرده است.

 


تحلیل کد دستگاه حضور و غیاب برد MEGA2560 WIFI


همانطور که پیشتر بیان شد، این پروژه شامل سه قسمت کد می گردد. در بخش اول، کدهای مگا۲۵۶۰، بخش دوم کدهای ESP8266 و بخش سوم، کدهای سرور است. در قسمت مگا۲۵۶۰، داده ها با کیپد دریافت می گردد. برای ارسال داده های دریافتی به ماژول ESP8266، از طریق پورت سریال شماره ۳ مگا ۲۵۶۰ استفاده خواهیم نمود. به همین دلیل، به کمک تابع زیر، داده ها را از طریق برد مگا۲۵۶۰ به ESP8266 ارسال می نماییم.

Serial3.print(data)

در قسمت ESP8266، دریافت داده های ارسال شده از سوی قسمت مگا۲۵۶۰، به صورت زیر کنترل می گردد.

if(Serial.available())

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

 


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


برد آردوینو Mega2560 با تراشه وای فای ESP8266 Nodemcu

کی پد

سیم جامپر

 


جمع بندی


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

 

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

 

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

معین صابری

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

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

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

۳۶ دیدگاه

    • سلام
      بله
      امکان پذیر است. اما با توجه به محدود بودن پایه های gpio ماژول esp8266 ، نیاز به درایور و البته تغییر در کتابخانه کیپد جهت اجرای صحیح بر روی esp8266 است.

  • سلام
    آیا در صورت استفاده از بردهای سری nodemcu wemos d1 mi تداخالی در کدبر نامه نوشته شما توسط شما به وجود میاد.. با توجه به اینکه هردو برد دارم خرید این برد فعلا برای من مقدور نیست و دوست دارم این پروژه رو برای پروژه دانشگاهی انتخاب کنم.

    • سلام
      در قسمت شبکه و ارسال داده به سرور خیر مشکلی نیست اما برای درایفت داده از ورودی(شماره پرسنلی) بهتر است از برد آردویینو استفاده گردد.

  • سلام مهندس پروژه خیلی جالبیه
    و قصد دارم پروژه را بسازم اما من چند بار نحوه اجرای این پروژه را از اول تا اخر خوندم اما چون خیلی سخته نمیتونم بسازمش
    ای کاش یکم پروژه را ساده تر می‌ساختید

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

  • سلام ،نمیتونم کد رو روی esp آپلود کنم سلکتور ها رو همونطور که نوشته بودید تغییر دادم اما آپلو نمیشه و نمیتونه ارتباط برقرار کنه
    سلکتور های ۵،۶،۷ رو برای آپلود روی esp وصل کردم

      • سلام وقت بخیر
        این خطا/private/var/folders/zm/k_cp9mk51b530_9bqk_4l11c0000gn/T/.arduinoIDE-unsaved202409-23196-1i3pwt3.teya/sketch_jan9b/sketch_jan9b.ino: In function ‘void loop()’:
        /private/var/folders/zm/k_cp9mk51b530_9bqk_4l11c0000gn/T/.arduinoIDE-unsaved202409-23196-1i3pwt3.teya/sketch_jan9b/sketch_jan9b.ino:32:11: error: call to ‘HTTPClient::begin’ declared with attribute error: obsolete API, use ::begin(WiFiClient, url)
        ۳۲ | http.begin(“example.com/data_st.php”); //ایجاد url برای ارسال داده ها
        | ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~

        exit status 1

        Compilation error: call to ‘HTTPClient::begin’ declared with attribute error: obsolete API, use ::begin(WiFiClient, url)

  • با سلام، بنده تمام مراحل را طبق اموزش جلو رفتم ولی در زمان اجرا ، فایل tmp در هاست ساخته نمیشود. و نمیتوان خروجی را مشاهده کرد.

  • سلام وقت بخیر
    جناب مهندس صابری
    من از مرحله کد وب سایت حضور غیاب موندم لطفاً راهنمایی بفرمایید؟
    چرا باید هاست بگیریم و اصلا چطوری برد با هاست برقرار پیدا میکند؟