哪位大神可以帮我看看,为啥一直连接不上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());

}

php 连接 onenet,arduino一直连接不上onenet相关推荐

  1. arduino连接阿里云IOT平台 并上传数据点模型

    很久没更新了,写个esp连接阿里云平台吧,主要实现云平台的连接和物模型的数据点上传,相比Onenet,阿里云平台的功能更加丰富,产业链更长远(虽然我更喜欢用自己的服务器,没那么约束,但安全系数也没那么 ...

  2. 《树莓派实战秘籍》——1.15 技巧15连接GPIO脚到面包板上

    本节书摘来异步社区<树莓派实战秘籍>一书中的第1章,第1.15节,作者:[美]Ruth Suehle ,Tom Callaway,更多章节内容可以访问云栖社区"异步社区" ...

  3. matlab连接板,怎样用Matlab连接控制Arduino开发板

    在本篇文章中,我们将新建一个简单的MATLAB m文件来与Arduino开发板进行通信. MATLAB用于Arduino硬件的支持包允许您使用MATLAB通过USB电缆与该开发板通信.支持包适用于32 ...

  4. pycharm连接远程服务器并进行代码上传+远程调试

    Pycharm连接远程服务器并进行代码上传+远程调试 </h1><div class="clear"></div><div class=& ...

  5. linux 类似winscp_mac如何连接远程linux,类似windows上的putty和winscp

    windows上有putty可以通过ssh协议连接远程linux系统. mac上也可以用终端连接,转自:http://www.unixnewbie.org/putty-equivalent-for-m ...

  6. 对象***已断开连接或不在该服务器上 的解决方案之一

    使用VS2008在发布网站的时候,出现了这样的一个错误,先前一直是OK的.网上找了老半天,几乎没有此问题的解决办法.很是郁闷.只能一个一个地进行编译.单个层Build是OK的,整个Solution的R ...

  7. 《实用》secureCRT远程连接linux虚拟机-突然连接不上-解决办法

    上网查了很多复杂的解决办法,太麻烦了,还不好用 最后发现如果 linux虚拟机装了gnome图形界面软件的话,直接通过图形界面软件把默认的动态ip地址改成静态ip地址就好了,它就可以保持虚拟机的对外i ...

  8. Linux系统如何连接和上传文件到服务器上

    Linux系统如何连接和上传文件到服务器上(图形化界面) 一.Linux连接服务器 1.安装rdesktop sudo apt-get intall rdesktop 2.使用rdesktop指令打开 ...

  9. eplan连接定义点不显示_显示无线桥接成功,但是连接副路由器的设备依然上不去网的问题...

    昨天发布了一篇路由器的桥接步骤,之后有粉丝私信我反应说是状态中显示桥接成功了,但是连接副路由器以后依然上不去网,怎么办?我自己再次做了次实验没有问题.但是确实有几个点需要注意下,不然可能就会出现成功了 ...

最新文章

  1. kafka 、 zookeeper 集群(一)
  2. mysql5.6.27_Centos上安装Mysql5.6.27多实例
  3. Elastic 使用Heartbeat监测服务运行状态
  4. DOM基本操作(二:对节点的操作)
  5. 统计dataframe中所有列的null数量与填充null注意事项
  6. 设置网页右键点击,并阻止右键点击默认事件
  7. 35款非常有创意的透明名片设计作品
  8. 55)PHP,在html嵌套PHP写法
  9. CleanMyMac偏好设置你知道多少?
  10. windows 7 自带计算器详解
  11. 传统产业要向数字化转型发力
  12. 安装个https证书要多少钱
  13. mac虚拟机桌面图标隐藏_桌面美化,任务栏、桌面图标和鼠标箭头自动隐藏!
  14. 一本书的推荐序——写在《思考的乐趣》即将上市之际
  15. 全国计算机考试一的书,《全国计算机等级考试全能教程》—甲虎网一站式图书批发平台...
  16. 数字藏品叠加元宇宙热潮,数字艺术会迎来怎样的发展
  17. TCP 的三次握手(简述)
  18. 类静态数据成员的定义及初始化
  19. MFC CFile CStdioFile文件学习
  20. 亚马逊欧洲站无货源好不好做?

热门文章

  1. unity 打开vs没有解决方案_VS找不到UnityEngine、UnityEngine.UI等引用的解决办法
  2. tableau如何按条件累加_Pointer分享:Tableau学习—8种图表介绍
  3. bzoj4820 [Sdoi2017]硬币游戏 高斯消元+概率+kmp
  4. C/C bit 位操作
  5. 理解 Android 消息机制
  6. 半年之殇:困扰半年的MSP430的I2C总线问题在今天解决,发文总结
  7. 【虚拟化】支持IDE/SATA/SCSI
  8. mysql 切割字符串的妙用
  9. html里,实现图片与文字对齐的最简洁方法
  10. 纯Javascript实现Windows 8 Metro风格实现