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

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

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

نرم افزار نودرد Node Red یک پلتفرم اپن سورس برای راه اندازی پروژه‌های اینترنت اشیاء است. این نرم افزار توسط IBM طرح ریزی و تولید شده است. نگرش طراحی این نرم افزار، ایجاد یک پلتفرم برای کاربران بدون نیاز به دانش فنی بوده است. از این رو کاربران بدون نیاز به دانستن دانش کدنویسی می‌توانند پروژه‌های ساده تا حرفه‌ای را طراحی و پیاده سازی کنند. در این پلت فرم همه چیز به صورت پازل به هم مرتبط می‌شوند. وب سایت دیجی اسپارک به عنوان مرجع تخصصی اینترنت اشیاء IOT به زبان فارسی اولین مرجع نرم افزار اینترنت اشیاء Node Red به زبان فارسی است. در مجموعه آموزش‌های نود رد Node Red به صورت بخش بندی شده کار با این نرم افزار را به صورت پروژه محور آموزش می‌دهیم. در ادامه بخش اول آموزش کار با نرم افزار اینترنت اشیاء Node Red با مرجع تخصصی اینترنت اشیاء دیجی اسپارک همراه باشید.

 

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

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

 

نود Inject

نود inject، نود ورودی می‌باشد. این نود از شاخه input در دسترس می‌باشد. آن را انتخاب کنید و وارد صفحه نرم افزار Node Red کنید. حال روی نود کلیک کنید. روی گزینه payload کلیک کنید و آن را روی حالت Number قرار دهید و مقدار ۱ به معنی روشن شدن را برای آن در نظر بگیرید. در قسمت topic ، عبارت LED را تایپ کنید.

 

حال برای حالت دوم یعنی خاموش شدن ال ای دی دوباره نیاز به نود inject خواهیم داشت. آن را انتخاب کرده و سپس در قسمت Payload مقدار ۰ را به آن بدهید.

 

نود rpi gpio

نود rpi gpio برای دسترسی به پایه های Gpio برد رزبری پای Raspberry Pi می‌باشد. با انتخاب این نود از شاخه Raspberry pi آن را وارد صفحه نرم افزار نود رد کنید. روی نود کلیک کنید. سپس یکی از Gpio رزبری را برای خروجی و اتصال به ال ای دی انتخاب نمایید.

 

نود template

نود Template برای نمایش متن مورد نظر ما در خروجی دیباگ می‌باشد. این نود از شاخه function در نرم افزار Node Red دسترس می‌باشد. به محض روشن شدن ال ای دی عبارت ( ال ای دی روشن شد!) و هنگام خاموش شدن عبارت ( ال ای دی خاموش شد!) در دیباگ Node Red نمایش داده خواهد شد.

 

نود debug

برای نمایش Result پروژه Node Red از نود Debug استفاده می‌کنیم. این نود از شاخه output در دسترس می‌باشد. حال نودها را همانند تصویر زیر به یکدیگر اتصال دهید. سپس Deplay کنید. با کلیک روی هر یک از نودهای inject به ترتیب ال ای دی روشن و خاموش می‌گردد و در دیباگ متن‌هایی که تعریف کرده‌ایم نمایش داده می‌شود.

 

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

 

پروژه با نرم افزار نود رد Node Red

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

 

 

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

 

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

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

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

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

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

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

۲۷ دیدگاه

  • سلام
    خیلی ممنونم، در نود رد من اون قسمت نود rpi gpio با تصویر شما فرق داره، اشکالی نداره؟ میتونم اجرا کنم این پروژه را؟

    • سلام
      از توجه و دقت نظر شما ممنونم.
      بله هیچ تفاوتى ندارند و میتوانید اجرا کتید.NodeRed من آپدیت شده و آخرین ورژن آن نصب است. که از جمله تغییرات آن ، انتخاب پایه هاى gpio همانند تصویر مى باشد. پیشنهاد میشود شما هم نودرد را آپدیت نمایید.

    • سلام
      از توجه شما ممنونم.
      امیدوارم کاربردى باشه و بتونین پروژه هایى جذاب خلق کنید.
      براى آپدیت نودرد کامند sudo npm install -g -unsafe-perm node-red را وارد نمایید. براى نصب نود ui هم کامند npm instal node-red-node-ui را در ترمینال وارد نمایید.

      • سلام
        من اولین دستور شما رو برای آپدیت کردن node-red زدم، پیغام زیر رو داد:
        pi@raspberrypi:~ $ sudo npm install -g -unsafe-perm node-red
        npm WARN engine node-red@0.17.5: wanted: {“node”:”>=4″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN engine follow-redirects@1.2.4: wanted: {“node”:”>=4.0″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN engine jsonata@1.2.6: wanted: {“node”:”>= 4.4″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN engine mqtt@2.9.0: wanted: {“node”:”>=4.0.0″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN engine sentiment@2.1.0: wanted: {“node”:”>=4.0″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN deprecated nodemailer@1.11.0: All versions below 4.0.1 of Nodemailer are deprecated. See https://nodemailer.com/status/
        npm WARN engine request@2.81.0: wanted: {“node”:”>= 4″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN deprecated node-uuid@1.4.8: Use uuid module instead
        npm WARN engine hawk@3.1.3: wanted: {“node”:”>=0.10.32″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN engine form-data@2.1.4: wanted: {“node”:”>= 0.12″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN engine har-validator@4.2.1: wanted: {“node”:”>=4″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN engine hawk@3.1.3: wanted: {“node”:”>=0.10.32″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN engine esprima@3.1.3: wanted: {“node”:”>=4″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN engine request@2.81.0: wanted: {“node”:”>= 4″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN engine har-schema@1.0.5: wanted: {“node”:”>=4″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN engine deep-extend@0.4.2: wanted: {“node”:”>=0.12.0″,”iojs”:”>=1.0.0″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN engine har-validator@4.2.1: wanted: {“node”:”>=4″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN engine form-data@2.1.4: wanted: {“node”:”>= 0.12″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN engine hawk@3.1.3: wanted: {“node”:”>=0.10.32″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN engine boom@2.10.1: wanted: {“node”:”>=0.10.40″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN engine hoek@2.16.3: wanted: {“node”:”>=0.10.40″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN engine cryptiles@2.0.5: wanted: {“node”:”>=0.10.40″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN engine hoek@2.16.3: wanted: {“node”:”>=0.10.40″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN engine boom@2.10.1: wanted: {“node”:”>=0.10.40″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN engine cryptiles@2.0.5: wanted: {“node”:”>=0.10.40″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN engine har-schema@1.0.5: wanted: {“node”:”>=4″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN deprecated i18next-client@1.10.3: you can use npm install i18next from version 2.0.0
        npm WARN engine boom@2.10.1: wanted: {“node”:”>=0.10.40″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN engine cryptiles@2.0.5: wanted: {“node”:”>=0.10.40″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN engine hoek@2.16.3: wanted: {“node”:”>=0.10.40″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN engine co@4.6.0: wanted: {“iojs”:”>= 1.0.0″,”node”:”>= 0.12.0″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        npm WARN engine co@4.6.0: wanted: {“iojs”:”>= 1.0.0″,”node”:”>= 0.12.0″} (current: {“node”:”0.10.29″,”npm”:”2.15.12″})
        |
        > bcrypt@1.0.2 install /usr/lib/node_modules/node-red/node_modules/bcrypt
        > node-pre-gyp install –fallback-to-build

        node-pre-gyp ERR! Tried to download(404): https://github.com/kelektiv/node.bcrypt.js/releases/download/v1.0.2/bcrypt_lib-v1.0.2-node-v11-linux-arm.tar.gz
        node-pre-gyp ERR! Pre-built binaries not found for bcrypt@1.0.2 and node@0.10.29 (node-v11 ABI) (falling back to source compile with node-gyp)
        make: Entering directory ‘/usr/lib/node_modules/node-red/node_modules/bcrypt/build’
        CXX(target) Release/obj.target/bcrypt_lib/src/blowfish.o
        CXX(target) Release/obj.target/bcrypt_lib/src/bcrypt.o
        CXX(target) Release/obj.target/bcrypt_lib/src/bcrypt_node.o
        SOLINK_MODULE(target) Release/obj.target/bcrypt_lib.node
        COPY Release/bcrypt_lib.node
        COPY /usr/lib/node_modules/node-red/node_modules/bcrypt/lib/binding/bcrypt_lib.node
        TOUCH Release/obj.target/action_after_build.stamp
        make: Leaving directory ‘/usr/lib/node_modules/node-red/node_modules/bcrypt/build’
        /usr/bin/node-red -> /usr/lib/node_modules/node-red/red.js
        /usr/bin/node-red-pi -> /usr/lib/node_modules/node-red/bin/node-red-pi
        node-red@0.17.5 /usr/lib/node_modules/node-red
        ├── is-utf8@0.2.1
        ├── on-headers@1.0.1
        ├── basic-auth@1.1.0
        ├── media-typer@0.3.0
        ├── cookie@0.3.1
        ├── clone@2.1.1
        ├── hash-sum@1.0.2
        ├── json-stringify-safe@5.0.1
        ├── node-red-node-rbe@0.1.11
        ├── semver@5.3.0
        ├── cookie-parser@1.4.3 (cookie-signature@1.0.6)
        ├── passport-oauth2-client-password@0.1.2 (passport-strategy@1.0.0)
        ├── passport-http-bearer@1.0.1 (passport-strategy@1.0.0)
        ├── nopt@3.0.6 (abbrev@1.1.0)
        ├── mustache@2.3.0
        ├── passport@0.3.2 (pause@0.0.1, passport-strategy@1.0.0)
        ├── fs.notify@0.0.4 (retry@0.6.1, async@0.1.22)
        ├── cors@2.8.3 (object-assign@4.1.1, vary@1.1.1)
        ├── sentiment@2.1.0
        ├── follow-redirects@1.2.4 (debug@2.6.8)
        ├── ws@1.1.1 (options@0.0.6, ultron@1.0.2)
        ├── bcryptjs@2.4.3
        ├── express-session@1.15.2 (utils-merge@1.0.0, cookie-signature@1.0.6, parseurl@1.3.1, depd@1.1.1, crc@3.4.4, uid-safe@2.1.5, debug@2.6.3)
        ├── fs-extra@1.0.0 (klaw@1.3.1, jsonfile@2.4.0, graceful-fs@4.1.11)
        ├── oauth2orize@1.8.0 (uid2@0.0.3, utils-merge@1.0.0, debug@2.6.8)
        ├── raw-body@2.2.0 (unpipe@1.0.0, bytes@2.4.0, iconv-lite@0.4.15)
        ├── body-parser@1.17.2 (bytes@2.4.0, content-type@1.0.2, depd@1.1.1, on-finished@2.3.0, http-errors@1.6.2, debug@2.6.7, qs@6.4.0, type-is@1.6.15, iconv-lite@0.4.15)
        ├── jsonata@1.2.6
        ├── cheerio@0.22.0 (lodash.flatten@4.4.0, lodash.pick@4.4.0, lodash.foreach@4.5.0, lodash.assignin@4.2.0, lodash.defaults@4.2.0, lodash.bind@4.2.1, lodash.merge@4.6.0, lodash.filter@4.6.0, lodash.map@4.6.0, lodash.some@4.6.0, lodash.reduce@4.6.0, lodash.reject@4.6.0, dom-serializer@0.1.0, entities@1.1.1, css-select@1.2.0, htmlparser2@3.9.2)
        ├── express@4.15.3 (setprototypeof@1.0.3, escape-html@1.0.3, array-flatten@1.1.1, utils-merge@1.0.0, cookie-signature@1.0.6, merge-descriptors@1.0.1, methods@1.1.2, path-to-regexp@0.1.7, encodeurl@1.0.1, range-parser@1.2.0, parseurl@1.3.1, fresh@0.5.0, vary@1.1.1, content-type@1.0.2, etag@1.8.0, statuses@1.3.1, content-disposition@0.5.2, serve-static@1.12.3, depd@1.1.1, on-finished@2.3.0, qs@6.4.0, debug@2.6.7, proxy-addr@1.1.5, send@0.15.3, finalhandler@1.0.4, type-is@1.6.15, accepts@1.3.3)
        ├── js-yaml@3.8.4 (esprima@3.1.3, argparse@1.0.9)
        ├── node-red-node-email@0.1.24 (poplib@0.1.7, mailparser@0.6.2, nodemailer@1.11.0, imap@0.8.19)
        ├── when@3.7.8
        ├── multer@1.3.0 (object-assign@3.0.0, append-field@0.1.0, xtend@4.0.1, on-finished@2.3.0, mkdirp@0.5.1, type-is@1.6.15, concat-stream@1.6.0, busboy@0.2.14)
        ├── uglify-js@3.0.20 (commander@2.9.0, source-map@0.5.6)
        ├── mqtt@2.9.0 (inherits@2.0.3, reinterval@1.1.0, xtend@4.0.1, minimist@1.2.0, commist@1.0.0, concat-stream@1.6.0, split2@2.1.1, pump@1.0.2, end-of-stream@1.4.0, readable-stream@2.3.3, mqtt-packet@5.4.0, websocket-stream@5.0.1, help-me@1.1.0)
        ├── node-red-node-twitter@0.1.11 (twitter-ng@0.6.2, oauth@0.9.14, request@2.81.0)
        ├── i18next@1.10.6 (cookies@0.7.0, json5@0.2.0, i18next-client@1.10.3)
        ├── xml2js@0.4.17 (sax@1.2.4, xmlbuilder@4.2.1)
        ├── node-red-node-feedparser@0.1.8 (feedparser@1.1.3, request@2.74.0)
        ├── cron@1.2.1 (moment-timezone@0.5.13)
        └── bcrypt@1.0.2 (bindings@1.2.1, nan@2.5.0, node-pre-gyp@0.6.32)

        بعد از اون هم دستور دوم رو برای آچدیت ui زدم، پیغام زیر رو داد. لطفا راهنمایی می کنین:
        pi@raspberrypi:~ $ npm install node-red-node-ui
        npm ERR! Linux 4.9.35-v7+
        npm ERR! argv “node” “/usr/local/bin/npm” “install” “node-red-node-ui”
        npm ERR! node v0.10.29
        npm ERR! npm v2.15.12
        npm ERR! code E404

        npm ERR! 404 Registry returned 404 for GET on https://registry.npmjs.org/node-red-node-ui
        npm ERR! 404
        npm ERR! 404 ‘node-red-node-ui’ is not in the npm registry.
        npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
        npm ERR! 404
        npm ERR! 404 Note that you can also install from a
        npm ERR! 404 tarball, folder, http url, or git url.

        npm ERR! Please include the following file with any support request:
        npm ERR! /home/pi/npm-debug.log

        • سلام
          در ابتدا ورژن حال حاضر Node-RED خود را بنویسید تا بررسى کنم. این دستور آخرین کامند به روز رسانى Node-RED مى باشد و طبیعتا هیچ مشکلى در نصب آن نباید داشته باشید.

    • سلام
      متوجه منظور سوال شما نشدم و اینکه تفاوت نود ui با چه نودى را میخواهید؟
      در این آموزش من از نود debug براى نمایش result پروژه استفاده کردم که اطلاعات را در نوار سمت راست نودرد نمایش میدهد.

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

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

    • سلام
      از توجه شما ممنونم.
      انتخاب های گسترده ای برای ساخت و طراحی پروژه های اینترنت اشیا وجود دارد و تماما بستگی به نوع پروژه ی تعریفی شما و کارآیی خاصی که از آن میکروکنترلر خواهید داشت، دارد. مانند mcu و یا Arduino , orangepi از اینرو نمیتوان صرفا یک برد را برتر از دیگری دانست. این موضوع در پروژه به صورت عملی باید از لحاظ اقتصادی، ابعاد، مصرف انرژی، قابلیت اطمینان و… بررسی شود و سپس بهترین انتخاب بر اساس پارامترهای مشخص شده، را بدست آورید.

  • باسلام و احترام.
    مطالب سایت بسیار آموزنده و راهنما می باشد.
    خانم مهندس خواشمندم در صورت امکان در مبحثی جدا گانه نحوه اتصال echo dot با esp8266 و در نهایت ساخت سیستم کنترل صوتی اشیاء را ارائه بفرمایید.

    • سلام
      از همراهی و توجه شما ممنونم.
      تمام سعی ما این است آموزش های مورد نیاز کاربران را بر اساس بیشترین تقاضا عملی کنیم و این مسئله کمی نیاز به زمان دارد چون تعداد آموزش ها بسیار زیاد می باشد. از پیشنهاد خوب شما ممنونم و در صورت امکان آموزش آن را بر روی سایت قرار میدهیم.

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

    • سلام
      از توجه شما بسیار ممنونم.
      برای سوال اول، بله امکان پذیر است و باید اتصالات نودها در Node-RED را به درستی شبیه سازی کنید و محدودیتی برای اینکار وجود نخواهد داشت.
      سوال دوم هم برای UI امکان لود اتوماتیک وجود ندارد. بهترین روش این است که آی پی UI را به در مرورگر ، home ذخیره کنید. سپس دستور راه اندازی اتوماتیک مرورگر را وارد کنید.

  • سلام ببخشید من موقعی که نود ها را به هم متصل میکنم و کلیک میکنم بر روی inject این ارور را می دهد.
    warning:node has undeployed changes
    به نظرتون کجای کارم مشکل داشتم؟

    • سلام
      این ارور زمانی بوجود می آید که تغییرات نود رد را Save نکرده اید.برای اینکار پس از تنظیم نود ها و اتصال نودها، Deploy کنید. از منو سمت راست نود رد Node-RED، گزینه قرمز رنگ Deploy را کلیک کنید. سپس متنظر بمانید تا تغییرات Deploy شود و پروژه را اجرا نمایید. اگر مشکل برطرف نشد از همین طریق اعلام نمایید.

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

  • با سلام و تشکر فراوان بابت آموزشها
    ببخشید من نود رد رو تو ویندوز نصب کردم تا بدون رزبری آموزشها رو انجام بدم ولی برای وارد کردن rpi Gpio شاخه رزبری وجود نداه
    میشه این شاخه رو اضافه کرد یا حتما باید با رزبری نود رد رو اجرا کنم تا شاخه ی زربری هم اضافه بشه؟

    • سلام
      خواهش میکنم.
      باید از طریق manage palette نصب کنید ولی عملا بدون رزبری پای استفاده ای نخواهد داشت.