Arduino Nano, DHT22, NRF24L01+, Raspi B+

  • Hallo zusammen,

    ich habe ein Verständnis Problem bzw. eine Frage:

    Ich möchte gerne die 1001ste Wetterstation auf Basis eines Raspi B+ sowie Arduinos bauen. Das ganze soll dann wie folgt aussehen / funktionieren.

    6 Nodes, jedes mit eigenem OLED Display, DHT22 sowie Funkmodul. Ein Node der 6 zeigt zusätzlich im OLED die Außen Temperatur, Luftfeucht, Luftdruck und Batteriestand an. Alle Nodes sollen dann Ihre gemessenen Werte an die Basis (Raspi B+) senden, der die Werte dann in eine SQL Datenbank mit Uhrzeit und Datum ablegt. Die Werte werden dann Quasi auf dem Raspi geloggt und werden per HighStock / HighChart visualisiert.

    Die Nodes sind soweit fertig und untereinander funktioniert es auch schon. Es ist noch kein fertiger Funkcode aber das Gerüst geht schon mal.

    Meine Frage ist nun, wie genau bekomme ich den Raspi nun dazu die Messwerte zu empfangen? Was ich bereits gemacht habe ist folgendes:

    Ich habe mir das Thema hier durchgelesen und das hier und habe es soweit auch schon geschafft das ein Arduino per "gettingstartet" mit dem Raspi spricht. Wenn auch ich die Antenne "ausrichten" muss. Wenn die Antenne auf den Tisch lege, bekommt er zum Raspi keine Verbindung, wenn ich die Antenne Waagrecht hinstelle geht's einwandfrei (ist das normal?).

    Wie schaffe ich es jetzt das der Raspi bei Start automatisch "mithört" ob sich ein Node meldet um die Werte zu übergeben (Der Funk wird nach jedem Senden abgeschaltet mit Power.Down Befehl) das er es in die vorhandene MySQL Datenbank mit Zeit und Datum schreibt?

    Hat da jemand ein Beispiel woran man sich Orientieren kann? Oder hat jemand Lust und Zeit mir etwas unter die Arme zu greifen?

    Besten Dank im Voraus.

    Thomas

  • Hallo dreamshader,

    danke für deine Links. Habe mir den Code mal angeschaut und joa, sieht sehr kompliziert aus für mich. :helpnew:

    Ich habe gestern noch folgendes gemacht. Habe 2 Nanos mit denen ich die Temperatur und Luftfeucht übertragen kann. Bedeutet das den einen per Terminal am PC hängen habe, den andere autark. Ich habe dafür das RF24 Network Example " helloworld_rx und helloworld_tx" vergewaltig. Das funktioniert auch sehr gut. Was ich nun aber nicht verstehe ist folgendes.

    Ich benutze die Librarys von http://tmrh20.github.io/ und da gibt es ja Beispiele für den Arduino und für den Pi. Wenn ich jetzt auf den Arduino den tx Sketch lade und auf dem Pi den rx funktioniert das ganze nicht.

    Wenn ich jetzt aber aus dem RF24 Library das gettingstarted nehme und auf dem Pi sowie dem Arduino lade, funktioniert es. An der Verkabelung kann es nicht liegen. Es wird zwar ein anderer Pin in dem Sketch für den Pi genommen, den habe ich aber vor dem "make" abgeändert. Wieso funktioniert das nicht?

  • Hallo,

    mein Code geht....fast..... es kommt zwar was an, aber nicht das was ich sende. Also, ich sende eine sizeof = 4 und am Rasoi kommen aber 8 an. Wie ich das jetzt verstanden habe, liegt es wohl daran das der Raspi ein 32biter ist und der Arduino nur 8 bit. Was kann ich jetzt tun?

  • Also wenn Du 4 sendest, sollten auch 4 ankommen ... und nichts anderes.
    Das hat mit 8 oder 32 Bit nichts zu tun.
    Das Problem bei unterschiedlichen Plattformen ist, dass Du bei der Übertragung nur Daten mit fixer Größe nehmen darfst: also char (für 8 Bit) short (für 16 Bit) oder long (für 32 Bit).
    Im Idealfall nimmt man da 8 Bit werte und rechnet (auch wegen der evtl. untschiedlichen Byte-order) short und long Werte nach einem festen Schema, das man selbst vorgibt (z.B. Intel-konvention) entsprechend um.
    Deshalb ist auch keine gute Idee z.B. einfach eine struct zu senden ;)

    cu,
    -ds-

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!