当前位置: 首页 > backend >正文

综合开发-手机APP远程控制PLC1500柱灯的亮灭

要通过 ​​Unity3D​​ 开发的手机 App 控制 ​​ESP32​​ 的 WiFi 灯,可以按照以下步骤实现:


​1. 硬件准备(硬件部分)​

​所需材料​

  • ​ESP32开发板​​(如ESP32-WROOM-32)
  • ENC28J60模块
  • 西门子1511-T PLC
  • ​LED灯​​(ESP32自带)
  • 柱灯(电气柜)
  • ​杜邦线​
  • ​USB数据线​​(供电+烧录程序)

​ESP32 代码(Arduino IDE)​

#include <WiFi.h>
#include <WiFiClient.h>
#include <WebServer.h>
#include <UIPEthernet.h> const char* ssid = "abc";
const char* password = "123456abc";WebServer server(80);
bool ledState = false;// ENC28J60 配置
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 0, 177);  // ENC28J60 静态 IP
EthernetClient ethClient;const char* tcpServer = "192.168.0.150"; // 目标 TCP 服务器 IP
uint16_t tcpPort = 2000;                // 目标 TCP 端口void setup() {Serial.begin(115200);pinMode(2, OUTPUT);// 初始化 WiFiWiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}Serial.println("\nWiFi connected");Serial.println("IP address: ");Serial.println(WiFi.localIP());// 初始化 ENC28J60Serial.println("\nInitializing ENC28J60...");Ethernet.begin(mac, ip);Serial.print("ENC28J60 IP: ");Serial.println(Ethernet.localIP());// HTTP 服务器路由server.on("/", HTTP_GET, []() {server.send(200, "text/plain", "ESP32 LED Control");});server.on("/on", HTTP_GET, []() {digitalWrite(2, HIGH);ledState = true;sendTcpData("1");server.send(200, "text/plain", "LED ON");});server.on("/off", HTTP_GET, []() {digitalWrite(2, LOW);ledState = false;sendTcpData("0");server.send(200, "text/plain", "LED OFF");});server.begin();Serial.println("HTTP server started");
}void loop() {server.handleClient();Ethernet.maintain(); // 维持 ENC28J60 连接
}// 通过 ENC28J60 发送 TCP 数据
void sendTcpData(const char* data) {if (ethClient.connect(tcpServer, tcpPort)) {ethClient.println(data);Serial.print("Sent: ");Serial.println(data);ethClient.stop();} else {Serial.println("TCP connection failed");}
}

​烧录步骤​

  1. 用 ​​Arduino IDE​​ 或 ​​PlatformIO​​ 烧录代码到ESP32。
  2. 打开串口监视器(波特率115200),查看ESP32的IP地址(如 192.168.0.177)。

​2. Unity3D 手机App开发​

​Unity 设置​

  1. ​新建 Unity 项目​​(选择 ​​Mobile 2D/3D​​ 模板)。
  2. ​UI 设计​​:
    • 创建两个按钮:ON 和 OFF
    • 添加 Text 显示状态。

​C# 脚本(控制ESP32)​

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Networking;
using System.Collections;public class ESP32Controller : MonoBehaviour
{public string esp32IP = "192.168.121.190"; public Button onButton;public Button offButton;public Text statusText;void Start(){onButton.onClick.AddListener(TurnOnLED);offButton.onClick.AddListener(TurnOffLED);}void TurnOnLED(){StartCoroutine(SendRequest("http://" + esp32IP + "/on"));statusText.text = "LED ON";}void TurnOffLED(){StartCoroutine(SendRequest("http://" + esp32IP + "/off"));statusText.text = "LED OFF";}IEnumerator SendRequest(string url){using (UnityWebRequest request = UnityWebRequest.Get(url)){yield return request.SendWebRequest();if (request.result == UnityWebRequest.Result.Success){Debug.Log("Response: " + request.downloadHandler.text);}else{Debug.LogError("Error: " + request.error);}}}
}

​Unity 打包到手机​

  1. ​File → Build Settings → Android/iOS​​。
  2. 连接手机,选择 ​​Build & Run​​。

​3. 测试流程​

  1. 确保手机和ESP32连接同一WiFi​​。
  2. 在手机上运行Unity App,点击按钮控制LED
  3. 打开博图调用TCP功能块,根据信号实现柱灯状态切换。

 

http://www.xdnf.cn/news/3214.html

相关文章:

  • 嵌入式开发高频面试题全解析:从基础编程到内存操作核心知识点实战
  • 基于UNet算法的农业遥感图像语义分割——补充版
  • Mysql数据库高可用解决方案-Mysql Router
  • 智能参谋部系统架构和业务场景功能实现
  • MCP Server 的 Stdio 与 SSE:两种通信方式的本质差异与技术选型指南
  • leetcode42-接雨水
  • OCR身份证识别(正反面)_个人证照OCR识别_开放API接口使用指南
  • iVX:数字化转型全场景技术革新与生态构建实践
  • 大连理工大学选修课——机器学习笔记(6):决策树
  • JCRQ1河马算法+消融实验!HO-CNN-LSTM-Attention系列四模型多变量时序预测,作者:机器学习之心
  • Linux架构篇、第1章_01架构的介绍HTTP HTTPS 协议全面解析
  • 【Axure教程】增删改饼图
  • PostgreSQL 中 VACUUM FULL 对索引的影响
  • 【TUST“码蹄杯”编程之星】4.30 每日一题
  • 抓取工具Charles配置教程(mac电脑+ios手机)
  • 算法四 习题 1.3
  • Vue 项目中运行 `npm run dev` 时发生的过程
  • 代码随想录算法训练营Day39
  • 数据科学与计算
  • Ecology中拦截jquery.ajax请求接口后的数据
  • 【Linux更新openSSH服务】
  • GNU gettext 快速上手
  • 论文公式根据章节自动编号教程
  • DeepSeek-Prover-V2-671B 简介、下载、体验、微调、数据集:专为数学定理自动证明设计的超大垂直领域语言模型(在线体验地址)
  • 涨薪技术|0到1学会性能测试第42课-apache监控与调优
  • 应对过度处方挑战:为药物推荐任务微调大语言模型(Xiangnan He)
  • K8S - HPA + 探针实战 - 实现弹性扩缩与自愈
  • 详解 MyBatis-Plus 框架中 QueryWrapper 类
  • Compose笔记(二十一)--AnimationVisibility
  • 学习笔记——《Java面向对象程序设计》-常用实用类