This is a Arduino sketch for AT Commands sending from Arduino Serial(TxRx) to ESP8266.
When AT commands is received by arduino, they will bypass arduino to ESP8266!
Connection examples: Motoduino WiFi Module(ESP8266) with S4A IO Board
Connections example: ESP-12
Copy and paste the following sketch to Arduino IDE! Enjoy!
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <SoftwareSerial.h>
SoftwareSerial esp8266(3,2); // use pins (3,2) for software serial S4A IO board
// Rx : D3, Tx: D2
#define DEBUG true
#define BUFFER_SIZE 512
char serBuffer[BUFFER_SIZE];
char command[128];
void setup() {
Serial.begin(9600); // start serial communication at 9600bps
esp8266.begin(9600); // Modify it for your esp8266 module
Serial.println("Ready...");
}
void loop() {
char ser_char;
if(Serial.available()>0){
Serial.readBytesUntil('\n', serBuffer, BUFFER_SIZE);
int len = strlen(serBuffer);
if(3 == len)
{
serBuffer[len]='\n';
if(!strncmp(serBuffer, "AT\r\n",4))
sendData(serBuffer, 1000, DEBUG);
}
else if(( len > 3)&&(serBuffer[2]=='+'))
{
Serial.readBytesUntil('\n', serBuffer, BUFFER_SIZE);
len = strlen(serBuffer);
serBuffer[len]='\n';
//Serial.println(serBuffer);
sendData(serBuffer, 2000, DEBUG);
}
clearBuffer();
}
}
String sendData(String command, const int timeout, boolean debug)
{
String response = "";
esp8266.print(command); // send the read character to the esp8266
long int time = millis();
while( (time+timeout) > millis())
{
while(esp8266.available())
{
// The esp has data so display its output to the serial window
char c = esp8266.read(); // read the next character.
response+=c;
}
}
if(DEBUG){
Serial.print(response);
}
return response;
}
void clearBuffer(void) {
for (int i =0;i<BUFFER_SIZE;i++ ) {
serBuffer[i]=0;
}
}
When AT commands is received by arduino, they will bypass arduino to ESP8266!
Copy and paste the following sketch to Arduino IDE! Enjoy!
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <SoftwareSerial.h>
SoftwareSerial esp8266(3,2); // use pins (3,2) for software serial S4A IO board
// Rx : D3, Tx: D2
#define DEBUG true
#define BUFFER_SIZE 512
char serBuffer[BUFFER_SIZE];
char command[128];
void setup() {
Serial.begin(9600); // start serial communication at 9600bps
esp8266.begin(9600); // Modify it for your esp8266 module
Serial.println("Ready...");
}
void loop() {
char ser_char;
if(Serial.available()>0){
Serial.readBytesUntil('\n', serBuffer, BUFFER_SIZE);
int len = strlen(serBuffer);
if(3 == len)
{
serBuffer[len]='\n';
if(!strncmp(serBuffer, "AT\r\n",4))
sendData(serBuffer, 1000, DEBUG);
}
else if(( len > 3)&&(serBuffer[2]=='+'))
{
Serial.readBytesUntil('\n', serBuffer, BUFFER_SIZE);
len = strlen(serBuffer);
serBuffer[len]='\n';
//Serial.println(serBuffer);
sendData(serBuffer, 2000, DEBUG);
}
clearBuffer();
}
}
String sendData(String command, const int timeout, boolean debug)
{
String response = "";
esp8266.print(command); // send the read character to the esp8266
long int time = millis();
while( (time+timeout) > millis())
{
while(esp8266.available())
{
// The esp has data so display its output to the serial window
char c = esp8266.read(); // read the next character.
response+=c;
}
}
if(DEBUG){
Serial.print(response);
}
return response;
}
void clearBuffer(void) {
for (int i =0;i<BUFFER_SIZE;i++ ) {
serBuffer[i]=0;
}
}
沒有留言:
張貼留言