Zusi steuern mit dem ESP8266 WLAN-Modul.

Alles zu Zusi-Performance, Frameraten, ruckelnden Bildern, Grafik, Treibern usw.
Antworten
Nachricht
Autor
funkheld
Beiträge: 305
Registriert: 15.09.2010 11:52:44

Zusi steuern mit dem ESP8266 WLAN-Modul.

#1 Beitrag von funkheld »

Hallo, guten Tag.

Ich kann es nicht lassen und habe mir mal dieses ESP8266-Modul gekauft und einem Arduiono MEGA2560 :
http://esp8266-server.de/" target="_blank

Das ESP8266 ist ein WI-FI-Modul mit 512KB Speicher und kann über die Arduino IDE programmiert werden und arbeitet als eigenständiger Computer. Ich habe ein Purebasicprogramm geschrieben und möchte damit 8 Verschiedene Dinge ansteuern über den MEGA2560 (on/off). Das Purebasicprogramm schaltet den ESP8266 und der leitet die Daten Seriell weiter an den MEGA2560 um damit etwas beim Zusi zu steuern.
Ich habe die Daten die am MEGA2560 ankommen zur Kontrolle über TX1 an den PC gesendet ob es funktioniert.

Es geht auch ohne den MEGA2560 um zu kontrollieren, man geht dann mit dem TX vom ESP8266 zum USB-Serialwandler zum PC.

Dieses Programm kommt in den ESP8266 :

Code: Alles auswählen

#include <ESP8266WiFi.h>

const char* ssid = "......";
const char* password = "......";

WiFiServer server(80);

void setup() {
  Serial.begin(9600);
  delay(10);

  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  
  WiFi.begin(ssid, password);
  
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  
  server.begin();
  Serial.println("Server started");

  Serial.println(WiFi.localIP());
}

void loop() {
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
  
  while(!client.available()){
    delay(1);
  }
  
  String req = client.readStringUntil('\r');
  // Serial.println(req);
  client.flush();
  
  if (req.indexOf("0ON") != -1)
    Serial.println("0=on");
  else if (req.indexOf("0OFF") != -1)
     Serial.println("0=off");
     
  else if (req.indexOf("1ON") != -1)
    Serial.println("1=on");
  else if (req.indexOf("1OFF") != -1)
     Serial.println("1=off");
     
  else if (req.indexOf("2ON") != -1)
    Serial.println("2=on");
  else if (req.indexOf("2OFF") != -1)
     Serial.println("2=off");

  else if (req.indexOf("3ON") != -1)
    Serial.println("3=on");
  else if (req.indexOf("3OFF") != -1)
     Serial.println("3=off");  

  else if (req.indexOf("4ON") != -1)
    Serial.println("4=on");
  else if (req.indexOf("4OFF") != -1)
     Serial.println("4=off"); 

  else if (req.indexOf("5ON") != -1)
    Serial.println("5=on");
  else if (req.indexOf("5OFF") != -1)
     Serial.println("5=off");  

  else if (req.indexOf("6ON") != -1)
    Serial.println("6=on");
  else if (req.indexOf("6OFF") != -1)
     Serial.println("6=off");   

  else if (req.indexOf("7ON") != -1)
    Serial.println("7=on");
  else if (req.indexOf("7OFF") != -1)
     Serial.println("7=off");       
  else {
    Serial.println("invalid request");
    client.stop();
    return;
  }

  client.flush();

  delay(1);
}
Und dieses Ist das Purebasictestprogramm:

Code: Alles auswählen

Global buffer.l, text_e.s, url.s

Enumeration
  #Window_0
  #Editor_0
  #z0_an
  #z0_aus
  #z1_an
  #z1_aus
  #z2_an
  #z2_aus
  #z3_an
  #z3_aus
  #z4_an
  #z4_aus
  #z5_an
  #z5_aus
  #z6_an
  #z6_aus
  #z7_an
  #z7_aus
EndEnumeration

InitNetwork()

url= "http://192.168.2.102/?pin=1ON"

OpenWindow(#Window_0,1000,200,420,500,"esp-webserver-http", #PB_Window_SystemMenu)

EditorGadget(#Editor_0, 10, 180, 300,280)

ButtonGadget(#z0_an, 10,60, 40, 25, "0 an")
ButtonGadget(#z0_aus, 10,85, 40, 25, "0 aus")
ButtonGadget(#z1_an, 50,60, 40, 25, "1 an")
ButtonGadget(#z1_aus,50,85, 40, 25, "1 aus")
ButtonGadget(#z2_an, 90,60, 40, 25, "2 an")
ButtonGadget(#z2_aus, 90,85, 40, 25, "2 aus")
ButtonGadget(#z3_an, 130,60, 40, 25, "3 an")
ButtonGadget(#z3_aus,130,85, 40, 25, "3 aus")

ButtonGadget(#z4_an, 170,60, 40, 25, "4 an")
ButtonGadget(#z4_aus,170,85, 40, 25, "4 aus")
ButtonGadget(#z5_an, 210,60, 40, 25, "5 an")
ButtonGadget(#z5_aus,210,85, 40, 25, "5 aus")
ButtonGadget(#z6_an, 250,60, 40, 25, "6 an")
ButtonGadget(#z6_aus,250,85, 40, 25, "6 aus")
ButtonGadget(#z7_an, 290,60, 40, 25, "7 an")
ButtonGadget(#z7_aus,290,85, 40, 25, "7 aus")

Repeat  
  Event = WaitWindowEvent()
  
  Select Event
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      
      If EventGadget =  #z0_an
        URL = SetURLPart(URL, "pin", "0ON")
        Buffer = ReceiveHTTPMemory(url)
      EndIf   
      If EventGadget =  #z0_aus
        URL = SetURLPart(URL, "pin", "0OFF")
        Buffer = ReceiveHTTPMemory(url)
      EndIf     
      If EventGadget =  #z1_an
        URL = SetURLPart(URL, "pin", "1ON")
        Buffer = ReceiveHTTPMemory(url)
      EndIf     
      If EventGadget =  #z1_aus
        URL = SetURLPart(URL, "pin", "1OFF")
        Buffer = ReceiveHTTPMemory(url)
      EndIf   
      If EventGadget =  #z2_an
        URL = SetURLPart(URL, "pin", "2ON")
        Buffer = ReceiveHTTPMemory(url)
      EndIf     
      If EventGadget =  #z2_aus
        URL = SetURLPart(URL, "pin", "2OFF")
        Buffer = ReceiveHTTPMemory(url)
      EndIf    
      If EventGadget =  #z3_an
        URL = SetURLPart(URL, "pin", "3ON")
        Buffer = ReceiveHTTPMemory(url)
      EndIf    
      If EventGadget =  #z3_aus
        URL = SetURLPart(URL, "pin", "3OFF")
        Buffer = ReceiveHTTPMemory(url)
      EndIf
      
      If EventGadget =  #z4_an
        URL = SetURLPart(URL, "pin", "4ON")
        Buffer = ReceiveHTTPMemory(url)
      EndIf   
      If EventGadget =  #z4_aus
        URL = SetURLPart(URL, "pin", "4OFF")
        Buffer = ReceiveHTTPMemory(url)
      EndIf     
      If EventGadget =  #z5_an
        URL = SetURLPart(URL, "pin", "5ON")
        Buffer = ReceiveHTTPMemory(url)
      EndIf     
      If EventGadget =  #z5_aus
        URL = SetURLPart(URL, "pin", "5OFF")
        Buffer = ReceiveHTTPMemory(url)
      EndIf   
      If EventGadget =  #z6_an
        URL = SetURLPart(URL, "pin", "6ON")
        Buffer = ReceiveHTTPMemory(url)
      EndIf     
      If EventGadget =  #z6_aus
        URL = SetURLPart(URL, "pin", "6OFF")
        Buffer = ReceiveHTTPMemory(url)
      EndIf    
      If EventGadget =  #z7_an
        URL = SetURLPart(URL, "pin", "7ON")
        Buffer = ReceiveHTTPMemory(url)
      EndIf    
      If EventGadget =  #z7_aus
        URL = SetURLPart(URL, "pin", "7OFF")
        Buffer = ReceiveHTTPMemory(url)
      EndIf
      
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Window_0
        CloseWindow(#Window_0)
        Break
      EndIf
  EndSelect 
ForEver
Gruss

Bild
Zuletzt geändert von funkheld am 29.12.2015 13:54:15, insgesamt 7-mal geändert.

funkheld
Beiträge: 305
Registriert: 15.09.2010 11:52:44

Re: Zusi steuern mit dem ESP8266 WLAN-Modul.

#2 Beitrag von funkheld »

Und hier Bilder vom Roboter und Ultraschallaufzeichnung (Raumscanning).
Empfang und Senden über das ESPModul.


Bild

Bild


Gruss
Zuletzt geändert von funkheld am 16.04.2016 23:43:17, insgesamt 6-mal geändert.

Antworten