118 lines
3.7 KiB
C++
118 lines
3.7 KiB
C++
/*------------------------------------------------------------------------
|
|
Simple ESP8266 test. Requires SoftwareSerial and an ESP8266 that's been
|
|
flashed with recent 'AT' firmware operating at 9600 baud. Only tested
|
|
w/Adafruit-programmed modules: https://www.adafruit.com/product/2282
|
|
|
|
The ESP8266 is a 3.3V device. Safe operation with 5V devices (most
|
|
Arduino boards) requires a logic-level shifter for TX and RX signals.
|
|
------------------------------------------------------------------------*/
|
|
|
|
#include <Adafruit_ESP8266.h>
|
|
#include <SoftwareSerial.h>
|
|
|
|
#define ESP_RX 2
|
|
#define ESP_TX 3
|
|
#define ESP_RST 4
|
|
SoftwareSerial softser(ESP_RX, ESP_TX);
|
|
|
|
// Must declare output stream before Adafruit_ESP8266 constructor; can be
|
|
// a SoftwareSerial stream, or Serial/Serial1/etc. for UART.
|
|
Adafruit_ESP8266 wifi(&softser, &Serial, ESP_RST);
|
|
// Must call begin() on the stream(s) before using Adafruit_ESP8266 object.
|
|
|
|
#define ESP_SSID "SSIDNAME" // Your network name here
|
|
#define ESP_PASS "PASSWORD" // Your network password here
|
|
|
|
#define HOST "www.adafruit.com" // Host to contact
|
|
#define PAGE "/testwifi/index.html" // Web page to request
|
|
#define PORT 80 // 80 = HTTP default port
|
|
|
|
#define LED_PIN 13
|
|
|
|
void setup() {
|
|
char buffer[50];
|
|
|
|
// Flash LED on power-up
|
|
pinMode(LED_PIN, OUTPUT);
|
|
for(uint8_t i=0; i<3; i++) {
|
|
digitalWrite(13, HIGH); delay(50);
|
|
digitalWrite(13, LOW); delay(100);
|
|
}
|
|
|
|
// This might work with other firmware versions (no guarantees)
|
|
// by providing a string to ID the tail end of the boot message:
|
|
|
|
// comment/replace this if you are using something other than v 0.9.2.4!
|
|
wifi.setBootMarker(F("Version:0.9.2.4]\r\n\r\nready"));
|
|
|
|
softser.begin(9600); // Soft serial connection to ESP8266
|
|
Serial.begin(57600); while(!Serial); // UART serial debug
|
|
|
|
Serial.println(F("Adafruit ESP8266 Demo"));
|
|
|
|
// Test if module is ready
|
|
Serial.print(F("Hard reset..."));
|
|
if(!wifi.hardReset()) {
|
|
Serial.println(F("no response from module."));
|
|
for(;;);
|
|
}
|
|
Serial.println(F("OK."));
|
|
|
|
Serial.print(F("Soft reset..."));
|
|
if(!wifi.softReset()) {
|
|
Serial.println(F("no response from module."));
|
|
for(;;);
|
|
}
|
|
Serial.println(F("OK."));
|
|
|
|
Serial.print(F("Checking firmware version..."));
|
|
wifi.println(F("AT+GMR"));
|
|
if(wifi.readLine(buffer, sizeof(buffer))) {
|
|
Serial.println(buffer);
|
|
wifi.find(); // Discard the 'OK' that follows
|
|
} else {
|
|
Serial.println(F("error"));
|
|
}
|
|
|
|
Serial.print(F("Connecting to WiFi..."));
|
|
if(wifi.connectToAP(F(ESP_SSID), F(ESP_PASS))) {
|
|
|
|
// IP addr check isn't part of library yet, but
|
|
// we can manually request and place in a string.
|
|
Serial.print(F("OK\nChecking IP addr..."));
|
|
wifi.println(F("AT+CIFSR"));
|
|
if(wifi.readLine(buffer, sizeof(buffer))) {
|
|
Serial.println(buffer);
|
|
wifi.find(); // Discard the 'OK' that follows
|
|
|
|
Serial.print(F("Connecting to host..."));
|
|
if(wifi.connectTCP(F(HOST), PORT)) {
|
|
Serial.print(F("OK\nRequesting page..."));
|
|
if(wifi.requestURL(F(PAGE))) {
|
|
Serial.println("OK\nSearching for string...");
|
|
// Search for a phrase in the open stream.
|
|
// Must be a flash-resident string (F()).
|
|
if(wifi.find(F("working"), true)) {
|
|
Serial.println(F("found!"));
|
|
} else {
|
|
Serial.println(F("not found."));
|
|
}
|
|
} else { // URL request failed
|
|
Serial.println(F("error"));
|
|
}
|
|
wifi.closeTCP();
|
|
} else { // TCP connect failed
|
|
Serial.println(F("D'oh!"));
|
|
}
|
|
} else { // IP addr check failed
|
|
Serial.println(F("error"));
|
|
}
|
|
wifi.closeAP();
|
|
} else { // WiFi connection failed
|
|
Serial.println(F("FAIL"));
|
|
}
|
|
}
|
|
|
|
void loop() {
|
|
}
|