Forum: Mikrocontroller und Digitale Elektronik Roast me: MQTT-RS232 Umsetzer


von Tobias S. (herrgesangsverein)



Lesenswert?

Hallo Gemeinde,

vielleicht hat jemand Lust, mein Projekt auseinanderzunehmen und zu 
kritisieren. Bisher hatte das leider keiner, aber vielleicht lag es 
daran, dass ich im falschen Forum gepostet hatte...

Motivation:

Ich bastele mir meine Home Automation Komponenten selber. Vor allem 
Sensoren auf µC Basis. Dabei habe ich immer das Problem, dass die Daten, 
die im Controller entstehen, irgendwann auf einem IT-Server (MQTT) 
gespeichert werden sollen. Da ich an vielen Punkten Cat5-Kabel liegen 
habe, lag nahe, RS232 oder RS485 zu verwenden.
Leider sind professionelle Ethernet-RS232-Umsetzer ziemlich teuer, vor 
allem da ich 20-30 Endpunkte anbinden möchte.

Anforderungen:

* Anschluss von bis zu 20 Endpunkten per RS232
* Bidirektionale transparente Übertragung zwischen MQTT und den 
Endpunkten mit 2400Baud
* Auf die Hutschiene montierbar
* 24V Versorgungsspannung

Meine Lösung:

Da ich eigentlich nur Erfahrung mit PIC18 habe, setze ich diese hier 
auch ein. Da ich mir auch nicht zugetraut habe, Ethernet mit PHY und 
MagJack selbst aufzubauen und zu prüfen, habe ich hier auf das 
Wiznet550io-Modul zurückgegriffen. Dieses wird über SPI an einen 
PIC18F25K80 angeschlossen, der als Master die Aufgaben des Umsetzers 
steuert. An diesem Master hängen bis zu 5 PIC18F26Q43 per SPI. Zwei auf 
einer Basisplatine und 3 auf einer Tochterplatine. Die 43er dienen als 
Datenpuffer für je 4 UARTs. Die UARTs sind mit einem 
4-Port-Leitungstreiber ADM208 verbunden.

Der Master

Der Master baut eine TCP Verbindung über den Wiznet auf und darauf eine 
MQTT Kommunikation mit einem eigenen abgespeckten Funktionssatz. Nach 
einem Slave Discovery abonniert der Master für jeden Kanal ein MQTT 
Topic (chXin). Erhält der Master über MQTT nun eine Nachricht, die bis 
zu 63 Zeichen lang sein darf, legt er diese in einen Sendepuffer. Dieser 
Sendepuffer wird dann periodisch an die Slaves übertragen. Bei dieser 
Übertragung werden auch empfangene Daten vom Slave abgeholt. Die 
empfangenen Daten werden dann an ein entsprechendes MQTT Topic (chXout) 
übertragen.

Der Slave

Ein Slave für sich ist ein SPI-4xUART-Umsetzer. mit 64Byte großem Sende- 
und Empfangspuffer. Wird ein Chip Select ausgelöst, wird eine 
bidirektionale DMA Übertagung vorbereitet. Durch das DMA kann ich 
gleichzeitig Daten auf dem UART empfangen. Wenn die Vorbereitung 
erledigt ist, antwortet der Slave mit einem Chip Ready. Dann überträgt 
der Master 4x64 Byte, zugleich der Slave seine von RX empfangenen Daten. 
Jeweils das erste Byte ist ein Längenbyte. Der Slave fängt dann mit der 
Übertragung der empfangenen Daten über TX an.

ToDo

Es fehlt eine einfache Möglichkeit, die eigene IP-Adresse, 
Server-Adresse
und Port und Basis-Topic zu konfigurieren. Aktuell geschieht das beim 
Brennen ins EEPROM. Ich denke an einen Telnet-Server.

Ich mache das nur als Hobby, also seid nicht zu hart.
Weitere Details gerne auf Nachfrage.

: Bearbeitet durch User
von Michael (Gast)


Lesenswert?

Hallo

gibt es ein Update dazu?
Ich möchte zwei Geräte über RS232 ansteuern. im besten Fall über MQTT 
oder einen Client mit Webserver.

Grüße

von Tobias S. (herrgesangsverein)


Lesenswert?

Hallo Michael,

da gibt es eigentlich nichts neues. Ich bin projektmäßig weitergezogen 
und mache gerade eine Füllstandsmessung und einen Raumthermostat.

Sonst habe ich seit einer Weile einen Umsetzer in Betrieb, und der 
funktioniert für mich. Weil ich die Daten einbrenne ist der Leidensdruck 
nicht sonderlich groß. Cool wäre es schon, wenn man das Wiznet-Modul 
ersetzen könnte durch Komponenten, die direkt auf der Platine sitzen, 
oder wenn man einen weiteren Port zu Konfiguration ausprogrammieren 
würde.

Vielleicht dienen Dir meine Anhänge ja als Startpunkte. Die Funktionen, 
die MQTT betreffen sind sicher portabel.

Was eigentlich auch hilfreich sein könnte, ist der Slave-PIC, der für 
sich genommen einen SPI auf 4xUART Umsetzer darstellt. Dieser könnte 
theoretisch auch schneller als 2400Baud laufen.

Viele Grüße

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
Noch kein Account? Hier anmelden.