ESP8266 텔레그램 봇 만들기: IoT 제어의 쉬운 시작
부품 및 소모품
| 부품 |
수량 |
비고 |
| Espressif ESP8266 ESP-01 |
1 |
|
| 아두이노 우노 |
1 |
ESP-01 프로그래밍 및 전원 공급용 |
| 점퍼 와이어 (일반) |
7 |
|
| 안드로이드 기기 |
1 |
텔레그램 앱 설치용 |
앱 및 온라인 서비스
- 텔레그램 봇 API (BotFather로 봇 생성 및 토큰 발급)
- 아두이노 IDE
프로젝트 소개
텔레그램 봇 API와 ESP8266을 이용해 IoT 기기를 원격 제어하는 방법을 보여주는 입문 프로젝트입니다. 스마트폰이나 PC에서 텔레그램 메시지를 보내 ESP8266에 연결된 LED를 켜고 끌 수 있습니다.
1. 텔레그램 봇 라이브러리 설치
GitHub에서 라이브러리 다운로드 후 아두이노 IDE에 스케치 > 라이브러리 포함 > .ZIP 라이브러리 추가로 설치하세요.
2. 텔레그램 봇 설정
- 텔레그램 앱에서 @BotFather 검색 후 대화 시작
/newbot 명령으로 새 봇 생성
- 봇 이름과 사용자명 설정 후 발급받은 API 토큰 복사

3. 하드웨어 연결
ESP-01을 아두이노 우노에 연결하여 프로그래밍 모드로 진입:
- ESP-01 VCC → 3.3V (아두이노 3.3V 핀 또는 별도 레귤레이터)
- ESP-01 GND → GND
- ESP-01 TX → 아두이노 TX (핀 1)
- ESP-01 RX → 아두이노 RX (핀 0) — 전압 분할기 필요 (5V → 3.3V)
- ESP-01 GPIO0 → GND (플래시 모드)
- ESP-01 RST → 아두이노 RST
- 아두이노 우노의 ATmega328P 칩 분리 또는 리셋 핀을 GND에 연결하여 USB-시리얼 변환기로 사용

4. 코드 업로드
#include
#include
#include
#define LED 1 // ESP-01의 GPIO1 (TX 핀) 또는 다른 GPIO 사용 시 수정
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
const char BotToken[] = "YOUR_BOT_TOKEN";
WiFiClientSecure net_ssl;
TelegramBot bot(BotToken, net_ssl);
void setup() {
Serial.begin(115200);
while (!Serial) {}
delay(3000);
Serial.print("Connecting Wifi: ");
Serial.println(ssid);
while (WiFi.begin(ssid, password) != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("");
Serial.println("WiFi connected");
bot.begin();
pinMode(LED, OUTPUT);
}
void loop() {
message m = bot.getUpdates(); // 새 메시지 읽기
if (m.text.equals("on")) {
digitalWrite(LED, HIGH);
bot.sendMessage(m.chat_id, "The Led is now ON");
} else if (m.text.equals("off")) {
digitalWrite(LED, LOW);
bot.sendMessage(m.chat_id, "The Led is now OFF");
}
}
자신의 와이파이 SSID, 비밀번호, 봇 토큰을 입력 후 업로드하세요. 업로드 후 ESP-01의 GPIO0을 GND에서 떼고 리셋하면 정상 동작합니다.
5. 테스트
텔레그램에서 봇에게 on 또는 off 메시지를 보내면 LED가 제어되고 응답 메시지가 옵니다.
회로도

참고 사항
- ESP-01은 3.3V 전용입니다. 5V 직접 연결 시 손상될 수 있습니다.
- 아두이노 우노를 USB-시리얼 변환기로 쓸 때, 메인 칩(ATmega328P)이 버스에 개입하지 않게 해야 합니다.
- 라이브러리: TelegramBot 라이브러리