12C5A60S2单片机实现esp8266通过云服务器控制继电器

本文介绍了如何使用单片机12C5A60S2通过ESP8266模块,结合免费的MQTT在线服务器控制继电器。首先,利用USB转串口工具和串口助手对ESP8266进行配置,然后搭建MQTT服务器,并创建订阅以接收和发送信息。最后,将单片机与ESP8266连接,编写51单片机代码实现控制功能。
摘要由CSDN通过智能技术生成

第一次写文章,没有多少经验,有错误各路大神及时指正呦~

最近看了B站金善愚老师的《单片机原理及应用》真的是太棒了,小白的我都学会了靠ESP8266实现简单的物联网工程,在这个基础上可以实现很多的功能,本文用单片机上的小灯作演示,只要稍加改动就可以控制三极管,控制继电器等。

话不多说上案例

首先,要有一个USB转串口的工具,它长这个样,我这是六合一的多功能USB转TTL串口模块稍微复杂一点,但是功能非常强大。

其次,在电脑端借助串口助手完成对ESP8266芯片的调试,这一过程主要是为了熟悉使用的方法,理解工作原理,只要用串口助手调通了后面使用代码就方便多了。ESP8266模块选用的是“AT MQTT”固件,这款可以直接调用AT指令就可以,方便新手上路。服务器就使用免费的MQTT在线服务器(贴一个网址https://www.emqx.com/zh/mqtt/public-mqtt5-broker

说一下服务器的搭建:

1、需要借助一个网站(https://site.ip138.com/)将MQTT服务器信息的“Broker:”后边内容解析成IP地址。

2、点击“在线MQTT客户端”进入配置页面

 点击“+New connection”按钮创建新的服务器页面。

依次填入相关的信息。"Name "起一个自己的项目名称就行。"Client lD"这里需要注意一下他不能跟单片机的“Client lD”重名,这里选择默认就行。“username”与“Password”均使用“admin”或者使用自己的密码。其他地方均为默认就行,不用做改动。

然后点击右上角“Connect”按钮,进入服务器主页面。

 此时继续点击“+New Subscription”进入以下页面,配置相关信息后单片机就可以通过订阅订阅“服务器频道”接收服务器转发的信息,受篇幅的影响暂时不写单片机发送的信息,后续会继续补充。

 将“Topic”那一栏改为"esp8266_rxd"然后点击"Confirm”按钮。此时已经配置完成。由于能力原因本篇文章没有使用"JOSN"格式。大神可以根据自己的需要自己另行补充。

搭建好之后再说一下ESP8266的配置工作:

1、ESP8266模块与串口工具连接,一共四根线电源3v3与电源相连,end与end相连,rx与tx交叉相连

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以通过串口通信将STC12C5A60S2单片机ESP8266进行通信和控制。您可以将STC12C5A60S2作为主控制器,通过串口将指令发送给ESP8266实现ESP8266控制。 以下是一个简单的示例代码,其中使用串口1将指令发送给ESP8266控制连接WiFi并发送数据: ```c #include <STC12C5A60S2.H> #include <stdio.h> #define ESP8266_BAUDRATE 115200 #define UART1_BAUDRATE 9600 void initESP8266(void); void sendCmd(char* cmd); void sendData(char* data); unsigned char receiveByte(void); void main(void) { unsigned char ch; char* ssid = "your_SSID"; char* password = "your_password"; char* data = "Hello, ESP8266!"; // 初始化串口1 TMOD = 0x20; TH1 = 0xfd; TL1 = 0xfd; SCON = 0x50; TR1 = 1; // 初始化ESP8266 initESP8266(); // 连接WiFi sendCmd("AT+CWJAP=\""); sendData(ssid); sendCmd("\",\""); sendData(password); sendCmd("\"\r\n"); // 发送数据 sendCmd("AT+CIPSEND="); sendCmd(strlen(data)); sendCmd("\r\n"); sendData(data); // 等待数据发送完成 do { ch = receiveByte(); } while (ch != '>'); // 断开WiFi连接 sendCmd("AT+CWQAP\r\n"); while (1); } // 初始化ESP8266 void initESP8266(void) { unsigned char ch; // 设置ESP8266波特率 sendCmd("AT+UART_CUR="); sendCmd(ESP8266_BAUDRATE); sendCmd(",8,1,0,0\r\n"); // 等待ESP8266重启 do { ch = receiveByte(); } while (ch != 'K'); } // 发送AT指令 void sendCmd(char* cmd) { while (*cmd) { SBUF = *cmd++; while (!TI); TI = 0; } } // 发送数据 void sendData(char* data) { while (*data) { SBUF = *data++; while (!TI); TI = 0; } } // 接收一个字节 unsigned char receiveByte(void) { while (!RI); RI = 0; return SBUF; } ``` 需要注意的是,ESP8266的波特率默认是115200,而STC12C5A60S2的串口最大只支持9600,因此需要先将ESP8266的波特率设置为9600,以便与STC12C5A60S2进行通信。在示例代码中,通过AT+UART_CUR指令将ESP8266的波特率设置为9600。 此外,需要根据实际情况修改WiFi的SSID和密码,以及要发送的数据。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值