Für Neulinge lohnt es sich zunächst einen Blick auf folgende Seiten zu werfen:
Auf diesen Seiten lernt man, wie die Arduino-IDE für den ESP einzurichten ist, welche Spannungspegel zu beachten sind und außerdem wird ein kleines Blink- und Temperaturmess-Programm präsentiert.
Den Quelltext für das Client-Server-Programm finden Sie hier:
#include <ESP8266WiFi.h>
const char* ssid = "deineSSID";
const char* password = "deinPW";
const char* host = "192.168.178.106"; //IP des Java-Servers
const int serverPort = 50000; //Port des Java-Servers (ServerSocket)
void setup() {
Serial.begin(115200); //Kontrollausgabe aktivieren
delay(800);
Serial.println();
Serial.print("Versuche Verbindung zum AP mit der SSID=");
Serial.print(ssid);
Serial.println(" herzustellen");
WiFi.begin(ssid, password);
/*Solange keine Verbindung zu einem AccessPoint (AP) aufgebaut wurde*/
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.print("Verbunden mit IP ");
Serial.println(WiFi.localIP());
/*Signalstärke des AP*/
long rssi = WiFi.RSSI();
Serial.print("Signalstaerke(RSSI) des AP:");
Serial.print(rssi);
Serial.println(" dBm");
}
void loop() {
WiFiClient client;
if (!client.connect(host, serverPort)) {
Serial.print("X");
return;
}
Serial.println();
Serial.print("Verbunden mit ");
Serial.println(host);
Serial.print("Nachricht an Java-Server senden: ");
Serial.println("Nachricht vom ESP8266");
client.println("Nachricht vom ESP8266");
delay(100);
/*Echo vom Java-Server lesen und ausgeben*/
String line = client.readStringUntil('\n');
Serial.print(line);
Serial.println();
/*Verbindung zum Java-Server schliessen*/
Serial.println("Verbindung schliessen");
client.flush();
client.stop();
Serial.println("Verbindung geschlossen");
}
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class EchoServerESP8266 {
public static void main(String[] args) throws IOException {
System.out.println("Server wird gestartet!!!");
ServerSocket einSS = new ServerSocket(50000);
// Ein ArbeitsSocket erzeugen, wenn sich ein Client am Server meldet
Socket einAS = einSS.accept();
BufferedReader vomClient = new BufferedReader(
new InputStreamReader(einAS.getInputStream()));
BufferedWriter zumClient = new BufferedWriter(
new OutputStreamWriter(einAS.getOutputStream()));
System.out.println("Client angemeldet!!!");
String s;
try {
while((s = vomClient.readLine())!= null){
System.out.println("> " + s);
zumClient.write("Echo vom Java-Server: " + s);
zumClient.newLine();
zumClient.flush();
}
} catch (Exception e) { }
System.out.println("Client abgemeldet!!!");
vomClient.close();
einAS.close();
einSS.close();
}
}
Erstellen Sie auf der Serverseite einen Toggle-Button, über den Sie die interne LED des ESP8266 ein- bzw. ausschalten können. Nachfolgend finden Sie bereits eine Konsolenlösung. Beachten Sie die Unterschiede zum vorhergehenden Echo-Programm. Z.B. ist der WiFiClient jetzt global deklariert.