w5100与php通信,arduino UNO R3 + W5100 + PHPServer + 微信公众号 远程监控和控

本帖最后由 rengaoadmin 于 2016-3-21 23:27 编辑

由于时间问题,本篇内容逐步更新,先把主要代码放出,陆续添加图片和注意事项.......

一  总体介绍

arduino端实物

70d8077d25d7c32fb2a7a7cb2bbf0996.gif

IMG_0089.JPG (1.57 MB, 下载次数: 19)

2016-3-21 23:19 上传

微信端界面,监控菜单包括2个选项温度和湿度

70d8077d25d7c32fb2a7a7cb2bbf0996.gif

IMG_6078.png (73.87 KB, 下载次数: 14)

2016-3-21 23:19 上传

控制菜单包括2个选项:开灯和关灯

70d8077d25d7c32fb2a7a7cb2bbf0996.gif

IMG_6079.png (71.42 KB, 下载次数: 14)

2016-3-21 23:21 上传

第一个菜单为按钮,直接打开官网

70d8077d25d7c32fb2a7a7cb2bbf0996.gif

IMG_6080.PNG (398.4 KB, 下载次数: 15)

2016-3-21 23:21 上传

下图是温度 /湿度/开灯/关灯所对应的结果显示

70d8077d25d7c32fb2a7a7cb2bbf0996.gif

IMG_0082.png (144.25 KB, 下载次数: 17)

2016-3-21 23:26 上传

70d8077d25d7c32fb2a7a7cb2bbf0996.gif

LCD_Base_bb_Fritz.png (241.57 KB, 下载次数: 17)

2016-3-21 23:26 上传

单独测试LCD时无所谓,LCD与W5100同时使用时,LCD不能再使用12,11脚,否则会出现乱码,改为9,8端口。

二  所需材料

三  用到的库文件

四  arduino端

[mw_shl_code=cpp,true]#include

#include

#include

dht11 DHT11;

#define DHT11PIN 6

LiquidCrystal lcd(9, 8, 5, 4, 3, 2);

//由于有W5100 pin 12,11 LCD不能使用

char state = '0';

char c;

int dht11state=0;

byte mac[] = {

0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

IPAddress ip(192, 168, 31, 177);

EthernetClient client;

byte sheng[8] = {

0x04,0x14,0x1f,0x14,0x0e,0x04,0x1f,0x00

};

byte ri[8] = {

0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x00

};

byte kuai[8] = {

0x0a,0x0a,0x1f,0x1b,0x1f,0x0a,0x0d,0x00

};

byte le[8] = {

0x1e,0x10,0x14,0x1f,0x04,0x15,0x15,0x00

};

byte tanhao[8] = {

0x02,0x02,0x04,0x04,0x00,0x00,0x08,0x00

};

byte du[8] = {

0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00

};

byte xin[8] = {

0x00,0x0a,0x1f,0x1f,0x1f,0x0e,0x04,0x00

};

char server[] = "plclive.com";//设置为自己的服务器地址

int hum = 0;

int temp = 0;

unsigned long lastConnectionTime = 0;

boolean lastConnected = false;

const unsigned long postingInterval = 10*1000;

void setup(){

Serial.begin(9600);// 设置串口通信波特率

delay(1000);

Ethernet.begin(mac,ip);

Serial.print("My IP address: ");

Serial.println(Ethernet.localIP());

pinMode(7, OUTPUT);           //设置第七个数字io为输出

pinMode(10, OUTPUT);

lcd.begin(16, 2);

lcd.clear();

lcd.createChar(0, sheng);

lcd.createChar(1, ri);

lcd.createChar(2, kuai);

lcd.createChar(3, le);

lcd.createChar(4, tanhao);

lcd.createChar(5, du);

lcd.createChar(6, xin);

}

void loop(void){

int chk = DHT11.read(DHT11PIN);

switch (chk)

{

case DHTLIB_OK:

dht11state=1;

break;

case DHTLIB_ERROR_CHECKSUM:

dht11state=2;

break;

case DHTLIB_ERROR_TIMEOUT:

dht11state=3;

break;

default:

dht11state=10;

break;

}

hum=(int)DHT11.humidity;

temp=(int)DHT11.temperature;

//显示温度湿度开始

lcd.setCursor(0, 0);

lcd.print("Temperatue:");

lcd.print(temp);

lcd.write(5);

lcd.print("C");

lcd.setCursor(0, 1);

lcd.print("Hum:");

lcd.print(hum);

lcd.print("%");

lcd.blink();

//显示温度湿度结束

//显示中文开始

lcd.setCursor(9, 1);

lcd.write(6);

lcd.write(byte(0));

lcd.write(1);

lcd.write(2);

lcd.write(3);

lcd.write(4);delay(100);

lcd.write(6);delay(200);

//显示中文结束

if(state == '0'){             //根据state的状态设置7脚的电平

digitalWrite(7, HIGH);

digitalWrite(10,LOW);

}else if(state == '1'){

digitalWrite(7, LOW);

digitalWrite(10,HIGH);

}

while(client.available()) {

c = client.read();

if (c == '{'){

state = client.read();

}

}

if (!client.connected() && lastConnected) {

Serial.println("disconnecting...");

client.stop();

}

if(!client.connected() && (millis() - lastConnectionTime > postingInterval)) {

if (client.connect(server, 80)) {

// send the HTTP PUT request:

client.print("GET http://www.plclive.com/api/downup.php?token=**********&data1=");

//*部分修改为你的token,向自己的服务器发送数据及更新token要与downup.php中设置的token一致,data1\data2\....\dataN根据传感器数量添加,

//并且要与downup.php里一致,同事数据库增加相应的记录值

client.print(temp);

client.print("&data2=");

client.print(hum);

client.println(" HTTP/1.1");

client.println("Host: www.plclive.com");

client.println("User-Agent: arduino-ethernet");

client.println("Connection: close");

client.println();

lastConnectionTime = millis();

}else {

Serial.println("connection failed");

Serial.println("disconnecting.");

client.stop();

}

}

lastConnected = client.connected();

}[/mw_shl_code]

五  web端,包括数据库和PHP页面两部分

六  微信端的设置和菜单的生成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值