『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 152|回复: 0

[硬件DIY] ESP8266 MODBUS TCP转RTU

[复制链接]

2

主题

15

帖子

62

积分

注册会员

Rank: 2

积分
62
金钱
47
HASS币
0
发表于 5 天前 | 显示全部楼层 |阅读模式
ESP8266 MODBUS TCP转RTU //本程序用来作为MODBUS TCP从站(TCP SERVER模式),最多连接4个客户端,收到MODBUS TCP
//数据后软串口转发出去,串口采用MODBUS RTU模式,9600 N81格式,D1发送,D2接收。
//LED联网时慢闪,配网时快闪。有客户端接入后偶尔闪一下,无客户端接入的话,长亮。

//8266采用STA+AP模式,电脑可以两种连接方式和8266通讯。
//1,电脑先连上8266的AP,然后电脑再作为客户端连接8266的SERVER进行通讯
//2,电脑和8266都连上路
————————————————

#include "main.h"
 
#define  VERSION   "V1.03"
 
void Led_On(void)                             //模块上二极管亮
{
   digitalWrite(Led, LOW);                    //高为关,低为开
   Led_State = true;
}
 
void Led_Off(void)                            //模块上二极管灭
{
   digitalWrite(Led, HIGH);                   //高为关,低为开
   Led_State = false;
}
 
bool autoConfig()                             //用之前的配网参数自动联网,联网时LED慢闪
{
  WiFi.mode(WIFI_STA);                        //STA模式
  WiFi.begin();
  for (int i = 0; i < 20; i++)                //20S还没连上网络的话返回错误
  {
    int wstatus = WiFi.status();              //读取网络状态
    if (wstatus == WL_CONNECTED)              //已经连上的话打印信息
    {
      Serial.println("AutoConfig Success");
      Serial.printf("SSID: %s\r\n", WiFi.SSID().c_str());
      Serial.printf("PSW:  %s\r\n", WiFi.psk().c_str());
      Serial.print("IP:   ");
      Serial.println(WiFi.localIP());         //得到IP地址
      return true;
    }
    else
    {
      Serial.print("AutoConfig Waiting......");
      Serial.println(wstatus);
      delay(1000);
      Led_Flag = !Led_Flag;
      digitalWrite(Led, Led_Flag);
    }
  }
  Serial.println("AutoConfig Faild!" );
  return false;
}
 
void smartConfig()                            //一键配网函数,这时LED快闪
{
  WiFi.mode(WIFI_STA);
  Serial.println("\r\nWaiting for Smartconfig");
  delay(2000);
  WiFi.beginSmartConfig();                    //等待配网
 
  while (1)                                   //死循环,直到配好网络
  {
    Serial.print(".");
    delay(400);
    Led_Flag = !Led_Flag;
    digitalWrite(Led, Led_Flag);
    if (WiFi.smartConfigDone())               //配网完成
    {
      Serial.println("SmartConfig Success");
      Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
      Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
      WiFi.setAutoConnect(true);              //设置自动连接
      break;
    }
  }
已经上次bin文件,使用esp826自带烧写软件烧写,使用安可信广播配网,

Modbustcp-rtU.D1RX.D2TX.zip

219.83 KB, 下载次数: 4

ESP8266固件

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2025-2-22 13:52 , Processed in 0.166682 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表