ESP32 D1 Mini NodeMCU WiFi Modul + Bluetooth Internet

Hallo Community,

für den Roboter O++O OTTO Open Source Robot wollte ich den ESP32 D1 Mini NodeMCU WiFi Modul + Bluetooth Internet verwenden. Das Einrichten ging ganz gut. Es gibt im Web auch genug Tutorials.

Ich habe das Blink Beispiel ausprobiert und gestern abend das integrierte Bluetooth. Daten wurden von einer selbst geschriebenen APP (App Inventor) empfangen und im seriellen Monitor korrekt dargestellt. Also eigentlich alles schick.

Nun ist mir aufgefallen, dass das Kompilieren nervend lange dauert (im Vergleich zum Arduino Uno/Nano). Das Blink Beispiel braucht allein 19% Speicher und wenn man das einfachste Bluetooth Beispiel ausprobiert und die entsprechende Bibliothek (BluetoothSerial.h) einbindet, werden 82% des Speichers belegt. Beispiel wäre hier: So verwendest du Bluetooth am ESP32 (polluxlabs.net)

Nun ist mir schon klar, dass der ESP32 eine 32Bit Architektur hat und es ggf. auch gewissen Unterschiede in der Programmierung erfordert (Erste Schritte mit dem ESP32 Development Board (elektronik-kaufen.ch)), wenn aber zwei derart einfache Programme so viel Speicher verbrauchen, werde ich wohl das Gehäuse des Roboters modifizieren damit ich einen Nano verbauen kann (für das Ninja Modell ist eher ein ESP32 vorgesehen, aber ein Nano sollte auch möglich sein analog dem Humanoid Modell – nur hätte ich dann ein anderes Modell „3D-drucken“ (lassen) müssen).

Meine Frage an Euch wäre somit: ist das normal, dass ein derart hoher Speicherbedarf für einfachste Dinge besteht und wenn ja warum ist das so? Mache ich was falsch oder ist was bei der Installation schief gegangen? Ich hatte für meinen per Nano betriebenen und via App / Bluetooth gesteuerten Panzer auch schon einen ESP32 mit Cam (der sollte nur für Bildübertragung per WiFi sein). Das war ein totaler Reinfall. Scheinbar stehe ich mit diesen ESP MC‘ s auf Kriegsfuß. Ich habe letztlich alles auf echtes FPV (aus dem Modellbau 5,8GHz) umgebaut, was prima funktioniert und auch Bilder ohne Verzögerung bei entsprechender Qualität auf das Smartphone überträgt.

Wie steht ihr zum ESP32? Wie ist Eure Erfahrung damit? Eure Meinung ist mir wichtig. Ich bin durch die ersten Erkenntnisse leider verunsichert und tendiere zur Nutzung des Nano' s.

Danke vorab für Rückmeldungen.

Ich arbeite mittler weile nur mit ESP32 (fast alle Typen).
Ja das Kompilieren dauert etwas länger und der anfänglicher Speicher ist auch schon belegt. Ohne Sketch ist 230485 Bytes (17%) des Programmspeicherplatzes belegt so wie 20968 Bytes (6%) RAM belegt. Was aber noch nie bei mir eine rolle gespielt hat.
Vergleiche mall den Speicher eines ATmega328 mit dem vom ESP32.
Wen es ein ESP vorgesehen ist, musst schauen ob dir der mickriger Speicher vom NanoR3 reicht.

1 Like

Danke für deine Rückmeldung. Wenn du den häufig einsetzt, zerstreut das meine Bedenken etwas. Ich probiere das mit dem Nano mal aus. Es gibt von dem Roboter ja auch Versionen, die den Nano verwenden. Sicherlich hat man mit dem ESP32 mehr Optionen...

Das Geschäftsgebaren des von Dir verlinkten Anbieters sehe ich mittlerweile kritisch. Meine letzten Projekte enthielten alle den ESP32.

Bei ATtiny85 und UNO/Nano/ProMini habe ich immer auf den Speicherbedarf geachtet, beim ESP32 eher nicht, daher fehlen mir Zahlen. Da der ESP32 viel mehr kann, ist er viel komplizierter aufgebaut, was auch die Antworten auf "wieso, weshalb, warum" viel schwieriger macht.

Persönlich würde ich mich freuen, wenn Du dem Forum als ESP32-Interessierter erhalten bliebst, weil mich beispielsweise App Inventor interessieren würde. Bisher habe ich stattdessen HTML-Dateien verwendet.

Soweit meine Meinung :slightly_smiling_face:

1 Like

Danke für Deine Antwort und auch in der Bestätigung (wie dein Vorredner) das diese Art von MC' s wohl doch ganz gut ist :wink: Der verlinkte Anbieter war Zufall. Ich wollte einfach nur auf exakt meine Version des MC' s verweisen. Ich komme mit den vielen Bezeichnungen immer durcheinander. Ich habe von dem Anbieter allerdings schon Kleinigkeiten bestellt. Bisher war alles i.O. Okay. Einer der ESP32 (im 3er Pack) war defekt. Hatte ich bei anderen Anbietern aber auch schon. Die PIN' s (sofern verlötet) sind auch immer krumm bzw. die LED-Matrizen nicht parallel. Inzwischen kann ich besser löten und mache es selbst. Da kann ich auch entscheiden, welche Pins ich verwende und wie ich sie anordne (gewinkelt oder gerade etc.)

Das verstehe ich leider nicht. Also ich meine den MIT App Inventor, den man verwenden kann um Apps für das Smartphone zu erstellen. Das geht ja aber sowohl für den ESP als für Arduino. Ich habe gestern abend z.B. die App für meinen Arduino Nano Panzer genommen und damit ein paar Befehle gesendet (vor, zurück, etc.) die hat der ESP32 mit seinem integrierten Bluetooth entgegen genommen und korrekt im Seriellen Monitor dargestellt.

Es geht nicht nur um die Produktqualität, sondern um das Verhalten im Markt. Der Laden war mal gut, als ich dort noch eingekauft habe, aber als ein versprochenes E-Book auch nach längerer Zeit noch aktualisiert wurde, also nicht zur Verfügung stand, wurde ich mißtrauisch. @my_xy_projekt hat einen passenden Link mit Einzelheiten, den er uns sicherlich gerne zur Verfügung stellen wird.

Ich habe auch schon direkt im fernen Osten mit sehr guten Erfahrungen bestellt, inzwischen sehe ich das kritischer. Jeder möge bitte seine eigenen Entscheidungen treffen, ich möchte nur Gedankenanstöße geben.

Ich auch, allerdings habe ich noch nichts damit gemacht.

Bislang habe ich auf dem ESP32 HTML-Dateien abgelegt wie beispielsweise diese:

Damit kann ich dann die Animation wählen und die Parameter einstellen. Dies basiert auf den Tabs von Fips.

Ich habe auch schon mal mit ESPUI experimentiert, siehe dazu meine Anleitung: ESPUI webbasierte Oberfläche für ESP32 und ESP8266.

Vermutlich kann man sowas auch mit dem MIT App Inventor realisieren, aber da konnte ich bisher noch keine Unterstützung in diesem Forum verspüren, daher habe ich die Finger davon gelassen. Wenn jemand von "APP (App Inventor) ... Also eigentlich alles schick." schreibt, elektrisiert mich das natürlich.

Weißt Du jetzt, was ich meine?

2 Likes

Also erst mal vorweg: das mit dem AI2 war bei mir eher ein Zufall. Ich weiß nicht mehr, wie ich darauf gekommen bin. Ich wollte vor Jahren schon mal eine native Android App schreiben und hatte mir das Dev. Studio installiert. Das Thema ist eingeschlafen. Seit ich nun vor einigen Monaten mit dem Hobby Arduino begonnen habe, ist "die Notwendigkeit" wieder auf den Tisch gekommen. Das Dev. Studio also erneut geladen und kurz vor Inbetriebnahme dann AI2 entdeckt und probiert.

Ich war begeistert, dass man hier mit einer blockbasierten Oberfläche Apps erstellen kann. Das funktioniert auch gut, hat aber natürlich auch Grenzen. Vieles muss man über Extensions lösen, die aber im entsprechenden Forum zur Verfügung stehen.

Ich werde mich bei Gelegenheit mit einem Tutorial beschäftigen, wie man vorgeht, die AI2 App in Android Studio zu überführen. Das ist wohl gar nicht so kompliziert. Dann hat man eine richtige Entwicklungsumgebung mit Navigation etc. (letzteres wäre mir um einiges lieber).

Deine Informationen sind jedenfalls direkt in mein Dokument zur Wissenssammlung gewandert. Ich habe einen groben Blick darauf geworfen und das ist alles sehr spannend. Dein Oberfläche ist sehr hübsch. Anders sieht es mit AI2 auch nicht aus.

Wer so nett fragt :grin:

Gerade eben überprüft, die Links funktionieren noch.
Und die Suchergebnisse beim DPMA umfassen 57 Einträge

1 Like

Ich habe noch eine Lizenz für RemoteXY for Android. Abgesehen von der inzwischen kritisch zu betrachtenden russischen Quelle finde ich diesen Ansatz genial. Die Android-App ist immer identisch, das Layout liegt im Arduino-Programm. Die Gestaltung läuft online, der zu kopierende Programmteil kann leicht eingebunden werden.

Auch bei dieser Lösung gibt es Grenzen, aber für viele Anwendungen vollkommen ausreichend. Leider habe ich bislang nichts Vergleichbares aus anderer Quelle gefunden.

Gerne, ich gebe mir Mühe :wink:

1 Like

was es nicht alles gibt :wink:

Danke für die Info. In der Tat habe ich schon einiges via Amazon dort gekauft und werde es wohl auch weiterhin tun. Aber mindestens genau so viel bei Roboter Bausatz. Auch schon Komponenten bei eckstein, pollin, freenove etc. sowie per eBay aus China.

Leider haben (zumindest in meiner Gegend) pünktlich zum Zeitpunkt des Starts meines neuen Hobbies alle Elektrofachgeschäfte / Modellbaugeschäfte zu gemacht. Selbst Conrad gibt es nicht mehr. Denn generell geht mir die Bestellerei mächtig auf die Nerven.

Porto ist teuer als die Komponente, man wartet ewig (weil nur in Übersee verfügbar), zahlt ein Haufen (weil man in D Zuschläge erhebt) oder muss das x-fache an Dingen bestellen, als man benötigt. Z.B. Schalter von denen man 2 braucht, um seinen Prototyp in ein Objekt zu bringen aber 10 (im Pack) bestellen muss. Am "liebsten" ist es mir, wenn das Produkt falsch beschrieben wurde und dann zu groß, zu klein oder nicht funktional ist, denn das zwingt mich an die Luft :wink: damit per Post der Artikel die Rückreise antreten kann.

Aber Jammern nützt nichts. Wird nichts ändern.

Beim Lesen deines verlinkten Beitrags habe ich gesehen, dass jemand Schach per Assembler auf einem Arduino umgesetzt hat. das ist natürlich mega krass.

Mich hat am WE eine Kindheitserinnerung (Programmierung am KC85/4) gepackt. Ich habe mich am Arduino damit beschäftigt eine Grafik (z.B. Quadrat - kann aber auch eine andere Form sein) rotieren zu lassen. Das hat dann irgendwann sogar funktioniert.

Der Versuch dann das rotierende Objekt zu füllen (Floodfill) ging dann leider nur noch bedingt. Es funktioniert prinzipiell, ist aber auf Grund des Speichers sehr eingeschränkt (kleine Objekte). Wahrscheinlich könnte man per Assembler da einiges rausholen. Ist aber ein anderes Thema aber trotzdem spannend, dass es Leute gibt, die sowas können.

In meiner Anleitung Anleitung: Endlicher Automat mit millis() findest Du Beiträge von @RudiDL5, der sowas gemacht hat. Jetzt komponiert er lieber ...

Wenn ich alleine Plastikmüll sammle, bringt das nichts, tun es viele, durchaus.

Ich versuche andere Menschen zu informieren, zum Nachdenken zu bringen und auch zu beeinflussen. Stimmen mir viele Menschen zu, habe ich etwas verändert. Demokratie sollte so funktionieren. Ich lese halt Zeitung, daher kam ich auf diese Thematik :slightly_smiling_face:

Danke für die Info bzgl. @RudiDL5. Genau diesen Namen hatte ich im Beitrag gelesen. Das oben hast du falsch verstanden. Ich meine damit mein Gejammer über die Bestellerei. Ich würde lieber in den Laden gehen und z.B. einen Schalter mal in die Hand nehmen, so wie ich das früher bei Conrad konnte. Das würde nebenbei auch die Umwelt schonen, da große Mengen an Zwischenhändler verschickt würden und nicht jede Kleinigkeit direkt an den Endanwender und dann auch noch per Übersee. Und da es keine Läden mehr gibt muss ich bestellen und daran kann ich leider nichts ändern :wink:

Weil sie unrentabel wurden, weil nicht genügend Kunden dort gekauft haben, weil mit den Füßen abgestimmt wurde, weil viele online kaufen.

Da ich in einer strukturschwachen Region lebe, gab es hier noch nie einen Conrad-Laden, weshalb ich auch nichts vermissen kann :slightly_smiling_face:

Wichtig ist, nicht bei AZ Delivery zu bestellen um ihre Geschäftspraktiken nicht weiter zu unterstützen. Alternative Händler soll es genug geben - auch auf Amazon.

Hallo zusammen,

ich muss mich leider nochmal melden. Ich weiß nicht, ob ich ein neues Thema hätte aufmachen müssen, aber irgendwie gehört mein aktuelles Problem auch noch inhaltlich dazu.

Auf der Suche nach einem geeigneten Controller (Größe, Bauform, Leistung, etc.) habe ich nun auch noch den ESP8266 (mein Modell ist: ESP8266 12F) ausprobiert.

Wenn ich den ESP32 Mini D1 an USB anschließe kann ich Sketch hochladen. Analog z.B. Nano. So wie es sein soll. Wird er von USB getrennt und über den VCC Pin an 5V angeschlossen läuft er (z.B. Blink Beispiel).

Nun das Problem: ich schließe den ESP8266 an USB an. Lade das Blink Beispiel hoch. Dann vom USB trennen und ebenfalls über den 5V Pin versorgen. Es passiert nichts. Erst wenn ich TX mit 3,3V versorge scheint der MC zu booten.

Nun habe ich schon mal laienhaft (mehr ist leider "noch" nicht möglich) recherchiert:

  • ich habe bei meinen Controller Pech (Defekte Charge)
  • ich muss das tatächlich so machen wie hier beschrieben (ungefähr in der Mitte des Seite unter Punkt: Normaler Start)

Leider verstehe ich nicht alles von dem was da steht aber ich habe nun ein Problem. Ich könnte zwar eine Verbindung von 3V3 zu TX herstellen, dann kann ich aber keine Sketche hochladen. Bzw. eben andersrum, dann startet mein Roboter aber nicht, wenn ich ihn anschalte.

Also ich stehe gerade auf der Leitung... Da ich kontinuierlich den Roboter weiter entwickeln will (neue Funktionen, Melodien, Bewegungen etc.) kann ich ihn nicht permanent auseinander bauen um die "Brücke" zwischen 3V3 und TX zu entfernen, damit ein Sketch-Upload klappt.

Wo habe ich einen Denkfehler, bzw. was mache ich falsch oder habe ich übersehen?

Wie Du auf die Idee kommst, den ESP8266 dem ESP32 vorzuziehen, ist mir ein Rätsel, aber die Gedankengänge der Menschen sind verschlungen :crazy_face:

Du hast mir geantwortet, aber ich bin der falsche Adressat, weil ich noch nie einen ESP8266 in Händen hielt. Aber andere Aktive kennen sich gut aus und werden sich vermutlich melden.

Beim ESP32 nutze ich zum Hochladen neuer Programme möglichst OTA, das wäre auch beim ESP8266 eine Möglichkeit. Anstelle des seriellen Monitors verwende ich PuTTY.

Danke trotzdem. Ich wollte allgemein antworten. Habe den falschen Knopf gedrückt. Ich habe mich noch nicht entschieden welchen MC ich nehme. Das Roboterprojekt arbeitet mit einem Nano oder mit einem ESP8266. Dafür sind die Libraries ausgelegt. Die 3D Druckobjekte brauche aber eine spezielle Platine / Shield was es nirgends gibt. Das muss man sich selbst bauen oder anfertigen lassen (also ätzen oder wie man das heute nennt, wenn man bestimmte Dateien z.B. aus Fritzing z.B. hier JLCPCB in Auftrag gibt). Das sind aber Dimensionen, von denen ich weit entfernt bin

So sieht das aus
image

Für den ESP32 habe ich mir schon ein kleine "Gehäuse gebaut", was den 3D Druckmaßen entspricht und was ich verschrauben kann. Dann fehlen aber die PINs (Ground, VCC) für die Servos und sonstige Peripherie. Auch dafür habe ich eine Lösung mit den zwei Platinen, die ich löten und im Roboterkopf unterbringen würde. Das ganze wird aber im Kabelsalat enden und nach meiner Erfahrung aus dem Modellbau wird das zu Problemen führen.

image

Außerdem wolle ich bei diesen Projekt im Gegensatz zu meinem Panzer und einem Spielgerät nicht "from Scratch" alles selbst machen, sondern im Idealfall auf einer Library aufsetzen. Die gibt es (ich habe sonst nichts gefunden) aber nur für Arduino und ESP8266. Wobei das letztlich für mich sekundär ist.

Leider bin ich inzwischen wieder beim Nano, denn da gibt es das Erweiterungs-Shield wo ich die Servos direkt anschließen kann (also alle 3 Pins) und das geht auch ins Gehäuse. Leider aber auch auch nur mit Modifikationen an den 3D-Druck-Teilen, denn die 3D Dateien sind nun mal für die Platine was man im Bild sieht "designed" worden. Für das Nano Erweiterungsshield passt nur in die andern Modelle also von Starter bis Humanoid.

Es ist die Gesamtheit an Faktoren und einer Suche nach dem Optimum unter den gegebenen Umständen und keine direkte Entscheidung gegen einen ESP32. Im Gegenteil. Ich habe da ja sogar schon Bastelarbeit geleistet (die mir glücklicherweise nicht schwer fällt).

Vermutlich bin ich auf dem Holzweg, allerdings finde ich in Otto.h diesen Abschnitt:

#ifdef ARDUINO_ARCH_ESP32
#include <ESP32Servo.h>
#else
#include <Servo.h>
#endif 

Habe ich die falsche Datei erwischt?

1 Like