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

کنترل در ورودی با اینترنت اشیاء IOT و چت آیدی ربات تلگرام Arduino

IOT-door-Lock--telegram-bot--digispark
نوشته شده توسط اروند طباطبایی

حدود سال‌های ۱۳۸۶ بود که دوستی از من درخواست مشاوره در زمینه هوشمند سازی نمود. ایده‌ای که در سر داشت از این قرار بود، که عبور و مرور آپارتمان مسکونی اش را بتواند از راه دور مدیریت کند. به عنوان مثال وقتی که در شهر محل سکونت حضور نداشته باشد و شخصی (تعمیر کار، نظافت‌کار و یا مهمان) بخواهد وارد منزل شود، او بتواند از راه دور این کار را انجام دهد. خب در آن سال‌ها نمیتوانستیم به سادگی امروزه از اینترنت استفاده کنیم. از این اولین راه حل استفاده از سیستم‌های مبتنی بر اس ام اس بود. در اینجا نمی‌خواهم راجع به اون ماجرا و چالش‌های پیش رو صحبت کنم. ولی هر آنچه که بود، باید قدر امروز، بردهای امبدد و اینترنت را بدانیم. در ادامه این پروژه با ربات تلگرام و چند سخت افزار در حد ۳۰ هزار تومانی، شیوه مدیریت در منزل و یا هر در دیگری را آموزش خواهم داد. با مرجع تخصصی اینترنت اشیاء IOT به زبان فارسی، دیجی اسپارک همراه باشید.

 

مدیریت در ورودی‌با ربات تلگرام آردوینو

برای هوشمند سازی در ورودی، کافیست کدهایی که من نوشته ام را روی یک برد آردوینو Arduino آپلود کنید. پس از انجام این آموزش می‌توانید با ربات تلگرام حداقل یک در ورودی را کنترل کنید. به عنوان مثال صبح از منزل بیرون زدید و سر کار هستید، ساعت ۱۰ خدمتکار به منزل شما می‌رسد، به سادگی و بدون نگرانی از داخل محل کار، در منزل را باز کنید، تا شخص وارد شود. البته من از برد کنترل اینترنت اشیاء Wemos D1 Mini استفاده کرده‌ام. برایساخت ربات تلگرام در این پست توضیحی نمی‌دهم. در دو پست قبلی آموزش ارتباط ربات تلگرام با بردهای آردوینو در پروژه IOT و ارتباط برد رزبری پای با ربات تلگرام توضیحات کامل برای ساخت ربات تلگرام را داده‌ام. پس کافیست توکن ربات تلگرام را در کدهایی که در این آموزش قرار دارد، قرار دهید. بعد از آپلود و برقراری اتصالات می‌توانید با ربات چت کنید و در ورودی را باز کنید.

 

امینت در ارتباط با ربات تلگرام

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

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

 

اتصالات مدار

همانطور که مشخص است، بنده در این آموزش از برد کنترل اینترنت اشیاء Wemos D1 mini استفاده می‌کنم. در پروژه در ورودی برقی، نیاز به قفل برقی داریم. از آنجایی که این نوع قفل‌ها به جریان زیاد لحظه‌ای نیاز دارند. نمی‌توان با پایه‌های میکروکنترلر به آن‌ها فرمان داد. پس انتخاب رله، بسیار اهمیت دارد. برای این موضوع جهت سهولت من از شیلد رله مخصوص برد Wemos D1 Mini استفاده کرده‌ام. اتصال این دو برد تا این قسمت، نیاز به سیم کشی ندارند. سپس با استفاده از آداپتور ۱۲ ولت و رله، اتصالات به قفل برقی برقرار می‌کنیم. چنانچه تمایل دارید شیوه اتصالات خروجی رله را به صورت حرفه‌ای بیاموزید، به آموزش استفاده از رله Relay در پروژه اینترنت اشیاء IOT مراجعه کنید. تا این لحظه اتصالات پیچیده‌ای نداشتیم. این موضوع را می‌توانید در ویدیو مربوطه در انتهای پست به دقت بررسی کنید.

تغذیه مدار

در پروژه‌های اینترنت اشیاء IOT یکی از اصولی‌ترین مسایل تغذیه بردها است. از اینرو تلاش من بر این است که از همان آداپتور ۱۲ ولت مورد استفاده برای قفل برقی Solenoid Lock برای تغذیه برد Wemos D1 Mini استفاده کنم. همانطور که میدانید، تغذیه این برد ۵ ولت DC است. بنابراین به یک مدار کاهنده ۵ ولت نیاز داریم. انتخاب من هم سایز کوچک و هم راندمان مناسب باید داشته باشد. از اینرو من ماژول کاهنده ۵ ولت ثابت را انتخاب میکنم.

تنظیمات ربات تلگرام در برد آردوینو

کدهای زیر برنامه ارتباط برای انواع برد آردوینو Arduino با ربات تلگرام می‌باشد. در این برنامه کامندهای ربات تلگرام و برد Wemos D1 Mini تعریف شده‌اند. پس از شروع، برنامه DIGI به شما خوش‌آمد می‌گوید و با دستور hi_digi می‌توانید آن را فعال کنید. پس از آن صفحه کلید روی ربات تلگرام نمایش داده خواهد شد. من در این کدها با شماره ۱ که در صفحه کلید قرار دارد، تعریف کرده‌ام که رله ۴ ثانیه فعال شود. که زمان مناسب برای بازشدن در ورودی است. سپس اتوماتیک قطع شده و زبانه قفل در حالت طبیعی قرار می‌گیرد.

پس از وارد کردن کدها و کامپایل روی آردوینو یوزنیم و  پسورد وای فای + توکن ربات تلگرام را در کدها وارد کنید. سپس روی برد آپلود کنید. پس از آن همانند تصویر زیر وارد ربات تلگرام که ساخته‌اید بشوید و Start را بزنید. ربات یک متنی را بر می‌گرداند و سپس بر روی دستور /hi_digi کلیک کنید. سپس ۱ دستور که در کدهای بالا تعریف شده است به صورت صفحه کلید در ربات برای شما نمایش داده می‌شود. با لمس کردن این کلید، رله و در نهایت زبانه قفل در ۴ ثانیه باز می‌شود.

IOT-Door-Lock-digispark

 

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

 

 

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

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

اروند طباطبایی

هرچه می آموزم میبینم که خیلی کم آموختم. در حال حاضر مدیریت تولید مقطع کارشناسی ارشد هستم. علاقه به رباتیک و تکنولوژی دارم. امیدوارم بتونم دانشی را که آموخته‌ام، به روش‌های مختلفی به کاربران علاقمند منتقل کنم.

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

۴۲ دیدگاه

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

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

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

        • با سلام و تشکر از توجه شما، این آموزش با قفل برقی Solenoid Lock اجرا شده است. که البته خروجی رله را به قفل ارتباط داده‌ام. شما میتوانید خروجی رله را به قفل برقی ۲۲۰ ولت متصل کنید.

            • سلام مجدد، بنده در این زمینه سورس خاصی را نمیشناسم، به طور معمول کلیه قفل‌های برقی نیاز به یک جریان چند ثانیه‌ای برای تحریک زبانه دارند. از اینرو با همان رله قابلیت مدیریت کردن را دارند. ولی دقت داشته باشید که در این آموزش، به علت اینکه قفل برقی از نوع ۱۲ ولت بود، بنده از منبع تغذیه ۱۲ ولت و ماژول کاهنده ۵ ولت استفاده کرده‌ام. چنانچه شما از قفل برقی ۲۲۰ ولت استفاده می‌کنید، به این دو مدار نیازی ندارید و برای تغذیه برد کنترل اینترنت اشیا wemos d1 mini از منبع تغذیه ۵ ولتی مجزا استفاده کنید.

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

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

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

    Arduino: 1.8.1 (Windows 7), Board: “WeMos D1(Retired), 80 MHz, 921600, 4M (3M SPIFFS)”

    C:\Users\moein\Desktop\_32131\_32131.ino:3:34: fatal error: UniversalTelegramBot.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    Error compiling for board WeMos D1(Retired).

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

    • با سلام
      همانطور که در متن توضیح داده‌ام، سطرهای ۳۴ تا ۳۸ در کدها مربوط به چت آیدی میباشد. این سطرها را کپی کنید و درقسمت مربوطه داخل کدهای دیگر قرار دهید.

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

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

    • با سلام
      ضمن تشکر از توجه شما، بله میتوانید استفاده کنید، ولی مساله اینجاست که شما به توکن ربات بنده دسترسی ندارید. پس بهتر است ربات جدید بسازید و با استفاده از کدهای برنامه بر اساس چت آیدی دسترسی را محدود کنید.

  • با سلام مهندس من آموزشتون رو با برد مگا ۲۵۶۰ انجام دادم چون ماژول وای فای نداشتم با ماژول اترنت اینکار رو انجام دادم اما مشکلی که هست کار نمیکنه یعنی کلا جواب نمیده به پیام های ارسال شده کدهایی که ست کردم رو برد اینهاست:
    #include
    #include
    #include

    // Enter a MAC address for your controller below.
    // Newer Ethernet shields have a MAC address printed on a sticker on the shield
    byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    // if you don’t want to use DNS (and reduce your sketch size)
    // use the numeric IP instead of the name for the server:
    //IPAddress server(74,125,232,128); // numeric IP for Google (no DNS)
    char server[] = “www.google.com”; // name address for Google (using DNS)
    #define BOTtoken “21547XXXXXXXXXXXXXXXXXX-eEMpDev8B7pTZwTvk” // توکن ربات تلگرام

    // Set the static IP address to use if the DHCP fails to assign
    IPAddress ip(192,168,1,129);

    // Initialize the Ethernet client library
    // with the IP address and port of the server
    // that you want to connect to (port 80 is default for HTTP):
    EthernetClient client;

    UniversalTelegramBot bot(BOTtoken, client);

    int Bot_mtbs = 1000;
    long Bot_lasttime;
    bool Start = false;
    int D1=13;
    const int relay1 = D1;
    int relaystatus = 0;

    void handleNewMessages(int numNewMessages) {
    Serial.println(“handleNewMessages”);
    Serial.println(String(numNewMessages));

    for (int i=0; i Bot_lasttime + Bot_mtbs) {
    int numNewMessages = bot.getUpdates(bot.last_message_received + 1);

    while(numNewMessages) {
    Serial.println(“got response”);
    handleNewMessages(numNewMessages);
    numNewMessages = bot.getUpdates(bot.last_message_received + 1);
    }

    Bot_lasttime = millis();
    }
    }

    ممنونم ازتون

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

  • با سلام شرمنده من با این اررو مواجه می شوم چطور میشود برطرفش کنم ممنون
    Build options changed, rebuilding all
    C:\Users\acer-pc\Desktop\iot\iot.ino:131:34: fatal error: UniversalTelegramBot.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    Error compiling for board WeMos D1 R2 & mini.

    • با سلام
      ضمن تشکر از توجه شما، این ارور مربوط به کتابخانه UniversalTelegramBot.h میباشد. لطفا از منو مربوطه نسبت به نصب کتابخانه اقدام کنید.

  • سلام
    یک سوال ساده اما مهم.
    اگر کسی بخواهد که به جای استفاده از بردهای آموزشی خودش بردی رو طراحی کنه باید برای تامین کلاک میکروی ARM که مثلاً قرار هست با فرکانس ۱۰۰MHz یا بالاتر کار کنه باید از چه روشی استفاده کرد؟
    خود میکرو اوسیلاتور داخلی داره تا جایی که من تو کاتالوگ ها خوندم نهایتاً تا ۲۵MHz رو ساپورت میکنه
    آیا از کریستال استفاده می کنند؟
    اصلاً کریستالی با این فرکانس پیدا میشه؟

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

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

    ممنون

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

    • با سلام
      منظورتان را متوجه نشدم، میخواهید شیلد رله را به این برد میخواهید نصب کنید؟ یا همین شیلد رله را به برد دیگری؟

        • سلام مجدد
          برای این منظور باید پین GND و ۵v را به تغذیه آردوینو متصل کنید. سپس پایه D1 برای فرمان به رله است، آن‌را به یکی از پایه‌های دیجیتال آردوینو متصل کنید.

  • سلام من این کتابخانه ESP8266WiFi.h رو از کجا گیر بیارم ؟؟ ار طریق خود آردوینو که سرچ میکنم IOttwet رو پیدا میکنه؟؟؟

      • مرسی اون مشکل حل شد حالا این ارور رو دارم
        exit status 1
        Error compiling for board Arduino Nano.
        روب آردینو های دیگ هم همین ارورو رو میده

        • سلام مجدد
          اگر میخواهید برنامه را روی برد دیگری آپلود کنید، باید پین‌ها را در برنامه تغییر دهید، این برنامه به صورت پیش فرض برای برد Wemos Mini D1 کارایی دارد.

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