WeMos D1 WiFi UNO R3,基于ESP-8266EX,自带Wifi模块。Arduino兼容,采用Arduino IDE来编程。是最便宜的WiFi Arduino板子。

开发前需要对Arduino IDE进行设置。打开Arduino IDE的首选项。

在“附件开发板管理器网址”中加入:http://arduino.esp8266.com/stable/package_esp8266com_index.json,保存退出。这个是Arduino的ESP8266的Broad库。

然后在Arduino IDE的“工具”菜单中选择“管理库”功能,搜索ESP8266,先安装“Arduino Uno WiFi Dev Ed Library”库。

再安装安装“esp8266 by ESP8266 Community”库。下载时间比较长,请耐心等待。

安装完开发库后,在IDE中设置开发板。在“工具”菜单中选择“开发板”为“WeMos D1 R1”,并设置好端口。就可以进入开发实际开发上传阶段。

WiFi连接与Http网络访问代码与示例:

[cc lang=”c” tab_size=”2″ lines=”100″ width=”800″]

#include ;

char* ssid = “longhe.net”; //修改成你可访问的wifi名称
char* password = “eqpt@2500”; // 修改成wifi密码

void setup() {
int nStatus = 0;

Serial.begin(115200);
Serial.print(“Connecting to “);
Serial.println(ssid);

nStatus = wifiConnect(ssid, password);
Serial.print(“Status: “);
Serial.println(nStatus);

}

void loop() {

String nowHttpHeader;
String nowHttpContent;

delay(1000);
httpGetPHP(“www.waysoft.net”, 80, “/test.php”, &nowHttpHeader, &nowHttpContent);

Serial.println(nowHttpContent);

}

/*
WiFi连接
@param wifiSsid WiFi SSID
@param wifiPass WiFi 密码
@param wifiIp WiFi IP地址
@return 连接状态 3.连接成功(WL_CONNECTED) 1.SSID不存在(WL_NO_SSID_AVAIL) 4.SSID密码错误(WL_CONNECT_FAILED)
*/
int wifiConnect(const char* wifiSsid, const char* wifiPass) {
WiFi.begin(wifiSsid, wifiPass); //连接Wifi
int nWiFiStatus = 0;
while ((nWiFiStatus = WiFi.status()) == WL_DISCONNECTED) {
//等待连接
delay(500);
}
return nWiFiStatus;
}

/*
Http Get访问
@param httpHost Http服务器地址
@param httpPort Http端口号
@param httpPath Http文件路径
@param pHttpHeader Http头内容字符串指针(返回)
@param pHttpContent Http内容字符串指针(返回)
@return 访问结果
*/
bool httpGetPHP(String httpHost, int httpPort, String httpPath, String* pHttpHeader, String* pHttpContent) {
WiFiClient client;
if (!client.connect(httpHost, httpPort)) {
//网络连接错误
return false;
}
client.print(String(“GET “) + httpPath + ” HTTP/1.1\r\n” + “Host: ” + httpHost + “\r\n” + “Connection: keep-alive\r\n\r\n”);
delay(500); // 等待服务器相应

int nNumBody = 0;
int nNumHeader = 0;
int nRecvAvailable = 0;
String section = “header”;
*pHttpHeader = “”;
*pHttpContent = “”;

while (nRecvAvailable = client.available()) {
String line = client.readStringUntil(‘\r’);
String tempLine;
if (section == “header”) {
//Http头部信息
if (line == “\n”) {
section = “content”;
}
*pHttpHeader += line;
nNumHeader ++;
} else if (section == “content”) {
//Http内容信息
if (nNumBody > 0) {
tempLine = line;
tempLine.trim();
if (tempLine != “0” && tempLine != “”) {
*pHttpContent += line;
}

}
nNumBody ++;
}
}
return false;
}

[/cc]