ESP8266 Telegram 机器人:轻松实现物联网远程控制
项目简介
本项目演示如何利用 ESP8266(ESP-01 模块)配合 Telegram Bot API,通过手机发送指令远程控制设备(如点亮/熄灭 LED)。这是一个极简的物联网入门项目,无需复杂服务器搭建,仅需一个 Telegram 账号和 BotFather 创建的 Bot Token 即可实现全球范围内的设备控制。
所需材料
- ESP8266 ESP-01 模块(或 NodeMCU、Wemos D1 Mini 等开发板)
- Arduino Uno(作为 USB 转串口下载器,也可用专用下载器)
- 杜邦线若干
- Android 手机(安装 Telegram)
软件准备
- Arduino IDE
- Telegram Bot 库(GitHub 下载,通过“草图 → 包含库 → 添加 .ZIP 库”安装)
- ESP8266WiFi、WiFiClientSecure 库(随 ESP8266 板包安装)
Telegram Bot 创建步骤
- 在 Telegram 中搜索 @BotFather 并开始对话
- 发送
/newbot,按提示设置机器人名称和用户名(必须以 bot 结尾) - BotFather 返回 API Token(形如
123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ),妥善保存 - 可选:发送
/setprivacy设为disabled以接收群组消息
硬件接线(ESP-01 + Arduino Uno 下载模式)
| ESP-01 引脚 | Arduino Uno 引脚 | 说明 |
|---|---|---|
| VCC | 3.3V | 务必使用 3.3V,5V 会损坏模块 |
| GND | GND | 共地 |
| TX | TX (D1) | ESP TX 接 Uno TX(同方向,Uno 作为直通) |
| RX | RX (D0) | ESP RX 接 Uno RX,建议分压至 3.3V |
| CH_PD (EN) | 3.3V | 使能引脚,上拉 |
| GPIO0 | GND | 下拉进入下载模式 |
| RST | RST | 可选,共用复位 |
注意:上传代码前必须将 GPIO0 接地;上传完成后断开 GPIO0 并复位模块进入运行模式。
核心代码
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <TelegramBot.h>
#define LED_PIN 1 // ESP-01 的 GPIO1 (TXD),仅作演示;建议用 GPIO2
const char* ssid = "你的WiFi名称";
const char* password = "你的WiFi密码";
const char BotToken[] = "你的Bot Token";
WiFiClientSecure net_ssl;
TelegramBot bot(BotToken, net_ssl);
void setup() {
Serial.begin(115200);
delay(3000);
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("\nWiFi connected");
bot.begin();
pinMode(LED_PIN, OUTPUT);
}
void loop() {
message msg = bot.getUpdates(); // 获取新消息
if (msg.text.equals("on")) {
digitalWrite(LED_PIN, HIGH);
bot.sendMessage(msg.chat_id, "LED 已开启");
} else if (msg.text.equals("off")) {
digitalWrite(LED_PIN, LOW);
bot.sendMessage(msg.chat_id, "LED 已关闭");
}
}
进阶玩法
- 控制继电器模块,实现家电开关
- 接入传感器(温湿度、光照、运动检测),主动上报数据
- 使用
bot.sendMessage()发送按钮键盘(ReplyKeyboardMarkup),提升交互体验 - 结合
ESP8266WebServer实现本地网页控制 + Telegram 双模式 - 使用深度睡眠模式降低功耗,做电池供电设备
常见问题
- 无法连接 WiFi:检查 SSID/密码,确保 2.4GHz 频段(ESP8266 不支持 5GHz)
- Telegram 收不到消息:确认 Token 正确,Bot 已启动,网络可访问 api.telegram.org(国内可能需代理)
- ESP-01 供电不稳:建议使用独立 3.3V 稳压源(如 AMS1117-3.3),Arduino 3.3V 引脚电流有限
制造工艺
- K30 CO₂ 传感器:室内空气质量实时监测
- 基于 1Sheeld 与 Arduino 的盲聋人士沟通辅助系统
- 智能存钱罐:Arduino Nano 控制硬币识别器实现余额显示
- Arduino + HC-05 蓝牙控制 LED:MIT App Inventor 手机 App 开发全攻略
- DFRobot 电容指纹传感器 (ID809) 接入 Arduino/ESP8266 完整教程
- 基于 Arduino Mega 与 Nextion 显示屏的交互式气象站
- Arduino Mega 驱动 Wii Nunchuk 控制 6 自由度机械臂
- Arduino UNO + 以太网盾板实现低成本太阳辐射测量仪(热电堆原理)
- 紧凑型Arduino雷达系统:HC-SR04超声波传感器配1.8英寸显示屏
- Arduino 合成乐音:从零实现 88 键钢琴全音域
- TinyML 咳嗽检测:Arduino Nano 33 BLE Sense 实现早期流感筛查
- 使用 Arduino UNO 和 SR04 超声波传感器构建超声波测距仪