Beste Methode zur Paketübertragung zwischen einer Reihe von Sensorknoten?

Derzeit arbeite ich an einem Projekt, bei dem ich eine Anordnung von vier Sensorknoten mit jeweils drei Sensoren haben werde. Diese Sensorknoten müssen ihre Daten zur Verarbeitung, Anzeige usw. an ein von ATMega gesteuertes Board zurücksenden. Ich hatte die Idee, einige ATTiny85s zu verwenden, eines an jedem Sensorknoten, und diese zu verwenden, um die Daten von den verschiedenen Sensoren zu sammeln und dann zu verpacken es zur Übertragung. Ich möchte nur ein Datenkabel, ein Massekabel und ein Spannungskabel haben, das jeden Knoten verbindet.

Meine Frage lautet: Was wäre das beste Protokoll zum Senden dieser Datenpakete über eine Leitung? Jeder Sensorknoten muss nicht miteinander kommunizieren, und der ATMega muss nur Eingaben von den Sensoren akzeptieren, nicht aber auch Ausgaben senden. Ich habe schon einmal davon gehört, die OneWire-Bibliothek mit ATMega-Chips zu verwenden, aber noch nie auf so etwas wie einem ATTiny85. Oder wäre es am besten, einfach zu versuchen, jedes Datenpaket "manuell" zu senden (sie sind sehr klein, nicht größer als 100 Bytes)?

Wie weit sind die Sensorplatinen von der ATmega-Controllerplatine entfernt? Teilen sie wirklich einen vernünftigen Grund?
Ungefähr 6 Zoll zwischen jedem, wahrscheinlich etwas weniger
Okay, 6 Zoll ist in Ordnung. Ich war besorgt, dass nur ein Signalkabel nicht ausreichen könnte.

Antworten (1)

Die beste Option wäre entweder das Onewire-Protokoll oder vielleicht ein Halbduplex-UART. Bei Halbduplex-UART verbinden Sie lediglich alle RX- und TX-Pins des UART mit dem Kabel und halten alle TX-Pins mit Ausnahme des einen Mikrocontrollers, der sendet, im Tristate-Modus. Bei der Halbduplex-UART-Methode könnten Sie auf Konkurrenzprobleme stoßen. onewire hat dieses Problem nicht, da es Open-Drain ist. Sie sollten keine Probleme mit Onewire auf einem attiny85 haben, abgesehen von vielleicht einer sperrigen Bibliotheksimplementierung, die den gesamten Programmspeicher auffrisst.

Danke, das ist eine interessante Idee mit den rx- und tx-Pins. Ich werde mich wahrscheinlich für OneWire entscheiden, nur weil es sich viel einfacher zu implementieren anhört.