W5100 | ESP8266
+5V -
NSS - SS
MO - MOSI
GND - GND
RST - GPIO4
SCK - SCLK
MI - MISO
/*
A simple server that answer the ping message.
Using an ESP8266 .
*/
/* Circuit:
* Ethernet shield attached to pins :
* D6: GPIO12 - MISO
* D7: GPIO13 - MOSI
* D8: GPIO15 - CS
* D5: GPIO14 - SCLK
*/
#include <SPI.h>
#include <Ethernet.h>
#define MACADDRESS 0xDE, 0xAD, 0xBE, 0xEF, 0xDE, 0xED
IPAddress ip(192,168,6,29);
IPAddress gateway(192, 168, 6, 1);
IPAddress subnet(255, 255, 255, 0);
// telnet defaults to port 23
EthernetServer server(23);
#define RST 4 //W5100 RST
void setup()
{
pinMode(BUILTIN_LED, OUTPUT);
pinMode(RST, OUTPUT);
digitalWrite(RST,HIGH); //Reset this module
delay(200);
digitalWrite(RST,LOW);
delay(200);
digitalWrite(RST,HIGH);
delay(200);
Serial.begin(115200);
Serial.println();
byte mac[] = { MACADDRESS };
Ethernet.begin(mac, ip, gateway, subnet);
// print your local IP address:
Serial.print("My IP address: ");
Serial.println(Ethernet.localIP());
server.begin();
}
void loop()
{
}
]]>#include <ESP8266WiFi.h>#include <WiFi.h>void SmartConfig()
{
WiFi.mode(WIFI_STA);
Serial.println("\r\nWait for Smartconfig...");
WiFi.beginSmartConfig();
while (1)
{
Serial.print(".");
delay(500); // wait for a second
if (WiFi.smartConfigDone())
{
Serial.println("SmartConfig Success");
Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
break;
}
}
}bool AutoConfig()
{
WiFi.begin();
//如果觉得时间太长可改
for (int i = 0; i < 20; i++)
{
int wstatus = WiFi.status();
if (wstatus == WL_CONNECTED)
{
Serial.println("WIFI SmartConfig Success");
Serial.printf("SSID:%s", WiFi.SSID().c_str());
Serial.printf(", PSW:%s\r\n", WiFi.psk().c_str());
Serial.print("LocalIP:");
Serial.print(WiFi.localIP());
Serial.print(" ,GateIP:");
Serial.println(WiFi.gatewayIP());
return true;
}
else
{
Serial.print("WIFI AutoConfig Waiting......");
Serial.println(wstatus);
delay(1000);
}
}
Serial.println("WIFI AutoConfig Faild!" );
return false;
}void setup() {
Serial.begin(115200);
delay(100);
if (!AutoConfig())
{
SmartConfig();
}
}
1.每次程序启动后,直接进入SmartConfig配置,设置超时时间,一旦超时则退出SmartConfig配置,在此时间段内可进行配置
#include <ESP8266WiFi.h>
void SmartConfig()
{
int TimerOverCount=0;
WiFi.mode(WIFI_STA);
Serial.println("WIFI Wait for Smartconfig");
WiFi.beginSmartConfig();
while (1)
{
Serial.printf(".%d",TimerOverCount);
if (WiFi.smartConfigDone())
{
Serial.println("WIFI SmartConfig Success");
Serial.printf("SSID:%s", WiFi.SSID().c_str());
Serial.printf(", PSW:%s\r\n", WiFi.psk().c_str());
Serial.print("LocalIP:");
Serial.print(WiFi.localIP());
Serial.print(" ,GateIP:");
Serial.println(WiFi.gatewayIP());
WiFi.setAutoConnect(true); // 设置自动连接
break;
}
if(TimerOverCount>=15)
{
WiFi.stopSmartConfig();
WiFi.begin();
break;
}
TimerOverCount ++;
delay(1000);
}
}
void setup(void)
{
// Start Serial
Serial.begin(115200);
delay(100);
SmartConfig();
}
]]>
ESP8266-01模块
HiLink 5V电源
AMS1117 IC
5V继电器(4个)
MCT2E IC(4个)
1N4007二极管(4个)
3pin端子连接器(4个)
BC547晶体管(4个)
10K电阻(8个)


此处省略/待分享
对于这个项目,我设计了2层PCB使其非常紧凑。在Easyeda.com上传PCB下单即可,该PCB设计文件对所有人开放。
下载地址:整理中...!
下载地址:整理中...!
]]>