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?
31.12.2020, 00:12
Beitrag #9
RE: mehrere ESP`s mit Strom versorgen?
(30.12.2020 23:09)nbk83 schrieb:  Ansonsten kannst Du auch mal unter Werkzeuge-->Partition Scheme--> Huge App auswählen, wenn Du auf OTA verzichten kannst.

Das sind schon mal nur noch 22% und es läuft! Smile
Was bedeutet diese Einstellung beim Compilieren?

bis dann,
Steinspiel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.12.2020, 08:28
Beitrag #10
RE: mehrere ESP`s mit Strom versorgen?
Hallo,

(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%...

Dann zieh mal die 50% ab, die der ESP32 für den ganzen internen Kram belegt werden. Die kommen schließlich nur einmal vor. Dann belegen Deine Sketche jeweils 3%, also 6% plus 50% die ESP32 Sachen macht 56%. Klingt erstmal völlig realistisch.

"Webradio", also WLAN, Streamroutinen, Software MP3 Decoder, Touchdisplay, SD-Cardroutinen, analoge Uhranzeige, OTA usw. belegen hier 81% des Flash bei Standardeinstellung. HugeApp habe ich nur bei einer CAM32 App mal gebraucht.

Bedenke auch, daß mehrere ESP32 in unmittelbarer Nähe sich sicher gut gegenseitig auf 2,4GHz stören könnten, ist schlicßelich Funk.

Gruß aus Berlin
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.12.2020, 11:08 (Dieser Beitrag wurde zuletzt bearbeitet: 31.12.2020 11:09 von hotsystems.)
Beitrag #11
RE: mehrere ESP`s mit Strom versorgen?
(31.12.2020 00:03)Steinspiel schrieb:  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?

Ja, grundsätzlich gilt das für fast alle Stepdown-Regler.
Optimal ist es, wenn du noch ein paar kleine (47 - 100µF) Elkos am Eingang und Ausgang anbaust. Dazu bitte jeweils das datenblatt des Reglers lesen.

Den Rest hast du ja schon am Laufen, wie ich lese.

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, 13:18
Beitrag #12
RE: mehrere ESP`s mit Strom versorgen?
(31.12.2020 08:28)amithlon schrieb:  Dann zieh mal die 50% ab, die der ESP32 für den ganzen internen Kram belegt werden.
[...]
"Webradio", also WLAN, Streamroutinen, Software MP3 Decoder, Touchdisplay, SD-Cardroutinen, analoge Uhranzeige, OTA usw. belegen hier 81% des Flash bei Standardeinstellung. HugeApp habe ich nur bei einer CAM32 App mal gebraucht.

Bis gestern Abend wußte ich noch gar nichts von den verschiedenen Partitionierungen. Habe jetzt etwas probiert, mit "HugeAPP" erziele ich für mein "Bluetooth" Sketch die besten Ergebnisse (46%). Aber ich muß mich dazu noch etwas belesen, ich weiß noch nicht so recht was das alels bedeutet.

Zitat:Bedenke auch, daß mehrere ESP32 in unmittelbarer Nähe sich sicher gut gegenseitig auf 2,4GHz stören könnten, ist schlicßelich Funk.

So etwas hatte ich noch gar nicht auf den Zettel! :-(
Gut das Du es erwähnst!

Die "ganze Materie" ist doch recht komplex... ;-)

Ich werde versuchen meine Sketches zusammen zu legen und werde dann berichten.

Danke und einen guten Rutsch...

bis dann,
Steinspiel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.12.2020, 13:25
Beitrag #13
RE: mehrere ESP`s mit Strom versorgen?
Moin,
(31.12.2020 11:08)hotsystems schrieb:  Ja, grundsätzlich gilt das für fast alle Stepdown-Regler.
Optimal ist es, wenn du noch ein paar kleine (47 - 100µF) Elkos am Eingang und Ausgang anbaust.
[...]

Ich werde es probieren...
Ihr werdet sicher jetzt die Augen verdrehen ;-) aber ich hätte "vorher" nicht gedacht das man so viel mit Elektrik zu tun hat! Sicherheitshalber habe ich mir erst mal ein Multimeter geordert...

Zitat:Den Rest hast du ja schon am Laufen, wie ich lese.

Wie oben erwähnt, ich packe die jetzt zusammen und lerne...! Wink

Dieter, Dir auch einen guten Rutsch ins neue Jahr...

bis dann,
Steinspiel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.12.2020, 13:54
Beitrag #14
RE: mehrere ESP`s mit Strom versorgen?
Alles klar, danke dir auch.
Und mit dem Multimeter ist schon eine gute Sache.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.01.2021, 16:47 (Dieser Beitrag wurde zuletzt bearbeitet: 01.01.2021 19:38 von Steinspiel.)
Beitrag #15
RE: mehrere ESP`s mit Strom versorgen?
Moin Jan,

Erst mal ein frohes neues Jahr an alle hier...!

(30.12.2020 23:09)nbk83 schrieb:  [...]
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

Ich habe mich dran gemacht: sowohl versucht das "BTE Scan Sketch" in das "BME280 Sketch" ein zu fügen wie auch umgekeht. Beim compilieren gab es bei beiden Fehlermeldungen, aber am weitesten bin ich damit gekommen die IMO "relevanten" "BTE Scan Sketch" Abschnitte in das "BME280 Sketch" einzufügen.

- WIFI funktioniert,
- MQTT funktioniert (teilweise)
- der BTE Scanner schreibt gefundene MAC Adressen / Signalstärken in den seriellen Monitor
- das BME280 Modul schreibt Temperatur/Druck/Feuchte in den seriellen Monitor
- das BME280 Modul publisht Temperatur/Druck/Feuchte zum MQTT Server

[Bild: ez49YX6.png]

[Bild: s96dk6S.png]

Knackpunkt ist wohl das veröffentlichen der JSON Nachricht per MQTT !
In dem betreffenden Abschnitt (Zeile 172) steht

Code:
mqtt.publish(MQTT_scantopic, (char*) NachrichtJSON.c_str());

obwohl "MQTT_scantopic" oben definiert ist, bekomme ich die Fehlermeldung

Code:
" exit status 1'mqtt' was not declared in this scope"
,

Das Problem scheint wohl "mqtt" zu sein, nur wo soll ich das definieren? Im orgianlen Sketch lässt sich auch nichts dazu finden!
Also habe ich diese Zeile auskommatiert und durch

Code:
client.publish("test/bte/scan", (char*) NachrichtJSON.c_str());

ersetzt (Temperatur/Druck/Feuchte werden ja auch so publisht!) Aber es funktioniert natürlich nicht und ich denke es liegt daran das im "BME280 Sketch" die MQTT Zugangsdaten mit

Code:
const char* mqtt_server = "192.168.xxx.xx";
const int mqttPort = 1883;


deklariert sind und im "BTE Scan Sketch" mit
Code:
#define MQTT_server "192.168.xxx.xx"
#define MQTT_port 1883

Das wird sicher auch der Grund für dei Fehlermeldungen sein wenn ich versuche die Sketche in die umgekehrte Richtung zusammen zu fügen.

Ich habe in meinem schlauen Arduino Buch nichts dazu finden können, wo liegt der Unterschied? Oder warum macht "man" das unterschiedlich?Huh

Mir ist noch was aufgefallen: in dem "BME280 Sketch" gibt es einen LED Pin (const int ledPin_blau = 19) der sich per MQTT Subscribe AN und AUS schalten lässt. Das funktioniert auch gut. In der "zusammen gelegten Verion" ist es aber so das, wenn ich in Node-Red den Switch schalte dieser auch augenblicklich in MQTT.fx angezeit wird, es aber bis zum reagierender LED auf dem ESP32 bestimmt zwei,drei Sekunden dauert. Das ganze ist erst mal nebensächlich, ich wollte es nur erwähnt haben...

Könntest Du noch einmal bei Gelegenheit für mich drüber schauen? Ich weiß noch nicht wie ich das gelöst kriegen könnte...

Oh, ich merke gerade das ist ja ein richtig langer Text geworde ... Danke erst einmal fürs lesen bis hierher...Wink

Code:
/*********
  orginal BME280 Sketch, mit eingefügten Teilen des BTE Scan Sketches
  
  Complete project details at https://randomnerdtutorials.com  
  https://randomnerdtutorials.com/esp32-mqtt-publish-subscribe-arduino-ide/
*********/

#include <WiFi.h>

#include <WiFiClient.h>           // <------Aus-BTE-Sketch-eingefügt-----

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

#include <BLEDevice.h>                  // <------Aus-BTE-Sketch-eingefügt-----      
#include <BLEScan.h>                    // <------Aus-BTE-Sketch-eingefügt-----
#include <BLEAddress.h>                 // <------Aus-BTE-Sketch-eingefügt-----

#define MQTT_scantopic "test/bte/scan"  // <------Aus-BTE-Sketch-eingefügt-----

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

int scanTime = 8; // Suchzeit      // <------Aus-BTE-Sketch-eingefügt-----
BLEScan* pBLEScan;                 // <------Aus-BTE-Sketch-eingefügt-----

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());

  Serial.println("Starte BLE Scanner");   // <------Aus-BTE-Sketch-eingefügt-----
  BLEDevice::init("");                    // <------Aus-BTE-Sketch-eingefügt-----
  pBLEScan = BLEDevice::getScan();        // <------Aus-BTE-Sketch-eingefügt-----
  pBLEScan->setActiveScan(true);          // <------Aus-BTE-Sketch-eingefügt-----
  pBLEScan->setInterval(100);             // <------Aus-BTE-Sketch-eingefügt-----  
  pBLEScan->setWindow(99);                // <------Aus-BTE-Sketch-eingefügt-----
}
  //----------------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();

//
// ---------------JSON-TEIL-Aus-BTE-Sketch-eingefüg----------------------                                                                                      
//                                                                                                                                        
  int j;                                                                                                                                  
  String NachrichtJSON;                                                                                                                  
  BLEScanResults foundDevices = pBLEScan->start(scanTime); // BLE Scanen                                                                  
                                                                                                                                          
  NachrichtJSON = "{\r\n";     // JSON Format vorbereiten                                                                                
                                                                                                                                          
  for (j = 0; j < foundDevices.getCount(); j++) // Alle Gefundene Bluetooth Device durchgehen                                            
  {                                                                                                                                      
    NachrichtJSON = NachrichtJSON + "\"" + foundDevices.getDevice(j).getAddress().toString().c_str() + "\":";                            
    if (j != foundDevices.getCount() - 1)  NachrichtJSON = NachrichtJSON + String(foundDevices.getDevice(j).getRSSI()) + ",\r\n";        
    else NachrichtJSON = NachrichtJSON + String(foundDevices.getDevice(j).getRSSI()) + "\r\n}";                                          
  } // Alle gefundene MACs durchgehen                                                                                                    
  // diese "if" spührt das letzte Eintragung und beendet den json Datensatz                                                              
                                                                                                                                        
  pBLEScan->clearResults(); // Speicher freigeben                                                                                        
  //mqtt.publish(MQTT_scantopic, (char*) NachrichtJSON.c_str());   // <-- auskommatiert                                                                      
  client.publish("test/bte/scan", (char*) NachrichtJSON.c_str());  // <-- "von Hand" ersetzt                                                                      
                                                                                                                                        
  Serial.println(NachrichtJSON);                                                                                                        
//                                                                                                                                        
// ---------------JSON-TEIL-Aus-BTE-Sketch-eingefüg----------------------                                                                                      
//

  
  //---------------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
01.01.2021, 16:53
Beitrag #16
RE: mehrere ESP`s mit Strom versorgen?
Du solltest noch unterscheiden lernen zwischen quote und code. Das kannst Du auch nachträglich ändrn, dann ist Dein Code besser lesbar und wird nicht verfälscht.

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
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