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

آموزش کار با نرم افزار اینترنت اشیاء Node-RED – بخش دوم

Node-red-IOT-part-2-digispark
نوشته شده توسط پریسا پوربلورچیان

نرم افزار نودرد Node Red یک پلتفرم اپن سورس برای راه اندازی پروژه‌های اینترنت اشیاءاست. این نرم افزار توسط IBM طرح ریزی و تولید شده است. در آموزش کار با نرم افزار Node-RED بخش اول، به بررسی وضعیت یک خروجی LED و نمایش Result آن بر روی دیباگر پرداختیم. همچنین با نود inject، نود دیباگ Debug و نود RPI GPIO آشنا شدید. در ادامه این آموزش کنترل چند خروجی متفاوت همزمان با هم را بررسی خواهیم کرد.  در این پلت فرم همه چیز به صورت پازل به هم مرتبط می‌شوند. وب سایت دیجی اسپارک به عنوان مرجع تخصصی اینترنت اشیاء IOT به زبان فارسی اولین مرجع نرم افزار اینترنت اشیاء Node Red به زبان فارسی است. در مجموعه آموزش‌های نود رد Node Red به صورت بخش بندی شده کار با این نرم افزار را به صورت پروژه محور آموزش می‌دهیم. در ادامه بخش اول آموزش کار با نرم افزار اینترنت اشیاء Node Red با مرجع تخصصی اینترنت اشیاء دیجی اسپارک همراه باشید.

هدف

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

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

رزبری پای ۳  raspberry pi

ماژول رله ۴ کاناله اپتوکوپلر برد رزبری پای Raspberry pi

کابل فلت مادگی با مادگی 

 

اتصالات

ماژول رله ۴ کاناله دارای ۶ پایه به ترتیب VCC, GND, IN1, IN2, IN3 , IN4  می‌باشد.

پایه VCC را به پایه ۵ ولت رزبری پای وصل می‌کنیم.

پایه GND را به پایه GND رزبری پای وصل می‌کنیم.

پایه IN1 را به GPIO17 – پین ۷ وصل می‌کنیم.

پایه IN2 را به GPIO27 – پین ۱۳ وصل می‌کنیم.

پایه IN3 را به GPIO22 – پین ۱۵ وصل می‌کنیم.

پایه IN4 را به GPIO25 – پین ۲۲ وصل می‌کنیم.

 

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

برای شروع، برد رزبری پای Raspberry Pi را روشن کنید. حال از منو رزبری پای، گزینه اول یعنی Programming را انتخاب نمایید. سپس در منو باز شده پنجمین گزینه یعنی Node-RED را انتخاب نمایید. همانطور که در تصویر زیر مشاهده می‌کنید پنجره Node-RED برای شما باز می‌شود. در خط اول IP برای ورود به نرم افزار نمایش داده می‎شود. حال وارد محیط نرم افزار Node-RED شوید.

 

محیط گرافیکی UI

محیط ui یک محیط گرافیکی برای کنترل وضعیت هر یک از خروجی‌های تعریف شده می باشد. دسترسی به محیط UI و بررسی نودهای زیر شاخه آن در پست کنترل وسایل الکترونیکی از راه دور- بخش دوم کامل آموزش داده شده است. در صورت نیاز، روی لینک مربوطه کلیک کرده و مطالعه نمایید. در این آموزش من از نود Switch برای تغییر وضعیت از حالت ۱ به حالت ۰ و تحریک رله استفاده می‌کنم.

 

نود inject

همانطور که در بخش اول توضیح داده شد، نود inject نود ورودی می‌باشد. از این نود برای ارزش گذاری و اختصاص ورودی استفاده می‌شود. این نود را از شاخه ورودی output انتخاب کنید. سپس روی آن کلیک کنید. برای تحریک رله نیاز به تعریف دو ارزش ۱ و ۰ برای قطع و وصل داریم. پس از ۲ نود inject یکی حالت ۱ دیگری حالت ۰ استفاده می‌کنیم.

 

نود switch

نود switch از شاخه UI در دسترس می‌باشد. نود switch در واقع یک رابط کاربری سوییچ مانند برای ما در خروجی تولید می‌کند. به این صورت که با ارزش گذاری on/off به صورت عدد یا پارامتر می‌توانید کنترل خروجی را در اختیار داشته باشید. توجه داشته باشید اگر نود UI در لیست نودها نیست ، می‌توانید با توجه به آموزش نصب نودهای جدید در نرم افزار Node-RED آن را نصب نمایید. نود را انتخاب کرده و وارد صفحه کنید. حال روی آن کلیک کنید. در قسمت TAB می‌توانید یک رابط کاربری با نام مشخص در محیط UI برای خود تعریف کنید. در قسمت Name، اسمی دلخواه برای نود در نظر بگیرید. در نهایت در قسمت Value ارزش گذاری کنید. در این آموزش رله با ارزش ۱  و ۰ تحریک شده و قطع و وصل می‌گردد.

 

نود show toast

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

 

نود rpi gpio

نود rpi gpio out از شاخه raspberry pi در دسترس می‌باشد. از این نود برای ارتباط با gpio های برد رزبری پای استفاده می‌شود. در این آموزش هر یک از خروجی‌های رله را به یکی از gpioهای رزبری پای وصل می‌کنیم.

 

اتصال نودها 

برای هر یک از ۳ کانال دیگر همانند قبل تنظیمات را انجام داده و مانند تصویر زیر اتصالات بین نودها را برقرار نمایید.

 

 

سپس وارد محیط UI شوید. با تغییر وضعیت رله تحریک خواهد شد و سپس مقادیر ۱ و ۰ در محیط UI نمایش داده می‌شود.

 

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

 

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

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

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

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

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

۱۴ دیدگاه

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

  • سلام من میخوام یه ربات بسازم که از طریق اینترنت اشیا کنترل بشه :
    چیزی که فهمیدم اینه که node-red یه نرم افزار برای همین حوزه هست اما بیشتر آموزش ها با رزپری پای هست
    حالا من یه برد مګا۲۵۶۰ دارم + یه ماژول وای فای ESP12E (که با تحقیقاتی که کردم همون node MCU هست)
    میخوام که از طریق node-red بهش دستور بدم که با موتوراش جلو وعقب بره
    چند تا مشکل دارم :
    ۱ از طریق نرم افزار نود رد چطوری پروتکل mqtt رو نصب کنم ؟
    در واقع این نرم افزار رو روی ویندوزم نصب کردم تا تو مرورګر بازش کنه
    چون نود رد نصب میشه ولی برای mqtt broker خطای Connection failed to broker میزنه
    npm install mqtt –save
    npm install mqtt -g

    دو تا دستورم امتحان کردم فایده ای نداشت چون خطا میده
    ۲ چطور سروری که قراره برای نرم افزار node-red انتخاب میشه رو تنظیم کنم؟
    مثلا یه مدل دیدم از .iot.eclipse.org استفاده می کرد و یکی دیګه از LOCALHOST.1883
    ۳ اتصال ماژول esp8266 به اردویینو mega2560 چه مدلیه ؟
    چون تو همه اموزش ها به ګونه ای که از طریق وای فای به نرم افزار اندرویدی (که معمولا خاص کاری که میخوان انجامش بدن تولید میشه ) متصل میشه
    و با دستورات AT اونو طبق کاری که میخواد تنظیم میکنه
    ولی برای این پروژه و ارتباط با nodered چطوری باید تنظیمش کرد؟

    • سلام
      از توجه شما ممنونم.
      در مورد سوال اول براى نصب MQTT که البته به صورت پیش فرض در لیست نودها قرار دارد. بسته به ورژن نرم افزار نود رد ممکن است نصب نباشد و در صورت نصب نبودن، با کامند npm install node-red-contrib-mqtt از طریق کامند لاین آن را نصب نمایید.

      براى سوال دوم، سرویس هاى اوایه دهنده mqtt زیاد هستن، که eclipse یکى از سرویس هاى رایگان در این مورد است. شما از eclipse میتونین استفاده کنید که درآموزش کنترل وسایل الکترونیکى از راه دور بدون نیاز به برنامه نویسى با پروتکل MQTT کاملا آموزش داده شده است، آن را مطالعه نمایید.

      و سوال سوم هم براى ارتباط با node mcu
      نیازى به برد mega2569 ندارید و بلکه به صورت مجزا از طریق نرم افزار آردوینو قابل دسترسى و برنامه ریزى است. چنانچه نیازمند اطلاعات دقیق تر هستید از آموزش ارتباط node mcu استفاده کنید.

      • ممنون از پاسخ
        چون نیاز به اتصال موتور ها و سنسور فاصله سنج دارم فکر میکنم باید از برد Mega2560 استفاده کنم . در این صورت چه طور باید به برد نود متصل شود ؟

        • براى اتصال آردوینو و نودرد دو روش وجود دارد: یکى نصب نود arduino و انتخاب پورت سریال آن و درنهایت باهم کانفیگ میشوند. روش دوم هم نصب نودرد روى ویندوز است که بعد از نصب از طریق نود serial پورت آردوینو را شناسایی میکند که البته کدهاى آردوینو را باید به صورت مجزا کامپایل و آپلود کرده باشید. سپس میتوانید با نودرد برنامه هاى دیگرى مانند نمایش ui و ارسال فرمان و… استفاده کنید.

  • سلام وقتی نرم افزار نودرد رو اجرا می کنم این خطا رو میده ولی نرم افزار اجرا میشه . چطوری باید مشکلشو حل کنم؟
    کدهای npm install node-red-contrib-mqtt رو هم امتحان کردم ولی نشد.
    Microsoft Windows [Version 6.1.7601]
    Copyright (c) 2009 Microsoft Corporation. All rights reserved.

    C:\Users\MAZ>node-red
    ۱۵ Aug 16:36:47 – [info]

    Welcome to Node-RED
    ===================

    ۱۵ Aug 16:36:47 – [info] Node-RED version: v0.17.5
    ۱۵ Aug 16:36:47 – [info] Node.js version: v8.3.0
    ۱۵ Aug 16:36:47 – [info] Windows_NT 6.1.7601 x64 LE
    ۱۵ Aug 16:36:56 – [info] Loading palette nodes
    { Error: Cannot find module ‘../build/Release/bson’
    at Function.Module._resolveFilename (module.js:489:15)
    at Function.Module._load (module.js:439:25)
    at Module.require (module.js:517:17)
    at require (internal/module.js:11:18)
    at Object. (C:\Users\MAZ\AppData\Roaming\npm\node_modules\node-re
    d-contrib-mqtt-broker\node_modules\bson\ext\index.js:15:10)
    at Module._compile (module.js:573:30)
    at Object.Module._extensions..js (module.js:584:10)
    at Module.load (module.js:507:32)
    at tryModuleLoad (module.js:470:12)
    at Function.Module._load (module.js:462:3) code: ‘MODULE_NOT_FOUND’ }
    js-bson: Failed to load c++ bson extension, using pure JS version
    ۱۵ Aug 16:37:28 – [warn] [mosca in] Deprecated call to RED.runtime.nodes.registe
    rType – node-set name must be provided as first argument
    ۱۵ Aug 16:37:31 – [info] Dashboard version 2.4.3 started at /ui
    ۱۵ Aug 16:37:31 – [warn] ——————————————————
    ۱۵ Aug 16:37:31 – [warn] [rpi-gpio] Info : Ignoring Raspberry Pi specific node
    ۱۵ Aug 16:37:31 – [warn] [tail] Not currently supported on Windows.
    ۱۵ Aug 16:37:31 – [warn] ——————————————————
    ۱۵ Aug 16:37:31 – [info] Settings file : \Users\MAZ\.node-red\settings.js
    ۱۵ Aug 16:37:31 – [info] User directory : \Users\MAZ\.node-red
    ۱۵ Aug 16:37:31 – [info] Flows file : \Users\MAZ\.node-red\flows_MAZ-PC.json

    ۱۵ Aug 16:37:31 – [info] Server now running at http://127.0.0.1:1880/
    ۱۵ Aug 16:37:31 – [info] Starting flows
    ۱۵ Aug 16:37:31 – [info] Started flows

    • سلام
      شما نرم افزار Node-RED را در ویندوز اجرا کردید و اینکه طبق ارور هایی که داده شده بعضی از نود ها نصب نشده است به عنوان مثال برای نود MQTT باید دستور npm install node-red-contrib-mqtt-broker را در CMD تایپ کنید. در پست آموزش نصب Node-RED در windows برای پروژه IOT ، نحوه نصب و راه اندازی به صورت کامل آموزش داده شده است. ابتدا از اول طبق آموزش مراحل را پیش بروید اگر مشکل برطرف نشد از همین طریق اعلام نمایید تا مشکل را بررسی کنیم.

      • سلام از پاسخگوییتون ممنونم .
        این پست رو قبلا خوندم
        بار اولی که node red رو نصب کردم هیچ مشکلی نداشت
        بعد از اینکه یه سری ماژول ها رو نصب کردم به مشکل mqtt-broker خورد که چندین بار با control panel حذفش کردم و ورژن های دیگه اش رو نصب کردم که باز هم حل نشد.
        در آخر فهمیدم که حذف کامل node.js خیلی راحت نیست و یه سری مراحل داره که باز با اون هم امتحان کردم و نشد و دست اخر با دستور npm rebuild , cd ~/.node-redمشکلش حل شد.
        اما همچنان مشکل could not find bson.js باقی است! این مشکل رو هم دنبال کردم که به microsoft visual studio ام هم ایراد می گرفت و windows build tools هم با خطا مواجه می شد … درحالیکه بار اول نصب اصلا همچین مشکلاتی نبود. البته الان node red رو باز میکنه و حتی اولین مثال node red.org رو هم deploy میکنه . ممکنه برای استفاده از node red مشکل ایجاد بکنه یا خطای عادی هست؟
        ۱۸ Aug 19:32:21 – [info] Node-RED version: v0.17.5
        ۱۸ Aug 19:32:21 – [info] Node.js version: v6.11.2
        ۱۸ Aug 19:32:21 – [info] Windows_NT 6.1.7601 x64 LE
        ۱۸ Aug 19:32:23 – [info] Loading palette nodes
        { Error: Cannot find module ‘../build/Release/bson’
        at Function.Module._resolveFilename (module.js:469:15)
        at Function.Module._load (module.js:417:25)
        at Module.require (module.js:497:17)
        at require (internal/module.js:20:19)
        at Object. (C:\Users\MAZ\node_modules\bson\ext\index.js:15:10)
        at Module._compile (module.js:570:32)
        at Object.Module._extensions..js (module.js:579:10)
        at Module.load (module.js:487:32)
        at tryModuleLoad (module.js:446:12)
        at Function.Module._load (module.js:438:3) code: ‘MODULE_NOT_FOUND’ }
        js-bson: Failed to load c++ bson extension, using pure JS version
        ۱۸ Aug 19:32:25 – [warn] [mosca in] Deprecated call to RED.runtime.nodes.registe
        rType – node-set name must be provided as first argument
        ۱۸ Aug 19:32:25 – [warn] ——————————————————
        ۱۸ Aug 19:32:25 – [warn] [rpi-gpio] Info : Ignoring Raspberry Pi specific node
        ۱۸ Aug 19:32:25 – [warn] [tail] Not currently supported on Windows.
        ۱۸ Aug 19:32:25 – [warn] ——————————————————
        ۱۸ Aug 19:32:25 – [info] Settings file : \Users\MAZ\.node-red\settings.js
        ۱۸ Aug 19:32:25 – [info] User directory : \Users\MAZ\.node-red
        ۱۸ Aug 19:32:25 – [info] Flows file : \Users\MAZ\.node-red\flows_MAZ-PC.json

        ۱۸ Aug 19:32:25 – [info] Creating new flow file
        ۱۸ Aug 19:32:25 – [info] Starting flows
        ۱۸ Aug 19:32:25 – [info] Started flows
        ۱۸ Aug 19:32:25 – [info] Server now running at http://127.0.0.1:1880/
        ۱۸ Aug 19:57:33 – [info] Stopping flows
        ۱۸ Aug 19:57:33 – [info] Stopped flows
        ۱۸ Aug 19:57:33 – [info] Starting flows
        ۱۸ Aug 19:57:33 – [info] Started flows

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

  • عرض ادب و درود فراوان خدمت سرکارخانم مهندس پوربلورچیان

    باید عرض کنم از اینکه توانستم یک وب-سایت فارسی و حرفه ای درباره Node-red پیدا کنم تا بتوان مشکلات و دیدگاه ها را به اشتراک گذاشت و با کمک و لطف شما حل کرد ، خیلی خوشحالم .

    حقیقتش در خصوص دریافت و جداسازی msg.payload ورودی از ربات تلگرام به Node-red سوال داشتم و به مشکل برخوردم .

    وقتی فردی به ربات تلگرام مربوطه و Set شده در Node-red پیغام می فرستد ، بتوانیم با جداسازی Objectهای تشکیل دهنده msg.payload پاسخ شخص را به خود او برگردانیم .

    بطور مثال اگر فردA پیغامی فرستاد ، chatId مربوط به فردA را جداسازی و با یک نام متغیر دیگر ذخیره کرده و پاسخ او را بر اساس chatId خودش ، مثلا با عبارت “سلام A” برگرداند . همینطور برای فردB با عبارت “سلام B”

    خانم مهندس جسارتا همانطور که مستحضر هستید ، زبان برنامه نویسی در نود Function ، زبان Javascript بوده و از طرفی msg.payload ورودی از تلگرام به Node-red بصورت زیر می باشد :

    msg.payload = { chatId: 12345678, type: “message”, content: “سلام” };

    مراحل عملکرد و سناریو :

    در ابتدا chatId را ذخیره کند و محتوای content از msg.payload ورودی را بررسی کند که آیا شخص ، مجوز برای ارسال چنین دستور یا پیغام را داراست ؟

    var TelegramID = msg.payload.chatId ;
    var usercontent = msg.payload.content;

    if (TelegramID == 123456)
    {
    var User = “ A فرد ”
    if (usercontent == “کد۱”)
    {
    msg.payload = { TelegramID , type: “message”, content: “لامپ توسط User روشن شد” };
    return msg;
    }
    else if (usercontent == “کد۲”)
    {
    msg.payload = { TelegramID , type: “message”, content: “لامپ توسط User روشن شد” };
    return msg;
    }
    else
    {
    msg.payload = { TelegramID , type: “message”, content: “کد ارسال شده اشتباه می باشد” };
    return msg;
    }
    return msg;
    }
    else if (TelegramID == 987654)
    {
    همانند قسمت اول …
    }
    else
    {
    msg.payload = { TelegramID , type: “message”, content: “شما مجاز به استفاده از سیستم نمیباشید” };
    return msg;
    }

    اما متاسفانه نتوانسته ام نتیجه بگیرم .

    پیشاپیش از صبر و تامل شما بزرگوار بر روی حل مشکل و سوال بنده سپاس گذارم …

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

      در خصوص سوال شما، تا به حال در آموزش هایى که داشته ام به این موضوع و طبقه بندى یوزرها در ربات تلگرام ار طریق نرم افزار Node-RED نپرداخته ام.
      این موضوع پیشنهاد بسیار جالب و گسترده اى است؛ حتما در آینده بررسى خواهم کرد. تنها نکته اى که باید به آن توجه کنید از این قرار است که چنین عملیاتى با یک نود function، امکان پذیر نیست و این کدها باید در چند نود فانکشن بخش بندى شوند، باید در ابتدا آن ها را تحلیل کنم و سپس به شما اعلام کنم.
      البته همکارم آموزشى در همین زمینه و بحث جداسازى یوزرها را از طریق ربات تلگرام و بٌرد آردوینو آموزش داده است که میتوانید مشاهده کنید.
      در آموزش هاى پیش رو حتما به بررسى و تحلیل جداسازى در صورت امکان خواهیم پرداخت.

  • سلام مهندس خسته نباشید
    میشه راهنمایی بفرمایید که چطوری میشه با رسپبری پای پروژه ای رو ساخت که با فشار یه کلید یه متن خاص توسط چاپگر چاپ بشه
    ممنون

    • سلام
      برای اجرا این موضوع چندین روش وجود دارد. با نرم افزار Node-RED هم اینکار امکان پذیر است. و چندین روش مختلف برای اجرا وجود دارد که باید کد و کامندهای متفاوتی برای آن تعریف کرد که در این بخش نمیتوان به آن پرداخت.