آردوینو آموزش آردوینو اینترنت اشیا IOT اینترنت اشیاء عملی پروژه های آردوینو

آموزش اینترنت اشیاء سیستم اعلام خطر ورود به منزل با ربات تلگرام

Arduino-pir-node-red-motion-detection-digispark
نوشته شده توسط پریسا پوربلورچیان

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

 

ساختار سنسور PIR mini SR505

یکی از ابزارهای اینترنت اشیاء IOT سنسورهای تشخیص هستند. این ماژول دارای یک سنسور حساس به حرارت است. از این رو فقط حرکت انسان و جسم جاندار را تشخیص می‌دهد. ماژول سنسور تشخیص حرکت PIR Mini SR505 برای تشخیص حضور شخص در یک مکان انتخاب مناسبی است. ابعاد ماژول سنسور تشخیص حرکت PIR بسیار کوچک و قابل مخفی سازی است.

 

پیش نیاز:

برای شروع ابتدا باید نرم افزار Node-RED را روی ویندوز نصب نمایید. چنانچه شیوه‌ی نصب Node-RED در ویندوز را نمی‌دانید، از آموزش نصب Node-RED بر روی Windows جهت انجام پروژه‌های IOT استفاده کنید. برای راه اندازی نود رد کامند زیر را در cmd.exe وارد نمایید.

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

ماژول تشخیص حرکت PIR SENSOR-hc sr501

برد آردوینو UNO

۳ رشته کابل

 

کدهای برنامه:

ابتدا کد زیر را در آردوینو Arduino کپی نمایید. دقت کنید که baud rate روی ۵۷۶۰۰ تنظیم شده باشد.

 

راه اندازی Node-RED:

همانطور که در بالا گفتم، ابتدا Node-RED را از طریق ویندوز اجرا نمایید. حال ویندوز آی پی برای ورود به Node-RED را در اختیار شما قرار می‌دهد. برای دسترسی راحت تر می‌توانید از طریق Localhost , نودرد را اجرا نمایید.

در این آموزش ابتدا سنسور PIR توسط نرم افزار Arduino اجرا شده و سپس اعلام حضور شخص را بر روی تلگرام برای ما ارسال می‌کند. راه اندازی و نحوه‌ی کار با ربات تلگرام در پست ارتباط برد رزبری پای Raspberry_pi با ربات تلگرام BOT به صورت کامل آموزش داده شده است. چنانچه ربات تلگرام نساخته اید، قبل از شروع ابتدا لینک را مطالعه کرده و سپس telegram Bot را برای خود بسازید.

 

نود Serial:

در این آموزش برای برقراری اتصال بین آردوینو و Node-RED از نود Serial استفاده می‌کنیم. نود سریال از شاخه output قابل دسترسی است این نود در واقع دیتا را از پورت سریال دریافت کرده و می‌خواند. پس از وارد کردن نود در صفحه روی آن کلیک کنید. سپس پورت برد آردوینو UNO که در نرم افزار آردوینو تعیین شده است را انتخاب نمایید. در اینجا آردوینو من روی COM17 تنظیم شده است.

 

نود Debug:

نود Debug برای نمایش Result و دیتای پروژه می‌باشد. این نود در شاخه output در دسترس است. حال برای نمایش متن سنسور تشخیص حرکت motion Detection از نود Debug استفاده می‌کنیم. از نود Serial به نود Debug وصل کنید.

 

نود telegram receiver – telegram sender:

از این ۲ نود برای ارتباط با ربات تلگرام استفاده می‌شود. همانطور که از نام نودها مشخص است؛ نود telegram receiver برای برای دریافت پیام و نود Telegram sender برای ارسال پیام استفاده می‌شود. برای تنظیمات نود تلگرام نیاز به API دارید که توسط بات تلگرام برای شما ارسال می‌شود. حال همانند تصویر زیر تنظیمات این نود را انجام دهید.

نود trigger:

نود trigger برای ارسال پیام استفاده می‌شود. به این صورت که هنگامی که پیامی را دریافت می‌کند، پیام را به صورت Payload و ۱ برای خروجی ما ارسال می‌کند. همچنین می‌توانید زمان Delay برای ارسال پیام دوم را نیز با زمان بندی که در تنظیمات این Node قرار دارد، تغییر دهید. همانند تصویر زیر تنطیمات این نود را نیز انجام دهید.

حال از نود telegram receiver به نود Debug اتصال دهید. وارد ربات تلگرام شده و برای خود پیامی را ارسال کنید تا چت آی دی را برای شما ارسال کند.
 

 

نود Function:

نود فانکشن (function) برای کدنویسی و شرط گذاری برای ارسال فرمان بین نودها استفاده می‌شود. در اینجا ما از این نود برای برقراری ارتباط بین نود سریال و نود Telegram sender برای ارسال دیتا بر روی تلگرام بات استفاده می‌کنیم. همانند تصویر زیر این نود را از شاخه Function انتخاب کرده و وارد صفحه می‌کنیم. حال روی آن کلیک کنید. سپس کد زیر را وارد نمایید.

 

اتصال نودها:

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

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

پریسا پوربلورچیان

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

۴۴ دیدگاه

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

    • سلام
      حتما نیاز به اینترنت خواهید داشت.
      بله ارتباط برد آردوینو و ویندوز از طریق نود و پورت Serial مى باشد.

  • با سلام و عرض ادب
    امکان ارسال ماژولها به صورت آماده و برنامه نویسی شده و آغاز به کار هست؟
    چون که من مبتدی هستم و تا حالا کار نکردم اصلا
    سپاس

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

    • سلام
      وقتی در ربات بات فادر، بات مخصوص برای خود ساختید. از طریق Node telegram receiver و ارسال مسیج از ربات ، chat ID در دیباگ نودرد برای شما نشان داده میشود. در آموزش لینک کامل برای آموزش کار با ربات تلگرام آموزش داده شده است.

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

  • سلام
    من زمان اجرای node-red خطای زیر برام پیش می یاد

    function* evaluate(expr, input, environment) {
    ^
    SyntaxError: Unexpected token *
    at exports.runInThisContext (vm.js:73:16)
    at Module._compile (module.js:443:25)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at Object. (C:\Users\admin\AppData\Roaming\npm\node_modules\node-red\red\runtime\util.js:18:15)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)

    ممنوم می شوم راهنمایی بفرمایید

    • سلام
      آخرین ورژن از nodejs را دانلود نمایید. سپس در مسیر C: program file کپى نمایید. کامند رو دوباره در cmd وارد نمایید. اگر مشکل برطرف نشد از همین طریق اعلام نمایید.

    • سلام
      از آنجایى که اتصالات پیچیده نبود، توضیح ندادم و اینکه در کدها کامل مشخص شده است.
      سنسور pir داراى ٣ پایه vcc, signal, gnd مى باشد که به ترتیب vcc را به ۵ولت آردوینو و gnd را به gnd آردوینو و در نهایت پایه signal را به پین ٧ آردوینو وصل کنید.

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

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

    • براى ارسال وضعیت ، یعنى نمایش متن ” توجه یک نفر وارد شد” باید تنظیمات نود functuon را بررسی نمایید. عملکرد این نود در این پروژه شرط گذاری و ارسال متن مورد نظر ما بر روى بات تلگرام مى باشد. همانند عکس مربوط برای تنظیم نود فانکشن پیش بروید و در نهایت نود تریگر حتما روى حالت ١ باشد همانند عکس مربوط به تنظیم آن.
      این دو نود را بررسى نمایید اگر مشکل برطرف نشد ، اعلام نمایید.

      • سلام؛
        متاسفانه با چک مجدد هم اتفاقی نیافتاد. پیام زیر در کنسول نود-رد میاد میفرستم شاید کمکی بکنه.
        [telegram sender:bedd8608.985078] msg.payload.chatId is empty
        البته با دیدن این پیام در قسمت تلگرام هم چت آیدی رو قرار دادم ولی بازهم اتفاقی نیافتاد.
        متشکرم.

        • اروری که برای شما نمایش میدهد، مربوط به تنظیمات نود های تلگرام می باشد. یک بار دیگر مراحل را طبق آموزش ارتباط برد رزبری پای با ربات تلگرام پیش بروید.
          در ابتدا مراحلی که میگم را چک کنید و به من اطلاع دهید: اول از همه نود تلگرام رسیور را به دیباگ وصل کنید. سپس وارد بات شده و start را بزنید. حال به نودرد برگردید تا در قسمت دیباگ ChatID را برای شما ارسال کند،سپس chatid را کپی کرده و در تنظیمات نود فانکشن قرار دهید. و سپس نود telegram sender هم چک کنید که API به درستی کپی شده یاشد. حتما از همین طریق نتیجه را اعلام نمایید.

          • سلام
            این Error مربوط به چت آی دی شما می باشد. از طریق Node telegram reciever ، چت آی دی را دریافت نمایید. برای اینکار وارد بات تلگرام خود شوید و Start را بزنید. سپس تنظیمات node telegram reciever را انجام دهید. در نهایت chat id در Debug برای شما ارسال می شود. چت آی دی را نود telegram Sender در قسمت Chat ID وارد نمایید.

  • سلام؛
    ببخشید باز پیام میدم.
    دو غلط تایپی که گفتم برای به اشتباه نیفتادن دیگران خدمتتون عرض کنم تا تصحیح بفرمایید.
    در قسمت “نود Serial:” شما نوشته اید که (نود سریال از شاخه output قابل دسترسی است) در صورتی که نود لازم برای این کار از قسمت Input باید انتخاب شود.
    دیگری جا افتادن سمی کالن (;) در کد قسمت تابع است که زحمت نوشتن آن را کشیدید، البته در عکسی که گذاشتید درسته.
    عذرخواهی بنده رو بپذیرید.
    این پیام رو هم پاک بفرمایید.
    ولی با گذاشتن سمی کالن هم مشکلم حل نشد و پیام تابع به تلگرام ارسال نمی شود.
    متشکرم.

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

  • با سلام و احترام خدمت شما
    بنده آخرین ورژن نرم افزار node red رو دانولد و نصب کردم ولی خیلی از نود ها رو نداره
    مثلا نود serial داخل شاخه output یا telegram و …
    چطور این نود ها رو اضافه کنم
    سپاس

    • سلام
      آموزش کامل طریق نصب نود های جدید در پست نصب نودهاى جدید در نرم افزار نودرد قرار گرفته شده است، حتما مطالعه نمایید.
      براى نصب باید از منوى node-red گزینه manage palette را انتخاب کنید. سپس در قسمت install نود هاى مورد نظر خود را سرچ کنید. مثلا برای تلگرام نود telegram bot را سرچ نمایید.
      در صورت مشکل از همین طریق اقدام کنید.

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

    • سلام
      ضمن تشکر از توجه شما، در مورد امنیت نودرد به زودی آموزش ایجاد پسورد برای نودرد را منتشر خواهیم کرد. همچنین دقت داشته باشید که نرم افزار اینترنت اشیاء Node red مدام در حال به روزرسانی است و از لحاظ قابلیت اطمینان کاملا امن و توجیه پذیر است.

  • سلام.وقت بخیر
    من توی node red سریال ندارم.serial هم برای دانلود که میزنم چند تا گزینه برای دانلود می اد.ولی فقط ۲ تاشون دانلود میشه و بقیه دانلود نمیشه.توی cmd هم که این پیام میدم:
    npm i node-red-node-serialport
    پیام خطا می اد که تصویرشو خدمتتون آپلود کردم
    مشکل از کجاست
    http://up.upinja.com/tpl2r.jpg

    • سلام
      از توجه شما ممنونم.
      مشکل شما را بررسی کردم.
      اگر با نصب نود در manage palette به مشکل برخوردید، ابتدا باید npm را آپدبت کنید، تا مشکل برطرف شود. از طریق کامند sudo npm install -g –unsafe-perm node-red در ترمینال، نودرد را آپدیت کنید. برای روش دوم نصب کامند هم، کامندی که در ترمینال استفاده کردید اشتباه است. کامند صحیح برای نصب serialport
      npm install node-red-node-serialport می باشد. هر دو روش را امتحان کنید و در صورت مشکل از همین طریق اقدام نمایید تا از طریق سرویس رفع عیب آنلاین مخصوص برد رزبری پای Raspberry Pi Online Support مشکل شما را برطرف کنم.

  • سلام
    سه سوال داشتم، حداکثر طول سیمی که از این سنسور به برد آردوینو میتونه باشه چقدر میتونه باشه؟
    اصلا اصولا برای سنسورهای مختلف در مورد این موضوع یعنی همین مقدار طول سیم تا میکرو چقدر محدودیت وجود داره؟

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

  • سلام خسته نباشید
    یه مشکل دارم
    زیر نود سریال یا نود telegram recever و یا sender نمینویسه connected یا not connected
    یه بار نوشت و کار کرد
    ولی دیگه نمی نویسه و هیچی کار نمیکنه

    • سلام
      از توجه شما ممنونم.
      کانکنت نشدن ، به این معنى است که تنظیمات نودهاى تلگرام اشتباه و ناقص است. اول از همه API تمام نود ها را چک کنید. سپس اسم بات ها در هر نود چک کنید. در غیر اینصورت از منو Node-RED وارد Manage Palette شوید.
      سپس در قسمت Node , نود تلگرام بات را سرچ کنید و اگر به آخرین نسخه آپدیت نشده باشد ، گزینه آپدیت را در توضیحات خواهید دید، آن را انتخاب و آپدیت کنید.

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

    • سلام
      از توجه شما ممنونم.
      با توجه به اینکه Chat ID را دریافت کردید پس مشکلی در تنظیم نود های Telegram ندارید.
      نود فانکشن در این آموزش برای دریافت پیام بر روی تلگرام می باشد. دقت کنید که حتی یک فاصله و space اضافی باعث ارور در نود Function می باشد. دقیقا باید به ترتیب زیر در نود فانکشن تایپ کنید.یک بار دیگر تنظیمات این نود را بررسی کنید و سپس از همین طریق اعلام نمایید.
      msg.payload = { “chatID” : *******, “type” : “message”, “content” : “توجه یک نفر وارد شد”}
      return msg;

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

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

  • سلام. (از node-red استفاده نمیکنم.)

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

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