#include "Arduino.h"
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include "ZeusTgBot.h"
#include <EEPROM.h>
ESP8266WiFiMulti WiFiMulti;
#define Ssid "Your_WIFI_SSID"
#define Password "Your_WIFI_PASS"
#define Bot_Key "Your_BOT_Key"
Zeus_TgBot Bot(Bot_Key);
// Witty Cloud Board specifc pins
const int LDR = A0;
const int BUTTON = 4;
const int RED = 15;
const int GREEN = 12;
const int BLUE = 13;
void Tg_Message_Prossess(String mgs_id,String sender_id,String msg,bool is_callback,String Call_ID);
uint32_t Command_Run = 0;
void setup()
{
// Add your initialization code here
Serial.begin(115200);
Serial.print("\n");
//Serial.setDebugOutput(true);
// We start by connecting to a WiFi network
WiFiMulti.addAP(Ssid, Password);
Serial.println();
Serial.println();
Serial.print("Wait for WiFi... ");
/*Wait For Connect to Server*/
while(WiFiMulti.run() != WL_CONNECTED)
{
Serial.print(".");
delay(500);
}
Serial.println();
Serial.println("Connect to NetWork .... OK");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
// Initialize LDR, Button and RGB LED
pinMode(LDR, INPUT);
pinMode(BUTTON, INPUT);
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(BLUE, OUTPUT);
Bot.Set_Message_Event(&Tg_Message_Prossess);
Zeus_TgBot::User_t User;
if(Bot.GetMe(&User))
{
Serial.println();
Serial.println("Bot Information");
Serial.println("first name: " + User.first_name);
Serial.println("last_name: " + User.last_name);
Serial.println("username: " + User.username);
Serial.println();
}
else
{
Serial.println("Can Not Get Bot Info");
}
}
void Tg_Message_Prossess(String mgs_id,String sender_id,String msg,bool is_callback,String Call_ID)
{
String Intor = "ربات تلگرام سیسوگ \n\
این ربات توسط تیم سیسوگ برنامه ریزی و با استفاده از آردوینو راه اندازی شده است \n\
با استفاده از این ربات قادر خواهید بود لوازم منزل را از راه دور و با استفاده از تلگرام کنترل کنید.\n\
از منوی زیر یکی از کلید ها را انتخاب کنید.";
String keyboardJson = "[[\{ \"text\" : \"مشاهده سایت سیسوگ\", \"url\" : \"https://sisoog.com\" \} ],"
"[\{ \"text\" : \"عضویت در تلگرام سیسوگ\", \"url\" : \"https://t.me/joinchat/AAAAAEBAGr-XNdPMm3bTIg\" \} ],"
"[\{ \"text\" : \"تغییر وضعیت لامپ سبز\", \"callback_data\" : \"Gtg\" \} ],"
"[\{ \"text\" : \"تغییر وضعیت لامپ قرمز\", \"callback_data\" : \"Rtg\" \} ],"
"[\{ \"text\" : \"تغییر وضعیت لامپ آبی\", \"callback_data\" : \"Btg\" \} ]]";
if(is_callback==true)
{
/*it's Call Back Data*/
Serial.println("Get CallBack - " + msg);
if(msg=="Gtg") /*Command For Green LED*/
{
if(digitalRead(GREEN))
{
digitalWrite(GREEN, false);
Bot.answerCallbackQuery(Call_ID,"لامپ سبز خاموش شد");
}
else
{
digitalWrite(GREEN, true);
Bot.answerCallbackQuery(Call_ID,"لامپ سبز روشن شد");
}
}
if(msg=="Rtg") /*Command For Green LED*/
{
if(digitalRead(RED))
{
digitalWrite(RED, false);
Bot.answerCallbackQuery(Call_ID,"لامپ قرمز خاموش شد");
}
else
{
digitalWrite(RED, true);
Bot.answerCallbackQuery(Call_ID,"لامپ قرمز روشن شد");
}
}
if(msg=="Btg") /*Command For Green LED*/
{
if(digitalRead(BLUE))
{
digitalWrite(BLUE, false);
Bot.answerCallbackQuery(Call_ID,"لامپ آبی خاموش شد");
}
else
{
digitalWrite(BLUE, true);
Bot.answerCallbackQuery(Call_ID,"لامپ آبی روشن شد");
}
}
Intor += "\n\n وضعیت لامپ ها\n";
Intor += "\n سبز: ";
Intor += (digitalRead(GREEN)) ? "روشن":"خاموش";
Intor += "\n قرمز: ";
Intor += (digitalRead(RED)) ? "روشن":"خاموش";
Intor += "\n آبی: ";
Intor += (digitalRead(BLUE)) ? "روشن":"خاموش";
Intor += "\n\nتعداد درخواست های پردازش شده: " + String(Command_Run);
Intor += "\n\nسیسوگ";
Command_Run++;
Bot.EditMessage(mgs_id, sender_id, Intor, keyboardJson);
}
else
{
Serial.println("Get Message - " + msg);
Bot.sendMessage(sender_id, Intor, keyboardJson);
}
}
// The loop function is called in an endless loop
void loop()
{
//Add your repeated code here
Bot.GetUpdates();
delay(100);
}
سلام اسم ربات چیه؟
سلام دوست عزیز
این مطلب صزفا اموزش کار با کتابخانه ای است که برای ارتباط با تلگرام نوشتم
سلام و تشکر و از آموزش های خوبتون،
1- ببخشید باید از کجا ربات تلگرامی را بسازیم و به چه صورت؟
2- کتابخانه های مورد استفاده مثلا وای فای و اینا را چطوری باید بگیریم؟
3- اگر بخوایم برنامه روی خود بورد اردوینو اپلود کنیم، باید ماژول وای فای پایه های TX,RX رو بصورت ضربدری به بورد متصل کنیم؟
ممنون میشم اگر سوال ها رو به ترتیب و ذکر شماره هر سوال و هر چه کاملتر پاسخ بدید.
تشکر.
1. برای ساخت ربات تلگرامی لازمه که مقاله آموزش اتصال ربات تلگرام به آردوینو – قسمت اول را مطالعه کنید.
2. کتابخانه های مورد استفاده را از ریپوزیتوری آردوینو میتونید دانلود کنید ؛ البته به صورت پیش فرض با خود آردوینو نصب میشود و نیازی به دانلود مجدد آنها ندارد.
3. برای این مورد مقاله آموزش اتصال ربات تلگرام به آردوینو – قسمت دوم را مطالعه کنید.
خواهش میکنم دوست عزیز.
۱- متوجه نشدم چطوری باید کتابخانه های مورد نیاز این پروژه رو باید از کجا بدست بیارم.
۲- من برنامه رو اول وریفای میگرم ولی نمیدونم چرا ارور میگیره به بورد ام. ولی وقتی توی قسمت بورد منیجر، بورد رو بحای اردوینو اونو؛ ماژول ESP8266 (از قبل اینو به بورد ها توی ide اردوینو اضافه کردم) قرار میدم مشکلی نداره و اروره رفع میشه در این حالت. چکار باید کنم که مشکلی که گفتم حل بشه؟
1. خوب ظاهرا از آردوینو دارید استفاده میکنید – خوب شما نیازی به اضافه کردن کتابخونه خاصی ندارید
2. خوب دوست عزیز با توجه به این که این برنامه برای بورد esp نوشته شده شما باید برای این بورد کامپایلش کنید و امکان کامپایلش روی بورد های uno و nano نیست
چون رم زیادی رو مورد استفاده قرار داده.
خب پس چکار کنم که روی خود بورد اردوینو کامپایل بشه؟
میخوام I/O های بیشتری داشته باشم، چرا که خود ماژول چندتا خروجی بیشتر نداره و ماژول من کلا 2 تا پایه خروجی داره
چکار کنم برای مرتفع کردن این مشکل و اجرای این کار؟
آها ؛ به نکته خوبی اشاره کردید دوست عزیز
ببینید به دلیل محدودیت حافظه میکروی AVR امکان گذاشتن کتاخونه LWIP که استک شبکه است روی اون وجود نداره ؛ پس ایم راه حل نا شدنی است
اما راه حل شدنی چیه ؟ ؛ اول این که از ماژول های ESP12E استفاده کنید که فکر میکنم حدود 8 تایی IO داشته باشند ؛ اگر باز اون تعداد IO کم هست ؛ به سادگی میتونید با استفاده از آیسی 74H595 هر تعداد خروجی که دوست دارید بسازید 🙂
با سلام .
میخواستم بدونم الان که تلگرام فیلتر شده باز هم میشه از این روش برای اتصال به سرور تلگرام استفاده کرد یا نه ؟ ممنونم
امم با توجه به فیلترینگ تلگرام ؛ استفاده مستقیم ممکن نیست ولی اگر بتونید از پارکسی اسنفاده کنید احتمالا مشکلی پیش نمیآد
سلام و وقت بخیر
بنده این پروژه رو کامل انجام دادم و برنامه رو در محیط آردینو کپی کردم ولی موقع کامپایل کردن با این ارور مواجه شدم:
exit status 1
Error compiling for board Adafruit HUZZAH ESP8266.
برنامه ی دیگه ای رو از سایت دیگه در محیط آردینو کپی کردم که تونستم جلو تر برم و برنامه کامپایل شد و آی پی رو از برنامه دریافت کردم
ولی در مرحله بعد هیچ چیز از ربات تلگرام دریافت نمیکنم و نمیتونم جلوتر برم
لطفا راهنمایی کنید
ممنونم
خوب الان من درست متوجه نشدم که مشکل کجاست ، شما موفق شدید که از ویرایشگر سیسوگ استفاده کنید یا نه ؟
چه مشکلی موقع کامپایل براتون ایجاد شد ، خطایی که نوشتید میگه که فراییند کامپایل با خطا مواجه شده ، ولی این خطا چیه ؟
سلام
نوروز مبارک
سوالی داشتم
با توجه به فیلترینگ تلگرام راه حلی برای اتصال برد با تلگرام میشناسید؟
سلام
نوروز شما هم مبارک
در واقع به شکل مستقیم امکانش فراهم نیست ؛ ساده ترین و قابل پیاده سازی ترین راهش اینه که از http پراکسی استفاده کنید!
سلام، میشه در موردش بیشتر توضیح بدید ؟ یا اگر آموزشی دارید به اون لینک کنید
با تشکر
سلام
انشالله توی هفته آینده مقاله اش رو منتشر می کنیم 🙂
ممنون برای پیگیری شما
سلام.ممنوناز سایت خوبتون
امکانش هست با برد اردوینو و شیلد شبکه این کار رو انجام داد؟
اگه میشه یه اموزش براش بزارید چون من تخصص کافی توی اردوینو ندارم. ممنون
سلام و درود
در واقع امکانش هست ولی با تغییرات زیاد
از اونجایی که ESP مقدار رم زیادی داره ما از متد Post و با کمک کتابخانه Json این کار رو انجام دادیم که رم زیادی نیاز داره ولی متاسفانه برد آردوینو رم کمی داره و برای این کار مجبورید که از متد GET استفاده کنید و در ضمن پیاده سازی لایه های شبکه هم هست که خودش نیاز به رم داره – پس کار راحتی نیست
متاسفانه در حال حاضر زمان کافی در اختیار نداریم که بتونیم این پروژه رو تغییرش بدیم شاید در آینده
ولی اگر در مسیر پیاده سازی سوالی داشتید خوشحال می شیم بتونیم کمکی کنیم.
سلام
من نتونستم از این کتابخانه در sisoog IDE استفاده کنم
ارور مربوط به Json میداد
آیا اضافه کردن کتابخانه به این ویرایشگر روش خاصی دارد؟
روش خاصی که نداره ،، البته دقت داشته باشید که کل سورس رو دانلود کنید چون کتابخونه های مزوبطه به JSON رو کنار پروژه قرار دادم و با باز کردن صحیح سورس اونام به صورت خودکار به پروژه اضافه می شوند.
نگاه کنید برای من کلیدها را که زیاد کردم را نمایش میدهد ولی ماژول یکسره ریست میشود و این متن را برای من مینویسد
Wait for WiFi… …..
Connect to NetWork …. OK
WiFi connected
IP address:
192.168.1.51
Bot Information
first name: STM32_bot
last_name:
username: microstm32_bot
Get CallBack – Gtg
Soft WDT reset
ctx: cont
sp: 3fff1250 end: 3fff1800 offset: 01b0
>>>stack>>>
3fff1400: 00000000 3ffeab47 00000001 4010068c
3fff1410: 5c5c5c5c 5c5c5c5c 5c5c5c5c 00000000
3fff1420: 000028a3 3fff2ae4 00000000 401004d8
3fff1430: 00000000 3fff2ae4 3fff4dec 40107374
3fff1440: 8f11318f 36363636 36363636 40230c74
3fff1450: 3fff2ae4 00000000 3fffb8ac 00000000
3fff1460: bedecef4 0a0a0a0b 00000000 00000000
3fff1470: 00000000 3fff2ae4 00000000 40231000
3fff1480: 00000000 000006c5 00000001 3fff2d8c
3fff1490: 0000059c 00000000 00000000 3fffb8ac
3fff14a0: 0000059c 00000018 00000000 0000000a
3fff14b0: 3fff3451 3fff3451 3fff49a4 000006c5
3fff14c0: 000006c5 00000000 3fff2b9c 40205c1c
3fff14d0: 000006c5 2e51668d 3fff159c 00000000
3fff14e0: 00000000 3fff2cd4 000006c5 40221c28
3fff14f0: 06020317 00000091 3fff1590 402065b4
3fff1500: 00000691 00000017 00000010 40202726
3fff1510: 3fff2cd4 3ffea270 3fff1590 00000000
3fff1520: 3fff2cd4 3fffb204 00000691 40221caf
3fff1530: 00000691 3fff9fe0 3fff1590 3ffea4f4
3fff1540: 3fff2838 00000000 3fff1590 3ffea4f4
3fff1550: 3fff2838 3fff159c 3fff061c 40205804
3fff1560: 3fff2838 3fff159c 3fff061c 40206bc9
3fff1570: 3fff2838 3fff9fd8 3fff1590 40206095
3fff1580: 00000200 3fff159c 3fff061c 40203d4a
3fff1590: 3fff15b4 00000691 00000000 3fffb204
3fff15a0: 0000069f 00000691 3fff7c14 0000000f
3fff15b0: 00000000 3fff159c 3fff1610 402063d1
3fff15c0: 3fff1610 3fff161c 00000691 00000000
3fff15d0: 3fff15f0 3fff8ec0 3fff2838 3fff060c
3fff15e0: 3fff9fd0 00000000 3fff2838 402044a3
3fff15f0: 3ffe9a08 00000000 3fffa9f4 00001000
3fff1600: 3ffe9a08 3fff16ac 3fff9fc4 00000800
3fff1610: 3fff7b64 0000004f 00000040 40206350
3fff1620: 3fff902c 00000495 3fff7bbc 0000004f
3fff1630: 00000040 00000591 3fff1670 402063d1
3fff1640: 3fff1688 00000100 3fff1694 3fff1670
3fff1650: 3ffe95ec 3fff0608 3fff060c 3fff1708
3fff1660: 3ffe8e7c 3fff0608 3fff060c 402020bf
3fff1670: 3fff9904 0000049f 00000495 3fff96ec
3fff1680: 0000020f 00000207 3fff4dd4 0000000f
3fff1690: 00000009 3fff4dbc 0000000f 00000003
3fff16a0: 3fff902c 0000049f 00000495 3fff94d4
3fff16b0: 0000020f 00000207 3fff16f0 402063d1
3fff16c0: 3fff1714 00000001 3fff16f0 40206444
3fff16d0: 00000007 3fff48a0 40201e84 3ffe9764
3fff16e0: 3fff060c 3fff48a0 40201e84 40203a74
3fff16f0: 3fff4d94 0000001f 00000012 3fff2acc
3fff1700: 0000000f 00000003 3fff2ab4 0000000f
3fff1710: 00000009 3fff2a9c 0000000f 00000003
3fff1720: 3fff21ac 0000000f 00000003 3fff2194
3fff1730: 0000000f 00000009 3fff2c0c 0000000f
3fff1740: 00000003 3fff4974 0000001f 00000012
3fff1750: 00000000 3fff4870 3fff060c 3fff48a0
3fff1760: 00000000 3fff4870 3fff060c 402041bc
3fff1770: 3ffe9a08 00000000 3fff8aa4 00000800
3fff1780: 3ffe9a08 3ffea4f4 3fff5274 00000200
3fff1790: 3fff828c 000005ff 000005f2 3fff2a54
3fff17a0: 0000003f 0000003b 00000000 00000000
3fff17b0: 00000001 04f8f181 00000000 00000000
3fff17c0: 00000000 00000000 00000000 3fff07d4
3fff17d0: 3fffdad0 00000000 3fff07cc 4020231c
3fff17e0: 3fffdad0 00000000 3fff07cc 402067b0
3fff17f0: feefeffe feefeffe 3fff07e0 40100718
<<<stack<<<
ets Jan 8 2013,rst cause:2, boot mode:(3,7)
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v09f0c112
~ldÿ
این خطا مربوط به استک هست ، ببینید می تونید استک برنامه رو زیاد کنید
سلام دوست عزیزم من اینی برنامه را روی برد nodemcu بستم قشنگ جواب داد ولیکن من میخوام برنامه را بصورت سفارشی برای خودم تغییر بدم هر کار کردم نشد تعداد دمه ها را از 5 عدد بیشتر بگذارم چطور میتونم به هر تعدادی که لازم دارم دکمه قرار بدم؟
سلام و درود دوست عزیز
متشکر از حسن توجه شما ، خوب ما سعی کردیم که کتابخونه نوشته شده محدود به عدد خاصی نباشه و تنها محدودتی که وجود داره محدودیت رم و استک هست ؛ من فکر میکنم احتمالا استک برنامه پر شده باشه که اتفاق افتاده باشه