一、前言
这次使用库文件uartWiFi进行开发,这个库文件比较简单,熟悉AT指令之后一般就可以看懂。这个库文件我修改了一些我感觉有问题的地方。使用时如果是使用Arduino UNO可以保持不动,使用Arduino MEGA的话,将uartWIFI.h
里面的UNO相关的注释掉就行。
uartWIFI下载地址,里面有原版
链接:https://pan.baidu.com/s/1Ao8jbLEzUVXLyArBO92gFA
提取码:ne25
如果需要DHT11库文件的,请移步DHT11解析
二、代码
实物连线图
#include "uartWIFI.h"
#define SSID "****" //wifi名
#define PASS "****" //wifi密码
#define IP "****" // 网络调试助手(服务器)IP
#define Port 8080 //端口
WIFI wifi;
#include "DHT.h"
#define DHTPIN 10
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
dht.begin();
wifi.begin(115200,9600);
bool b = wifi.Initialize(STA, SSID, PASS); //连接Wifi(ESP8266作为客户端)
if(b==false)
{
Serial.println("Init error!");
}
else
{
Serial.println("Init OK!");
bool x=wifi.newMux(1,IP,Port); //连接服务器,1表示使用TCP协议,0表示UDP协议(这个函数我修改过)
if(x=true)
{
bool y=wifi.Send("HelloWorld!");
if(y==true) Serial.println("Send OK!");//测试一下发送数据
else Serial.println("ERROR!");
}
}
delay(8000);
}
void loop() {
Temp();
}
void Temp() //获取温湿度并且发送至服务器
{
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f)) {
delay(2000);
Serial.println("Failed to read from DHT sensor!");
return;
}
String data="温度";
data+=String(t);
data+="湿度";
data+=String(h);
Serial.println(data);
wifi.Send("温度:");
wifi.Send(String(t));
wifi.Send("湿度:");
wifi.Send(String(h));
wifi.Send("\n");
delay(3000);
}