127 lines
2.6 KiB
C++
Executable File
127 lines
2.6 KiB
C++
Executable File
#include <SoftwareSerial.h>
|
|
#include <ESP8266wifi.h>
|
|
|
|
#define sw_serial_rx_pin 4 // Connect this pin to TX on the esp8266
|
|
#define sw_serial_tx_pin 6 // Connect this pin to RX on the esp8266
|
|
#define esp8266_reset_pin 5 // Connect this pin to CH_PD on the esp8266, not reset. (let reset be unconnected)
|
|
|
|
SoftwareSerial swSerial(sw_serial_rx_pin, sw_serial_tx_pin);
|
|
|
|
// the last parameter sets the local echo option for the ESP8266 module..
|
|
ESP8266wifi wifi(swSerial, swSerial, esp8266_reset_pin, Serial);//adding Serial enabled local echo and wifi debug
|
|
|
|
String inputString;
|
|
boolean stringComplete = false;
|
|
unsigned long nextPing = 0;
|
|
|
|
void setup() {
|
|
inputString.reserve(20);
|
|
swSerial.begin(9600);
|
|
Serial.begin(9600);
|
|
while (!Serial)
|
|
;
|
|
Serial.println("Starting wifi");
|
|
|
|
wifi.setTransportToTCP();// this is also default
|
|
// wifi.setTransportToUDP();//Will use UDP when connecting to server, default is TCP
|
|
|
|
wifi.endSendWithNewline(true); // Will end all transmissions with a newline and carrage return ie println.. default is true
|
|
|
|
wifi.begin();
|
|
|
|
//Turn on local ap and server (TCP)
|
|
wifi.startLocalAPAndServer("MY_CONFIG_AP", "", "5", "2121");
|
|
|
|
wifi.connectToAP("Livebox-37cc", "8A6060920A8A86896F770F2C47");
|
|
wifi.connectToServer("192.168.0.10", "8080");
|
|
wifi.send(SERVER, "ESP8266 test app started");
|
|
}
|
|
|
|
void loop() {
|
|
|
|
//Make sure the esp8266 is started..
|
|
if (!wifi.isStarted())
|
|
wifi.begin();
|
|
|
|
//Send what you typed in the arduino console to the server
|
|
static char buf[20];
|
|
if (stringComplete) {
|
|
inputString.toCharArray(buf, sizeof buf);
|
|
wifi.send(SERVER, buf);
|
|
inputString = "";
|
|
stringComplete = false;
|
|
}
|
|
|
|
//Send a ping once in a while..
|
|
if (millis() > nextPing) {
|
|
wifi.send(SERVER, "Ping ping..");
|
|
nextPing = millis() + 10000;
|
|
}
|
|
|
|
//Listen for incoming messages and echo back, will wait until a message is received, or max 6000ms..
|
|
WifiMessage in = wifi.listenForIncomingMessage(6000);
|
|
if (in.hasData) {
|
|
if (in.channel == SERVER)
|
|
Serial.println("Message from the server:");
|
|
else
|
|
Serial.println("Message a local client:");
|
|
Serial.println(in.message);
|
|
//Echo back;
|
|
wifi.send(in.channel, "Echo:", false);
|
|
wifi.send(in.channel, in.message);
|
|
nextPing = millis() + 10000;
|
|
}
|
|
|
|
//If you want do disconnect from the server use:
|
|
// wifi.disconnectFromServer();
|
|
|
|
}
|
|
|
|
//Listen for serial input from the console
|
|
void serialEvent() {
|
|
while (Serial.available()) {
|
|
char inChar = (char)Serial.read();
|
|
inputString += inChar;
|
|
if (inChar == '\n') {
|
|
stringComplete = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|