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

要通过 ​​Unity3D​​ 开发的手机 App 控制 ​​电气柜上面的柱灯,需要WIFI模块作为桥梁,按照以下步骤实现:


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

​所需材料​

  • ​ESP32开发板​​(如ESP32-WROOM-32)
  • ENC28J60模块
  • 西门子1511-T
  • 柱灯(电气柜)
  • ​杜邦线​,网线
  • ​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.mzph.cn/diannao/81131.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

五款提效工具

1. 亿可达 核心功能&#xff1a;通过“触发器动作”模式&#xff0c;实现任务自动执行&#xff08;如邮件转发、评论回复、数据同步&#xff09;。 适用场景&#xff1a;自动同步Notion项目到滴答清单生成待办事项 优势&#xff1a;节省重复操作时间&#xff0c;减少人为错误&a…

Docker化HBase排错实录:从Master hflush启动失败到Snappy算法未支持解决

前言 在容器化时代&#xff0c;使用 Docker 部署像 HBase 这样复杂的分布式系统也比较方便。社区也提供了许多方便的 HBase Docker 镜像&#xff0c;没有找到官方的 apache的&#xff0c;但有包含许多大数据工具的 harisekhon/hbase 或用于学习目的的 bigdatauniversity/hbase…

windows远程服务器数据库的搭建和远程访问(Mysql忘记密码通过Navicat连接记录解密密码)

服务器数据库的搭建和远程访问 mysql数据库安装&#xff08;详细&#xff09; window安装mysql详细流程 路程&#xff1a;重设MySQL5密码&#xff0c;发现远程服务器原本有一个MySQL5&#xff0c;尝试在服务器本地建立连接被拒绝&#xff0c;因为不知道密码。 &#xff08;1…

每日c/c++题 备战蓝桥杯(P1093 [NOIP 2007 普及组] 奖学金)

洛谷P1093 [NOIP 2007 普及组] 奖学金 详解题解 题目背景与要求 题目链接&#xff1a;P1093 奖学金 核心任务&#xff1a;根据学生三科总分评选前5名奖学金获得者&#xff0c;需按特定规则排序输出。 排序规则&#xff08;按优先级从高到低&#xff09;&#xff1a; 总分降…

openEuler 22.03 安装 Nginx,支持离线安装

目录 一、环境检查1.1 必要环境检查1.2 在线安装&#xff08;有网络&#xff09;1.3 离线安装&#xff08;无网络&#xff09; 二、下载Nginx2.1 在线下载2.2 离线下载 三、安装Nginx四、开机自启服务五、开放防火墙端口六、常用命令 一、环境检查 1.1 必要环境检查 # 查看 g…

基于深度学习的图像压缩技术(二)

接上篇&#xff1a;基于深度学习的图像压缩技术&#xff08;一&#xff09;-CSDN博客 3 基于生成对抗神经网络的图像压缩技术 生成对抗网络是一种先进的无监督学习算法&#xff0c;由Goodfellow等人在2014 年首次提出&#xff0c;其核心思想源于博弈论。 生成对抗网络在图像压…

TCP和UDP的数据传输+区别

目录 一、数据传输过程 1.1 TCP字节流服务图 1.2 UDP数据报服务图 二、tcp与udp的区别 1.连接方式 2.可靠性 3.传输效率 4.有序性 5.流量控制和拥塞控制 6.应用场景 7.首部长度 三、tcp与udp能不能使用同一个端口号&#xff1f; 四、同一个协议&#xf…

基于ssm的校园旧书交易交换平台(源码+文档)

项目简介 校园旧书交易交换平台的主要使用者分为&#xff1a; 前台功能&#xff1a;用户进入系统可以对首页、书籍信息、校园公告、个人中心、后台管理等功能进行操作&#xff1b; 后台主要是管理员&#xff0c;管理员功能包括主页、个人中心、学生管理、发布人管理、书籍分类…

虚假安全补丁攻击WooCommerce管理员以劫持网站

一场大规模钓鱼攻击正针对WooCommerce用户&#xff0c;通过伪造安全警报诱使他们下载所谓的"关键补丁"&#xff0c;实则为植入WordPress后门的恶意程序。 恶意插件植入 根据Patchstack研究人员发现&#xff0c;上当受骗的用户在下载更新时&#xff0c;实际上安装的…

《冰雪传奇点卡版》:第二大陆介绍!

一、第二大陆&#xff1a;高阶资源与实力验证的核心战场 1. 准入条件与地图分布 进入门槛&#xff1a; 基础要求&#xff1a;角色需达到四转&#xff08;需消耗50万元宝完成转生任务&#xff09;&#xff0c;部分地图需额外满足神魔点数&#xff08;如黑暗之森需神魔全2&#…

信创系统图形界面开发指南:技术选择与实践详解

信创系统图形界面开发指南&#xff1a;技术选择与实践详解 &#x1f9d1; 博主简介&#xff1a;CSDN博客专家、CSDN平台优质创作者&#xff0c;高级开发工程师&#xff0c;数学专业&#xff0c;10年以上C/C, C#, Java等多种编程语言开发经验&#xff0c;拥有高级工程师证书&…

【人脸去遮挡前沿】三阶段级联引导学习如何突破真实场景遮挡难题?

一、现实痛点:当人脸被遮挡,AI “认脸” 有多难? 你是否遇到过这样的场景? 中考体育测试:2025 年天津泰达街中考考场要求考生 “脸部无遮挡” 才能通过人脸识别入场,戴口罩、帽子的学生需现场调整发型。智能门锁:奇景光电在 CES 2025 推出的 WiseEye 掌静脉模块,通过掌…

c++线程的创建

c 11 线程编程实战 目录 c 11 线程编程实战1&#xff0c;线程的创建1.1 传入无参函数1.2 传入有参函数1.3 传入类内部函数1.4 lambda表达式 1&#xff0c;线程的创建 1.1 传入无参函数 //传入函数&#xff0c;创建线程 void ThreadMain() {//获取线程IDstd::thread::id thi…

人工智能数学基础(六):数理统计

数理统计是人工智能中数据处理和分析的核心工具&#xff0c;它通过收集、分析数据来推断总体特征和规律。本文将系统介绍数理统计的基本概念和方法&#xff0c;并结合 Python 实例&#xff0c;帮助读者更好地理解和应用这些知识。资源绑定附上完整资源供读者参考学习&#xff0…

解决STM32待机模式无法下载程序问题的深度探讨

在现代嵌入式系统开发中&#xff0c;STM32系列微控制器因其高性能、低功耗和丰富的外设资源而广受欢迎。然而&#xff0c;开发者在使用STM32时可能会遇到一个问题&#xff1a;当微控制器进入待机模式后&#xff0c;无法通过调试接口&#xff08;如SWD或JTAG&#xff09;下载程序…

C#扩展方法与Lambda表达式基本用法

C# 扩展方法与 Lambda 表达式详解 一、扩展方法详解 1. 基本概念 ​​扩展方法​​允许为现有类型"添加"方法&#xff0c;而无需修改原始类型或创建派生类型。 ​​定义条件​​&#xff1a; 必须在静态类中定义方法本身必须是静态的第一个参数使用this修饰符指…

C#规避内存泄漏的编码方法

C#规避内存泄漏的编码方法 内存泄漏是C#开发中常见的问题&#xff0c;尽管.NET有垃圾回收机制(GC)&#xff0c;但不当的编码实践仍可能导致内存无法被及时回收。以下是系统性的规避内存泄漏的方法&#xff1a; 一、理解内存泄漏的常见原因 ​​未释放的事件订阅​​​​静态…

React 后台管理系统

这是一个基于 React TypeScript Ant Design 开发的向明天系统前端项目。 git仓库地址 技术栈 React 19TypeScriptAnt Design 5.xRedux ToolkitReact RouterAxiosLess 环境要求 Node.js (推荐使用最新LTS版本)npm 或 yarn 安装步骤 克隆项目到本地 git clone [https://…

第九节:文件操作

理论知识 文件的基本概念&#xff1a;文件是存储数据的基本单位&#xff0c;在 Linux 系统中&#xff0c;一切皆文件。文件可以是文本文件、二进制文件、设备文件等。文件的创建&#xff1a;使用 touch 命令可以创建一个新的空文件。如果文件已经存在&#xff0c;则更新文件的…

2025-03 机器人等级考试四级理论真题 4级

1 2025年蛇年春晚&#xff0c;节目《秧BOT》机器人舞蹈表演节目点燃了全国观众的热情&#xff0c;请问参加节目表演的机器人是由哪家公司研发&#xff1f;&#xff08; &#xff09; A.大疆 B.华为 C.优必选 D.宇树科技 【参考答…