Arduino zu Raspberry über 433mhz mit DHT22

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo

    Schlagt mich nicht aber ich habe leider nichts brauchbares gefunden.

    Ich möchte mich ausprobiere mit Datenübertragung via 433mhz und einem Temperatursensor.

    Als Grundvoraussetzung habe ich:

    Normale 433mhz Sender und Empfänger (müssten die 3235 RF sein).
    Arduino UNO als Sender (später soll das ganze auf einen ATTiny84a)
    Und natürlich einen RPi (B+) als Empfänger.
    Schreiben möchte ich die Daten später in eine Datenbank (aber das mache ich später wenn der Grundstock läuft).

    Geschaft habe ich schon über die RS - SWITCH Lib Daten zu senden und zu empfangen !

    Leider habe ich nirgendwo etwas brauchbares (konkretes) gefunden wie ich Temperaturdaten übermitteln kann.

    Die bisherigen Anleitungen beziehen sich immer auf die RFM12B und die dazugehörigen libs.

    Hat jemand eine brauchbare Anleitung wie ich das mit den "normalen" RF - MODULEN hinbekomme ?

    Vielen Dank

  • Bisher kann ich noch nicht viel vorweisen.

    Mein bisheriger Versuch bei diesem Thema beschränkt sich auf einen Versuch einen ATTiny84 dazu zu bringen ein "Status" eines Reedkontakts (Magnetschalter) zu übermitteln.

    Das sieht so aus:

    Auf dem RPi läuft der RFSniffer .... bei Veränderung des Reedkontakts wird auch brav 1111 übermittelt.
    In Anlehnung an das andere Projekt hier im Forum würde ich gerne den DHT22 in den Sender intergieren wollen.
    Mir ist dann leider nicht ganz klar, wie ich die Temperatur und Luftfeuchtigkeitswert übermitteln soll, da das ja Float-Werte sind.
    Wie ich den RPi dazu über ein Python-Script, bewege das in eine Datenbank zu schreiben (SQL-Datenbank auf einem NAS vorhanden) steht dann erstmal auf einem ganz anderen Blatt.
    Im Moment läuft ja da nur der RFSniffer im "Vordergrund".


  • ...
    Mir ist dann leider nicht ganz klar, wie ich die Temperatur und Luftfeuchtigkeitswert übermitteln soll, da das ja Float-Werte sind.
    ...


    Hi,
    das ist der Grund, warum man i.d.R. sog. "Protokolle" verwendet, um Daten zu übertragen.
    Lokale Variablen einfach mal so per send() irgendwohin zu schicken, ist keine gute Idee. Da spuckt Dir schon die verschiedene, binäre Darstellung der Daten in die Suppe (Stichwort Intel-Konvention).

    Relativ einfach ist es, wenn Du Dir ein eigenes Protokoll definierst und dann die Daten Byte für Byte in ein Datenpaket packst, das Du dann versendest.

    Beispiel: Temperaturdaten - Protokollaufbau: Bigendian, zwei Byte Vorkomma-Stelle, zwei Byte Nachkomma-Stelle übermittelst Du halt indem Du den zwei Byte integer-Anteil (short - das ist festgelegt) berechnest, den zwei-Byte Nachkomma-Wert berechnest und diese Daten byteweise in Bigendian-Order in ein vier Byte umfassendes Datenpaket packst.

    Auf der Gegenseite pflückst Du das wieder auseinander ...

    //EDIT:
    Oder ... Du wandelst alles in Strings um, bevor Du es übersträgst. Das erhöht allerdings das Datenvolumen ganz erheblich ...

    verständlich?


    cheers,
    -ds-

Jetzt mitmachen!

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