Telegram Üzerinden ESP8266 Kontrolü

Telegram Üzerinden ESP8266 Kontrolü

Bu kod, ESP8266 mikrodenetleyici ve Telegram Bot kullanarak uzaktan LED kontrolünü sağlar. Projenin amacı, Telegram üzerinden belirli komutlarla LED’i açmak, kapatmak ve durumunu sorgulamaktır.

Kod Açıklaması:

  1. Kütüphaneler: İlk olarak, gerekli kütüphaneler (ESP8266WiFi.h, WiFiClientSecure.h ve UniversalTelegramBot.h) projeye dahil edilir.
  2. Başlangıç Ayarları: WiFi ağına bağlanmak için gerekli SSID ve şifre tanımlanır. Ayrıca, Telegram Bot Token’ı da belirlenir.
  3. Pin Tanımlamaları: LED’in kontrol edileceği pin belirlenir.
  4. WiFi Bağlantısı: setup() fonksiyonunda, ESP8266 WiFi ağına bağlanılır. Bağlantı sağlandıktan sonra, NTP sunucusundan zaman bilgisi alınır.
  5. Ana Döngü (Loop):loop() fonksiyonu sürekli olarak çalışır. Telegram Bot üzerinden gelen mesajlar kontrol edilir ve bu mesajlara göre belirli işlemler gerçekleştirilir.
    • Telegram Bot’un getUpdates fonksiyonu ile gelen yeni mesajlar alınır.
    • Gelen mesajlar incelenir ve belirli komutlara göre LED kontrol edilir veya durumu sorgulanır.
    • Gelen komutlara göre belirli mesajlar oluşturularak, kullanıcıya geri dönüş sağlanır.

Projenin Geliştirilmesi:

  • Farklı Fonksiyonlar: LED kontrolünün yanı sıra, projeye farklı işlevler eklenerek işlevsellik genişletilebilir. Örneğin, sensörlerin okunması veya diğer cihazların kontrolü gibi.
  • Gelişmiş Geri Bildirim: Kullanıcıya daha detaylı geri bildirim sağlamak için kod geliştirilebilir. Örneğin, LED’in açılması veya kapanması durumunda kullanıcıya bildirimler göndermek gibi.

Bu şekilde, ESP8266 mikrodenetleyici ve Telegram Bot kullanarak basit bir uzaktan LED kontrol sistemi oluşturulur. Projeyi çeşitli uygulamalarda kullanmak için esnek bir temel sağlar ve daha karmaşık sistemlerin geliştirilmesine olanak tanır.

Örnek Bağlantı Şeması

#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>

String mesaj;
unsigned long oncekizaman,simdikizaman; 
#define led  D5 

#define WIFI_SSID "XXXXXXXXX"
#define WIFI_PASSWORD "XXXXXXXX"
#define BOT_TOKEN "XXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

X509List cert(TELEGRAM_CERTIFICATE_ROOT);
WiFiClientSecure secured_client;
UniversalTelegramBot bot(BOT_TOKEN, secured_client);

void setup() {
  Serial.begin(115200);
  pinMode(led, OUTPUT);
  configTime(0, 0, "pool.ntp.org");       
  secured_client.setTrustAnchors(&cert); 
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.println(WiFi.localIP());
    while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi AGINA BAGLANILDI");
  Serial.print("IP ADRESI : ");
  Serial.println(WiFi.localIP());
}

void loop() {
 simdikizaman=millis();
  if (simdikizaman - oncekizaman > 1000) {
    int yeniMesajSayisi = bot.getUpdates(bot.last_message_received + 1);

    while (yeniMesajSayisi) {
      Serial.println("istek Geldi");
      handleNewMessages(yeniMesajSayisi);
      yeniMesajSayisi = bot.getUpdates(bot.last_message_received + 1);
    }

    oncekizaman = simdikizaman;
  }
}

void handleNewMessages(int yeniMesajSayisi) {
  for (int i = 0; i < yeniMesajSayisi; i++) {
    String chat_id = bot.messages[i].chat_id;
    String text = bot.messages[i].text;
    String from_name = bot.messages[i].from_name;

    if (text == "/start") {
      mesaj = "ESP8266 TelegramBot'a Hoş Geldiniz "+from_name+"\n";
      bot.sendMessage(chat_id, mesaj, "");
    }
    if (text == "Ledi ac") {
      mesaj = "Tamam, Led Açıldı....";
      digitalWrite(led, HIGH);
      bot.sendMessage(chat_id, mesaj, "");
    }
    if (text == "Ledi kapat") {
      mesaj = "Tamam, Led Kapandı.... ";
      digitalWrite(led, LOW);
      bot.sendMessage(chat_id, mesaj, "");
    }
    if (text == "Led durumu") {
      if (digitalRead(led)==LOW) 
      mesaj = "Led Durumu : Kapalı";
      if (digitalRead(led)==HIGH) 
      mesaj = "Led Durumu : Açık";
      bot.sendMessage(chat_id, mesaj, "");
    }
  }
}
Yorumlar kapalı.

nurullahozkan@outlook.com.tr