//这理用的是2560 的主板串口比较多用的是串口1如果是UNO的主板可以用串口0 但是要在刷软件的时候把串口0上的线去掉要不刷不进去!
#include <ESP8266.h> //库文件
#define PASSWORD "PWD" //WIFI 密码
#define HOST_NAME "192.168.2.9" //连接服务器的 IP
#define HOST_PORT (60000) //连接服务器的 端口
ESP8266 wifi(Serial1); //串口1 和ESP8266 对接透传
int ledPin = 7; //小灯1
int ledPin2 = 6; //小灯2
void setup(void) //程序初始化
{
pinMode(ledPin,OUTPUT);
pinMode(ledPin2,OUTPUT);
Serial.begin(9600); //初始化串口0
Serial1.begin(9600); //初始化串口1 这个地方 要先在ESP 8266 上设置一下 波特率 设置成 9600 默认 应该是 115200
Serial.flush(); //不知道
Serial.print("setup begin\r\n"); //打印初始化状态把?
Serial.print("FW Version:"); //打印 ESP版本
Serial.println(wifi.getVersion().c_str()); //不知道
if (wifi.setOprToStationSoftAP()) { //应该是运行模式 这个应该是 clent+AP 模式
Serial.print("to station + softap ok\r\n"); //设置模式成功
} else {
Serial.print("to station + softap err\r\n"); //设置模式失败
}
if (wifi.joinAP(SSID, PASSWORD)) { //连接无线路由
Serial.print("Join AP success\r\n"); //加入网络成功
Serial.print("IP:"); //显示IP地址
Serial.println( wifi.getLocalIP().c_str()); //显示IP地址
} else {
Serial.print("Join AP failure\r\n"); //加入网络失败
}
if (wifi.disableMUX()) {
Serial.print("single ok\r\n");
} else {
Serial.print("single err\r\n");
}
Serial.print("setup end\r\n");
}
void loop(void)
{
uint8_t buffer[128] = {0}; //初始化 buffer 这个缓存
if (wifi.createTCP(HOST_NAME, HOST_PORT)) { // 连接WIFI网络
Serial.print("create tcp ok\r\n");//创建网络是否成功
} else {
Serial.print("create tcp err\r\n");} //创建网络失败
delay(200);
char *hello = "Hello, this is client!"; //发送到上位机的数据
wifi.send((const uint8_t*)hello, strlen(hello)); //发送到上位机
uint32_t len = wifi.recv(buffer, sizeof(buffer), 10000); //上位机传过来的数据
if (len > 0) { //判断是否有数据到达
Serial.print("Rec:["); //输出一个固定开头
char (*inChar) = buffer; //把缓存中的数据存到一个变量中
Serial.print( inChar); //打印缓存中的内容
//if ( *inChar == 'H')
if(strcmp(inChar,"HOME")==0) //判断上位机传过来的数据是否等于 HOME
{ Serial.print("start"); //如果满足上面的如果打印这个 start
digitalWrite(ledPin, HIGH); //点亮这个小灯
}
//if ( *inChar == "STOP")
else if(strcmp(inChar,"STOP")==0)
{Serial.print("STOP");
digitalWrite(ledPin2, HIGH);
}
else {Serial.print("NUMBER"); } //如果上位机传来的数据 不满足上面两个如果 就执行打印 NUMBER 单词
Serial.print("]\r\n"); //打印一个尾部字符
}
if (wifi.releaseTCP()) { //关闭网络连接
Serial.print("release tcp ok\r\n"); //关闭成功
} else {
Serial.print("release tcp err\r\n"); //关闭失败
}
delay(5000); //延迟5秒
digitalWrite(ledPin,LOW); //熄灭小灯 1
digitalWrite(ledPin2,LOW); //熄灭小灯2
}