Forum: Mikrocontroller und Digitale Elektronik [S] ESP3266 Programmierer, [B] Platine inkl. Bauteile


von Christina A. (christina_a)


Lesenswert?

Hallo,

wie der Titel schon sagt suche ich einen ESP8266 Programmierer. Im 
Gegenzug würde ich das PCB inkl. aller Bauteile (gelötet oder zum selber 
löten) anbieten.

Es handelt sich um ein PCB auf dem sich ein ESP8266 befindet.

Dieser ESP8266 soll sich nach einem Reset als "AccessPoint" bereit 
stellen. Hier soll man diesen dann auf sein eigenes WLAN einstellen 
können.

Danach soll der ESP8266 auf MQTT Befehle reagieren.

Der ESP soll danach folgende Arbeiten erledigen:

Einen Fotowiderstand auslesen (ADC)
Eine PWM
Einen DS18S20 auslesen
WS2812B LEDs steuern

Das Board inkl. Bauteile darf natürlich behalten werden.

: Verschoben durch Moderator
von knuckes (Gast)


Lesenswert?

Hi Christina,

der ESP8266 und die Bauteile drumrum werden vielleicht nur 15 Euro 
kosten. Das ist vermutlich für den Entwicklungsaufwand zu wenig als 
Gegenleistung. Ich denke 4 Stunden kann das schon dauern. Das macht also 
etwa 300 euro wenn dir das jemand günstig entwickelt.

Ich finde das Thema sehr interessant, weiß aber, dass die Leute hier im 
Forum immer sehr aggro reagieren, wenn solche Anfragen kommen. Ich finde 
das nicht gut, will dich aber schonmal vorwarnen, damit der Schock nicht 
so groß ausfällt :-))

Ich würde es vielleicht anders machen: Vielleicht hat ja jemand Lust 
sich an dem Projekt zu beteiligen?

lg und viel Erfolg!
knuckes

von Sebastian R. (sebastian_r569)


Lesenswert?

Ansonsten ist es die Gelegenheit, selber zu lernen, wie man 
Programmiert.

Vielleicht sogar (steinigt mich) in der Arduino-Umgebung für den ESP.

von Erwin (Gast)


Lesenswert?

Ich frage mich immer, wozu man diese "rock bottom"-Lösungen an IOT-Tech 
so braucht? Alle Funktionen sind so grundlegend, dass sie vermutlich von 
einer fertig Firmware a la Tasmota komplett abgedeckt werden können.

Wäre es dort nicht einfacher, die Aufgaben in kleine Teilaufgaben zu 
zerteilen und dann mittels Salami-Taktik von Foristen lösen zu lassen?

von Joachim B. (jar)


Lesenswert?

Christina A. schrieb:
> Es handelt sich um ein PCB auf dem sich ein ESP8266 befindet.

definiere ESP8266

der hier?
https://de.wikipedia.org/wiki/ESP8266#/media/Datei:ESP-01.jpg
Chip oder Modul?

Christina A. schrieb:
> WS2812B LEDs steuern
Pegelwandler vorgesehen?

Noch ist alles unklar!

von Christina A. (christina_a)


Lesenswert?

Also es ist eine komplett selber entwickelte PCB.

Dort kommt dieses Modul drauf:

https://images-na.ssl-images-amazon.com/images/I/819QaacbdsL._AC_SX466_.jpg

Das PCB selbst sieht so aus:

https://i.imgur.com/7BuvEav.png

Oben Links kommt der Ringkerntrafo dran

Oben Rechts liegen 12V an (GND über PWM => ESP8266)

Unten Rechts kommen die WS2812B LEDs dran (beschränkt auf 3A durch den 
LM2596-5)

Dann ist da noch ein Fotowiderstand und ein DS18S20 drauf.

von Christina A. (christina_a)



Lesenswert?

Am Ende, wird das ganze an die Decke angeschlossen.. Der Ringkern macht 
die Spannungen die gebraucht werden.

Dieses PCB soll für einen Sternenhimmel dienen.

Man nimmt sich eine Platte verbaut dort die ws2812 LEDs, das Board, 
einen LED Stripe drum herum.

Der Ringkerntrafo wird extra gefertigt (60VA 30mm hoch) sodass dieser 
Perfekt verbaut werden kann.

: Bearbeitet durch User
von Werner P. (werner4096)


Lesenswert?

Christina A. schrieb:
> Dort kommt dieses Modul drauf:
>
> https://images-na.ssl-images-amazon.com/images/I/819QaacbdsL._AC_SX466_.jpg
>
> Das PCB selbst sieht so aus:
>
> https://i.imgur.com/7BuvEav.png

Tipp: Plaziere das ESP Modul so weit nach außen so dass die Antenne 
außerhalb der Platine ist.

Wenn das nicht möglich ist dann Kupfer unter der Antenne (beide Seiten) 
weg.

von Christina A. (christina_a)


Lesenswert?

Ok, das werde ich noch berücksichtigen...

Mir ist gerade noch ein einfall gekommen... Ich mache 4 PWMs.. dann 
könnte ich Ringsherum RGBW Strips verwenden...

Kann der ESP allerdings auf allen PINs PWM oder nur auf bestimmten?

von bingo (Gast)


Lesenswert?

ESP8266 programmieren ist doch easy, schau Dir mal das da an:
http://stefanfrings.de/esp8266/index.html

von Erwin (Gast)


Lesenswert?

Christina A. schrieb:
> Dieses PCB soll für einen Sternenhimmel dienen.

Warum dann kein Tasmota?
Wenn du mittels PWM die LEDs ansteuern willst, brauchst du das für die 
digitalen LEDs aka Neopixel nicht. Das machen die schon selbst.

Tasmota wird sicherlich eine Möglichkeit haben, die ADC Spannung deines 
Lichtsensors abzurufen, oder du nimmst direkt per I2C einen digitalen 
Lichtsensor, was ich hierfür empfehlen würde.

Tasmota kann komplett per MQTT gesteuert werden und du brauchst nichts 
zu programmieren. Einfacher geht es kaum ;-)

-> https://github.com/arendst/Tasmota

von Heinz R. (heijz)


Lesenswert?

Hallo Christian,

mit ESPEasy geht genau das was Du willst "Out of the box" , musst nur 
paar "Rules" anlegen

Muss es unbedingt MQTT sein? per HTTP Request wäre es noch einfacher, 
geht dann ganz ohne Rules

Ich denke das bekommst selber hin - aber wenn Du magst - schick mir eine 
Platine, oder besser schreib erst mal was DU ganz genau willst, welche 
MQTT Topics usw

von Christina A. (christina_a)


Lesenswert?

Ich hatte auf ein paar PNs geantwortet, jedoch keine Rückmeldung 
bekommen. Sie die PNs vielleicht nicht angekommen?

von Christina A. (christina_a)


Lesenswert?

Heinz R. schrieb:
> Muss es unbedingt MQTT sein? per HTTP Request wäre es noch einfacher,
> geht dann ganz ohne Rules

Nein, es muss nicht unbedingt MQTT sein, aber ein MQTT Client wäre schon 
super.

von Heinz R. (heijz)


Lesenswert?

Christina A. schrieb:
> Nein, es muss nicht unbedingt MQTT sein, aber ein MQTT Client wäre schon
> super.

Hast Du Dir ESPEasy mal angeschaut?  Musst DU wirklich das Rad neu 
erfinden?

MQTT geht da auch...

von Stefan F. (Gast)


Lesenswert?

Christina A. schrieb:
> Es handelt sich um ein PCB auf dem sich ein ESP8266 befindet.

Oh toll, das wollte ich schon immer mal haben. All die Boards von 
Amazon, Ebay, AliExpress, Conrad, ... können gar nichts. Endlich bietet 
sich die Chance, irgend etwas zu bekommen, das irgend etwas tut.

Ich bin ganz aus dem Häuschen, wo muss ich unterschreiben?

Spaß beiseite: Schicke mir die Platine und die Anforderungen 
schriftlich. Ich nehme 20 Euro die Stunde, unter 200€ wird es wohl 
nichts.

von Christina A. (christina_a)


Lesenswert?

Nein,

es ist ein von mir konzipiertes Board. Die Ringkerntrafos wurde speziell 
gewickelt und und und...

Aber passt schon ;)

von Christina A. (christina_a)


Lesenswert?

So,

ich habe mich dann mal dadurch gekämpft und "eigentlich" ist es doch, 
relativ einfach.

Ich hatte erst die ganzen Examples probiert. Diese liefen auch zum 
"teil".

Nach ein paar Anpassungen habe ich es dann Stück für Stück hinbekommen, 
zumindest schon einmal ein wenig.

Hier mal der Code
1
#include <NeoPixelBus.h>
2
#include <NeoPixelAnimator.h>
3
#include <NeoPixelSegmentBus.h>
4
5
#include <ESP8266WebServer.h>
6
#include <WiFiManager.h>         
7
#include <PubSubClient.h>
8
9
#include <Adafruit_NeoPixel.h>
10
#ifdef __AVR__
11
 #include <avr/power.h> // Required for 16 MHz Adafruit Trinket
12
#endif
13
14
#define WS28PIN    D6
15
16
#define WS28NUMPIXELS 10
17
18
Adafruit_NeoPixel strip = Adafruit_NeoPixel(WS28NUMPIXELS, WS28PIN, NEO_GRB + NEO_KHZ800);
19
20
ESP8266WebServer server(3993);
21
WiFiManager wm;
22
23
#define PIN_RESET_BUTTON 4
24
25
int RESET = 0; 
26
27
void handle_root();
28
29
void setup() {
30
    Serial.begin(115200);
31
    pinMode(PIN_RESET_BUTTON, INPUT);
32
    wm.autoConnect("LEDSky", "12345");
33
34
    Serial.println("ESP8266 is connected to Wi-Fi network");
35
    Serial.println("Start WS2812");
36
    strip.begin();           // INITIALIZE NeoPixel strip object (REQUIRED)
37
    Serial.println("WS2812 started");
38
39
    server.on("/", handle_root);
40
    server.on("/ledOn", handleLEDon);
41
    server.on("/ledOff", handleLEDoff);
42
    server.on("/ws2812", handleWS2812);
43
    server.on("/ws2812Off", ws2812Off);
44
    server.on("/ws2812All", ws2812All);
45
    server.begin();
46
    Serial.println("HTTP server started");
47
    
48
    delay(100); 
49
}
50
51
void loop() {
52
  
53
    server.handleClient();
54
    
55
    RESET = digitalRead(PIN_RESET_BUTTON);
56
    if( RESET == HIGH) {                                 
57
      //Serial.println("Erase settings and restart ...");
58
      //delay(1000);
59
      //wm.resetSettings();  
60
      //ESP.restart();  
61
    }
62
}
63
64
void setColor(int led, int redValue, int greenValue, int blueValue, int delayValue)
65
{
66
  strip.setPixelColor(led, strip.Color(redValue, greenValue, blueValue)); 
67
  strip.show();
68
}
69
70
void handleWS2812() {
71
72
  int lnum = server.arg("NUM").toInt();
73
  int rval = server.arg("R").toInt();
74
  int gval = server.arg("G").toInt();
75
  int bval = server.arg("B").toInt();
76
77
  if ( lnum > 0 && lnum <= WS28NUMPIXELS )
78
    {
79
      if (rval >= 0 && rval <= 255 && gval >= 0 && gval <= 255 && bval >= 0 && bval <= 255) {
80
        setColor((lnum - 1), rval, gval, bval, 100);
81
        server.send(200, "text/html", "OK");
82
      } else {
83
        server.send(200, "text/html", "Error");
84
      }
85
    } else {
86
      server.send(200, "text/html", "Error");
87
    }
88
}
89
90
void ws2812Off() {
91
  for (int i = 0; i < WS28NUMPIXELS; i++) {
92
    strip.setPixelColor(i, strip.Color(0, 0, 0)); 
93
  }
94
  strip.show();
95
  server.send(200, "text/html", "OK");
96
  Serial.println("Set all WS2812B Off");
97
}
98
99
void ws2812All() {
100
101
  int rval = server.arg("R").toInt();
102
  int gval = server.arg("G").toInt();
103
  int bval = server.arg("B").toInt();
104
105
      if (rval >= 0 && rval <= 255 && gval >= 0 && gval <= 255 && bval >= 0 && bval <= 255) {
106
        
107
        for (int i = 0; i < WS28NUMPIXELS; i++) {
108
          strip.setPixelColor(i, strip.Color(rval, gval, bval)); 
109
        }
110
        strip.show();
111
        server.send(200, "text/html", "OK");
112
        Serial.println("Set all WS2812B LEDs finish");
113
        
114
      } else {
115
        
116
        server.send(200, "text/html", "Error");
117
        Serial.println("Set all WS2812B LEDs error");
118
        
119
      }
120
}
121
122
void handleLEDon() { 
123
 Serial.println("LED on page");
124
 //digitalWrite(LED,LOW); //LED is connected in reverse
125
 server.send(200, "text/html", "LED is ON"); //Send ADC value only to client ajax request
126
}
127
128
void handleLEDoff() { 
129
 Serial.println("LED off page");
130
 //digitalWrite(LED,HIGH); //LED off
131
 server.send(200, "text/html", "LED is OFF"); //Send ADC value only to client ajax request
132
}
133
134
135
// Handle root url (/)
136
void handle_root() {
137
  server.send(200, "text/html", "All ok");
138
}

Ist noch ohne MQTT, funktioniert jedoch bisher.

Bisher kann ich einzelne WS2812 LEDs ansteuern oder alle gleichfarbig.

Wie kann man nun "Effekte" erzielen? Ein Farbdurchlauf, Regenbogen, 
"Sterneneffekt" und so etwas?

Vielen Dank

von Jan L. (ranzcopter)


Lesenswert?

Christina A. schrieb:
> Wie kann man nun "Effekte" erzielen? Ein Farbdurchlauf, Regenbogen,
> "Sterneneffekt" und so etwas?

so: https://github.com/Aircoookie/WLED

entweder abgucken, oder einfach gleich so benutzen... :)

von kenny (Gast)


Lesenswert?

Christina A. schrieb:
> Wie kann man nun "Effekte" erzielen? Ein Farbdurchlauf, Regenbogen,
> "Sterneneffekt" und so etwas?

Schau Dir einfach mal diverse Arduino Libraries an.
Dort werden solche Effekte bereits genutzt (zb Color Wheel, 
Rainbow,...).

von Christina A. (christina_a)


Lesenswert?

Ok....

und wer suchet, der findet...

https://adrianotiger.github.io/Neopixel-Effect-Generator/

von Christoph (Gast)


Lesenswert?

Aus welcher Gegend kommst Du denn? Dein Name (Vorname und Initiale vom 
Nachnamen) und das Thema Software kommen mir aus meiner Schulzeit etwas 
bekannt vor

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.