ESP8266与STM32的APP远程开关

本文介绍了如何通过手机热点连接ESP8266,烧录MQTTAT固件,配置阿里云物联网平台,并实现ESP8266与STM32的串口通信以控制舵机,展示了上位机APP如何作为云产品流转中的控制器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 理解:手机开启热点,电脑和esp8266一起连接热点,电脑与云端一块,esp8266与下位机一块,那么手机的作用就有两个,一个是联系云端和下位机,另外一个就是作为人为操作端,给云端发送指令,再由云端发送到下位机从而控制下位机。
  2. 使用到的硬件:

ESP8266-01S、USB扩展器、ST-Link/V2、USB转TTL模块、STM32F103C8T6、sg90舵机。

  1. 烧录ESP8266固件

固件即固化的软件,在百度百科中,固件是担任着一个系统最基础最底层工作的软件,是指设备内部保存的设备“驱动程序”,通过固件,设备才能执行特定的操作。

而对于ESP8266,如果想要使用MQTT协议进行通信,就需要给ESP8266烧录AT固件。可以到安信可官网下载:欢迎 | 安信可科技

Wifi模组系列——esp8266系列——各类AT固件——选择MQTT透传AT固件,如下图

通过esp8266-01s的引脚说明,烧录固件时esp8266的引脚连接为:3.3V引脚连接电源,EN高电平使能,RX与转串口模块的TXD短接,TX与转串口模块的RXD连接,IO0置低电平,GND接地,具体连接以实际模块引脚为准,灵活处理。详细引脚图如下:

  1. 在安信可官网下载烧录WIFI固件工具:ESP_DOWNLOAD_TOOL用于烧录前面下载的AT固件。
  2. 在安信可下载串口调试助手,或者使用XCOM2.0或者其他串口助手,有什么现成的串口助手不用下载的,能用就行。
  3. 用前面下载好的烧录工具开始烧录,如下图:

先ERASE擦除,在start开始烧录,显示等待上电同步需要拔掉esp8266上面的VCC引脚线重新插上,手动上电。

  1. 烧录完成后EN和IO0引脚就没用了,去除掉,就进入了正常通信接线方式。现在是转串口模块直接连接esp8266.
  2. 配置阿里云产品,进入阿里云,物联网平台,公共实例,设备管理,产品,创建产品,自定义产品名称,选择自定义品类,直连设备,wifi连网,alink json数据格式,弱校验,设备密钥认证方式。
  3. 配置阿里云设备,在设备管理界面选择设备,设备所属产品选择前面自定义的产品,接着就可以自定义设备名称。这里的设备就是esp8266。
  4. 在串口助手发送AT若返回OK则固件烧录正常。接着需要发送AT指令,

AT+RST 复位

AT+CWMODE=1 设备选择STA模式      如果是2就是AP模式,STA模式是每一个连接到无线网络中的终端,AP模式是网络的中心节点,不是终端。

AT+CIPSNTPCFG=1,8,"ntp1.aliyun.com"  设备连接阿里云平台

AT+CWJAP="热点名称","热点密码"  设备连接热点,另外esp8266支持2.4Ghz频段,需要把热点设置到这个频段才能被esp8266找到

AT+MQTTUSERCFG=0,1,"NULL","username","password",0,0,""  填写设备信息中MQTT连接参数中的用户名和密码

AT+MQTTCLIENTID=0,"填写clientid"  MQTT参数中clienid在每个逗号前加分隔符

AT+MQTTCONN=0,"填写mqttHostUrl",1883,1 在mqtt参数中hosturl复制,每次打开mqtt参数都会发生改变,并且连上一次后再继续连就会发生错误

上述指令在串口助手中发送,全部发送ok后看阿里云上的设备在线就连接完成,在设备中创建topic,进行下面的信息传输指令。

AT+MQTTSUB=0,"/username/设备名称/user/get",1  订阅云上的信息,从设备的topic中获取

AT+MQTTPUB=0,"/username/设备名称/user/update","从设备发上云的信息",1,0

以上指令都是在串口助手中进行,当指令在串口助手中没有问题,就可以上网(野火、普中、正点原子)查找类似代码考虑进行修改,这里要下载的就是转串口的例程进行修改,用STM32模拟串口助手发送指令给ESP8266使其上云,另外串口助手和例程代码都记得改波特率为115200。

现在连接关系已经转移为stm32与esp8266的连接,接线为PA9与RX短接,PA10与TX短接,3.3V电源和GND分别短接。接好之后我们看不到STM32和esp8266之间实际传输情况,因此可以再根据需求让转串口模块的发送接收引脚分别和stm32和esp8266的发送或者接收引脚短接,实现对stm32和esp8266之间传输的监控。在用转串口模块进行监视的时候,可能会出现显示乱码的情况,可以使用面包板,绘制PCB或者其他飞线的方式分别尝试,找出没问题的引脚连接方式都可行。

指令转移到keil后在串口助手中监视常常会出现error,但只要云平台日志能看到正常工作就没有关系。

完成stm32与云平台的连接之后,就需要下载PWM控制舵机的例程,通过两个舵机在接收云平台不同指令的情况下转动不同的角度实现开关的操控。

以上就是该产品中对下位机设备的控制,下面添加上位机设备,上位机设备即APP。要用APP控制下位机,需要配置云产品流转。

云产品流转:

  1. 规则引擎,云产品流转

从上位机到下位机:

  1. 创建解析器,解析器名称up-to-down,(解析器实现上位机发送数据给下位机),创建数据源,数据源名称fromup,(数据来自上位机),关联数据源fromup,查看数据源,添加topic,填入产品名称,上位机设备名称,选择user/update。
  2. 数据目的,创建数据目的,数据目的名称,todown(发送数据给下位机),发布到另一个topic(实现流转,前面都是为这里准备的),选择填入本产品,关联数据目的todown。
  3. 解析器脚本

//通过 payload 函数,获取设备上报的消息内容,并按照 JSON 格式转换。

var data = payload("json");

//直接流转物模型上报数据。

writeIotTopic(ID,"/ProductKey/DeviceName/user/get",data)现在物联网平台的解析器脚本打开自动已经有这个例子代码,跟着修改就行,ID是数据目的ID,同为解析器ID。点击发布

从下位机到上位机

  1. 创建解析器,解析器名称down-to-up,(解析器实现下位机发送数据给上位机),创建数据源,数据源名称fromdown,(数据来自下位机),关联数据源fromdown,查看数据源,添加topic,填入产品名称,下位机设备名称,选择user/update。
  2. 数据目的,创建数据目的,数据目的名称,toup(发送数据给上位机),发布到另一个topic(实现流转,前面都是为这里准备的),选择填入本产品,关联数据目的toup。
  3. 解析器脚本

//通过 payload 函数,获取设备上报的消息内容,并按照 JSON 格式转换。

var data = payload("json");

//直接流转物模型上报数据。

writeIotTopic(ID,"/ProductKey/DeviceName/user/get",data)现在物联网平台的解析器脚本打开自动已经有这个例子代码,跟着修改就行,ID是数据目的ID,同为解析器ID。点击发布

这样就分别给上位机和下位机设备添加的数据来源,只要APP中填入三元组,即产品ID的productkey、设备名称devicename、设备密钥devicesecret就可以实现APP连接阿里云作为上位机,也就让手机成为了云产品流转中的上位机,通过上位机手机APP就可以直接发送指令给云平台上的下位机设备ESP8266,通过云端的esp8266连接实际的esp8266,因实际的esp8266与STM32已经实现了串口通信,就可以通过esp8266通过串口发送指令控制stm32,最终实现舵机的控制。

<think>好的,我现在需要帮用户规划上位机开发的学习路线。首先,我得明确什么是上位机。上位机通常指通过通信接口下位机(如PLC、单片机)交互的计算机系统,用于数据监控、处理和人机交互。用户可能是想进入工业自动化、物联网或测控系统领域,需要掌握相关的技能。 接下来,我得分解学习路径的关键部分。上位机开发涉及多个方面,包括编程语言、通信协议、数据库、框架和工具等。我需要考虑用户可能的基础,比如是否有编程经验,是否需要从基础开始讲起。假设用户是初学者,需要从最基础的开始。 首先,编程语言方面,C#和Python是上位机常用的语言。C#在工业领域应用广泛,尤其是Windows平台,而Python适合快速开发和处理数据。可能需要先推荐学习这两种语言的基础,再深入到实际应用。 然后是通信协议部分,常见的如串口通信(RS232/485)、Modbus、TCP/IP、MQTT等。上位机需要下位机进行数据交换,所以必须掌握这些协议的原理和实现方法。比如,Modbus协议在工业自动化中非常常见,用户需要学会如何使用C#或Python库来实现Modbus通信。 接下来是数据库,上位机通常需要存储和查询数据,所以需要学习数据库技术,比如SQLite、MySQL或SQL Server。可能需要教用户如何连接数据库,进行CRUD操作,以及数据分析和展示。 图形界面开发也是重要的一环,C#的WinForms和WPF,Python的Tkinter或PyQt都是常用的GUI框架。用户需要学会设计界面,绑定数据,处理用户输入等。 此外,可能还需要涉及多线程和异步编程,因为上位机需要同时处理通信、界面响应等任务,避免界面卡顿。这部分可能对新手来说有点难度,需要详细说明。 软件工程的知识也不可少,比如版本控制Git,单元测试,设计模式,这些能帮助用户写出更健壮和可维护的代码。用户可能需要了解基本的开发流程和工具。 行业相关的知识,比如工业自动化中的SCADA系统,物联网的数据采集,这些可能需要结合实际案例来讲解。用户需要理解上位机在不同场景下的应用。 最后,实践项目是关键。通过实际项目,比如温湿度监控系统、PLC数据采集系统,用户能巩固所学知识。推荐开源项目和社区资源,帮助用户持续学习和解决问题。 在整理这些内容时,要确保结构清晰,步骤明确,由浅入深。可能需要分阶段,每个阶段列出学习内容和目标。同时,提醒用户注意实际应用中的常见问题,比如通信稳定性、数据安全等。还要考虑用户可能遇到的问题,比如如何选择合适的通信协议,如何处理多线程中的同步问题,这些都需要在路线中给出指导。 总结一下,学习路线应该包括:编程基础→通信协议→数据库→GUI开发→多线程/异步→软件工程→行业知识→项目实战。每个部分给出具体的学习建议和资源推荐,帮助用户逐步掌握上位机开发的技能。</think>### 上位机开发学习路线(分阶段详解) --- #### **阶段1:编程语言基础** 上位机开发核心依赖编程能力,推荐优先掌握以下语言: 1. **C#(工业领域首选)** - 基础语法:变量、流程控制、类对象 - 关键库:`System.IO.Ports`(串口通信)、`System.Net.Sockets`(网络通信) - 学习资源:微软官方文档、《C#图解教程》 2. **Python(快速开发/数据分析)** - 基础语法:列表/字典、函数、文件操作 - 关键库:`pyserial`(串口)、`pymodbus`(Modbus协议) - 学习资源:廖雪峰Python教程、《Python编程:从入门到实践》 --- #### **阶段2:通信协议硬件交互** 掌握常见工业通信协议及实现方法: 1. **串口通信(RS232/485)** - 实现方式:C#通过`SerialPort`类;Python通过`pyserial`库 - 调试工具:串口调试助手、Putty 2. **Modbus协议(工业场景高频使用)** - 协议类型:RTU(二进制)、TCP(网络) - 代码示例(C#): ```csharp using Modbus.Device; ModbusSerialMaster master = ModbusSerialMaster.CreateRtu(serialPort); ushort[] registers = master.ReadHoldingRegisters(slaveAddress, startAddress, numRegisters); ``` 3. **网络通信(TCP/IP, MQTT)** - TCP:实现设备间稳定数据传输 - MQTT:物联网场景下的轻量级消息协议(推荐库:`MQTTnet` for C#,`paho-mqtt` for Python) --- #### **阶段3:数据存储处理** 1. **数据库技术** - SQL基础:建表、增删改查(CRUD) - 数据库选型: - SQLite(轻量级嵌入式,适合本地存储) - MySQL/SQL Server(服务端数据库,支持高并发) - ORM框架:C#的`Entity Framework`,Python的`SQLAlchemy` 2. **数据分析可视化** - 工具:Python的`Matplotlib`、`Pandas` - 场景:生成实时曲线、历史数据报表 --- #### **阶段4:图形界面开发(GUI)** 1. **C#方向** - WinForms:拖拽式开发,适合快速搭建界面 ```csharp // 示例:按钮点击事件 private void btnStart_Click(object sender, EventArgs e) { serialPort.Open(); } ``` - WPF:支持复杂动画数据绑定,学习XAML语法 2. **Python方向** - PyQt/PySide:功能强大的跨平台框架 - Tkinter:内置轻量级工具,适合简单需求 --- #### **阶段5:进阶技能** 1. **多线程异步编程** - 必要性:防止界面卡顿,提升通信效率 - C#实现:`async/await`、`Task`类 - Python实现:`threading`模块、`asyncio`库 2. **软件工程规范** - 版本控制:Git基础(提交、分支、合并冲突) - 单元测试:C#的`NUnit`、Python的`unittest` - 设计模式:单例模式、观察者模式(如实时数据更新场景) --- #### **阶段6:行业知识拓展** 1. **工业自动化标准** - 学习OPC UA协议(跨平台数据交互) - 了解SCADA系统架构(如WinCC、Ignition) 2. **物联网(IoT)集成** - 云平台对接:阿里云IoT、AWS IoT Core - 边缘计算:部署本地数据处理逻辑 --- #### **阶段7:实战项目** 1. **入门项目** - 温湿度监控系统:通过串口读取传感器数据,实时显示曲线 - PLC数据采集:用Modbus TCP读取PLC寄存器值并存储到数据库 2. **进阶项目** - 多设备协同控制系统:整合PLC、机器人、视觉传感器 - 远程运维平台:Web API + 上位机,实现异地设备状态监控 --- #### **工具资源推荐** - **开发工具**:Visual Studio(C#)、PyCharm(Python)、VSCode - **调试工具**:Modbus Poll(协议测试)、Wireshark(网络抓包) - **开源项目参考**: - GitHub搜索关键词:`SCADA`, `HMI`, `Industrial Automation` - 推荐库:`Sharp7`(C#S7协议通信)、`OpenPLC`(开源PLC仿真) --- 通过以上路线逐步深入,配合实际项目打磨技能,可系统掌握上位机开发能力。遇到具体技术难点时,建议结合官方文档+社区(Stack Overflow、优快云)针对性突破。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值