PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SRF02 und HC-SR04



inka
08.10.2014, 13:54
hallo allerseits,

ich würde gerne meinen RP6 um einen US-sensor ergänzen und habe da eine frage:

die suche nach HC-SR04 (ca. 2EUR) ergab im gegensatz zu SRF02 (ca. 16 EUR) im RP6 forum einen einzigen treffer (IR-Bake) und da wurde es nur am rande erwähnt: RolfD hatte es sich angeschaut und Dirks sensoren schwammen noch im indischen ozean....

Die treffer im ganzen roboternetz bezogen sich im zusammenhang mit HC-SR04 so gut wie alle auf arduino...

Hat es irgendwelche wichtigen gründe, dass das HC-SR04 im zusammenhang RP6 praktisch nicht vorkommt? Oder hat sich schon jemand damit auseinandergesetzt?

shedepe
08.10.2014, 17:16
Naja der HC-SR04 (oder manchmal auch eine ähnliche Bezeichnung) ist halt wirklich ein billig Nachbau. Man kann nicht davon ausgehen, dass alle Angaben aus dem Datenblatt stimmen. Wenn man damit einigermaßen genau messen will muss so ziemlich jeden Sensor einzeln ausmessen.

In Sachen Ansteuerung gibt es sich nciht viel ob man einen RP6 oder einen Arduino nimmt.

Dirk
08.10.2014, 21:48
Hi inka,

und Dirks sensoren schwammen noch im indischen ozean....
Die sind schon länger angekommen:

Auswertung klappt, wenn man gut Impulszeiten messen kann.
Das kann der RP6 (z.B. via Control M32) und auch fast jeder andere uC.

inka
09.10.2014, 12:24
Hi Dirk,

für den momentanen anwendunfgsfall werde ich jetzt wohl den einen SRF02 den ich mit der multiIO bestellt habe nehmen - dort habe ich den anschluss den ich brauche und auch die entsprechenden funktionen in der lib. Mit dem HC-SR04 warte ich noch ein bischen...

Aber ein paar fragen die hier vielleicht doch gut passen:

Der HC-SR04 wird ja viel beim arduino verwendet. Wir haben mit der Ardu-IO die möglichkeit den uno z.b. anzuschliessen. Jetzt mal angenommen da hängt der HC dran, der ja vom uno aus betrieben werden kann (die arduino lib ist ja da).

- Wird es dann möglich sein diesen - am uno hängenden HC - vom RP6 aus abzufragen?
- oder wird der uno "beauftragt" das für den RP6 zu tun?
- sollte der HC nun am RP6 angeschlossen sein, wird man den vom uno aus abfragen können?

ich weiss nicht ob meine fragen nicht zu unverständlich sind...

shedepe
09.10.2014, 13:09
Deine Fragen kann man ganz allgemein damit beantworten: Das hängt davon ab was du für eine Software schreibst.
Letztendlich gehen die Fragen ja alle in die Richtung: Wie kann ich den RP6 mit dem Arduino kommunizieren lassen. Dafür gibt es verschiedene Möglichkeiten. Z.B. Seriell oder I2C o.ä.

Wenn man erst mal mit miteinander kommunizieren kann ist der Rest recht einfach.

Um im Detail auf deine Fragen einzugehen



Wird es dann möglich sein diesen - am uno hängenden HC - vom RP6 aus abzufragen?


Ja. Der uno könnte z.B. kontinuierlich Messen und du fragst vom RP6 aus das letzte Messergebnis ab



oder wird der uno "beauftragt" das für den RP6 zu tun?


Kann man auch machen. Der RP6 triggert eine Messung und bekommt das Messergebnis zurück



sollte der HC nun am RP6 angeschlossen sein, wird man den vom uno aus abfragen können?


Siehe die letzten beiden Fragen nur umgekehrt.

Letztendlich sitzen auf beiden Boards AVR Controller drauf. Man kann also den Code für die Sensoren beinahe komplett übertragen wenn man nicht zusehr auf die Arduino Bibliothek aufbaut.

Dirk
09.10.2014, 16:57
Hi inka,

Wir haben mit der Ardu-IO die möglichkeit den uno z.b. anzuschliessen. Jetzt mal angenommen da hängt der HC dran, der ja vom uno aus betrieben werden kann (die arduino lib ist ja da).
Ja, man kann den Arduino Uno "von unten" an das RP6 ArduIO Board anstecken. An den Uno kann weitere Hardware abgeschlossen werden, z.B. dann "oben" auf dem ArduIO Board an D0..D13 oder A0..A3 oder an den I2C-Bus.
Wenn der Uno an die ArduIO Platine angeschlossen ist (und das Ganze auf dem RP6), dann haben beide Systeme (jumperbar) denselben I2C-Bus.


- Wird es dann möglich sein diesen - am uno hängenden HC - vom RP6 aus abzufragen?
Der SRF02 ist ja auch ein I2C-Baustein. Wenn der am gemeinsamen I2C-Bus hängt, können beide (Uno oder RP6) ihn prinzipiell abfragen.


- oder wird der uno "beauftragt" das für den RP6 zu tun?
Man muss sich wohl entscheiden: Wird der Uno der I2C-Master oder der RP6 oder eine seiner Erweiterungsplatinen? Wenn das RP6-System Master wird und der Uno evtl. Slave, dann würde der RP6 den SRF02 abfragen und auch dem Uno irgendwelche Befehle geben oder Messwerte abfragen.
Umgekehrt geht das auch.

Aktuell wird die Lib für das ArduIO Board so werden, dass der RP6 (oder M32, M256 WiFi) I2C-Master ist. Damit wäre er der "Chef", der Arduino Uno könnte Slave sein,- das spielt aber bei der Lib keine Rolle.
Später gibt es womöglich noch eine Arduino Lib zur Ansteuerung des ArduIO Boards mit dem Arduino Uno (I2C-Master). Schaun wir mal ... ;)

3. Option: Man verbindet den I2C-Bus des Uno gar nicht mit dem des RP6-Systems,- hat also ZWEI I2C-Busse.
Du siehst, alles ist möglich ...


- sollte der HC nun am RP6 angeschlossen sein, wird man den vom uno aus abfragen können?
Wenn der SRF02 am RP6-I2C-Bus hängt und vom RP6 (als I2C-Master) abgefragt wird, kann der Uno am selben Bus wohl nur I2C-Slave sein. Dann müßte er die Werte vom SRF02 vom RP6 anfordern. Kann man programmieren,- ist aber nicht Bestandteil der Arduino-Lib.

inka
09.10.2014, 17:37
Hi Dirk,

wieder einmal super erklärt :-)


Der SRF02 ist ja auch ein I2C-Baustein. Wenn der am gemeinsamen I2C-Bus hängt, können beide (Uno oder RP6) ihn prinzipiell abfragen.
das mit dem SRF02 habe ich mir auch schon so gedacht, die fragen betrafen aber eher den HC-SR04, der hat doch keinen I2c (oder?), wie ist es damit? Da gibt es z.b. schon mal die Lib von arduino, aber wäre die auch bei einer abfrage von seiten der m32 z.b. nutzbar?

Dirk
09.10.2014, 19:41
Ja, beim HC-SR04 gibt's keinen I2C-Anschluss, muss man die Impulsdauer am Ausgang messen.
Das kann die M32 sehr gut, siehe z.B. hier (https://www.roboternetz.de/community/threads/47088-RP6Control-M32-Impulsl%C3%A4ngen-Messger%C3%A4t)!

Valen
09.10.2014, 20:34
In ein I2C Bus können sich auch mehrere Masters befinden. Multimaster Modus nennt mann das. Jeder Master muss dann aber die aktuelle kommunikation auf den Bus respektieren, und warten biss es wider Frei ist. Ob die Arduino und RP6 Libs das respektieren können habe ich keinen Idee.


http://www.i2c-bus.org/MultiMaster/

Dirk
09.10.2014, 21:20
Hi,

Multimaster Modus ... Ob die Arduino und RP6 Libs das respektieren können habe ich keinen Idee.
Ne, die respektieren keinen Multimaster Modus.