新闻中心

EEPW首页 > 手机与无线通信 > 设计应用 > 用手机通过互联网实现远程控制

用手机通过互联网实现远程控制

作者: 时间:2026-05-15 来源: 收藏

本文介绍一种通过安卓 ,借助设备(开关状态) 的方案。前提是 已接入无线路由器,实现全球任意地点访问远程设备。典型应用包括:花园洒水装置、空调开关、监控摄像头启停等。

方案中, 通过无线路由器接入,其一个输入 / 输出引脚(13 号引脚)经接口连接受控设备。本文以串联 210Ω 电阻的 LED 灯为例,将其接入 13 号引脚(见图 1),通过安卓控制 LED 亮灭。需注意:ESP32 为 3.3V 电平器件,信号为 3.3V 逻辑电平。

所需元器件

  1. ESP32 开发板:1 块(2.4GHz 双模 Wi-Fi + 蓝牙,双核,配 USB 线)

  2. LED 灯:1 个

  3. 210Ω 电阻:1 个

接线示意图

8b28ddbe-a9e7-4271-96a1-ff31f206b656.png

(图 1:电路接线图)

  • ESP32 的 GPIO13 引脚 → 串联 210Ω 电阻 → LED 正极

  • LED 负极 → GND(接地)

ESP32 说明

ESP32 采用 3.3V 逻辑电平。正常工作时,Vin 引脚可接入 5V~12V 稳压电源(优先选 5V,减少板载稳压器功耗);程序烧录时,需通过 USB 线连接电脑,严禁同时接入两种电源。简易供电方案:使用带 USB 接口的充电宝供电。

ESP32 开发环境搭建

  1. 用 USB 线将 ESP32 连接至电脑(Windows 系统),进入设备管理器→其他设备,找到 “CP2102 USB 转串口控制器”,右键选择 “更新驱动程序”,按提示完成安装;若自动更新失败,需手动下载驱动安装。安装后,设备管理器会显示 ESP32 对应的 COM 端口号,记录该端口。

  2. 打开 Arduino IDE,进入工具→开发板管理器,安装 “Espressif Systems 发布的 ESP32” 插件;

  3. 进入文件→首选项,在 “附加开发板管理器网址” 栏填入 ESP32 官方链接,完成环境配置。

ESP32 程序代码

本方案中,ESP32 作为服务器端,作为客户端连接;ESP32 工作在 STA 模式(站点模式),需配置静态 IP 地址。操作步骤:查询路由器下所有设备 IP,选取未占用 IP(修改最后一位)作为 ESP32 服务器 IP;端口号选择 32767~65535 之间的未占用端口。

连接 ESP32 至电脑,打开 Arduino IDE,选择对应 ESP32 开发板型号与 COM 端口,输入以下代码,编译并上传(上传失败时可按住开发板 BOOT 键重试;Arduino 程序文件需放在同名文件夹内):

cpp

运行

// ESP32工作在STA模式,配置静态IP,需设置端口转发#include <WiFi.h>#define EspPortServ xxxxx  // 填写自定义端口号// 替换为你的路由器Wi-Fi账号密码const char* ssid = ".........." ;const char* password = "........." ;WiFiServer server(EspPortServ);  // STA模式服务器WiFiClient client;// ESP32静态IP配置(四段用逗号分隔,非点号)IPAddress localIP(xxx, xxx, xxx, xxx);IPAddress gateway(xxx, xxx, xxx, xxx);IPAddress subnet(xxx, xxx, xxx, xxx);char ch;int LED = 13;  // LED接GPIO13void setup() {

 pinMode(LED, OUTPUT);
 Serial.begin(115200);

 // 配置静态IP
 if (!WiFi.config(localIP, gateway, subnet)) {
   Serial.println("STA模式静态IP配置失败");
 }

 // 连接Wi-Fi
 Serial.println("ESP32已设为服务器端!");
 Serial.print("正在连接Wi-Fi:");
 Serial.println(ssid);
 WiFi.begin(ssid, password);

 while (WiFi.status() != WL_CONNECTED) {
   delay(500);
   Serial.print(".");
 }

 // 输出服务器IP
 Serial.println("");
 Serial.println("Wi-Fi连接成功");
 Serial.print("服务器IP地址:");
 Serial.println(WiFi.localIP());
 server.begin();}void loop() {
 // 等待客户端连接
 client = server.available();
 if (client) {
   while (client.connected()) {
     if (client.available()) {
       ch = client.read();
       Serial.write(ch);  // 串口监视器打印数据

       // 指令处理
       switch (ch) {
         case '1':
           digitalWrite(LED, HIGH);
           client.print("ON");
           break;
         case '0':
           digitalWrite(LED, LOW);
           client.print("OFF");
           break;
       }
     }
   }
 }
 delay(500);}

安卓手机 APP 开发

采用MIT App Inventor 平台开发 APP,步骤如下:

  1. 注册谷歌账号,登录平台:https://login.appinventor.mit.edu/login

  2. 关闭欢迎界面,点击新建项目,命名为 “Remote_Control()”;

  3. 界面设计(左侧为组件面板、中间为预览区、右侧为组件列表与属性栏):

    • 标题设置:选中 “Screen1”,属性栏修改标题为 “”;

    • 布局 1:拖入水平布局(HorizontalArrangement),属性设为水平居中、垂直居中、高度 10%、宽度铺满;内部拖入两个按钮:ON 按钮(btn_on)、OFF 按钮(btn_off),中间用空白标签占位;

    • 布局 2:拖入水平布局,内部添加状态标签(lbl_status),初始文字为 “未连接”;

    • 布局 3:拖入水平布局,添加公网 IP 标签、IP 输入框(txt_public_ip)、端口标签、端口输入框(txt_serv_port);

    • 布局 4:拖入水平布局,添加保存按钮(btn_save)、关闭按钮(btn_close)、连接按钮(btn_connect);

    • 非可视组件:拖入本地数据库(TinyDB)、导入扩展组件ClientSocketAI2.aix(网络通信)、com.puravidaapps.TaifunTools.aix(屏幕常亮)。

代码逻辑编写(积木模式)

点击界面顶部Blocks(积木),通过拖拽组件积木实现逻辑:

  1. 全局变量定义:创建字符串变量public_ip(存储公网 IP)、数值变量serv_port(存储端口号);

  2. 初始化加载:APP 启动时,从 TinyDB 读取保存的 IP 与端口,填入对应输入框,并保持屏幕常亮;

  3. 保存功能:点击 “保存” 按钮,将输入框内的 IP 与端口存入 TinyDB;

  4. 连接功能:点击 “连接” 按钮,配置客户端 IP 与端口,发起网络连接;连接成功状态标签显示 “已连接”,失败显示 “未连接”;

  5. 控制功能:点击 “ON” 按钮发送指令 “1”,点击 “OFF” 按钮发送指令 “0”;

  6. 数据接收:接收 ESP32 返回的 “ON/OFF” 状态,更新状态标签;

  7. 关闭 APP:点击 “关闭” 按钮,退出应用。


安卓手机安装 APP

  1. 手机应用商店下载MIT AI2 Companion;

  2. 电脑端 App Inventor 界面,点击Build→安卓应用(.apk),编译生成二维码;

  3. 手机打开 MIT AI2 Companion,扫描二维码,按提示完成 APP 安装;

  4. 打开 APP,输入路由器公网 IP(浏览器访问whatismyip.com查询)、ESP32 端口号,点击 “保存”→“连接”,连接成功后即可控制 LED 亮灭。

路由器端口转发配置

公网 IP 为路由器 IP,需配置端口转发,将外网请求转发至 ESP32:

  1. 浏览器输入路由器管理地址(如 192.168.1.1),输入账号密码登录;

  2. 进入应用→高级 NAT→虚拟服务器→添加:自定义服务名,填写 ESP32 静态 IP,启用端口转发,外部端口与服务器端口均填 ESP32 端口号,协议选 TCP,保存设置;

  3. 开启DMZ 主机:填写 ESP32 静态 IP,保存生效。

测试与说明

  1. 给 ESP32 通电(充电宝即可),手机 APP 输入公网 IP 与端口,连接成功后,点击 ON/OFF 按钮,即可远程控制 LED;

  2. 注意事项:路由器重启后公网 IP 会变更,需重新查询填写;建议办理静态公网 IP避免频繁修改;需定期检测网络连接状态(本文为简化流程未添加);

  3. 安全提示:妥善保管公网 IP 与端口号,避免设备被非法访问。



评论


相关推荐

技术专区

关闭