Forum: Mikrocontroller und Digitale Elektronik 2x ESP8266 Kommunikation + Steuerung LED RGB Hilfe (nodeMCU oder Arduino)


von H. S. (haschu87)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich bin sicher hier gibt es jede Menge Leute die sofort eine Lösung für 
mein Problem haben, aber ich bin beim ESP8266 einfach noch nicht so ganz 
fit.

Was habe ich vor:
Es soll an zwei Stellen in meiner Wohnung eine RGB LED über WLAN 
gesteuert werden. Dafür würde ich gerne an beiden Stellen einen ESP8266 
verwenden. Den einen würde ich gern einen ESP8266 (i.f. ESP_A) als 
AccessPoint betreiben und der zweite ESP8266 (i.f. ESP_B) soll sich auf 
dem ESP_A einloggen und bei Änderungen der Farbeinstellung  auf ESP_A 
synchron reagieren.
Es reicht eine Website auf der drei Schieber sind mit denen man den Wert 
jeder Farbe zwischen 0 und 255 einstellen kann. So eine Farbtafel, bei 
der man auf die gewünschte Farbe drücken kann wäre natürlich perfekt, 
aber da hab ich keinen schimmer wie das gehen soll.

Was habe ich bis jetzt gemacht:
- ich habe mit meiner Entwicklungsplatine  für den ESP8266 schon mal 
die nodeMCU Firmware übertragen.
- mit dem ESPlorer habe ich dann 2 scripts übertragen. init.lua und 
webserver.lua

Was brauche ich noch:
- Ich kann mit den Buttons definierte PWM Werte einstellen aber das mit 
den Schiebern bekomme ich nicht hin.
- Ich möchte auch den zuletzt eingestellten Wert im EEPROM ablegen aber 
auch daran scheitere ich bzw. ich weiss nicht wie es geht.
- die Kommunikation zwischen den beiden ist für mich ein echtes Rätsel. 
Ich weiss nicht wie ich die Befehle an beide senden soll.



Nun stellt sich mir die Frage. Ist der Ansatz mit der nodeMCU überhaupt 
richtig? Ich habe schon oft gehört das kaum Speicherplatz vorhanden ist 
wenn diese Software aufgespielt ist.
Wäre die Alternative den ESP mit dem Arduino zu steuern besser?

Was müsste ich denn einem engagierten Hobbybastler hier bezahlen das er 
mich dabei unterstützt? Liegt das im hunderter Bereich oder gar im 
1000er Bereich?

Danke vorab für eure Hilfe.

Gruss


PS: Den Code musste ich als Bild anhängen d a ich immer eine SPam 
Meldung bekommen habe

von H. S. (haschu87)


Lesenswert?

Heute ein bisschen mit dem Arduino Uno und dem ESP8266 herumprobiert.

Dazu habe ich ein Besispiel aus dem Internet genommen.
1
#include <SoftwareSerial.h>
2
 
3
#define DEBUG true
4
 
5
SoftwareSerial esp8266(2,3); // make RX Arduino line is pin 2, make TX Arduino line is pin 3.
6
                             // This means that you need to connect the TX line from the esp to the Arduino's pin 2
7
                             // and the RX line from the esp to the Arduino's pin 3
8
void setup()
9
{
10
  Serial.begin(9600);
11
  esp8266.begin(9600); // your esp's baud rate might be different
12
  
13
 
14
  
15
  sendData("AT+RST\r\n",2000,DEBUG); // reset module
16
  sendData("AT+CWMODE=2\r\n",1000,DEBUG); // configure as access point
17
  sendData("AT+CIFSR\r\n",1000,DEBUG); // get ip address
18
  sendData("AT+CIPMUX=1\r\n",1000,DEBUG); // configure for multiple connections
19
  sendData("AT+CIPSERVER=1,80\r\n",1000,DEBUG); // turn on server on port 80
20
}
21
 
22
void loop()
23
{
24
  if(esp8266.available()) // check if the esp is sending a message 
25
  {
26
    /*
27
    while(esp8266.available())
28
    {
29
      // The esp has data so display its output to the serial window 
30
      char c = esp8266.read(); // read the next character.
31
      Serial.write(c);
32
    } */
33
    
34
    if(esp8266.find("+IPD,"))
35
    {
36
     delay(1000);
37
 
38
     int connectionId = esp8266.read()-48; // subtract 48 because the read() function returns 
39
                                           // the ASCII decimal value and 0 (the first decimal number) starts at 48
40
     
41
     String webpage = "<h1>Hello</h1>&lth2>World!</h2><button>LED1</button>";
42
 
43
     String cipSend = "AT+CIPSEND=";
44
     cipSend += connectionId;
45
     cipSend += ",";
46
     cipSend +=webpage.length();
47
     cipSend +="\r\n";
48
     
49
     sendData(cipSend,1000,DEBUG);
50
     sendData(webpage,1000,DEBUG);
51
     
52
     webpage="<button>LED2</button>";
53
     
54
     cipSend = "AT+CIPSEND=";
55
     cipSend += connectionId;
56
     cipSend += ",";
57
     cipSend +=webpage.length();
58
     cipSend +="\r\n";
59
     
60
     sendData(cipSend,1000,DEBUG);
61
     sendData(webpage,1000,DEBUG);
62
 
63
     String closeCommand = "AT+CIPCLOSE="; 
64
     closeCommand+=connectionId; // append connection id
65
     closeCommand+="\r\n";
66
     
67
     sendData(closeCommand,3000,DEBUG);
68
    }
69
  }
70
}
71
 
72
 
73
String sendData(String command, const int timeout, boolean debug)
74
{
75
    String response = "";
76
    
77
    esp8266.print(command); // send the read character to the esp8266
78
    
79
    long int time = millis();
80
    
81
    while( (time+timeout) > millis())
82
    {
83
      while(esp8266.available())
84
      {
85
        
86
        // The esp has data so display its output to the serial window 
87
        char c = esp8266.read(); // read the next character.
88
        response+=c;
89
      }  
90
    }
91
    
92
    if(debug)
93
    {
94
      Serial.print(response);
95
    }
96
    
97
    return response;
98
}

Was mir nicht gefällt an dem Beispiel ist, dass man  das jquery auf dem 
Rechner  haben muss und die Website auch.

http://allaboutee.com/2015/01/02/esp8266-arduino-led-control-from-webpage/

Also die Website wird mir angezeigt.
Gibt es jetzt noch die Möglichkeit das ich das direkt vom Handy aufrufen 
kann und dann  eine  LED steuern kann?

von Planlos (Gast)


Lesenswert?

H. S. schrieb:
> Nun stellt sich mir die Frage. Ist der Ansatz mit der nodeMCU überhaupt
> richtig? Ich habe schon oft gehört das kaum Speicherplatz vorhanden ist
> wenn diese Software aufgespielt ist.

Ja, der Lua-Interpreter verbraucht schon einiges vom Ram.
Aber: Für ungenutzte Speicherzellen gibt's kein Geld zurück.
Wenn die Lösung mit LUA reinpasst, ist doch alles gut.

> Wäre die Alternative den ESP mit dem Arduino zu steuern besser?

Jain. Soviel mehr Speicher haben die Arduinos auch nicht.

andere Alternative:
Direkt C-Code für den ESP schreiben.
Mehr RAM, Flash, CPU-Power, Datenwortbreite, ... bei weniger 
Stromverbrauch.
Und du sparst den dann überflüssigen Arduino komplett ein.

von Michi (Gast)


Lesenswert?

Gibt es ein tutorial wie man den ESP8266 in C programmiert?

Danke

von Thomas Z. (thomas_z41)


Lesenswert?

Ein Tutorial kenne ich jetzt nicht, aber diese examples: 
https://github.com/esp8266/source-code-examples und die im SDK zeigen 
einem die Grundlagen.

von Richard (Gast)


Lesenswert?

@H.S. Hast du das Inserat bei T.... geschaltet?

Am besten du sagst ich habe XX EUR und ich brauche eine fertige Lösung 
;)
Mit 50 EUR kommst du nicht sehr weit aber 1000 EUR finde ich eindeutig 
zu viel.

LG,
Richard

von GeGe (Gast)


Lesenswert?

H. S. schrieb:
> bei
> der man auf die gewünschte Farbe drücken kann wäre natürlich perfekt,
> aber da hab ich keinen schimmer wie das gehen soll.

von Infineon gibts ein RGB Shield für den Arduino.
Auf diesem Shield ist ein eigener XMC-Prozessor drauf und auch für jede 
Farbe ein LED-Treiber.

Auf youtube kann man sehen wie jemand mit dem Protokoll MQTT was tolles 
gemacht hat. Am Ende sieht man wie das ganze dann über ein Handy bedient 
wird.
https://www.youtube.com/watch?v=W6GSohv7bH0

In der c't Heft16 /2015 ist ein vierseitiger Artikell über den RGB 
Shield.

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Ich nutze WS2812-Streifen statt PWM und MOSFETs und portiere gerade vom 
STM32 auf den ESP.

Michi schrieb:
> Gibt es ein tutorial wie man den ESP8266 in C programmiert?

Ich kenne bis jetzt kein besseres als das von Neil Kolban:
http://neilkolban.com/tech/esp8266/

H. S. schrieb:
> Was mir nicht gefällt an dem Beispiel ist, dass man  das jquery auf dem
> Rechner  haben muss und die Website auch.

OK, wie möchtest Du das haben?

Vielleicht mit MQTT und mit einer App wie z.B. MyMQTT?

Du kannst eingebettete Teile, wie JavaSript oder Bilder auch auf einen 
anderen WebServer packen. Falls Du z.B. einen RasPi mit Mosquitto als 
MQTT-Broker nutzt, könnten dort auch die benötigten Ressourcen für die 
HTTP-Seiten bereitgestellt werden. Aber es gibt natürlich noch viele 
weitere Möglichkeiten.

H. S. schrieb:
> Was müsste ich denn einem engagierten Hobbybastler hier bezahlen das er
> mich dabei unterstützt?

Meistens reichen Foren wie diese hier, um genügend Unterstützung zu 
bekommen.

Je konkreter Deine Fragen sind, desto besser kann Dir geholfen werden.

: Bearbeitet durch User
von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

H. S. schrieb:
> Es soll an zwei Stellen in meiner Wohnung eine RGB LED über WLAN
> gesteuert werden. Dafür würde ich gerne an beiden Stellen einen ESP8266
> verwenden.

Und? Kommst Du weiter? Oder wo hakt es ggf.?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.