diese antennen habe ich getestet:
![]()
die kleinste reicht bis ca 70m, die grosse gut 100m, die mittlere ist seltsammerweiase die schlechteste - ca.40m
und das ist der letzter stand der software:
AP mit UDP server:
client mit UDP slave:Code:#include <ESP8266WiFi.h> #include <WiFiUdp.h> const int ledPin_rt = D5; const int ledPin_gn = D6; const int ledPin_bl = D7; int ledState_rt = LOW; int ledState_gn = LOW; int ledState_bl = LOW; long previousMillis_rt = 0; long previousMillis_gn = 0; long previousMillis_bl = 0; long interval_rt = 100; long interval_gn = 250; long interval_bl = 50; WiFiServer server(80); IPAddress IP(192, 168, 4, 15); IPAddress mask = (255, 255, 255, 0); byte ledPin = 2; // hier die Adresse vom Slave eintragen IPAddress remoteIP(192, 168, 4, 114); unsigned int remotePort = 4210; // remote port to listen on char befehl[10]; WiFiUDP Udp; uint32_t aktMillis; uint32_t prevMillis; boolean ledStatus = false; void setup() { pinMode(ledPin_rt, OUTPUT); pinMode(ledPin_gn, OUTPUT); pinMode(ledPin_bl, OUTPUT); Serial.begin(115200); WiFi.mode(WIFI_AP); WiFi.softAP("Wemos_AP", "Wemos_comm"); WiFi.softAPConfig(IP, IP, mask); server.begin(); pinMode(ledPin, OUTPUT); Serial.println(); Serial.println("accesspoint_bare_01.ino"); Serial.println("Server started."); Serial.print("IP: "); Serial.println(WiFi.softAPIP()); Serial.print("MAC:"); Serial.println(WiFi.softAPmacAddress()); } void loop() { aktMillis = millis(); if (aktMillis - prevMillis >= 100) { prevMillis = aktMillis; Serial.print("LED schalten auf "); if (ledStatus) { Serial.println("An"); befehl[0] = 1; } else { Serial.println("Aus"); befehl[0] = 0; } Udp.beginPacket(remoteIP, remotePort); Udp.write(befehl, 1); Udp.endPacket(); ledStatus = !ledStatus; } WiFiClient client = server.available(); if (!client) { return; } byte request = client.read(); Serial.println("********************************"); Serial.print("From the station: "); Serial.println(request); client.flush(); } void blinken (void) { unsigned long currentMillis_rt = millis(); // aktueller Wert rot if (currentMillis_rt - previousMillis_rt > interval_rt) { previousMillis_rt = currentMillis_rt; // aktuellen Wert speichern ledState_rt = ((ledState_rt == LOW) ? HIGH : LOW); // toggeln digitalWrite(ledPin_rt, ledState_rt); // LED ansteuern } }
Code:#include <ESP8266WiFi.h> #include <WiFiUdp.h> const int ledPin_rt = D5; const int ledPin_gn = D6; const int ledPin_bl = D7; int ledState_rt = LOW; int ledState_gn = LOW; int ledState_bl = LOW; long previousMillis_rt = 0; long previousMillis_gn = 0; long previousMillis_bl = 0; long interval_rt = 100; long interval_gn = 250; long interval_bl = 50; //Variablen deklarieren //###################################### byte ledPin = 2; //2 // Interne LED vom ESP 8266 Modul byte Taster = 4; // GPIO 4 wird mit einem Taster beschaltet byte temp, memo = 0; // Merker für Tasterstatus & Hilfsmerker char ssid[] = "Wemos_AP"; // SSID of your AP char password[] = "Wemos_comm"; // password of your AP IPAddress server(192, 168, 4, 15); // IP address of the AP WiFiClient client; WiFiUDP Udp; unsigned int localUdpPort = 4210; // local port to listen on char befehl[10]; // buffer for incoming packets boolean ledStatus = false; //Setup //###################################### void setup() { pinMode(ledPin_rt, OUTPUT); pinMode(ledPin_gn, OUTPUT); pinMode(ledPin_bl, OUTPUT); Serial.begin(115200); pinMode(ledPin, OUTPUT); pinMode(Taster, INPUT_PULLUP); //Inizialisiere WIFI //###################################### WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Serial.println(); Serial.println("Connection to the AP"); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println(); Serial.println("Connected"); Serial.println("station_bare_01.ino"); Serial.print("LocalIP:"); Serial.println(WiFi.localIP()); Serial.println("MAC:" + WiFi.macAddress()); Serial.print("Gateway:"); Serial.println(WiFi.gatewayIP()); Serial.print("AP MAC:"); Serial.println(WiFi.BSSIDstr()); Udp.begin(localUdpPort); Serial.print(" connected. UDP-Server bereit an IP: "); Serial.println(WiFi.localIP()); Serial.println("UDP-Server bereit."); } //Daten an AP senden //###################################### void data_to_AP (byte temp) { client.connect(server, 80); digitalWrite(ledPin, LOW); Serial.println("********************************"); Serial.print("Byte sent to the AP: "); Serial.println(temp); Serial.println(client.write(temp)); client.flush(); digitalWrite(ledPin, HIGH); client.stop(); } //HAUPTPROGRAMM //###################################### void loop() { int packetSize, len; // UDP packetSize = Udp.parsePacket(); // Da ist was da if (packetSize) { Serial.print("Empfangen "); Serial.print(packetSize); Serial.print(" von IP "); Serial.print(Udp.remoteIP()); Serial.print(" Port "); Serial.println(Udp.remotePort()); len = Udp.read(befehl, 10); ledStatus = befehl[0]; // erstes Byte 0 oder 1 if (ledStatus) { //digitalWrite(LED, HIGH); digitalWrite(ledPin_rt, HIGH); Serial.println("LED einschalten"); } else { //digitalWrite(LED, LOW); digitalWrite(ledPin_rt, LOW); Serial.println("LED ausschalten"); } } /* temp = digitalRead(Taster); if (temp == LOW & memo == LOW) { Serial.print("TASTER: LOW "); Serial.println(temp); memo = HIGH; data_to_AP(temp); Serial.println("********************************"); Serial.println("********************************"); Serial.println(""); } else if (temp == HIGH & memo == HIGH) { Serial.print("TASTER: HIGH "); Serial.println(temp); memo = LOW; data_to_AP(temp); Serial.println("********************************"); Serial.println("********************************"); Serial.println(""); } delay(500); */ } void blinken (void) { unsigned long currentMillis_rt = millis(); // aktueller Wert rot if (currentMillis_rt - previousMillis_rt > interval_rt) { previousMillis_rt = currentMillis_rt; // aktuellen Wert speichern ledState_rt = ((ledState_rt == LOW) ? HIGH : LOW); // toggeln digitalWrite(ledPin_rt, ledState_rt); // LED ansteuern } }







Zitieren

Lesezeichen