Hi! Ich überlege gerade, ob ich einen Atmel AVR bzw. vorerst seine serielle Schnittstelle mit einem ESP32 NodeMCU ins WLAN zu stellen - testweise um die Verkabelung zu sparen, später soll evtl. ein Webserver auf dem ESP32 laufen und die Kommunikation mit dem AVR regeln. Da das mein erster Versuch ist, kommen da ein paar Fragen auf. Vielleicht kann die jemand mit etwas mehr Erfahrung schnell und unkompliziert beantworten... 1. Welche Stolperfallen gibt es dabei, worauf sollte man beim Design schon aufpassen, was einem sonst hinterher auf die Füße donnert? 2. Sind die Pins des ESP32 bzw. des NodeMCU DevBoards 5V-tolerant oder sollte man besser mit einem Level Shifter auf 3,3V runter? Den AVR mit 3,3V laufen lassen müsste ich schauen ob man das hinkriegt, im Moment brauche ich die 5V an seinen Pins. 3. Wo gibt es gute Beispielsoftware? Die erste Idee, eine serielle Schnittstelle (5V TTL USART) an einen PC im LAN/WLAN weiterzureichen, so daß sie da irgendwo als virtuelle COM-Schnittstelle auftaucht, ist ja sicherlich nicht neu. Ich hätte sowas gerne erstmal lauffähig, um auseinanderzunehmen wie die ESPs funktionieren. Ein älteres NodeMCU V3 (glaube mit ESP8266) hätte ich auch noch zur Verfügung. Brächte das einen großen Vorteil bezüglich des Stromverbrauchs oder anders, bringt der ESP32 einen großen Vorteil im Vergleich zum ESP8266? Würde mich freuen, wenn mir da jemand etwas Licht ins Dunkel bringen kann, danke schon einmal dafür.
Ben B. schrieb: > Sind die Pins des ESP32 bzw. des NodeMCU DevBoards 5V-tolerant Nein. Ben B. schrieb: > Den AVR mit > 3,3V laufen lassen müsste ich schauen ob man das hinkriegt, im Moment > brauche ich die 5V an seinen Pins. Wofür genau? Verwende da doch Deine Levelshifter, und nur da, wo sie wirklich nötig sind. Je nach Anzahl der benötigten I/Os kannst Du natürlich den AVR gleich ganz weglassen und Deine Anwendung direkt auf dem ESP8266/ESP32 laufen lassen. Beide haben deutlich mehr Rechenleistung und deutlich mehr Arbeitsspeicher als irgendein AVR, und I/Os sowie diverse Peripherie haben sie auch. Ben B. schrieb: > Die erste Idee, eine serielle > Schnittstelle (5V TTL USART) an einen PC im LAN/WLAN weiterzureichen, so > daß sie da irgendwo als virtuelle COM-Schnittstelle auftaucht, ist ja > sicherlich nicht neu. Das ist gar nicht so trivial, je nach verwendetem Betriebssystem, denn da brauchst Du etwas, was zwischen "virtueller COM-Schnittstelle" und Netzwerk übersetzt. Für Windows könnte man da com2tcp verwenden (das ist Bestandteil von com0com https://com0com.sourceforge.net/, und auf dem ESP8266/ESP32 müsstest Du halt einen dazu passenden TCP-auf-Seriell-Umsetzer implementieren.
>> Den AVR mit 3,3V laufen lassen müsste ich schauen ob man das >> hinkriegt, im Moment brauche ich die 5V an seinen Pins. > Wofür genau? Ich würde den gerne mit recht hoher Frequenz betreiben (11..14 MHz angepeilt, weniger für Rechenleistung, sondern für die PWM-Counter), muss ich raussuchen ob der das mit 3,3V schafft (glaube er braucht mindestens 2,7V für 10Mhz), aber das größere Problem ist, daß er mittels PWM-pseudo-DAC 0..5V erzeugen können soll, auf zwei oder drei Kanälen. Ich muss schauen, ob ich da von den 5V weg komme. > Verwende da doch Deine Levelshifter, und nur da, > wo sie wirklich nötig sind. Ich habe das bereits einmal zwischen so einer Schaltung und einem SIM800L-GSM-Modul gemacht, das hat prima funktioniert und war kein großer Aufwand. > Je nach Anzahl der benötigten I/Os kannst Du natürlich den AVR > gleich ganz weglassen und Deine Anwendung direkt auf dem > ESP8266/ESP32 laufen lassen. Beide haben deutlich mehr > Rechenleistung und deutlich mehr Arbeitsspeicher als irgendein > AVR, und I/Os sowie diverse Peripherie haben sie auch. Das werde ich mir noch anschauen, aber ich brauche viele ADC-Eingänge, mindestens 3 PWM-Kanäle und "ein paar GPIOs" wie man das so schön schreibt. Eigentlich war ein LCD in Planung, aber das verliert gegen die WLAN-Anbindung oder serielle Kommunikation. Ich bin mit dem ESP32 noch kein bißchen erfahren, weiß noch nicht welche Peripherie der genau hat, was damit möglich ist und dann ist es immer schwierig, gleich volle MSR-Aufgaben damit anzugehen, auf die man sich hinterher verlassen können möchte. > Schnittstelle (5V TTL USART) an einen PC im LAN/WLAN weiterzureichen > Das ist gar nicht so trivial, je nach verwendetem Betriebssystem, Tja, Windows... ich weiß, ich bin raus. ;) Ich werde mir dazu mal ein Tutorial suchen. An dieser Stelle das Rad von Grund auf neu zu erfinden, halte ich für wenig zielführend. Das haben andere sicherlich schon 50mal gemacht, ich würde Zeit verschwenden.
Ich würde dafür ein ESP-01 Modul verwenden, denn das wurde für genau solche Zwecke gemacht (einen vorhandenen Mikrocontroller ans WLAN hängen). Die dazu vorgesehene "AT Firmware" ist auf diesen Module in der Regel vorinstalliert. Bei den NodeMCU und Wemos Boards solltest du bedenken, dass deren serielle Schnittstellen mit einem USB-UART ausgestattet sind. Du kannst sie daher direkt mit einem PC verbinden, aber nicht mit dem AVR. Die großen Varianten mit ESP32 haben vermutlich mindestens eine zweite serielle Schnittstelle die du mit dem AVR verbinden kannst. Allerdings musst du dazu erst mal eine passende Firmware schreiben. Beim ESP-01 Modul könntest du hingegen erste Versuche machen, ohne es zu programmieren. Lesestoff zum ESP8266: http://stefanfrings.de/esp8266/index.html > bringt der ESP32 einen großen Vorteil im Vergleich zum ESP8266? Es gibt nicht "den" ESP32, sondern zahlreiche unterschiedliche Modelle. Einige haben zwei CPU Kerne, alle haben mehr I/O Pins, mehr RAM und mehr Funktionen als der ESP8266. Wenn du diese zusätzliche Komplexität nichts brauchst, sehe ich das eher als Nachteil. Mit Arduino sind sowohl ESP8266 als auch ESP32 relativ einfach zu programmieren. Für den vollen Funktionsumfang muss man sich aber mit dem Espressif SDK beschäftigen, was ungleich komplexer ist. Die ESP32 Module nehmen mehr Strom auf.
Danke Dir für Deine Tips, ich werde mir die verlinkte Seite mal anschauen. Nur noch eine kurze Frage zu Deinen Ausführungen zum ESP8266. Du schreibst die NodeMCU haben eine USB-Schnittstelle, meinst Du damit die Programmierschnittstelle bzw. die mit dem CH340 und USB-Port? Kann man den CH340 nicht umgehen wenn man den AVR direkt an die Stiftleisten des NodeMCU oder direkt an das ESP8266-Modul anschließt?
Schau mal: https://docs.espressif.com/projects/esp-at/en/latest/esp32/Get_Started/Hardware_connection.html Offenbar gibt es die AT Firmware auch für ESP32 Boards und sie unterstüttz sogar einen zweiten seriellen Port. Das sieht doch nach genau dem aus, wonach du gefragt hattest. Zumindest für den Anfang, solange du noch keine eigene Firmware programmieren kannst oder willst.
Ben B. schrieb: > Nur noch eine kurze Frage zu Deinen Ausführungen zum ESP8266. Du > schreibst die NodeMCU haben eine USB-Schnittstelle, meinst Du damit die > Programmierschnittstelle bzw. die mit dem CH340 und USB-Port? Ja > Kann man den CH340 nicht umgehen wenn man den AVR direkt an die > Stiftleisten des NodeMCU oder direkt an das ESP8266-Modul anschließt? Ja kann man, zumindest bei originalen NodeMCU Board. Siehe http://stefanfrings.de/esp8266/NODEMCU_DEVKIT_SCH.png Der USB-UART ist über zwei 470Ω Widerstände mit dem ESP8266 verbunden. Diese Signale kannst du durch externe Beschaltung überschreiben. Allerdings brauchst du bei 5V anständige Pegelwandler die genug Strom auf der 3,3V Seite liefern. Mit einfachen Spannungsteilern oder gar den gängigen I²C Pegelwandlern (1 Transistor pro Leitung) wird das wahrscheinlich nicht klappen. Wir hatten hier neulich jemanden, bei dem es nicht ging. Zum Umprogrammieren der Firmware musst den AVR (bzw. den Pegelwandler) abtrennen. Ich kann dir mit dem ESP8266 gerne helfen. ESP32 Boards habe ich noch nicht verwendet.
Hmmmm, danke Dir, das ist auf jeden Fall eine Sache, die man schnell falsch machen kann wenn man das nicht bedenkt. Wird der CH340 nach dem Programmiervorgang nicht passiv, bzw. schaltet seine Pins auf High-Z? In ein paar Tutorials habe ich gesehen, daß manche ihre 5V direkt an die Stiftleisten des NodeMCU-Boards klemmen, aber das hältst Du bestimmt auch nicht für eine gute Idee, oder? Im Moment geht's nur um einen Prototypen (wieder mal), heißt das NodeMCU-Board wollte ich mit Stiftleisten auf diesen aufstecken. Falls mehr draus wird, käme sowieso nur das nackte ESP-Modul zum Einsatz (wobei diese Devboards derzeit günstiger verkauft werden als die nackten Module... komisch). Während der Programmierung könnte man die NodeMCU-Platine einfach vom Prototypen herunternehmen, dann gibt's auch keine Probleme mit der zweiten Spannungsversorgung über USB. Edit: Im Moment tendiere ich auch eher zum ESP8266, das ESP32S NodeMCU-Board verbraucht deutlich mehr Strom. Das würde nur Sinn machen, wenn man den AVR rausschmeißt und alles mit dem ESP32 macht - dann bräuchte ich mindestens seine ADCs, die der ESP8266 nicht zu haben scheint.
:
Bearbeitet durch User
Denke dran, dass die ESP32-ADCs schrottig sind und nicht verwendet werden sollten, wenn die WLAN-Funktion aktiv ist. Denn dann sind sie nur reine Schätzeisen! Ich würde externe I2C-ADCs verwenden und dann den ESP8266.
Yep, das habe ich auch gerade festgestellt und war not very amused. Durch die Nichtlinearität dieser ESP32-ADCs sind die komplett für den Arsch wenn man das nicht zuverlässig durch Herausrechnen der Nichtlinearität beheben kann (danach suche ich gerade). Schade, damit hätte das ein echt guter Controller sein können, aber mit solchen heftigen Schnitzern verkommt das Ding wirklich nur zum Kommunikations-Controller weil es für MSR-Aufgaben nur auf Umwegen zu gebrauchen ist. Dann kann ich das auch gleich einem AVR (oder was auch immer) überlassen und der ESP darf sich mit der WLAN-Konnektivität begnügen. Echt schade. Edit: Wahrscheinlich ist das auch wieder eine Sache, die man ausprobieren muss, das Ding scheint einen weitgehend linearen Bereich zu haben, der evtl. für meine Zwecke ausreichend ist. Über 2,56V könnte ich bei der AVR-Variante auch nicht messen. Man muss halt schauen, daß man diesen Bereich nicht nach unten verlässt. Den Offsetfehler muss man ja sowieso messen und herausrechnen, den hat man durch Ungenauigkeiten der Referenzspannung(en) immer. https://www.youtube.com/watch?v=RlKMJknsNpo&t=92s
:
Bearbeitet durch User
Ben B. schrieb: > Wird der CH340 nach dem > Programmiervorgang nicht passiv, bzw. schaltet seine Pins auf High-Z? Nein, leider nicht. Ben B. schrieb: > In ein paar Tutorials habe ich gesehen, daß manche ihre 5V direkt an die > Stiftleisten des NodeMCU-Boards klemmen Eine kleine Minderheit hält das für eine gute Idee, weil es mal geklappt hat und wein angeblich irgendein Mitarbeiter von Espressif in einem Diskussionsforum bestätigt habe, dass die I/O Pins vom ESP8266 5V vertragen. Zum ESP32 gibt es keine solche Aussage. Laut Datenblatt vertragen beide Chips maximal 3,6 Volt. Nur darauf ist Verlass.
Ben B. schrieb: > Den Offsetfehler muss man ja sowieso messen und herausrechnen, den hat > man durch Ungenauigkeiten der Referenzspannung(en) immer. Nein, eine Ungenauigkeit der Referenz erzeugt keinen Offset-, sondern einen Skalierungsfehler.
Zum ADC des ESP32 bzw. der Korrektur der Nichtlinearität gibt es u.a. einen Beitrag bei https://forum.arduino.cc/t/fixing-the-non-linear-adc-of-an-esp32/699190
:
Bearbeitet durch User
>> Wird der CH340 nach dem Programmiervorgang nicht passiv, >> bzw. schaltet seine Pins auf High-Z? > Nein, leider nicht. Großer Haufen Kackakacka. Wieso bauen die Chinesen sowas? Na ich glaube, wenn ich anfange, mit dem Board herumzuspielen, dann wird an dieser Stelle gleich mal die erste Modifikation fällig - ein oder zwei Jumper zum Abziehen. Aktuell bin ich am Überlegen, beim ursprünglichen Entwurf zu bleiben (AVR für MSR und ESP8266 für WiFi) oder ob ich einfach mal probiere, den ADC des ESP32 zu verwenden und zu schauen, was dabei herauskommt.
Ben B. schrieb: > Großer Haufen Kackakacka. Wieso bauen die Chinesen sowas? Welche andere USB-UART-Bridge verhält sich so? Nix "kackacka", nur komische Erwartungshaltung.
Ich bin jetzt nicht so fit mit USB/UART-Bridges, aber quasi jeder In-System-Programmer verhält sich so und für groß was anderes wird man das USB-Interface bei den NodeMCU-Boards kaum verwenden. Klar wäre das eine Option, aber eigentlich will man damit WiFi und kein USB. Es ist ja auch nicht "schlimm" wenn es so ist wie es ist, aber dann finde ich es zumindest schade, daß der Jumper zum Auftrennen dieser Verbindung nicht bereits ab Fertigung vorhanden ist.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.