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
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><h2>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?
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.
Gibt es ein tutorial wie man den ESP8266 in C programmiert? Danke
Ein Tutorial kenne ich jetzt nicht, aber diese examples: https://github.com/esp8266/source-code-examples und die im SDK zeigen einem die Grundlagen.
@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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.