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:

  • Tür / Fenster – Sensor
  • Distanz-Abstandssensor
  • Lichtsensor
  • Feuchtigkeitssensor
  • Bewegungssensor (PIR)
  • Drucksensor
  • Regen- und Feuchtigkeitssensor
  • Relais
  • Servo
  • Temperatursensor

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:

IMG_1291 IMG_1290

War der Beitrag für Dich sinnvoll?
  • Langweilig (0)
  • Nützlich (0)
  • Interessant (1)
  • Genial (2)
  • Schlecht (2)
Dieser Beitrag wurde unter Fhem-Hausautomation abgelegt und mit , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

9 Kommentare zu drahtloser Distanzsensor mit Arduino nRF24L01+ und Ultraschallsensor

  1. Robin sagt:

    Hallo Werner,
    gibt es nicht, habe ich mir selbst gebaut: https://blog.moneybag.de/erfahrungsbericht-olympia-protect-alarmanlagenset-6061-5940/

    LG
    /robin

  2. Werner sagt:

    Hallo Robin,
    habe auch so eine Olympia AA laufen. Nervig ist nur, dass man von außen nicht sieht ob sie aktiv ist oder nicht. Wenn ich einigermaßen richtig gelesen habe, gibts da sowas mit
    funk wo ein Lichtsensor die Alarmfunktion per Funk an einen Empfänger mit
    ebenfalls einer LED weitergibt.

    Könntest Du mir helfen so was zu bekommen.

    Gruß Werner

  3. Pingback: OS X 10 11 el capitan öffentliche Beta – Arduino Probleme CH340 | Robins Blog - Technik und Multimedia

  4. Robin sagt:

    Hallo Georg,
    hehe, hab ich mir auch schon gedacht. Obwohl die Distanzsensoren benötigen einen Analog-Eingang, und ich frage mich wie man den über die verfügbaren GPIOs vom ESP hinbekommt. Was genau hast du vor?

    LG
    /robin

  5. Georg sagt:

    Hi,
    das Thema ist ja schon paar Tage älter.
    Wie wäre es, das mal mit einem ESP8266 umzusetzen ohne weiteres Zeugs wie Arduino und so, preislich bekommt man für 3 Euro schon einen kompletten Microcontroller mit WLAN integriert.

  6. Robin sagt:

    Hallo Tobi,
    yep, der Distanzsensor funktioniert (sehe ich an die 40.0) = 40 cm.
    Die Logik ist für Fhem leider nicht mehr weiter programmiert worden.
    Aber es gibt eine Lösung: Diesen Thread durchlesen und das MQTT-Gateway bauen.
    Habe ich auch gerade gemacht. Wenn ich Zeit finde, werde ich darüber bloggen.
    Ansonsten durchlesen und nachbauen.

    LG
    /robin

  7. Tobi sagt:

    Hi Robin,

    ich habe es nachgebaut aber leider meckert Fhem etwas rum:
    arduino: Unknown code 0;0;3;0;14;Gateway startup complete., help me!
    arduino: Unknown code 0;0;3;0;9;read: 1-1-0 s=0,c=1,t=1,pt=7,l=5:40.0, help me!
    arduino: Unknown code 1;0;1;0;1;40.0, help me!

    Ich schätze, dass ich den Sketch für arduino anpassen muss oder die fhem.cfg ?

    Danke für deine Hilfe.

    Gruß
    Tobi

  8. Robin sagt:

    Hallo Jens,

    wir sind dabei. Mein Kollege aus dem Fhem-Forum will sich nach seinem Urlaub dransetzen und das JeeLink.pm Modul erweitern.
    Ich bin von meiner Seite fertig. Ich habe mir mehrere Sensoren zusammengebaut und getestet. Vielleicht mache ich dazu später noch mal ein Youtube-Video oder schreibe hier noch was drüber. Ich habe es sogar hinbekommen, meinen 433 MHz-Empfänger (-> siehe http://blog.moneybag.de/fhem-preiswerter-433-mhz-funkbewegungsmelder-pir/) mit dem Sketch von dem nRFL01 zusammenzufügen auf einem Arduino-Nano. Das Ganze habe ich in einem Raspberry Pi-Gehäuse untergebracht und zwei externe Antennen (433 MHz und 2.4 GHz) gekauft.
    Das MySensors-Gateway empfängt ständig die Daten von den Sensoren (Schalt-Sensor mit Reed-Kontakt, Temperatursensor mit One-Wire 18B60 und Feuchtigkeits-Sensor für die Blumen) und schubst die an das Arduino-Nano-Gateway, siehe Foto im Beitrag oben. Von dort aus geht das über USB-Seriell weiter an den Raspberry-Pi, bei dem man den Arduino-Nano einmalig in Fhem definieren muss. Das sieht bei mir so aus: define arduino JeeLink /dev/ttyUSB1@115200. Bei mir hängt der an USB1.

    Von da aus bekommt Fhem schon die Daten, das sieht man am Event-Monitor von Fhem.
    2014-08-10 09:12:30 JeeLink arduino UNKNOWNCODE 53;255;3;6;0
    2014-08-10 09:12:31 LaCrosse WohnzimmerTemperatur temperature: 24.4
    2014-08-10 09:12:31 LaCrosse WohnzimmerTemperatur battery: ok
    2014-08-10 09:12:33 LaCrosse 03Thermo temperature: 24.4
    2014-08-10 09:12:33 LaCrosse 03Thermo humidity: 56
    2014-08-10 09:12:33 LaCrosse 03Thermo battery: ok
    2014-08-10 09:12:34 JeeLink arduino UNKNOWNCODE 0;0;3;9;read: 53-53-0 s=3,c=0,t=0,pt=0,l=15:1.4b1 (18848a2)
    2014-08-10 09:12:34 JeeLink arduino UNKNOWNCODE 53;3;0;0;1.4b1 (18848a2)
    2014-08-10 09:12:34 JeeLink arduino UNKNOWNCODE 0;0;3;9;read: 53-53-0 s=3,c=1,t=16,pt=2,l=2:1
    2014-08-10 09:12:34 JeeLink arduino UNKNOWNCODE 53;3;1;16;1

    2014-08-10 09:12:34 LaCrosse 02Thermo temperature: 24.5
    2014-08-10 09:12:34 LaCrosse 02Thermo humidity: 56
    2014-08-10 09:12:34 LaCrosse 02Thermo battery: ok

    Die 1 in der Zeile ist der Reed-Kontakt, wenn 1 dann offen, wenn 0 dann hat jemand einen Magnet vorgehalten. 53 ist der Kanal (frei wählbar). Für alles gibts ne Doku bei MySensors.

    2014-08-10 09:12:34 JeeLink arduino UNKNOWNCODE 53;3;1;16;1

    Was also von meinem Kollegen (vermutlicherweise) noch zu tun ist:
    Die Jeelink.pm nochmal anfassen und den mySensor bekannt machen
    Dann ein Autocreate schreiben: Beim ersten Kontakt schubst der Sensor (abhängig von dem MySensor-Sketch) eine Kennung „Hallo ich bin ein Feuchtigkeits-Sensor“ und dieses muss dann in Fhem angelegt werden. Dann natürlich da übrige gedöns einbauen, fertig.
    Meine Meinung nach eine preiswerte und stabile Sache. Und die nRF24L01 haben eine gute Reichweite und nein, die stören das WLAN nicht.
    Wenn ich in Perl fit wäre, hätte ich das schon selber angepasst, man muss lediglich den Input-String der über USB vom MySensors-Gateway kommt auseinanderpflücken und fertig.
    oops, jetzt hab ich doch wieder zuviel geschrieben, da hätte ich doch gleich einen neuen Beitrag machen können.
    Also dranbleiben. Anbei ein Foto, links der Raspberry Pi (die Zentrale), rechts der Arduino mit den beiden Antennen: http://blog.moneybag.de/?attachment_id=10842LG
    Wenn du das nachbauen möchtest, den Sketch kann ich Dir geben.

    LG
    /robin

  9. Jens sagt:

    Hi Robin, hast du eine Anbindung zum FHEM erfolgreich hinbekommen?
    Wie machst du das dann mit den Gateway? Alle Clients senden per Funk zum Gateway und er sendet/oder wartet auf die Anfrage vom FHEM Server?

    Gruesse Jens

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.