top of page
Search
Writer's pictureerintafifah

Tutorial Mengontrol LED ESP32 menggunakan Telegram (Control LED Build for ESP32 in Telegram)


KMTek_esp32
Gambar 1.1 ESP32

Hai teman-teman… Buat kalian yang ingin belajar membuat projek sederhana menggunakan arduino IDE, tetapi masih bingung dan takut kesusahan dalam membuat projek tersebut, kali ini kita akan membuatkan tutorial untuk projek sederhana yang mudah dipahami dan mudah untuk diikuti.

Tutorial ini menunjukan cara mengotrol LED ESP32 menggunakan telegram atau dengan istilah kerennya adalah Control LED Build for ESP32 in Telegram. Cara kerjanya sendiri mudah yaitu kalian hanya mengirimkan pesan melalui telegram yang akan dibaca dan dijalankan oleh ESP32 yang sudah diinputkan program.


Sekilas Tentang Projek Control LED Build for ESP32 in Telegram

Projek sederhana ini akan mengontrol GPI0 NodeMCU ESP32, ESP8266, Wemos, atau Mappi32 by KMTek, dll menggunakan telegram. Projek ini bisa di terapakan pada otomasi rumah dengan metode IoT (Internet of Things). Perlu diingat, pin LED keluaran atau output untuk masing-masing NodeMCU berbeda-beda, seperti pin LED untuk ESP32, ESP8266, Wemos adalah pin 2, untuk Mappi32 by KMTek adalah pin 5. Pin tersebut digunakan untuk membuat coding sebagai output LED-nya.


Alat dan Bahan yang Digunakan

1. Ponsel atau PC.

2. Software arduino IDE.

3. Software telegram.

4. NodeMCU ESP32, ESP8266, Wemoss, atau Mappi32 (option/pilih salah satu).

5. Kabel data.


Tentang Telegram


KMTek_Telegram tutorial
Gambar 1.2 Telegram

Sumber : macrumors.com


Telegram adalah aplikasi layanan pengirim pesan instan yang bersifat gratis, voice over IP dan multiplatform berbasis cloud. Telegram sendiri memungkinkan teman-teman mengirim teks, file, foto, video dan lainnya. Telegram dapat digunakan pada ponsel ataupun PC. Telegram memungkinkan untuk membuat bot yang dapat berinteraksi dengan diri sendiri. Bot telegram adalah perangkat lunak yang menjalakan tugas secara otomatis dengan satu perintah.


Membuat Bot Telegram

Dalam hal ini, membuat bot telegram tidaklah sulit, teman-teman hanya perlu ikuti Langkah-langkah berikut.

1. Buka play store, app store, atau google di ponsel atau PC > cari aplikasi telegram > unduh dan install.


2. Buka aplikasi telegram > buat akun (jika belum punya akun).

3. Search atau cari di kolom pencarian dengan kata “botfather” nanti akan muncul seperti berikut.



4. Jendela botfather akan tampil seperti di gambar kemudian ketikan ”/start” > ketikan “/newbot”.




5. Ikuti instruksi dan buat nama bot yang akan dibuat.

6. Jika bot sudah berhasil dibuat akan ada pesan seperti berikut


7. Simpan token atau API yang diberikan botfather karena akan dibutuhkan pada saat memprogram projek yang akan dibuat agar telegram dapat berinteraksi dengan NodeMCU.



8. Bot telegram selesai dibuat.


Cara mendapatkan ID pengguna telegram

ID telegram digunakan untuk interaksi antara telegram dengan NodeMCU nanti pada saat projek dijalakan. Cara mendapatkan ID pengguna adalah sebagai berikut.

1. Open telegram.

2. Cari pada kolom pencarian yaitu “ IDBot” seperti pada gambar.



3. Ketikan “ /getid” maka akan keluar ID pengguna telegram teman-teman semua.



4. Simpan ID tersebut karena akan digunakan nanti untuk membuat program.


Software Arduino IDE

Langkah pertama yang harus dilakukan adalah membuka software arduino IDE kemudian menginstall perpustakan atau library yang diperlukan.


Menginstall Library bot telegram universal

Untuk bisa berinteraksi dengan bot telegram, kita akan menginstall library bot telegram universal yang dibuat oleh Brian Lough. Teman-teman bisa ikuti Langkah-langkah berikut.

2. Open software arduino IDE > buka sketch > include library > tambahkan zip pustaka.



3. Tambahakan zip yang baru saja diunduh > selesai.


Menginstall Library ArduinoJson

1. Open sketch > include library > manage library.



2. Search “arduinoJson” > lalu install.



3. Selesai install.


Memprogram Sketch Menggunakan Telegram

Disini kita akan memberikan contoh coding untuk memprogram projek yang teman-teman buat. Jadi, teman-teman tinggal mengganti nama wifi atau ssid, password wifi, token API dari telegram, dan kode ID telegram. Jika teman-teman ingin berkreasi juga bisa yaa…

Bisa teman-teman copy paste yaa untuk coding dibawah ini.


/*
  Rui Santos
  Complete project details at https://RandomNerdTutorials.com/telegram-control-esp32-esp8266-nodemcu-outputs/
  
  Project created using Brian Lough's Universal Telegram Bot Library: https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot 

  Example based on the Universal Arduino Telegram Bot Library: https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot/blob/master/examples/ESP8266/FlashLED/FlashLED.ino 

*/

#ifdef ESP32
  #include <WiFi.h>
#else
  #include <ESP8266WiFi.h>
#endif
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>   // Universal Telegram Bot Library written by Brian Lough: https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot
#include <ArduinoJson.h>

// Replace with your network credentials
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

// Initialize Telegram BOT
#define BOTtoken "XXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"  // your Bot Token (Get from Botfather)

// Use @myidbot to find out the chat ID of an individual or a group
// Also note that you need to click "start" on a bot before it can
// message you
#define CHAT_ID "XXXXXXXXXX"

#ifdef ESP8266
  X509List cert(TELEGRAM_CERTIFICATE_ROOT);
#endif

WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);

// Checks for new messages every 1 second.
int botRequestDelay = 1000;
unsigned long lastTimeBotRan;

const int ledPin = 2;
bool ledState = LOW;

// Handle what happens when you receive new messages
void handleNewMessages(int numNewMessages) {
 Serial.println("handleNewMessages");
  Serial.println(String(numNewMessages));

  for (int i=0; i<numNewMessages; i++) {
    // Chat id of the requester
    String chat_id = String(bot.messages[i].chat_id);
    if (chat_id != CHAT_ID){
      bot.sendMessage(chat_id, "Unauthorized user", "");
      continue;
    }
    
    // Print the received message
    String text = bot.messages[i].text;
    Serial.println(text);

    String from_name = bot.messages[i].from_name;

    if (text == "/start") {
      String welcome = "Welcome, " + from_name + ".\n";
      welcome += "Use the following commands to control your outputs.\n\n";
      welcome += "/led_on to turn GPIO ON \n";
      welcome += "/led_off to turn GPIO OFF \n";
      welcome += "/state to request current GPIO state \n";
      bot.sendMessage(chat_id, welcome, "");
    }

    if (text == "/led_on") {
      bot.sendMessage(chat_id, "LED state set to ON", "");
      ledState = HIGH;
      digitalWrite(ledPin, ledState);
    }
    
    if (text == "/led_off") {
      bot.sendMessage(chat_id, "LED state set to OFF", "");
      ledState = LOW;
      digitalWrite(ledPin, ledState);
    }
    
    if (text == "/state") {
      if (digitalRead(ledPin)){
        bot.sendMessage(chat_id, "LED is ON", "");
      }
      else{
        bot.sendMessage(chat_id, "LED is OFF", "");
      }
    }
  }
}

void setup() {
  Serial.begin(115200);

  #ifdef ESP8266
    configTime(0, 0, "pool.ntp.org");      // get UTC time via NTP
    client.setTrustAnchors(&cert); // Add root certificate for api.telegram.org
  #endif

  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, ledState);
  
  // Connect to Wi-Fi
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  #ifdef ESP32
    client.setCACert(TELEGRAM_CERTIFICATE_ROOT); // Add root certificate for api.telegram.org
  #endif
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi..");
  }
  // Print ESP32 Local IP Address
  Serial.println(WiFi.localIP());
}

void loop() {
  if (millis() > lastTimeBotRan + botRequestDelay)  {
    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);
    }
    lastTimeBotRan = millis();
  }
}


Setelah kalian uploud ke NodeMCU ESP32 ataupun yang lain, teman teman bisa langsung cek pada telegram masing – masing dengan ketikan ”/led_on” atau “/led_off”. Jika kita kirim pesan “/led_on” dan LED pada ESP32 menyala berarti projek yang kita buat sudah selesai.

Bagaimana teman-teman? Mudah bukan? Selamat mencoba.



Don't give up, if it's your first attempt. And don't give up if it's your last resort. Keep spirit! you can do it!!



Referensi :


PT. Karya Merapi Teknologi


Follow sosial media kami dan ambil bagian dalam berkarya untuk negeri!







6,654 views0 comments

Recent Posts

See All

Commentaires


bottom of page