Written by Arvand Tabatabaie
تصور کنید هنگامی که روز کاری تمام شده است و با خستگی روزانه در حال حرکت به سمت منزل هستید. ترافیک عبور و مرور هم در ساعت اوج خود است. به منزل میرسید و با عدم تعادل دمای هوای منزل روبرو میشوید. یا اینکه تمایل دارید تا قبل از رسیدن شما به منزل کلیه گلدانها آبیاری شوند. برای این منظور نیاز به MCU قدرتمند با پایههای متنوع خواهید داشت. پیرو پست مدیریت وسایل برقی با ربات تلگرام و سیستم چت آنلاین آردوینو ، ۴ وسیله برقی را میتوانستید از هر مکانی کنترل کنید. در این پست شیوه مدیریت ۸ وسیله برقی البته با ربات تلگرام و برد NodeMCU دارای صفحه کلید آموزش خواهم داد. البته با برد قویتر Node MCU بر پایه تراشه ESP8266 و شیلد توسعه که توانایی اتصال بیش از ۳۲ رله را دارد. همانطور که قبلا در پست ارتباط برد رزبری پای با ربات تلگرام توضیح دادهام. تلگرام فقط یک شبکه اجتماعی برای کاربران نیست، بلکه توانایی ارتباط M to M و ماشینی را دارد. در وب نسل ۳ از این مدل ارتباط ماشین به ماشین زیاد خواهیم دید. در ادامه آموزش چت با شیئ توسط ربات تلگرام و بردهای آردوینو ، با مرجع تخصصی اینترنت اشیاءدیجی اسپارک همراه باشید.
مدیریت وسایل با ربات تلگرام و آردوینوبرای چت با شیئ، کافیست کدهایی که من نوشته ام را روی یک برد آردوینو Arduino آپلود کنید. پس از انجام این آموزش میتوانید با چت کردن در ربات تلگرام و برد NodeMCU وسیله برقی ۸ کانال را کنترل کنید. به عنوان مثال در یک اتاق خواب، چراغ سقفی، تهویه و پریز اتاق را با این برنامه مدیریت کنید. البته من از برد NodeMCU استفاده کردهام. برای ساخت ربات تلگرام در این پست توضیحی نمیدهم. در دو پست قبلی آموزش ارتباط ربات تلگرام با بردهای آردوینو در پروژه IOT و ارتباط برد رزبری پای با ربات تلگرام توضیحات کامل برای ساخت ربات تلگرام را دادهام. پس کافیست توکن ربات تلگرام را در کدهایی که در این آموزش قرار دارد، قرار دهید. بعد از آپلود و برقراری اتصالات میتوانید با ربات چت کنید و چراغ اتاقها را خاموش و روشن کنید.
لوازم مورد نیاز:کیت پیشرفته مدیریت وسایل منزل با ربات تلگرام و برد NodeMCU
اتصال به برد NodeMCUپایههای ماژول رله ۸ کانال را با دقت به برد Node MCU متصل کنید. پایه VCC به تغذیه برد Node MCU و پایه GND به اتصال زمین برد Node MCU وصل میشوند. ۸ پایه فرمان به رلهها به ترتیب به پینهای D1 تا D8 وصل کنید. در این آموزش از شیلد توسعه برد اینترنت اشیاء Node MCU Base Shield و برد Node MCU استفاده شده است. که میتوانید به صورت شیلد برد Node MCU را روی آن قرار دهید و اتصالات را همانند من از روی آن به رله وصل کنید. به همین سادگی، به تصویر زیر توجه کنید. سپس با سوکت XH اتصال باتری لیتیوم پلیمر را برقرار کنید.
نکته جالب توجه در این آموزش این است. که میتوانید با یک دستور به طور همزمان به چند رله فرمان دهید. از آنجایی که شیلد Nodemcu دارای پینهای توسعه میباشد. علاوه بر امکان افزودن رلههای بیشتر، امکان مدیریت چند رله با یک پین هم دارد.
تنظیمات ربات تلگرام در برد آردوینوکدهای زیر برنامه ارتباط برای انواع برد آردوینو Arduino با ربات تلگرام میباشد. در این برنامه کامندهای ربات تلگرام و برد NodeMCU تعریف شدهاند. پس از شروع، برنامه DIGI به شما خوشآمد میگوید و با دستور hi_digi میتوانید آن را فعال کنید. پس از آن صفحه کلید روی ربات تلگرام نمایش داده خواهد شد. من در این کدها شماره اتاقها یا در حالت کلی تر شماره رلهها را تعریف کردهام. سپس در جلو همان دکمه وضعیت غیر فعال کردن همان کانال قرار داد.
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
// Initialize Wifi connection to the router
char ssid[] = "****************"; // Wifi
char password[] = "**************"; // Wifi
// Initialize Telegram BOT
#define BOTtoken "******************************" // Telegram
WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);
int Bot_mtbs = 1000;
long Bot_lasttime;
bool Start = false;
const int relay1 = D1;
const int relay2 = D2;
const int relay3 = D3;
const int relay4 = D4;
const int relay5 = D5;
const int relay6 = D6;
const int relay7 = D7;
const int relay8 = D8;
int relaystatus = 0;
void handleNewMessages(int numNewMessages) {
Serial.println("handleNewMessages");
Serial.println(String(numNewMessages));
for (int i=0; i<numNewMessages; i++) {
String chat_id = String(bot.messages[i].chat_id);
String text = bot.messages[i].text;
String from_name = bot.messages[i].from_name;
if (from_name == "") from_name = "Guest";
if (text == "/hi_digi") {
String keyboardJson = "[[\"1\", \"1-off\"],[\"2\", \"2-off\"],[\"3\", \"3-off\"],[\"4\", \"4-off\"],[\"5\", \"5-off\"],[\"6\", \"6-off\"],[\"7\", \"7-off\"],[\"8\", \"8-off\"]]";
bot.sendMessageWithReplyKeyboard(chat_id, "از صفحه کلید استفاده کنید", "", keyboardJson, true);
bot.sendChatAction(chat_id, "typing");
delay(4000);
bot.sendMessage(chat_id, "شماره اتاق مورد نظر را انتخاب کنید.");
}
if (text == "1") {
digitalWrite(relay1, LOW); // turn the LED on (HIGH is the voltage level)
relaystatus = 1;
bot.sendMessage(chat_id, "Room 1 is on", "");
}
if (text == "1-off") {
digitalWrite(relay1, HIGH); // turn the LED off (LOW is the voltage level)
relaystatus = HIGH;
bot.sendMessage(chat_id, "Room 1 turned OFF", "");
}
if (text == "2") {
digitalWrite(relay2, LOW); // turn the LED on (HIGH is the voltage level)
relaystatus = 1;
bot.sendMessage(chat_id, "Room 2 is on", "");
}
if (text == "2-off") {
digitalWrite(relay2, HIGH); // turn the LED off (LOW is the voltage level)
relaystatus = HIGH;
bot.sendMessage(chat_id, "Room 2 turned OFF", "");
}
if (text == "3") {
digitalWrite(relay3, LOW); // turn the LED on (HIGH is the voltage level)
relaystatus = 1;
bot.sendMessage(chat_id, "Room 3 is on", "");
}
if (text == "3-off") {
digitalWrite(relay3, HIGH); // turn the LED off (LOW is the voltage level)
relaystatus = HIGH;
bot.sendMessage(chat_id, "Room 3 turned OFF", "");
}
if (text == "4") {
digitalWrite(relay4, LOW); // turn the LED on (HIGH is the voltage level)
relaystatus = 1;
bot.sendMessage(chat_id, "Room 4 is on", "");
}
if (text == "4-off") {
digitalWrite(relay4, HIGH); // turn the LED off (LOW is the voltage level)
relaystatus = HIGH;
bot.sendMessage(chat_id, "Room 4 turned OFF", "");
}
if (text == "5") {
digitalWrite(relay5, LOW); // turn the LED on (HIGH is the voltage level)
relaystatus = 1;
bot.sendMessage(chat_id, "Room 5 is on", "");
}
if (text == "5-off") {
digitalWrite(relay5, HIGH); // turn the LED off (LOW is the voltage level)
relaystatus = HIGH;
bot.sendMessage(chat_id, "Room 5 turned OFF", "");
}
if (text == "6") {
digitalWrite(relay6, LOW); // turn the LED on (HIGH is the voltage level)
relaystatus = 1;
bot.sendMessage(chat_id, "Room 6 is on", "");
}
if (text == "6-off") {
digitalWrite(relay6, HIGH); // turn the LED off (LOW is the voltage level)
relaystatus = HIGH;
bot.sendMessage(chat_id, "Room 6 turned OFF", "");
}
if (text == "7") {
digitalWrite(relay7, LOW); // turn the LED on (HIGH is the voltage level)
relaystatus = 1;
bot.sendMessage(chat_id, "Room 7 is on", "");
}
if (text == "7-off") {
digitalWrite(relay7, HIGH); // turn the LED off (LOW is the voltage level)
relaystatus = HIGH;
bot.sendMessage(chat_id, "Room 7 turned OFF", "");
}
if (text == "8") {
digitalWrite(relay8, LOW); // turn the LED on (HIGH is the voltage level)
relaystatus = 1;
bot.sendMessage(chat_id, "Room 8 is on", "");
}
if (text == "8-off") {
digitalWrite(relay8, HIGH); // turn the LED off (LOW is the voltage level)
relaystatus = HIGH;
bot.sendMessage(chat_id, "Room 8 turned OFF", "");
}
if (text == "1" ) {
bot.sendChatAction(chat_id, "typing");
delay(4000);
bot.sendMessage(chat_id, "oh, Thats great, check Digispark.ir");
}
if (text == "3" ) {
bot.sendChatAction(chat_id, "typing");
delay(4000);
bot.sendMessage(chat_id, "oh, Thats great, check digispark.ir/w5100-running-arduino-ip-printing/");
}
if (text == "7" ) {
bot.sendChatAction(chat_id, "typing");
delay(4000);
bot.sendMessage(chat_id, "oh, Thats great, check http://digispark.ir/arduino-iot-telegram-bot-relay/");
}
if (text == "no") {
bot.sendChatAction(chat_id, "typing");
delay(4000);
bot.sendMessage(chat_id, "Ok, How about digispark.ir/telegram-bot-iot-arduino/");
}
// You can't use own message, just choose from one of bellow
//typing for text messages
//upload_photo for photos
//record_video or upload_video for videos
//record_audio or upload_audio for audio files
//upload_document for general files
//find_location for location data
//more info here - https://core.telegram.org/bots/api#sendchataction
if (text == "/start") {
String welcome = "Welcom to Digispark onlie IOT Chat" + from_name + ".\n";
welcome += "/hi_digi : This is Digispark IOT Chat.\n\n";
bot.sendMessage(chat_id, welcome);
}
}
}
void setup() {
Serial.begin(115200);
// Set WiFi to station mode and disconnect from an AP if it was Previously
// connected
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
// attempt to connect to Wifi network:
Serial.print("Connecting Wifi: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
pinMode(D1, OUTPUT); // initialize digital ledPin as an output.
delay(10);
digitalWrite(relay1, HIGH); // initialize pin as off
pinMode(D2, OUTPUT); // initialize digital ledPin as an output.
delay(10);
digitalWrite(relay2, HIGH); // initialize pin as off
pinMode(D3, OUTPUT); // initialize digital ledPin as an output.
delay(10);
digitalWrite(relay3, HIGH); // initialize pin as off
pinMode(D4, OUTPUT); // initialize digital ledPin as an output.
delay(10);
digitalWrite(relay4, HIGH); // initialize pin as off
pinMode(D5, OUTPUT); // initialize digital ledPin as an output.
delay(10);
digitalWrite(relay5, HIGH); // initialize pin as off
pinMode(D6, OUTPUT); // initialize digital ledPin as an output.
delay(10);
digitalWrite(relay6, HIGH); // initialize pin as off
pinMode(D7, OUTPUT); // initialize digital ledPin as an output.
delay(10);
digitalWrite(relay7, HIGH); // initialize pin as off
pinMode(D8, OUTPUT); // initialize digital ledPin as an output.
delay(10);
digitalWrite(relay8, HIGH); // initialize pin as off
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("");
Serial.println("WiFi connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
if (millis() > 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();
}
}
پس از وارد کردن کدها و کامپایل روی آردوینو یوزنیم و پسورد وای فای + توکن ربات تلگرام را در کدها وارد کنید. سپس روی برد آپلود کنید. پس از آن همانند تصویر زیر وارد ربات تلگرام که ساختهاید بشوید و Start را بزنید. ربات یک متنی را بر میگرداند و سپس بر روی دستور /hi_digi کلیک کنید. سپس ۸ دستور که در کدهای بالا تعریف شده است به صورت صفحه کلید در ربات برای شما نمایش داده میشود.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی, از وبسایت دیجی اسپارک حمایت کنید.
Comments
Please log in or sign up to comment.