Robins Blog – Technik und Multimedia

drahtloser Distanzsensor mit Arduino nRF24L01+ und Ultraschallsensor

IMG_1290

13.07.2014 Aktualisierung des Beitrages
27.06.2014 Updated auf 1.4b, kleine Änderung im Blog-Beitrag. Wichtig: Wenn ihr während der Beta-Phase updated auf die aktuelle Version, dann auch die Sensoren updaten, nicht nur das Gateway!

Wochenende! Bastelzeit! Diesmal habe ich mich auf der Website mysensors.org umgeschaut und dort den drahtlosen Distanzsensor mit einem Arduino Nano, einem Ultraschall-Sensormodul HC-SR04 und einen Transceiver nRF24L01+ zusammengebaut. Die Bauteile bis auf dem Arduino Nano kosten fast alle weniger als 2 Euro, also das ganze Modul beläuft sich auf ungefähr 10 Euro. Die Daten vom Distanzsensor laufen auf einem Gateway auf. Von da aus können diese noch an einem Hausautomations-Server wie z.B. Fhem weitergereicht werden. Da bin ich gerade noch dran.
Der Vorteil von dieser Technik?


Unglaublich preiswert. In der nächsten Ausbauphase kann man anstatt eines Nano möglicherweise einen Arduino Micro benutzen, welcher beim Chinesen Deiner Wahl nur 1,87 Euro kostet. Die anderen Bauteile, wie zum Beispiel einen DS18B20 kostet auch noch 1 Euro und der nRF24L01+ beläuft sich auch auf 1,50 Euro. Der nRF24L01 sendet im 2.4 GHz-Bereich und soll eine Reichweite von 50 m haben. Der Sender hat 2 Wände locker überwunden.
Es können pro Radio-ID 256 Kanäle (z. B. Sensoren) angeschlossen werden. Ich habe es mit zwei Sensoren (Arduino Nano) versucht, klappte einwandfrei.
Hier sollte man im Sensor-Programmcode eine eindeutige Radio-ID pro Sensor festlegen:

[sourcecode language=“text“ gutter=“false“]gw.begin(43);[/sourcecode]

In der 1.4b Version muss es heissen:

[sourcecode language=“text“ gutter=“false“]gw.begin(NULL,43);[/sourcecode]

 

Im Log des Gateways steht dann beispielsweise

[sourcecode language=“text“ gutter=“false“]
0;0;4;11;Arduino startup complete.
43;0;1;13;0
42;0;1;13;17
43;0;1;13;38
42;0;1;13;158
43;0;1;13;44
42;0;1;13;157
43;0;1;13;43
42;0;1;13;62
43;0;1;13;0
43;0;1;13;8
42;0;1;13;0
43;0;1;13;5
42;0;1;13;6
[/sourcecode]

wenn ich als Kanal 42 für den einen Sensor und Kanal 43 für einen zweiten externen Sensor angegeben habe. Der zweite Parameter bezeichnet das Node. Wird an der Platine noch ein zweiter Sensor ergänzt wird der Node automatisch um eins heraufgesetzt. Sinnvoll ist hier beispielsweise die Anwendung von Temperatursensoren mit dem DS18B20-Sensor, die man mühelos parallel schalten kann. Hier bekommt der eine Temperatursensor (im gleichen Sketch) den Wert 0, der nächste den Wert 1 usw.
Der letzte Parameter zeigt – hier beim Distanz-Sensor die Enfernung in cm an, bei einem anderen Sensor z. B. die Temperatur. Wer hier mehr erfahren will, schaut in die API.
Die Daten im Log kann man jetzt noch weiter verarbeiten, bspw. in einer Textdatei schreiben oder in Fhem weitergeben.

Einen Distanzsensor kann beispielsweise für die Wasserstandsanzeige einer Regenwassertonne verwenden.

In der MySensor Library ist noch Quell-Code für weitere Sensoren vorhanden:

Alle Bauteile dafür gibt es günstig bei Amazon oder eBay. Ich habe noch ein paar Ultraschall-Sensoren und Transceiver nRF24L01+  hier liegen. Gebe ich auf Anfrage raus.

Das könnte euch auch interessieren:

Die mobile Version verlassen