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