Emulieren von 1-Draht-Geräten


10

Was ich tun möchte, ist, einen ATTiny-IC zum Slave auf dem 1-Draht-Bus zu machen, mit einer eigenen S / N- und Befehlsliste für seine spezifischen Funktionen.

Ich möchte wissen, ob ich die One-Wire-Bibliothek von der Arduino-Site verwenden kann, um Daten als Slave zu senden.

Sie können beispielsweise einen Slave in einem Raum mit mehreren Arten von Sensoren haben, die dem Master über die angeforderten Informationen Bericht erstatten, oder der Master kann ihn anweisen, so etwas wie Jalousien zu steuern.

Frage Muss ich die Busleitung überwachen und auf eine Anfrage des Masters antworten und auch berücksichtigen, wie ein normaler Sensor Daten senden würde? Mit welcher Frequenz sollte ich den Slave ausführen, um die beste Funktionalität zu erhalten?

Ich werde keine parasitäre Kraft als Notiz verwenden.



@Gerben - das hatte ich schon mal bei einer Suche gefunden. Durchgesehen. Aber ich war besorgt, weil es einige Fehler gab, obwohl sie behoben wurden, kenne ich die Zuverlässigkeit nicht. Auch die Suche nach Feindentwürfen mit benutzerdefinierten Sklaven schien keine alltägliche Sache zu sein, daher die Frage oben.
RSM

Es scheint zu sagen, dass die Bibliothek es unterstützt. Hier ist eine Bibliothek speziell dafür, denke ich. Die Geschwindigkeit scheint bei 15 kbps zu liegen. Ich denke, die CPU-Geschwindigkeit spielt keine Rolle, aber das hängt von der Bibliothek ab. Wenn es nicht batteriebetrieben ist, lassen Sie es einfach mit 8 MHz oder 16 MHz laufen, und es sollte in Ordnung sein.
Gerben

@Gerben Ich werde die Bibliothek testen, um zu sehen, wie sie läuft. Eine Sache, die ich immer noch nicht verstehe, ist, warum es für manche Dinge so ungewöhnlich ist, den Ein-Draht-Slave nicht zu benutzen?
RSM

@ RSM Sie sollten diese Bibliothek überprüfen github.com/MarkusLange/OneWireSlave
Ryu_hayabusa

Antworten:


3

Soweit ich weiß, kann die 1-Draht-Bibliothek, die Sie in Ihrer Frage verlinkt haben, nur als Master und nicht als Slave fungieren.

Ich habe gerade eine Bibliothek veröffentlicht ein Arduino - Board in einen 1-Draht - Slave zu drehen, hier: https://github.com/neuoy/OneWireArduinoSlave (edit: hergezogen https://gitea.youb.fr/youen/OneWireArduinoSlave ). Ich verwende es in meinem benutzerdefinierten Hausautomationssystem und es funktioniert einwandfrei in meinem Setup (der 1-Draht-Master, ein DS9490R, ist über USB mit einem Laptop verbunden und versorgt auch den Arduino, einen Arduino Uno, mit Strom). Die Bibliothek verarbeitet Details auf niedriger Ebene: Match-Rom, Byte-Senden und -Empfangen (was eigentlich ziemlich schwer zu finden ist, meistens ohne einen Logikanalysator unmöglich). Der Rest liegt an dir.

Es ist vollständig mit Interrupts implementiert, alle Kommunikationen werden im Hintergrund ausgeführt, Sie können wie gewohnt anderen Code parallel ausführen und werden durch Rückrufe benachrichtigt, wenn Bytes empfangen werden usw. Das Senden von Bytes an den Master ist ebenfalls asynchron.

Ich weiß auch, dass mindestens eine andere Bibliothek existiert, https://github.com/MarkusLange/OneWireSlave , wie oben von Ryu_hayabusa kommentiert. Es hat bei mir nicht funktioniert (ich weiß nicht, ob es an meinem Hardware-Setup liegt oder aus einem anderen Grund), aber es funktioniert definitiv bei anderen, also auch einen Versuch wert. Es scheint, dass diese Bibliothek nicht mit Interrupts implementiert ist, sodass Ihr Programm blockiert ist, während Sie auf die Masteraktivität warten (was in vielen Szenarien durchaus akzeptabel ist).



1
@ JonasBerlin In der Tat habe ich das Repository verschoben (habe nur die Antwort bearbeitet, um dies widerzuspiegeln). Ich lasse den alten Link als Backup für alle Fälle und als Referenz, um andere Leute auf GitHub zu finden.
Sie

Sollten die Ausgaben vielleicht kopiert werden?
Jonas Berlin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.