INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
mehrere ESP`s mit Strom versorgen?
30.12.2020, 21:04
Beitrag #1
mehrere ESP`s mit Strom versorgen?
Moin,

Ich habe bisher noch nie einen μController auf eine Platine gebracht.
Will dies aber demnächst mit zwei, oder sogar drei ESP32 (mit jeweils einer eigenen Funktion), zusammen auf einer Platine angehen...

Wie werden die am besten alle mit Strom versorgt? Bekommt jeder ESP32 ein USB Kabel mit Netzstecker, macht man das mit so einem 5/3.3V Stromversorgungsmodul für Breadboards oder wie geht man da am besten vor?

Ein paar Hinweise würde mir helfen...
schönen Abend noch, Danke.

bis dann,
Steinspiel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.12.2020, 21:16 (Dieser Beitrag wurde zuletzt bearbeitet: 30.12.2020 21:17 von Tommy56.)
Beitrag #2
RE: mehrere ESP`s mit Strom versorgen?
Eine leistungsfähige 3,3V-Versorgung (Drop Down Wandler) sollte alle 3 versorgen können.
Frage: Welche Aufgaben erfordern gleichzeitig 3 ESP32 und können nicht von einem erledigt werden?

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.12.2020, 22:41
Beitrag #3
RE: mehrere ESP`s mit Strom versorgen?
Moin,

(30.12.2020 21:16)Tommy56 schrieb:  Eine leistungsfähige 3,3V-Versorgung (Drop Down Wandler) sollte alle 3 versorgen können.

Du meinst so etwas hier?
https://www.amazon.de/AZDelivery-MT3608-...5774880314

Zitat:Frage: Welche Aufgaben erfordern gleichzeitig 3 ESP32 und können nicht von einem erledigt werden?

Naja, auf einen ESP32 läuft mein "Bluetooth ble Scanner" zur Präsenzerkennung. Der dortige Sketch verwendet 53% des Programmspeicherplatzes...
Mein neuer, fast fertiger ESP32 mit BME280 Modul braucht auch 53% wie ich gerade sehe. Sind auf jeden Fall ja schon mal über 100%...

Und wer weiß, vielleicht kriege ich ja noch irgendeine Anregung für eine dritte Sinnvolle Anwendung (Gehäusebeleuchtung, Display....), dachte ich....

bis dann,
Steinspiel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.12.2020, 22:54
Beitrag #4
RE: mehrere ESP`s mit Strom versorgen?
(30.12.2020 22:41)Steinspiel schrieb:  Du meinst so etwas hier?

Tommy schrieb etwas von einem Dropdown-Wandler. Der von dir gezeigte ist ein DropUp. Ich bevorzuge diese hier, die sind schön klein.

Zitat:Naja, auf einen ESP32 läuft mein "Bluetooth ble Scanner" zur Präsenzerkennung. Der dortige Sketch verwendet 53% des Programmspeicherplatzes...
Mein neuer, fast fertiger ESP32 mit BME280 Modul braucht auch 53% wie ich gerade sehe. Sind auf jeden Fall ja schon mal über 100%...

Das erschein mir sehr viel, da ist an deinem Sketch irgend etwas faul bzw. verbesserungswürdig.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.12.2020, 23:06
Beitrag #5
RE: mehrere ESP`s mit Strom versorgen?
(30.12.2020 22:54)hotsystems schrieb:  Tommy schrieb etwas von einem Dropdown-Wandler. Der von dir gezeigte ist ein DropUp.

Ich habe wohl zwischenzeitlich was ähnliches und ich glaube auch richtiges gefunden
https://www.amazon.de/dp/B089QJM8KQ?pd_r...ac3d75b730

Zitat:Das erschein mir sehr viel, da ist an deinem Sketch irgend etwas faul bzw. verbesserungswürdig.

Naja, die Sketches habe ich "irgendwo" geladen und etwas angepasst. Ich habe gelesen das beim Compilieren Leerzeilen / Kommentare weggelassen werden...
Mein "BME280" Sketch sind 4728 Zeichen (ohne Leerzeichen) in 580 Wörtern, ist das viel? Oder zählen noch anderen Dinge als die bloße Zeichenanzahl (Speicherreservierungen, wenn es so etwas gibt) zur Programmgröße?

bis dann,
Steinspiel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.12.2020, 23:09
Beitrag #6
RE: mehrere ESP`s mit Strom versorgen?
(30.12.2020 22:41)Steinspiel schrieb:  Naja, auf einen ESP32 läuft mein "Bluetooth ble Scanner" zur Präsenzerkennung. Der dortige Sketch verwendet 53% des Programmspeicherplatzes...
Mein neuer, fast fertiger ESP32 mit BME280 Modul braucht auch 53% wie ich gerade sehe. Sind auf jeden Fall ja schon mal über 100%...

Moin Steinspiel,
mir war das auch bei dem BLE-Scanner aufgefallen, als ich den umgebaut habe, dass der recht groß war.
Ich würde an Deiner Stelle mal versuchen, den BME280 beim Scanner mit einzubauen. Ich vermute mal, dass die großen Anteile bei beiden Programmen die gleichen sind. Ansonsten kannst Du auch mal unter Werkzeuge-->Partition Scheme--> Huge App auswählen, wenn Du auf OTA verzichten kannst.
Gruß Jan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.12.2020, 23:15
Beitrag #7
RE: mehrere ESP`s mit Strom versorgen?
(30.12.2020 23:06)Steinspiel schrieb:  Ich habe wohl zwischenzeitlich was ähnliches und ich glaube auch richtiges gefunden
Ja, der funktioniert auch, wäre mir aber zu groß.

Zitat:Naja, die Sketches habe ich "irgendwo" geladen und etwas angepasst. Ich habe gelesen das beim Compilieren Leerzeilen / Kommentare weggelassen werden...
Mein "BME280" Sketch sind 4728 Zeichen (ohne Leerzeichen) in 580 Wörtern, ist das viel? Oder zählen noch anderen Dinge als die bloße Zeichenanzahl (Speicherreservierungen, wenn es so etwas gibt) zur Programmgröße?
Es zählen nicht die Zeichen und Worte deines Sketches, sonder das was der Kompiler daraus in der für den Controller verständlichen Sprache (Maschinensprache) macht.
Und das ist sicher bei deinen Sketchen verbesserungswürdig.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.12.2020, 00:03
Beitrag #8
RE: mehrere ESP`s mit Strom versorgen?
Moin,
(30.12.2020 23:15)hotsystems schrieb:  Ja, der funktioniert auch, wäre mir aber zu groß.

Also das Teil was Du vorgeschlagen hast bedeutet: eine 12V DC Buchse wird an den Wandler gelötet um ein 12V Netzteil dort an zu schließen. Dann vom Wandler zu GND und 3.3 Pins der einzelnen ESP`s. Richtig?

Zitat:Es zählen nicht die Zeichen und Worte deines Sketches, sonder das was der Kompiler daraus in der für den Controller verständlichen Sprache
[...]

Und das kann man, durch ein "vernünftiges" erstellen des Codes, beeinflussen, denke ich, oder?

Nicht falsch verstehen, Du sollst Dir keine Arbeit > als 1 min machen, aber vielleicht könntest Du einmal drüber schauen und kannst vielleicht auf den ersten Blick feststellen ob der Code hier verbesserungswürdig ist ?

Ist "einfach nur"
- Verbindung mit WIFI und MQTT
- bei Abbruch erneuter Verbindungsversuch
- auslesen von Druck, Feuchtigkeit und Temperatur in unterschiedlichen Intervallen
- das anschließende publishen der Daten in je einem MQTT Topic
- bei jeden auslesen wird, je nach Abfrage, eine farbige LED für 1 sek geschaltet
- Besonderheit: durch einen MQTT Subscribe Topic kann die blaue LED "von außen" geschaltet werden.

Ich hänge das mal einfach mit dran...

Code:
/*********
  Rui Santos
  Complete project details at https://randomnerdtutorials.com  
  https://randomnerdtutorials.com/esp32-mqtt-publish-subscribe-arduino-ide/
*********/

#include <WiFi.h>
#include <PubSubClient.h>
#include <Wire.h>
#include <Adafruit_BME280.h>
#include <Adafruit_Sensor.h>

const char* ssid = "der_router";
const char* password = "geheim_1";
const char* mqtt_server = "192.168.xxx.xx";
const int mqttPort = 1883;
const char* mqttUser = "geheim_2";
const char* mqttPassword = "geheim_3";

WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg_temperatur = 0;
long lastMsg_humidity = 0;
long lastMsg_pressure = 0;
char msg[50];
int value = 0;

Adafruit_BME280 bme; // I2C
float temperature = 0;
float humidity = 0;
float pressure = 0;

// LED Pin
const int ledPin_rot = 4;
const int ledPin_gruen = 0;
const int ledPin_gelb = 2;
const int ledPin_blau = 19;

void setup() {
  Serial.begin(115200);
  if (!bme.begin(0x76)) {
    Serial.println("keinen aktiven BME280 Sensor, Verkabelung prüfen!");
    while (1);
  }

  setup_wifi(); // WIFI verbinden (extra Abschnitt)
  client.setServer(mqtt_server, 1883);  //MQTT verbinden (extra Abschnitt)
  client.setCallback(callback); //MQTT eingehender Topic (extra Abschnitt)

    pinMode(ledPin_rot, OUTPUT);
    pinMode(ledPin_gruen, OUTPUT);
    pinMode(ledPin_gelb, OUTPUT);
    pinMode(ledPin_blau, OUTPUT);
}
  //----------------WIFI Verbindung Anfang--------------
void setup_wifi() {
  delay(10);
  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");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}
  //----------------WIFI Verbindung Ende--------------

  //----------------MQTT eingehender Topic Anfang--------------
void callback(char* topic, byte* message, unsigned int length) {
  Serial.print("Message arrived on topic: ");
  Serial.print(topic);
  Serial.print(". Message: ");
  String messageTemp;
  
  for (int i = 0; i < length; i++) {
    Serial.print((char)message[i]);
    messageTemp += (char)message[i];
  }
  Serial.println();

  // Feel free to add more if statements to control more GPIOs with MQTT
  // If a message is received on the topic esp32/output, you check if the message is either "on" or "off".
  // Changes the output state according to the message
  if (String(topic) == "esp32/output") {
    Serial.print("Changing output to ");
    if(messageTemp == "on"){
      Serial.println("on");
      digitalWrite(ledPin_blau, HIGH);
    }
    else if(messageTemp == "off"){
      Serial.println("off");
      digitalWrite(ledPin_blau, LOW);
    }
  }
}
//----------------MQTT eingehender Topic Ende--------------

//----------------MQTT bei Bedarf erneute Verbindung Anfang--------------

void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Attempt to connect
    if (client.connect("ESP32Client", mqttUser, mqttPassword)) {
      Serial.println("connected");
      // Subscribe
      client.subscribe("esp32/output");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  }
}
  //----------------MQTT bei Bedarf erneute Verbindung Ende--------------
  //---------------------------------------------------------------------

void loop() {
  if (!client.connected()) {
    reconnect();
  }
  client.loop();
  //---------------Temperaturmessung Intervall + Ampel LED schalten---------------------------

  long now_temp = millis();
  if (now_temp - lastMsg_temperatur > 60000) {   // jede 1 Minuten (= 60 Sekunden)
    lastMsg_temperatur = now_temp;
    
    temperature = bme.readTemperature();  

    // Convert the value to a char array
    char tempString[8];
    dtostrf(temperature, 1, 2, tempString);
    Serial.print("Temperature: ");
    Serial.println(tempString);
    client.publish("kueche/bme280/temperature", tempString);

      digitalWrite(ledPin_rot, HIGH);   // sets the LED on
      delay(1000);                      // waits for a second
      digitalWrite(ledPin_rot, LOW);    // sets the LED off

  }    
  
  //---------------Luftfeuchtigkeitsmessung Intervall + Ampel LED schalten---------------------------
  
  long now_hum = millis();
  if (now_hum - lastMsg_humidity > 600000) {   // alle 10 Minuten (= 600 Sekunden)
    lastMsg_humidity = now_hum;  

    humidity = bme.readHumidity();
    
    // Convert the value to a char array
    char humString[8];
    dtostrf(humidity, 1, 2, humString);
    Serial.print("Humidity: ");
    Serial.println(humString);
    client.publish("kueche/bme280/humidity", humString);

      digitalWrite(ledPin_gruen, HIGH);     // sets the LED on
      delay(1000);                          // waits for a second
      digitalWrite(ledPin_gruen, LOW);      // sets the LED off  
  }    

  //---------------Luftdruckmessung Intervall + Ampel LED schalten---------------------------
    long now_press = millis();
    if (now_press - lastMsg_pressure > 900000) {   // alle 15 Minute (= 900 Sekunden)
    lastMsg_pressure = now_press;

    pressure = bme.readPressure ()/ 100.0;    // wegen Kommastelle: durch 100 teilen

    // Convert the value to a char array
    char presString[6];
    dtostrf(pressure, 1, 2, presString);
    Serial.print("Pressure: ");
    Serial.println(presString);
    client.publish("kueche/bme280/pressure", presString);

      digitalWrite(ledPin_gelb, HIGH);    // sets the LED on
      delay(1000);                        // waits for a second
      digitalWrite(ledPin_gelb, LOW);     // sets the LED off      
  }
}


//--------------------------------------------------------------------

bis dann,
Steinspiel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Mehrere EthernetClients/WiFiClients in verschiedenen Tasks? miq19 15 2.066 07.10.2020 18:15
Letzter Beitrag: Tommy56
  ESP32 Cam mehrere Clients nbk83 3 2.013 29.04.2020 21:22
Letzter Beitrag: nbk83
  Strom sparen bei ESPs im Batteriebetrieb ardu_arne 0 1.172 11.12.2019 20:47
Letzter Beitrag: ardu_arne
  Begrenzung 2048 Bytes: Wie mehrere Pakete? GuaAck 10 5.002 06.02.2018 17:12
Letzter Beitrag: GuaAck

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste