das günstige
ESP32 4-Kanal Relais Modul Binghe ESP32-WROOM Relais Entwicklungsplatinen mit WiFi Bluetooth BLE AC220W/DC5-30V Stromversorgung Für DIY-Programmierprojekte(LC-Relay-ESP32-4R-A2)
scheint einen Fehler zu haben:
ein Relais 3 wird über GPIO 25 angesteuert.
Sobald ich den ESP32 als Accesspoint nutze, rattert dieses Relais los. Meine Vermutung ist dass GPIO 25 etwas mit dem Antennensignalausgang zu tun hat.
Bisher sehe ich als einzige Lösung, den Widerstand vor dem Treibertransistor abzulöten, und einen externen Widerstand anzulöten, der an einen anderen GPIO angeschlossen wird.
Mit diesem Programm habe ich es getestet:
1
2
#include <WebServer.h>
3
#include <WiFi.h>
4
5
const char* ssid = "Boiler_Unit";
6
const char* pass = "blahblahblahblah";
7
8
IPAddress ip(192,168,4,1);
9
IPAddress gateway(192,168,4,1);
10
IPAddress subnet(255,255,255,0);
11
12
WebServer boiler(80);
13
14
void setup() {
15
// set the digital pin as output:
16
pinMode(25, OUTPUT);
17
pinMode(26, OUTPUT);
18
pinMode(32, OUTPUT);
19
pinMode(33, OUTPUT);
20
21
WiFi.softAPConfig(ip, gateway, subnet);
22
WiFi.softAP(ssid, pass);
23
24
} // setup
25
26
27
void loop() {
28
29
digitalWrite (25, HIGH);
30
delay (1000);
31
digitalWrite (26, HIGH);
32
delay (1000);
33
digitalWrite (32, HIGH);
34
delay (1000);
35
digitalWrite (33, HIGH);
36
delay (1000);
37
digitalWrite (25, LOW);
38
digitalWrite (26, LOW);
39
digitalWrite (32, LOW);
40
digitalWrite (33, LOW);
41
delay (1000);
42
43
} // loop
Sobald ich in 'setup' die beiden mit Wifi beginnenden Zeilen auskommentiere schaltet es normal.
Das Board ist an sich super, ich würde zwar nicht die 220V Versorgung nutzen, da ich kein passendes Gehäuse gefunden habe, aber für Hobby aufgaben ist es durchaus brauchbar.
Hat jemand eine bessere Idee als das Umlöten, oder habe ich irgendeinen Fehler gemacht?
Das hat zwar mit Deinem Relaisthema nichts zu tun, aber das ist kaputt.
ich hatte mir zuvor eine Lochrasterplatine mit dem gleichen ESP32 WROOM V1.1 aber einem Development Board und mit wire wrap Technik gebaut und dabei andere GPIOs für ein 4-fach Solid State Relais genutzt, und das Programm funktioniert einwandfrei. Der gezeigte Code ist stark vereinfacht und gekürzt, ich nutze auch kein delay() dort, aber der Access point funktioniert dort einwandfrei, mit Gateway ...4.1 aber auch mit Gateway ...4.0. Spielt anscheinend keine Rolle. Das gezeigte Programm hatte ich lediglich geschrieben, um den Fehler genau zu lokalisieren.
Gewähltes Board ist:
// tested on ESP32-WROOM_2_DA
Wenn das Ding mit Deinem heimischen WLAN verbunden werden soll, /und/ Du ein Gatewas ("Router") nutzen möchstest, dann muss das die IP-Adresse Deines Routers sein. Und mit .0 endet keine gültige /24-IP-Addresse.
Darüber lässt sich vortrefflich streiten. Man kann durchaus die (eher theoretische) "Netzwerkadresse" einem Host zuweisen. Das funktioniert ohne Probleme.
Aber das ist offtopic hier. Wenn Du darüber diskutieren möchtest, öffne bitte einen neuen Thread.
Die Gateway-Adresse muss in demselben Netz wie die eigene Adresse liegen. Da die Host-Adresse des ESP 192.168.4.1 lautet, muss das Gateway 192.168.4.x lauten - x zwischen 0 und 254. Legst Du die Gateway-Adresse auf die eigene Host-Adresse (also 192.168.4.1) ist das nicht unbedingt verkehrt. Dein ESP kann dann halt keinen Router erreichen, um aus seinem Netz herauszukommen. Nicht schlimm, da Dein ESP ja wohl ein Accesspoint sein soll - ohne Internet-Anschluss. Setze also die Gateway-Adresse auf 192.168.4.1, wenn das ein "geschlossenes" Netz sein soll.
Wenn das Ding mit Deinem heimischen WLAN verbunden werden soll, /und/ Du
ein Gatewas ("Router") nutzen möchstest, dann muss das die IP-Adresse
Deines Routers sein. Und mit .0 endet keine gültige /24-IP-Addresse.
Auch wenn das voll am Thema vorbei geht:
ich will mich nicht mit dem heimischen WLAN verbinden!
mit einem Tablet kann ich mich dann mit dem ESP32 verbinden und Parameter verändern, oder in den manuell Modus wechseln und Ventile oder Heizpatronen ein und ausschalten.
aktiviere ich WLAN rattert das Relais, deaktiviere ich es tut es das, was ich mittels digitalWrite programmiert habe.
Aber danke für den Schaltplan, bringt mich auf die Idee es mal mit einem Development board und Relaismodul auszuprobieren.
Andere Idee: Das Netzteil ist vielleicht zu schwach.
Im WLAN-Betrieb benötigt der ESP sicher mehr Strom als ohne. Zusammen mit dem Relais, welches auch noch Strom zieht, könnte es dazu führen, dass die Spannung soweit zusammenbricht, dass entweder das Relais abfällt oder gar der ESP resettet.
Keine Ahnung, ob das zutrifft. Aber über die verwendete Stromversorgung wurde noch nichts erzählt.
Wie sieht deine Stromversorgung aus? Versorgst du das Relaisboard am 5V
anschluss mit langen dünnen litzen oder "Dupont" Kabeln aus
eisenhäärchen?
Wie gesagt wenn ich die WiFi Funktion nicht nehme funktioniert alles optimal.
Ich habe es auch mit nur einem Relais probiert, das Ergebnis ist dasselbe.
Nun habe ich ESP32 WROOM Development Board mit einem Relais verbunden und dasselbe Programm ausprobiert. Das Relais habe ich natürlich an Ausgang 26 angesteckt. Das Relais klappert, siehe Video.
Wenn ich GPIO 26 anstatt GPIO 25 nehme schaltet es wie programmiert.
Wenn ich die WLAN Funktion auskommentiere funktioniert es ebenso.
Wie ihr auf dem Video seht, ist das jetzt ein simpler ESP32 WROOM clone, der genau dieselbe Macke hat.
Aufbau seht ihr im Video, das 4 Relais Board habe ich benutzt wie es ist.
Spannungsversorgung kann es nicht sein, sie ist stabil 5V, welche ich an dem erforderlichen Eingang angelegt habe. 3,3V wir generiert.
Die Stromversorgung ist stabil, und nicht das Problem
"Note: ADC2 pins cannot be used when Wi-Fi is used. So, if you’re using Wi-Fi and you’re having trouble getting the value from an ADC2 GPIO, you may consider using an ADC1 GPIO instead. That should solve your problem."
Aber auf dem 4-relais board sind genau zwei dieser Ausgänge and GPIO ADC2 pins, nämlich 25 und 26.
Warum nur einer meckert ist natürlich auch nicht geklärt.
Versuche mit
dacDisable(25);
brachten keinerlei Verbesserung.
Bin wieder am Anfang, "Umlöten als einzige Lösung"
danke für den Hinweis, so würde es sicher auch gehen, allerdings habe ich es gerade schon anders gelöst.
Ich habe die Verbindung auf der Platine vom Mikrocontroller zum Headerpin leicht angebohrt. Dies mit einem 1 mm Bohrer den ich nur zwischen zwei Fingern gedreht habe, das ging ohne irgend einen Antrieb kinderleicht in weniger als einer Minute.
Dann habe ich am Headerpin den Anschluss GPIO25 mit GPIO 27, welcher gleich nebenan liegt per Brücke verbunden. Ich nutze also GPIO27 für das Relais.
Auf dem beigefügten Photo sieht man einen hellgrauen Fleck, der entstanden ist als ich die Platine mit dem 1mm Bohrer angebohrt habe.
Außerdem kann man auch die Brücke sehen ich auf die Headerpinleiste gesteckt habe, eventuell kann man auch auf der Rückseite die beiden Pins mit einem aufgelöteten Draht verbinden.