آردوینو اینترنت اشیا IOT برد ویموس Wemos خانه هوشمند پروژه های آردوینو

کنترل در ورودی با اینترنت اشیاء 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 کارایی دارد.

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

  • با سلام و ضمن تشکر از توجه و زحمات بی دریغ شما
    با توجه به چت ایدی ایا میتوان کاری کرد که هر کس قادر به روشن و خاموش کردن لوازم باشد و در صورت خاموش و روشن کردن پیام ان علاوه بر ان شخص به خود من هم ارسال شود(با توجه به اینکه در برخی مکانها به علت وجود افراد زیاد تعریف کردن هر ایدی سخت میباشد میخواهم همه قادر به روشن خاموش کردن باشند ولی پیام ان به من هم ارسال شود)
    باتشکر

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

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

      • تشکر بابت جوابتون. من ربات رو ستارت کردم ولی متاسفانه هیچ واکنشی نشون نداد!!
        چطوری باید با این ربات کار کرد؟

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

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

          • تشکر بابت پاسختون.
            مشکل من با خود ربات هست.
            من فقط نحوه بدست اوردن چت ایدی رو میخام بفهمم.
            در جایی نوشته بود همینکه یک پیام به این ربات بفرستی ربات چت ایدی رو برمیگردونه!!
            این گفته درست نیست؟؟
            لطفا فقط نحوه پیدا کردن چت ایدی رو بفرمایید.

  • با سلام خدمت شما
    ببخشید در مورد امنیت در ارتباط با ربات تلگرام و خط های ۳۴ تا ۳۸ توی برنامه میشه توضیح بدید تشکر از شما.

  • درمورد کد نویسی رله دوم یا اضافه نمودن رله های بیشتر با یکسری تغییرات این کد بایستی به کدها اضافه بشه،درسته؟

              if (text == “1”) {

          digitalWrite(relay1, HIGH);   // turn the Relay on (HIGH is the voltage level)

          delay(4000);

          digitalWrite(relay1, LOW); // initialize pin as off

          relaystatus = 1;

          bot.sendMessage(chat_id, “Door is going to be Open”, “”);

              }

    • با سلام
      ضمن تشکر از توجه و تحلیل شما، قبل از هرچیزی در ابتدای کدها
      const int relay1 = D1;
      باید همانند این خط، یک خط دیگر با نام رله دوم معرفی شود و به یکی از پایه‌های برد نسبت داده شود. به این صورت
      const int relay2 = D2;
      سپس در بخش loop و setup کدها هم باید تغییراتی اعمال شود.

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

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

  • سلام
    بسیار ممنون از آموزش های خوبتان. میشه چند تا کیبورد اضافه کرد؟ مثلا وقتی گزینه لامپ رو در کیبورد انتخاب میکنیم بعدش گزینه ی روشن و خاموش در یک کیبورد دیگه نمایش داده بشه؟
    چطوری میتونیم از زبان فارسی در گزینه ای کیبورد استفاده کنیم؟

    • با سلام
      ضمن تشکر از توجه شما، بله امکان پذیر است. با کتابخانه ArduinoJson میتوانید این کار را انجام دهید. به عنوان مثال کد زیر برای تعریف اولین کیبورد است.
      String keyboardJson = “[[\”کلید\”]]”;
      برای تعریف کیبورد تو در تو باید از دستور زیر استفاده کنید.
      if (text==”کلید”)
      {
      String keyboardJson = “[\”کلید خاموش\”]”

      • فایل universal telegrom , arduino json رو هم از طریق خود نرم افزار و هم از فایل های موجود جایگزین کردم ولی بازم خطا تغییری نکرد
        Build options changed, rebuilding all
        libraries\arduino_597862\UniversalTelegramBot.cpp.o:(.text._ZN11ArduinoJson9JsonArray7invalidEv[_ZN11ArduinoJson9JsonArray7invalidEv]+0x8): undefined reference to __cxa_guard_acquire'

        libraries\arduino_597862\UniversalTelegramBot.cpp.o:(.text._ZN11ArduinoJson9JsonArray7invalidEv[_ZN11ArduinoJson9JsonArray7invalidEv]+0xc): undefined reference to __cxa_guard_release’

        libraries\arduino_597862\UniversalTelegramBot.cpp.o: In function ArduinoJson::JsonArray::invalid()':

        C:\Users\Alireza.M\Documents\Arduino\libraries\arduino_597862\src/UniversalTelegramBot.cpp:283: undefined reference to __cxa_guard_acquire’

        C:\Users\Alireza.M\Documents\Arduino\libraries\arduino_597862\src/UniversalTelegramBot.cpp:283: undefined reference to __cxa_guard_release'

        libraries\arduino_597862\UniversalTelegramBot.cpp.o: In function ArduinoJson::JsonObject::invalid()’:

        C:\Users\Alireza.M\Documents\Arduino\libraries\arduino_597862\src/UniversalTelegramBot.cpp:283: undefined reference to __cxa_guard_acquire'

        C:\Users\Alireza.M\Documents\Arduino\libraries\arduino_597862\src/UniversalTelegramBot.cpp:283: undefined reference to __cxa_guard_release’

        collect2.exe: error: ld returned 1 exit status

        exit status 1
        Error compiling for board NodeMCU 1.0 (ESP-12E Module).

        • با سلام
          لطفا ارور دریافتی را فقط در یکی از پست‌ها مطرح کنید. همانطور که در پست دیگر به شما گفتم، این ارور مربوط به عدم نصب کتابخانه نیست. ولی یک مشکلی هست که بنده هم تابحال با چنین مشکلی برخورد نکرده‌ام. لطفا سورس کتابخانه‌های مربوط به این کدها را از مسیر C:\Users\Alireza.M\Documents\Arduino\libraries\ پاک کنید و مجددا نصب کنید. سپس موارد را اطلاع دهید.

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

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

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

    • با سلام
      ضمن تشکر از توجه شما، در این خصوص از کتابخانه keyboardJson استفاده شده است که با ربات تلگرام همخوانی لازم را دارد. برای پایتون منتظر باشید تا آموزش مربوطه راه اندازی شود.

  • سلام
    ببخشید اقای اروند اگه بخواهیم کلا برای کنترل تشیا یه حالت set کردن زمان هم قرار مثلا سر فلان ساعت یک پین فعال یا غیر فعال شود برنامه به چه صورتی باید ارتقا یابد
    Set کردن زمان و انتخاب کردن پین مورد نظرم از طریق تلگرام انجام شود

    • با سلام
      ضمن تشکر از توجه شما، در این خصوص یه مقداری پیچیده می‌شود، باید از کتابخانه‌هایی که ساعت دارند مانند TimeClient استفاده کنید. سپس انتخاب کنید که ساعت و تاریخ را از چه سروری دریافت کند. در چنین شرایطی کافیست که در کدهای آردوینو تعریف کنید، این قضیه ربطی به تلگرام ندارد، مگر اینکه شما در کدها جوری تعریف کنید که اگر فلان پیام از تلگرام دریافت شد، شروع به شمارش کند. برای افزودن ساعت به این برد می‌توانید از آموزش ساخت ساعت عقربه‌ای با حلقه LED NoePixel Ring و برد wemos D1 Mini استفاده کنید.

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

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

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

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

  • با سلام و سپاس از سایت خوبتان
    اقای اروند در صورت امکان برنامه پروژه را به نحوه ی ارتقا داد که امنیت سیستم را بالا برد که در هنگام login یک شخص به سیستم از آن تقاضای رمز عبور و نام کاربری بخواهد که حالا به فرض اینکه یک نفر هم توانست ربات تلگرامی را پیدا کند نتواند به سیستم اصلی دسترسی پیدا کند

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

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

  • با سپاس یعنی امکانش هم نمی باشد
    من منتظر ارائه اموزش های شما در حوزه اینترنت اشیا با رزبری پای هستم
    باتشکر

  • با عرض سلام و خسته نباشید وهمچنین تبریک سال نو
    من همه مراحل و درست انجام دادم
    ولی وقتی در ربات تلگرام ledon یا ledoff و sendمیکنم رله روشن نمیشه و در serial monitor این پیامو میده
    ⸮Connecting Wifi: CAR-974
    ……..
    WiFi connected
    IP address: 192.168.1.3
    got response
    handleNewMessages
    ۱
    got response
    handleNewMessages
    ۱
    ممنون میشم اگه راهنمایی کنید

    • با سلام و تشکر از توجه شما
      پیام‌های دریافتی در سریال مانیتور نشانه اتصال به شبکه است. مشکل در جای دیگری است. اولا که دستورات به صورت /ledon تعریف شده است. این موضوع را بررسی کنید. نکته دیگر هم اتصالات روی برد می‌باشد. لطفا بررسی و موارد را از همین طریق اطلاع رسانی کنید.

  • سلام مجدد من به این ارور برخوردم :
    Arduino: 1.8.5 (Windows 8.1), Board: “WeMos D1 R2 & mini, 80 MHz, 921600, 4M (3M SPIFFS)”

    D:\Arduino Projects\P1\Project_2\Project_2.ino: In function ‘void handleNewMessages(int)’:

    Project_2:61: error: ‘text’ was not declared in this scope

    if (text == “1” ) {

    ^

    Project_2:62: error: ‘chat_id’ was not declared in this scope

    bot.sendChatAction(chat_id, “typing”);

    ^

    Project_2:66: error: ‘text’ was not declared in this scope

    if (text == “3” ) {

    ^

    Project_2:67: error: ‘chat_id’ was not declared in this scope

    bot.sendChatAction(chat_id, “typing”);

    ^

    Project_2:71: error: ‘text’ was not declared in this scope

    if (text == “no”) {

    ^

    Project_2:72: error: ‘chat_id’ was not declared in this scope

    bot.sendChatAction(chat_id, “typing”);

    ^

    Project_2:78: error: ‘text’ was not declared in this scope

    if (text == “/start”) {

    ^

    Project_2:79: error: ‘from_name’ was not declared in this scope

    String welcome = “Welcom to Digispark onlie IOT Chat” + from_name + “.\n”;

    ^

    Project_2:81: error: ‘chat_id’ was not declared in this scope

    bot.sendMessage(chat_id, welcome);

    ^

    D:\Arduino Projects\P1\Project_2\Project_2.ino: At global scope:

    Project_2:84: error: expected declaration before ‘}’ token

    }

    ^

    exit status 1
    ‘text’ was not declared in this scope

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.
    میشه بگید مشکل از کجاست ؟

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

  • با سلام خدمت آقای طباطبایی

    من میخوام به جای اینکه اطلاعات را به ربات بفرستم به یک سایت ارسال کنم. منظورم استفاده از پروتکل http و متد get یا post. لطفا راهنمایی بفرمایید.

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

  • خسته نباشید فراوان به شما و تیمتون.
    من در برنامه نویسی تقریبا تازه کار هستم ممنون میشم اگه ی توضیحی در مورد خط ۳۰ تا ۴۲ و خط ۱۰۴ بدید
    ممنون میشم

    • با سلام و تشکر از توجه شما
      اینکه تازه کار هستید، جای نگرانی ندارد. می‌توانید با خیال آسوده از دیجی اسپارک کمک بگیرید. خط ۳۰ تا ۳۳ موارد برای ارسال پیام و ارتباط با ربات تلگرام می‌باشد. این موارد طبق قوانین تعریف شده در کتابخانه می‌باشند. خطوط ۳۵ تا ۳۹ هم تنظیمات مربوط به چت آیدی هستند. این قسمت برای افزایش ضریب امنیت سیستم به کار رفته است.خطوط ۱۰۴ تا ۱۰۷ مربوطه به نمایش در سریال مانیتور است. که به هنگام برقرار بودن اتصال در سریال مانیتور کاراکتر «.» را نمایش می‌دهد.

  • خسته نباشید خدمت جناب مهندس.
    من در برنامه نویسی اماتور هستم و لطفا یه توضیحی در مورد خط ۳۰ تا ۴۲ و خط ۱۰۴ بدید.
    ممنون میشم اگه جواب بدید.

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

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