ESP-01 als Serial-Bridge einsetzen

Mehr
03 Jan 2017 10:55 #115 von mikrotron
ESP-01 als Serial-Bridge einsetzen
Hallo Jörg,

ich versuche es hier auf Stand zu halten. Also ich habe es gestern tatsächlich geschafft den HW-Group VSP-Treiber mit dem esp-link ans laufen zu bekommen. Auch hier habe ich sinnlos Stunden verbraten bis ich gemerkt habe, das es unter Win10-x64 nicht funktioniert. Hab dann nen alten Laptop rausgezogen mit Win7 drauf und schon ging das ganze!

Wichtig auch hier, das man den richtigen Treiber zieht, nämlich den "Single", da der "Multi" nur für die HW-eigenen Geräte nutzbar ist.

Natürlich habe ich mir auch noch andere Virtual-COM-Port Treiber angeschaut, wie z.B. com0com mit com2tcp. Den kann ich aber z.B. überhaupt nicht empfehlen, denn der hat unsignierte Treiber und um die ans laufen zu bekommen muss man praktisch alle Sicherheitssperren in seinem Windows aushebeln. Ein Unterfangen ohne Aussicht auf Erfolg.

Zu guter Letzt habe ich dann noch das Problem lösen müssen, das die esp-link Firmware bis v2.x nur Baudraten bis runter zu 9.600 anbietet und auch die nur mit fester "8N1" Einstellung. Ich aber brauchte ja 2400-8E1. Das ging, gottseitdank, mit der Firmware ab v3.x, welche aber "alpha" ist, also ist auch hier Vorsicht angesagt.

Weiteres Manko (evtl., bei mir im speziellen jetzt nicht) könnte sein, das man die Baudrate nur in der Web-GUI vom esp-link einstellen kann und nicht via Treiber oder besser direkt von der COM-Port Software (Terminal, oder was auch immer man einsetzt).

So habe ich tatsächlich eine Kommunikation mit einer Webasto 1533 Uhr hinbekommen. Hierzu habe ich die TX/RX-Leitungen des ESP-01 über einen MC36600 LIN-Transceiver mit dem W-Bus verbunden. Den ESP (esp-link Firmware) in mein WLAN eingebunden (STA-Mode) und im "uController-Console" Einstellmeü der esp-link Software die Baudrate auf 2400-8E1 eingestellt. Am PC mit dem HW-VSP Treiber einen virtuellen COM-Port erstellt, welcher mit der IP des ESP-01 auf Port 23 verbunden wird. Und letztlich HTerm (mein Lieblings Terminalprogramm) mit dem COM und den Settings 2400-8E1 verbunden.
Drücke ich dann auf der Webasto Uhr die Start-Taste sehe ich tatsächlich die korrekten Bytefolgen auf dem Terminal, so, als wäre ich direkt über den COM-Port am LIN-Transceiver angeschlossen! :-) Auch mit anderen Tools die eine Serielle nutzen (z.B. Webasto Thermo Test oder Webasto-Simulator) sollte dann dann prinzipiell gehen.

Jetzt fehlt mir nur noch eine Kleinigkeit zum vollkommenen Glück: Wie sende ich ein BREAK? Das BREAK ist ein spezielles Wakeup-Signal auf dem W-Bus, welches durch eine 25ms lange LOW-Phase der TX-Leitung erzeugt wird. Aus UART-Sicht ist das ein Bitfehler, da aufgrund des Bit-Stuffing keine solch lange 0-bit Phase existieren darf. Die Uhr sendet solche BREAKs auch und diese werden dann, korrekterweise, im HTerm als Fehlerbytes angezeigt.

Im Arduino war die BREAK-Erzeugung einfach. Da habe ich nur den Pin der TX-Leitung als Ausgang definiert, 25ms auf LOW gezogen, weitere 25ms gewartet und dann wieder auf UART umprogrammiert.

Aber wie mache ich das über eine "normale" Serialleitung? Habe schonmal versucht einfach eine Folge von 0x00 Bytes zu senden. Dabei sind jedoch nur die acht 0-Bits des Datenteils vom Serial-Frame LOW, nicht aber Start-Bit/Stop-Bit/Parity-Bit. Aufgrund der Baudrate von 2400 bleibt ein Bit für 0,415 ms auf der Leitung. Bei 8 Bits die ich maximal senden kann, entspräche das nur 3,4 ms, also noch weit weg von den benötigten 25ms. Hierzu müsste ich mind. 8 00-Bytes senden, welche aber aufgrund des Protokolls mit den Start/Stop/Parity-Bits "verunreinigt" sind.
Ich persönlich kenne keine Möglichkeit eine serielle Schnittstelle per Software so anzusteuern, das TX für eine definierte Zeit LOW wird.

Puh, jetzt schreib ich schon wieder ganze Aufsätze... aber gut. Ja, ich sollte meine Erfahrungen in ein Tutorial packen.


P.S.: Ich finde Dein Forum sehr gelungen, ganz im Gegensatz zum esp8266.com Forum, welches ich grausam unübersichtlich finde!
Schade nur, das die Community hier im Forum doch noch sehr klein ist. Ausser von Dir kommt ja keine Antwort... oder sind die anderen noch alle im Urlaub ;-)

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
03 Jan 2017 13:29 #118 von supporter
ESP-01 als Serial-Bridge einsetzen

mikrotron schrieb:
Puh, jetzt schreib ich schon wieder ganze Aufsätze... aber gut. Ja, ich sollte meine Erfahrungen in ein Tutorial packen.


P.S.: Ich finde Dein Forum sehr gelungen, ganz im Gegensatz zum esp8266.com Forum, welches ich grausam unübersichtlich finde!
Schade nur, das die Community hier im Forum doch noch sehr klein ist. Ausser von Dir kommt ja keine Antwort... oder sind die anderen noch alle im Urlaub ;-)

-> Ja, ganze Aufsätze sind doch toll! Wer zu diesem Thema Hilfe benötigt findet sie hier!

-> Vielen Dank für die Blumen :-)

Tatsächlich ist das Forum noch sehr jung (ein halbes Jahr online) und muss sich erst finden. Eine Community entsteht erst durch gemeinsame Themen.
Ich selber habe auch nur begrenzt Zeit um hier was zu helfen und hoffe auf Leute wie Dich welche nicht nur Hilfe suchen sondern auch anderen mit Ihrem Wissen und Erfahrungen zur Seite stehen.
Dennoch finde ich es wichtig auch ein Forum, eine Ideensammlung, zu den Espressif-Kisten auf Deutsch zu haben. Mal gucken was die Jahre zu bringen.


Was Dein Signal -0 Problem anbetrifft: per anderem GPIO einen Transistor low side den TX runterziehen lassen würde ich sagen. Zur Strombegrenzung einen 470 Ohm Widerstand vorschalten. Ein BCx- NPN reicht da völlig aus. Kosten: 10 Cent. Steueraufwand: wenige Minuten.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
04 Jan 2017 07:03 #120 von mikrotron
ESP-01 als Serial-Bridge einsetzen
Grundsätzlich ginge das mit dem zus. Signal. Jedoch muss dann die Software das auch so ansteuern und das klappt eben nicht über den VSP. Ich untersuche gerade aber eine Möglichkeit das über sendBreak() der ioctl zu machen.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
06 Jan 2017 21:17 - 07 Jan 2017 10:53 #121 von mikrotron
ESP-01 als Serial-Bridge einsetzen
Juhu, mein ESP "WiFi-W-Bus Adapter" läuft! Ich kann Bytes an meine Standheizung senden und empfangen :-)
Jetzt muss ich noch das Problem lösen ein BREAK-Signal zu erzeugen. Das könnte man u.a. durch einstellen einer sehr niedrigen Baudrate (300 Baud) und senden eines 00-Bytes.
Nun habe ich in den Sourcecodes von esp-link gesehen, das es eine NVT-Unterstützung gibt (serial/serbridge.c) aber bin noch nicht wirklich dahinter wie man das sendet.

Wenn ich annehme das die in esp-link das NVT laut RFC 2217 gemacht haben, müsste man mit dieser Sequenz die Baudrate einstellen können:
IAC SB COM-PORT-OPTION SET-BAUD <value(4)> IAC SE

Die Hexcodes dieser Commandos lauten:
IAC = 0xFF
SB  = 0xFA
COM-PORT-OPTION = 0x2C
SET-BAUD = 0x01
SE = 0xF0

Somit müsste das diese Sequenz ergeben:
FF FA 2C 01 00 00 01 2C FF F0

Leider tut sich da nix.
Letzte Änderung: 07 Jan 2017 10:53 von mikrotron.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
07 Jan 2017 00:07 - 07 Jan 2017 10:52 #123 von mikrotron
ESP-01 als Serial-Bridge einsetzen
Oki, hab meinen Fehler gefunden. Die Sequenz ist schon ok, aber man muss vorher noch ein sog. "WILL" senden um sein Vorhaben quasi anzukündigen:
FF FB 2C
Dabei hab ich noch einen Bug in esp-link entdeckt. Von Eicken pflegt das nin ein :-)
Letzte Änderung: 07 Jan 2017 10:52 von mikrotron.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
27 Jan 2017 15:57 #130 von mikrotron
ESP-01 als Serial-Bridge einsetzen
Nachdem ich langsam verzweifelte und zigmal den ESP resetten und reprogrammieren musste um ihn wieder in Gang zu setzen habe ich mir meinen Versuchsaufbau (Breadboard mit Dupont-Kabel) nochmal genauer angesehen.

Komisch fand ich, das die LEDs manchmal nur "glimmten" in verschiedenen Farben und bei Berührung der Kabel ihre Helligkeit veränderten. Nachdem ich einige Spannungsregler ausprobierte habe ich mir das Breadboard und die Kabel angesehen und eine schreckliche Entdeckung gemacht. Die Kabel hatten teilweise einen Innenwiderstand von 60 bis 150 Ohm! Zudem sieht man im Oszi wahnsinniges kratzen und rauschen bei den Kontakten. Tja, billiger China-Schrott gekauft :angry:

Dann habe ich das ganze nochmal neu auf einem "Marken"-Breadboard mit "Marken"-Kabeln (beides von Conrad Elektronik, sauteuer im Vergleich zu ShenZhen) aufgebaut und siehe da, alles läuft stabil! :)

Zumindest Hardwareseitig habe ich seitem keine Probleme oder Störungen mehr.

Die Dupont-Kabel von Conrad sehen auch ganz anders aus. Schrumpfschläuche über den Pins, ordentliche Kontakte, praktisch kein Innenwiderstand (wenige Milliohm) und beim hin- und herbewegen im Breadboard kein kratzen und rauschen im Oszi. Offenbar macht sich die Qualität hier echt bezahlt. Werde nun wohl meinen Chinakram entsorgen...

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Powered by Kunena Forum