php 连接 onenet,arduino一直连接不上onenet

哪位大神可以帮我看看,为啥一直连接不上onenet,我使用的是arduino编程,板子是ESPDUINO,这款芯片不大容易用AT指令开发

#include "edp.c"

#include

char * ssid="ShenzhenWatertek";

char * pass="20080808";

WiFiClient client; //connect to EDP server

#define SERVER  "jjfaedp.hedevice.com"           //EDP server

#define PORT    876

String   key = "IDP5ya9DA6Alu2OgMgqhgmmYTc4= ";

String   id = "514723118";

static boolean tcpConnected = false, edpConnected = false, wifiConnected = false;

/***************************************************************************************/

#define u8 unsigned char

//IO方向设置

#define DHT11_IO_IN()  pinMode(4, INPUT)

#define DHT11_IO_OUT() pinMode(4, OUTPUT)

IO操作函数

#define DHT11_DQ_OUT 4 //数据端口 4

#define DHT11_DQ_IN  4  //数据端口 4

unsigned long MS_TIMER = 0;

unsigned long lastMSTimer = 0;

String comdata = "";

char flag = false;

int flag1=0;

/*******************************DHT11协议****************************************/

u8 temperature;

u8 humidity;

u8 t = 0;

//复位DHT11

void DHT11_Rst(void)

{

DHT11_IO_OUT();   //SET OUTPUT

digitalWrite(DHT11_DQ_OUT, LOW);   //拉低DQ

delay(20);     //拉低至少18ms

digitalWrite(DHT11_DQ_OUT, HIGH);   //DQ=1

delayMicroseconds(30);       //主机拉高20~40us

}

//等待DHT11的回应

//返回1:未检测到DHT11的存在

//返回0:存在

u8 DHT11_Check(void)

{

u8 retry = 0;

DHT11_IO_IN();//SET INPUT

while (digitalRead(DHT11_DQ_IN) && retry < 100) //DHT11会拉低40~80us

{

retry++;

delayMicroseconds(1);

};

if (retry >= 100)return 1;

else retry = 0;

while (!digitalRead(DHT11_DQ_IN) && retry < 100) //DHT11拉低后会再次拉高40~80us

{

retry++;

delayMicroseconds(1);

};

if (retry >= 100)return 1;

return 0;

}

//从DHT11读取一个位

//返回值:1/0

u8 DHT11_Read_Bit(void)

{

u8 retry = 0;

while (digitalRead(DHT11_DQ_IN) && retry < 100) //等待变为低电平

{

retry++;

delayMicroseconds(1);

}

retry = 0;

while (!digitalRead(DHT11_DQ_IN) && retry < 100) //等待变高电平

{

retry++;

delayMicroseconds(1);

}

delayMicroseconds(40);//等待40us

if (digitalRead(DHT11_DQ_IN))return 1;

else return 0;

}

//从DHT11读取一个字节

//返回值:读到的数据

u8 DHT11_Read_Byte(void)

{

u8 i, dat;

dat = 0;

for (i = 0; i < 8; i++)

{

dat <<= 1;

dat |= DHT11_Read_Bit();

}

return dat;

}

//从DHT11读取一次数据

//temp:温度值(范围:0~50°)

//humi:湿度值(范围:20%~90%)

//返回值:0,正常;1,读取失败

u8 DHT11_Read_Data(u8 *temp, u8 *humi)

{

u8 buf[5];

u8 i;

DHT11_Rst();

if (DHT11_Check() == 0)

{

for (i = 0; i < 5; i++) //读取40位数据

{

buf[i] = DHT11_Read_Byte();

}

if ((buf[0] + buf[1] + buf[2] + buf[3]) == buf[4])

{

*humi = buf[0];

*temp = buf[2];

}

} else return 1;

return 0;

}

//初始化DHT11的IO口 DQ 同时检测DHT11的存在

//返回1:不存在

//返回0:存在

u8 DHT11_Init(void)

{

pinMode(4, OUTPUT);

DHT11_Rst();

return DHT11_Check();

}

/******************************************************************************/

void setup()

{

pinMode(16, OUTPUT); // Initialize the BUILTIN_LED1 pin as an output

Serial.begin(9600);

delay(10);

if (DHT11_Init()) //DHT11初始化

{

Serial.println("DHT11 Error");

delay(200);

}

Serial.println("DHT11 OK");

/* We start by connecting to a WiFi network */

WiFiStart();

}

/*************************************************************/

void loop()

{

uint32 temp, humi, tmp;

static unsigned long time = 0, timeOld = 0;

edp_pkt rcv_pkt;

uint8 pkt_type;

/* check wifi connection */

if (WiFi.status() != WL_CONNECTED)

{

if (wifiConnected == true)

Serial.println("wifi disconnected!");

wifiConnected = false;

tcpConnected = false;

edpConnected = false;

}

else

wifiConnected = true;

/* TCP connect */

if (wifiConnected)

{

if (!tcpConnected) client.connect(SERVER, PORT);  //connect to edp server

if (!tcpConnected && client.connected())

{

Serial.print("connected to ");

Serial.println((String)SERVER);

tcpConnected = true;

}

else if (tcpConnected && !client.connected())  //check TCP connnection

{

Serial.print("disconnected to ");

Serial.println((String)SERVER);

tcpConnected = false;

edpConnected = false;

}

//edp connect

if (tcpConnected && !edpConnected)

{

while (client.available()) client.read(); //清空接收缓存

packetSend(packetConnect(id.c_str(), key.c_str()));             //发送EPD连接包

Serial.println("packetConnect(id.c_str(), key.c_str()) ok");

uint32 time = millis() + 5000;

while (!client.available() && millis() < time);                 //等待EDP连接应答

if ((tmp = client.readBytes(rcv_pkt.data, sizeof(rcv_pkt.data))) > 0 )

{

rcvDebug(rcv_pkt.data, tmp);

if (rcv_pkt.data[0] == 0x20 && rcv_pkt.data[2] == 0x00 && rcv_pkt.data[3] == 0x00)

{

edpConnected = true;

Serial.println("EDP connected.");

}

else

Serial.println("EDP connect error.");

}

else

Serial.println("EDP connect no response.");

packetClear(&rcv_pkt);

}

}

}

/*

*   packetSend: 发送包

*/

void packetSend(edp_pkt* pkt)

{

int16 len = pkt->len;

int16 i = 0;

if (pkt != NULL)

{

//client.write(pkt->data, pkt->len);    //串口发送

while (len--)

client.write(pkt->data[i++]);    //串口发送

free(pkt);              //回收内存

}

}

/*

*  rcvDebug: 将接受数据按照十六进制打印

*/

void rcvDebug(uint8* rcv, int len)

{

int i;

Serial.print("rcv len: ");

Serial.println(len, DEC);

for (i = 0; i < len; i++)

{

Serial.println(*rcv);

Serial.print(" ");

}

Serial.println("");

}

/*

readEdpPkt

从串口缓存中读数据到接收缓存

*/

bool readEdpPkt(edp_pkt *p)

{

int tmp;

if ((tmp = client.readBytes(p->data + p->len, sizeof(p->data))) > 0 )

{

rcvDebug(p->data + p->len, tmp);

p->len += tmp;

}

return true;

}

/**************************************************/

void WiFiStart()

{

WiFi.mode(WIFI_STA);

Serial.print("Connecting to ");

Serial.println(ssid);

WiFi.begin(ssid,pass);  //配置连接的wifi热点

while (WiFi.status() != WL_CONNECTED ) {

delay(500);

Serial.print(".");

}

wifiConnected = true;

Serial.println("");

Serial.println("WiFi connected");

Serial.println("IP address: ");

Serial.println(WiFi.localIP());

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值