Diren hat jetzt deine letzte Version V5 für die Workshops bestellt – Vorsicht, die gibt es hier im Thread 2x, die
im verlinkten Posting ist die letzte Version, oder @didilamken ?
Nochmal verglichen, die letzte hochgeladene Fritzing-Datei stimmt nicht mit dem letzten screenshot überein. Auf dem screenshot ist der Kondensator für die Messung der LiPo-Spannung drauf, in der Fritzing-Datei ist der noch nicht, könntest du die letzte Version bitte noch hochladen, @didilamken! Danke!
Die letzte Version ist die neueste. Fehler sind mir bislang nicht aufgefallen. Nur die Beschriftung für die Richtung des FiPy könnte besser sein. Ich überprüfe gleich den Kondensator.
Nach der Besprechung am 12.9.2019 habe ich die BOB-Platine überarbeitet: Das USB-Kabel am Expnsion-Board sollte besser in das Gehäuse passen. Ausserdem haben die Komponenten des Spannungsteiler für VBATT mehr Löcher, damit sie besser passen.
Klasse Arbeit Didi,
von meiner Seite würde ich aber noch ein paar Pads missen.
Eine Anschlussmöglichkeit für einen USB to TTL Adapter, so das man das Expansionsboard weglassen kann.
Einen Trennpad oder Löt-Jumper der die VIn vom Spannungsteiler Abtrennt um nach Anpassung der Wiederstände des Spannungsteilers auch einen externen z.B. 12 V Akku zu messen zu können.
Eine Möglichkeit einen externen Kartenleser anzuschließen.(eher nicht so wichtig)
Für den USBtoTTL-Adapter und externen Kartenleser würde man je ein kleines Platinchen benötigen, für das kein Platz mehr da ist. Da nehme ich lieber das an den FiPy angepasste Expansionboard.
Für erweiterte Spannungsmessungen habe ich ein extra Board mit ADS1115, das am I2C-Bus parallel zum BME280 angeschlossen werden kann.
Frage an alle: hat jemand Interesse an einer Spannungsmess-Platine mit dem ADS1115 ? Ich könnte eine Platine mit Fritzing entwerfen.
Ich arbeite gerade an einer Strommess-Platine mit ACS712, MAX471 und INA219 um bei einer USB-Stromversorgung Spannung, Strom, Leistung und Energie messen und aufzeichnen zu können.
@Didi, was hälst du von diesen Veränderungen für die nächste Revision? E- und GND sollten ja möglichst direkt verbunden werden, damit da Platz ist müsste der trace zu SCK umgelegt werden und die “alte” Verbindung zu GND über den “Abschirmungs” Jumper-Block kann weg. Dafür sollten wir Shield direkt verbunden und das nicht optional lassen, der 3er pin-header könnte so komplett weg.
Das werde ich machen.
Aber ich wollte vorher noch Testreihen von den Varianten machen mit einer genauen Aufzeichnung auf SD-Karte, dann kann ich jeden einzelnen Ausreisser mit Gnuplot darstellen.
Für den USB to TTL-Adabpter bräuchten wir nur die Pins TX, RX, Vin und GND auf einer Stifteleiste, “Standard” bei vielen TTL / FTDI-Anschlüssen ist aber
CTS und RTS brauchen wir glaube ich nicht (bzw. habe ich bisher nicht genutzt), ich weiß aber nicht, was man mit denen dann macht (beim Stalker-board ist CTS z.B. mit GND verbunden).
RTS und CTS wurden früher bei V24 ( 9-pol. Canon-Buchse am PC ) von einiger Software benutzt, aber seit 20 Jahren zu USB-Zeiten kaum noch, obwohl aus Kompabilitätsgründen die Pins noch vorhanden sind.
Es wird nur GND RX und TX gebraucht.
VIn schließe ich aus Sicherheitsgründen nie mit an.
Hat auch einen anderen gewaltigen Vorteil man jederzeit einfach das Kabel anschließen und ins bereits laufende Programm schauen.
Der Save Boot Button ist auch nicht zwingend von Nöten, hilft aber ungemein beim Flaschen einer neuen Firmware.
Mann kann aber auch den Reset Button längere Zeit drücken. EDIT:geht anscheinend nicht mehr.
Beim Programm aufspielen ist er nicht nötig.
Wenn das Programm ein Aufspielen verhindert in der Repl mit Ctrl +C abbrechen und das Neue Progr. Aufspielen.
Nochmal etwas gegoogelt: Vielleicht können wir die beiden pins doch noch brauchen und sparen uns so die beiden Taster “Flash” und “Reset”, siehe:
esptool.py can automatically enter the bootloader on many boards by using the RTS and DTR modem status lines to toggle GPIO0 and EN automatically.
Make the following connections for esptool.py to automatically enter the bootloader:
ESP32 Pin
Serial Pin
EN
RTS
GPIO0
DTR
Hmmmm …
Note that some serial terminal programs (not esptool.py) will assert both RTS and DTR when opening the serial port, pulling them low together and holding the ESP32 in reset. If RTS is wired directly to EN then RTS/CTS “hardware flow control” needs to be disabled in the serial program to avoid this.
Development boards (including all Espressif boards) usually use additional circuitry to avoid this problem - if both RTS and DTR are both asserted together, this doesn’t reset the chip. Consult Espressif development board schematics for the specific details.
(Some third party ESP32 development boards use an automatic reset circuit for EN & GPIO pins, but don’t add a capacitor on the EN pin. This results in unreliable automatic reset, especially on Windows. Adding a 100nF (or higher) value capacitor between EN pin and GND may make automatic reset more reliable…)
Das sind unterschiedliche Signale:
DTR = Data Terminal Ready
RTS = Ready To Send
CTS = Clear To Send
Ich würde sie nicht mehr benutzen, sie wurden in der Anfangszeit der seriellen Datenübertragung ( 70er bis 90er Jahre ) für den Hardware-Handshake gebraucht. Das macht man heute per Software.
Die analogen Modems ( tüdeldilüt ) wurden so angesteuert.
Schön, daß Du die Anfänge hochhälst (sonst wäre ich ja der einzige hier, der das machen müßte! :) ) , aber:
Das ist Quatsch. XON/XOFF als software-handshaking macht man wegen fehlender Binärdaten-Transparenz genau nicht mehr. Man kann auch heute hardware-handshaking nicht einfach durch Software ersetzen.
Schau’ Dir die Datenblätter von modernen LTE-Modems an (Quectel, Simcom, Telit …), alle haben sie außer dem USB noch ein oder zwei serielle Schnittstellen, von denen diejenige, die auch mehr als 115200 bps macht (230400…921600 bps), natürlich RTS/CTS -Leitungen haben, um die beteiligten FIFOs zu steuern.
Das hat nicht nur Kompatibiltätsgründe: wenn ich über so eine Schnittstelle mit single-ended Signalen und hoher Geschwindigkeit ein firmware-update fahre, dann habe ich u.U. nur ein einziges Mal die Chance, das funktionierend hinzubekommen, bevor es “bricked” ist (und das alles vielleicht noch over-the-air) - dafür bleibt hardware handshake willkommen, und das auch noch gegenwärtig und nicht nur in der Vergangenheit.
Selbst auf Deinem FiPy werden die RTS- und CTS-Leitungen des Sequans-LTE-Modem (intern) mit denjenigen des ESP32 verbunden und die entsprechende UART für PPP-Betrieb und Modem-upgrade auch so initialisiert.
USB selbst verwendet ganz andere Mechanismen als RTS/CTS flow control, beherrscht aber in der USB CDC class deren Signalisierung, daher haben entsprechende Wandler-ICs (FT232BM, FT232R, CP2102/9, CP2103, CP2105… und selbst CH340/341) u.a. RTS/CTS herausgeführt.
Und genau darum nämlich ging es @clemens hier: wenn man diese Signale nicht braucht, kann man sie auch als GPIO verwenden, um z.B. einen bootloader zu aktivieren, ohne Taster drücken zu müssen - das macht die AVR-basierte Arduino-Gemeinde seit anderthalb Jahrzehnten so. Und die ESP-Leute sparen sich den bootloader-Button sowie das folgende reset, indem der GPIO0 per DTR-Signal einen low-Pulse bekommt und dann nach dem Programmieren der nRESET- bzw. EN-Eingang per RTS ebenfalls low-gepulst wird. @clemens’ Überlegung war nun, welche Pins für einen “FTDI-Adapter”-Anschluß man vorsehen möchte, um auch gleich komfortabel programmieren zu können, ohne Taster drücken zu müssen usw.
Wie schon geschrieben wir zum programmieren definitiv nur RX0 (P0) TX0 (P1) und GND gebraucht.
zum Flaschen neuer Firmware muß beim Starten/Reset noch zusätzlich der P2 gegen GND (Flash Button)
Hier noch etwas Interessantes zu dem Thema das Board von robert-HH habe ich mir aber mangels installierten KICAD nicht angeschaut.
Wie ich schon mehrfach geschrieben habe würde ich mir diese Pins auch bei einem Neuen Boarddesign wünschen und natürlich auch noch die Möglichkeit ein SD Breakout oder SD Sockel anzuschließen bzw zu löten.
Ich habe damit schon etwas experimentiert das SD Breakout darf auf alle fälle kein 5 to 3V3 Pegelwandler haben. Das Pycom expansion board kann dann meiner Meinung direkt ins Museum.
Meines liegt seit Ewigkeiten nur noch rum.
Aha!
Und das zu ändern, war @clemens’ Idee. Dafür nun braucht es bei Espressif zwei zusätzliche, an der seriellen exisiterende Signale, nämlich RTS und DTR, sowie vier bzw. fünf Bauelemente (die auch THT sein dürfen):
@robert-hh verwendet in der von Dir zitierten Schaltung die von Espressif auf deren eigenen devel boards verwendete Logik. An die Transistoren werden keine Ansprüche gestellt, unspezifische einfache TUN reichen, also z.B. BC547 usw. R1 und R2 können auch 10k sein; R3 funktioniert bei vielen ESP32 besser mit 10k. @robert-hh hat R3 weggelassen: GPIO0 (“P2”) hat einen internen weak pull-up.
Dieses Schaltungsdetail wird nicht nur von robert-hh und Espressif selbst, sondern auch etlichen anderen Herstellern auf deren Boards verwendet: nodeMCU, nodeLua, Wemos/Lolin, M5Stack…
Die Schaltung könnt Ihr mit einfachen Mitteln testen und bei Gefallen (ich bin sicher, viele haben sie schon unwissentlich benutzt auf entsprechenden boards! ;) ) auch auf einer Version 2 der Platine integrieren.
Voraussetzung ist, daß ein für die Programmierung verwendbarer USB-Seriell-Adapter also neben Rx und Tx die Signale RTS und DTR herausgeführt hat.
Der Vollständigkeit halber: legt man Wert darauf, daß sich GPIO0 noch anderweitig verwenden läßt, muß man PNP-Transistoren gemäß diesem Vorschlag verwenden (bislang noch nicht selbst probiert):