測試ESP8266模組
#include <SoftwareSerial.h>
SoftwareSerial ESP8266(3,4); // RX, TX
void setup()
{
Serial.begin(9600);
ESP8266.begin(9600);
}
void loop()
{
if(ESP8266.available())
Serial.write(ESP8266.read());
else if(Serial.available())
ESP8266.write(Serial.read());
}
AT
AT+RST 重置ESP8266模組
AT+GMR 查詢ESP8266版本序號
AT+CWMODE=1 選擇WI-FI應用模式,1就是設為Station
AT+CWMODE? 查詢WI-FI應用模式
AT+CWJAP="Xiaomi_6F5A","37491253901"
AT+CIFSR
#include <SoftwareSerial.h>
SoftwareSerial ESP8266(3,4);
#define SSID "D-Link_DIR-809"
#define PASSWORD "0123456789"
const int WIFIled=13;
const int negR=14;
const int posR=15;
const int negL=16;
const int posL=17;
const int pwmR=5;
const int pwmL=6;
const int Rspeed=200;
const int Lspeed=200;
boolean FAIL_8266 = false;
int connectionId;
void setup()
{
pinMode(posR,OUTPUT);
pinMode(negR,OUTPUT);
pinMode(posL,OUTPUT);
pinMode(negL,OUTPUT);
pinMode(pwmR,OUTPUT);
pinMode(pwmL,OUTPUT);
pinMode(WIFIled,OUTPUT);
digitalWrite(WIFIled,LOW);
Serial.begin(9600);
ESP8266.begin(9600);
for(int i=0;i<3;i++)
{
digitalWrite(WIFIled,HIGH);
delay(200);
digitalWrite(WIFIled,LOW);
delay(200);
}
do
{
ESP8266.println("AT+RST");
Serial.println("AT+RST");
delay(1000);
if(ESP8266.find("OK"))
{
Serial.println("Module is ready");
if(connectWiFi(10))
{
Serial.println("connect WiFi Success");
FAIL_8266=false;
}
else
{
Serial.println("connect WiFi Fail");
FAIL_8266=true;
}
}
else
{
Serial.println("Module have no response.");
delay(500);
FAIL_8266=true;
}
}while(FAIL_8266);
digitalWrite(WIFIled,HIGH);
}
void loop()
{
if(ESP8266.available())
{
Serial.println("Something received");
if(ESP8266.find("+IPD,"))
{
String action;
Serial.println("+IPD, found");
connectionId = ESP8266.read()-'0';
Serial.println("connectionId: " + String(connectionId));
ESP8266.find("X=");
char s = ESP8266.read();
if(s=='F')
{
action = "X=F";
forward(Rspeed,Lspeed);
}
else if(s=='B')
{
action = "X=B";
back(Rspeed,Lspeed);
}
else if(s=='R')
{
action = "X=R";
right(Rspeed,Lspeed);
}
else if(s=='L')
{
action = "X=L";
left(Rspeed,Lspeed);
}
else if(s=='S')
{
action = "X=S";
pause(Rspeed,Lspeed);
}
else
{
action = "X=?";
pause(Rspeed,Lspeed);
}
Serial.println(action);
httpResponse(connectionId, action);
}
}
}
boolean connectWiFi(int timeout)
{
do
{
ESP8266.println("AT+CWMODE=1"); //Set station MODE
Serial.println("AT+CWMODE=1");
delay(1000);
String cmd="AT+CWJAP=\"";
cmd+=SSID;
cmd+="\",\"";
cmd+=PASSWORD;
cmd+="\"";
ESP8266.println(cmd);
Serial.println("wait OK...");
delay(2000);
if(ESP8266.find("OK"))
{
Serial.println("Join AP Success");
sendESP8266Cmd("AT+CIFSR",3000); //Get and display my IP
sendESP8266Cmd("AT+CIPMUX=1",1000); //Set multi connections
sendESP8266Cmd("AT+CIPSERVER=1,80",1000); //Setup web server on port 80
Serial.println("Server setup finish");
return true;
}
}while((timeout--)>0);
return false;
}
void httpResponse(int id, String content)
{
String response;
response = "HTTP/1.1 200 OK\r\n";
response += "Content-Type: text/html\r\n";
response += "Connection: close\r\n";
response += "Refresh: 8\r\n";
response += "\r\n";
response += content;
String cmd = "AT+CIPSEND=";
cmd += id;
cmd += ",";
cmd += response.length();
sendESP8266Cmd(cmd,200);
sendESP8266Data(response,200);
cmd = "AT+CIPCLOSE=";
cmd += connectionId;
sendESP8266Cmd(cmd,200);
}
void sendESP8266Cmd(String cmd, int waitTime)
{
ESP8266.println(cmd);
delay(waitTime);
while (ESP8266.available() > 0)
{
char a = ESP8266.read();
Serial.write(a);
}
Serial.println();
}
void sendESP8266Data(String data, int waitTime)
{
ESP8266.print(data);
delay(waitTime);
while (ESP8266.available() > 0)
{
char a = ESP8266.read();
Serial.write(a);
}
Serial.println();
}
void forward(byte RmotorSpeed, byte LmotorSpeed)
{
analogWrite(pwmR,RmotorSpeed);
analogWrite(pwmL,LmotorSpeed);
digitalWrite(posR,HIGH);
digitalWrite(negR,LOW);
digitalWrite(posL,LOW);
digitalWrite(negL,HIGH);
}
void back(byte RmotorSpeed, byte LmotorSpeed)
{
analogWrite(pwmR,RmotorSpeed);
analogWrite(pwmL,LmotorSpeed);
digitalWrite(posR,LOW);
digitalWrite(negR,HIGH);
digitalWrite(posL,HIGH);
digitalWrite(negL,LOW);
}
void right(byte RmotorSpeed, byte LmotorSpeed)
{
analogWrite(pwmR,RmotorSpeed);
analogWrite(pwmL,LmotorSpeed);
digitalWrite(posR,LOW);
digitalWrite(negR,LOW);
digitalWrite(posL,LOW);
digitalWrite(negL,HIGH);
}
void left(byte RmotorSpeed, byte LmotorSpeed)
{
analogWrite(pwmR,RmotorSpeed);
analogWrite(pwmL,LmotorSpeed);
digitalWrite(posR,HIGH);
digitalWrite(negR,LOW);
digitalWrite(posL,LOW);
digitalWrite(negL,LOW);
}
void pause(byte RmotorSpeed, byte LmotorSpeed)
{
analogWrite(pwmR,RmotorSpeed);
analogWrite(pwmL,LmotorSpeed);
digitalWrite(posR,LOW);
digitalWrite(negR,LOW);
digitalWrite(posL,LOW);
digitalWrite(negL,LOW);
}
=========================================
#include <Arduino.h>
#include <Wire.h>
//#include <Servo.h>
#include <SoftwareSerial.h>
double angle_rad = PI/180.0;
double angle_deg = 180.0/PI;
void forward();
double rspeed;
double lspeed;
void backward();
void left();
void right();
void stop();
void forward()
{
digitalWrite(7,0);
pinMode(6,OUTPUT);
analogWrite(6,rspeed);
digitalWrite(8,0);
pinMode(9,OUTPUT);
analogWrite(9,lspeed);
}
void backward()
{
digitalWrite(7,1);
pinMode(6,OUTPUT);
analogWrite(6,(255) - (rspeed));
digitalWrite(8,1);
pinMode(9,OUTPUT);
analogWrite(9,(255) - (lspeed));
}
void left()
{
digitalWrite(7,0);
pinMode(6,OUTPUT);
analogWrite(6,rspeed);
digitalWrite(8,0);
pinMode(9,OUTPUT);
analogWrite(9,0);
}
void right()
{
digitalWrite(7,0);
pinMode(6,OUTPUT);
analogWrite(6,0);
digitalWrite(8,0);
pinMode(9,OUTPUT);
analogWrite(9,lspeed);
}
void stop()
{
digitalWrite(7,0);
pinMode(6,OUTPUT);
analogWrite(6,0);
digitalWrite(8,0);
pinMode(9,OUTPUT);
analogWrite(9,0);
}
void setup(){
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
rspeed = 150;
lspeed = 200;
}
void loop(){
forward();
delay(1000*2);
backward();
delay(1000*2);
}
#include <SoftwareSerial.h>
SoftwareSerial ESP8266(3,4);
#include <Arduino.h>
#include <Wire.h>
//#include <Servo.h>
//#include <SoftwareSerial.h>
double angle_rad = PI/180.0;
double angle_deg = 180.0/PI;
void forward();
double rspeed;
double lspeed;
void backward();
void left();
void right();
void stop();
#define SSID "Xiaomi_6F5A"
#define PASSWORD "37491253901"
const int WIFIled=13;
//const int negR=14;
//const int posR=15;
//const int negL=16;
//const int posL=17;
//const int pwmR=5;
//const int pwmL=6;
//const int Rspeed=200;
//const int Lspeed=200;
boolean FAIL_8266 = false;
int connectionId;
void setup()
{
// pinMode(posR,OUTPUT);
// pinMode(negR,OUTPUT);
// pinMode(posL,OUTPUT);
// pinMode(negL,OUTPUT);
// pinMode(pwmR,OUTPUT);
// pinMode(pwmL,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
rspeed = 150;
lspeed = 200;
pinMode(WIFIled,OUTPUT);
digitalWrite(WIFIled,LOW);
Serial.begin(9600);
ESP8266.begin(9600);
for(int i=0;i<3;i++)
{
digitalWrite(WIFIled,HIGH);
delay(200);
digitalWrite(WIFIled,LOW);
delay(200);
}
do
{
ESP8266.println("AT+RST");
Serial.println("AT+RST");
delay(1000);
if(ESP8266.find("OK"))
{
Serial.println("Module is ready");
if(connectWiFi(10))
{
Serial.println("connect WiFi Success");
FAIL_8266=false;
}
else
{
Serial.println("connect WiFi Fail");
FAIL_8266=true;
}
}
else
{
Serial.println("Module have no response.");
delay(500);
FAIL_8266=true;
}
}while(FAIL_8266);
digitalWrite(WIFIled,HIGH);
}
void loop()
{
if(ESP8266.available())
{
Serial.println("Something received");
if(ESP8266.find("+IPD,"))
{
String action;
Serial.println("+IPD, found");
connectionId = ESP8266.read()-'0';
Serial.println("connectionId: " + String(connectionId));
ESP8266.find("X=");
char s = ESP8266.read();
if(s=='F')
{
action = "X=F";
forward();
// forward(Rspeed,Lspeed);
}
else if(s=='B')
{
action = "X=B";
backward();
// back(Rspeed,Lspeed);
}
else if(s=='R')
{
action = "X=R";
right();
// right(Rspeed,Lspeed);
}
else if(s=='L')
{
action = "X=L";
left();
// left(Rspeed,Lspeed);
}
else if(s=='S')
{
action = "X=S";
stop();
//pause(Rspeed,Lspeed);
}
else
{
action = "X=?";
stop();
//pause(Rspeed,Lspeed);
}
Serial.println(action);
httpResponse(connectionId, action);
}
}
}
boolean connectWiFi(int timeout)
{
do
{
ESP8266.println("AT+CWMODE=1"); //Set station MODE
Serial.println("AT+CWMODE=1");
delay(1000);
String cmd="AT+CWJAP=\"";
cmd+=SSID;
cmd+="\",\"";
cmd+=PASSWORD;
cmd+="\"";
ESP8266.println(cmd);
Serial.println("wait OK...");
delay(2000);
if(ESP8266.find("OK"))
{
Serial.println("Join AP Success");
sendESP8266Cmd("AT+CIFSR",3000); //Get and display my IP
sendESP8266Cmd("AT+CIPMUX=1",1000); //Set multi connections
sendESP8266Cmd("AT+CIPSERVER=1,80",1000); //Setup web server on port 80
Serial.println("Server setup finish");
return true;
}
}while((timeout--)>0);
return false;
}
void httpResponse(int id, String content)
{
String response;
response = "HTTP/1.1 200 OK\r\n";
response += "Content-Type: text/html\r\n";
response += "Connection: close\r\n";
response += "Refresh: 8\r\n";
response += "\r\n";
response += content;
String cmd = "AT+CIPSEND=";
cmd += id;
cmd += ",";
cmd += response.length();
sendESP8266Cmd(cmd,200);
sendESP8266Data(response,200);
cmd = "AT+CIPCLOSE=";
cmd += connectionId;
sendESP8266Cmd(cmd,200);
}
void sendESP8266Cmd(String cmd, int waitTime)
{
ESP8266.println(cmd);
delay(waitTime);
while (ESP8266.available() > 0)
{
char a = ESP8266.read();
Serial.write(a);
}
Serial.println();
}
void sendESP8266Data(String data, int waitTime)
{
ESP8266.print(data);
delay(waitTime);
while (ESP8266.available() > 0)
{
char a = ESP8266.read();
Serial.write(a);
}
Serial.println();
}
void forward()
{
digitalWrite(7,0);
pinMode(6,OUTPUT);
analogWrite(6,rspeed);
digitalWrite(8,0);
pinMode(9,OUTPUT);
analogWrite(9,lspeed);
}
void backward()
{
digitalWrite(7,1);
pinMode(6,OUTPUT);
analogWrite(6,(255) - (rspeed));
digitalWrite(8,1);
pinMode(9,OUTPUT);
analogWrite(9,(255) - (lspeed));
}
void left()
{
digitalWrite(7,0);
pinMode(6,OUTPUT);
analogWrite(6,rspeed);
digitalWrite(8,0);
pinMode(9,OUTPUT);
analogWrite(9,0);
}
void right()
{
digitalWrite(7,0);
pinMode(6,OUTPUT);
analogWrite(6,0);
digitalWrite(8,0);
pinMode(9,OUTPUT);
analogWrite(9,lspeed);
}
void stop()
{
digitalWrite(7,0);
pinMode(6,OUTPUT);
analogWrite(6,0);
digitalWrite(8,0);
pinMode(9,OUTPUT);
analogWrite(9,0);
}
/*
void forward(byte RmotorSpeed, byte LmotorSpeed)
{
analogWrite(pwmR,RmotorSpeed);
analogWrite(pwmL,LmotorSpeed);
digitalWrite(posR,HIGH);
digitalWrite(negR,LOW);
digitalWrite(posL,LOW);
digitalWrite(negL,HIGH);
}
void back(byte RmotorSpeed, byte LmotorSpeed)
{
analogWrite(pwmR,RmotorSpeed);
analogWrite(pwmL,LmotorSpeed);
digitalWrite(posR,LOW);
digitalWrite(negR,HIGH);
digitalWrite(posL,HIGH);
digitalWrite(negL,LOW);
}
void right(byte RmotorSpeed, byte LmotorSpeed)
{
analogWrite(pwmR,RmotorSpeed);
analogWrite(pwmL,LmotorSpeed);
digitalWrite(posR,LOW);
digitalWrite(negR,LOW);
digitalWrite(posL,LOW);
digitalWrite(negL,HIGH);
}
void left(byte RmotorSpeed, byte LmotorSpeed)
{
analogWrite(pwmR,RmotorSpeed);
analogWrite(pwmL,LmotorSpeed);
digitalWrite(posR,HIGH);
digitalWrite(negR,LOW);
digitalWrite(posL,LOW);
digitalWrite(negL,LOW);
}
void pause(byte RmotorSpeed, byte LmotorSpeed)
{
analogWrite(pwmR,RmotorSpeed);
analogWrite(pwmL,LmotorSpeed);
digitalWrite(posR,LOW);
digitalWrite(negR,LOW);
digitalWrite(posL,LOW);
digitalWrite(negL,LOW);
}
*/