Entwicklung: Temperatur Funk Sensor


  • Kann es sein das ich den RFM12B mit 3x AAA Batterien mit gesamt 4,5 V geschrottet habe?
    Laut Datenblatt sind ja maximal 3.8 V zulässig. Im Eingagsthread wird zwar beschrieben es nichts ausmacht dort mehr Volt draufzugeben, aber ich bin mir jetzt unsicher, da meine Funkübertragung nicht funktioniert.


    Such mal im Datenblatt nach 6V.
    Das müsste die maximal Spannung sein.

  • Ich hätte da mal eine Frage zwecks Stromverbrauch.


    Leider hat mein Transceiver Sketch einen Stromverbrauch von 18,6 ma.
    Wenn eine Batterie aber eine Kapazität von 1500 mah hat, müsste der Sender doch eigentlich zumindest 80 Stunden (1500/18,6) schaffen, oder?


    Durch drei Batterien in Reihe bleibt die Kapazität ja identisch und das ganze liefert 4,5 Volt. Wenn der Sender zusätzlich weniger Volt braucht müsste doch die Ausdauer der Batterien nochmals steigen, oder?


    Vielen Dank für eine Aufklärung :)


    Grüße


    bigdane

  • Naja du kannst in den Sketch ja trotzdem noch ein bisschen Stromsparende Sachen einbauen, wie den ADC abzuschalten



  • Die einzige Anpassung die man im Sketch bezüglich der Frequenz vornehmen muss ist besagte FREQ Einstellung welche dann beim "Initialize" verwendet wird. Zerstören tut man sich dadurch nichts.
    Kommentare sind halt Kommentare und werden ignoriert.


    Auch bei den TinyTX3 kann man eine LED anschließen. Genauso wie bei den TinyTX4 sind oben Lötaugen die ebenso nummeriert sind, z.B.: Lötauge 0 ist der ATtiny D0 pin. Schließ also einfach eine LED an einen der freien Lötaugen sowie GND an und pass den Sketch entsprechend an.


    Also das Problem mit den Frequenzen hab ich in den Griff bekommen. Es lag anscheinend an falschen Parametern in den Sketchen. Sprich ich habe NodeID nicht einheitlich gehalten.


    Nun aber zu der LED Geschichte. Ich bekomme es einfach nicht hin. Nutze Sketche von Meigraf aus 2013. link
    wenn ich es recht sehe und den Code richtig verstehe, ist dort die LED angesprochen.
    Welche Lötaugen muss ich bei den TinyTX3 verwenden?


    Danke für Hinweise.

  • Wenn du hier nichts geändert hast


    Code
    #define LEDpin 8 // D8, PA2 - set to 0 to disable LED


    das Lötauge, das mit der 8 beschriftet ist > das vierte von links :)

    Edited once, last by doing ().

  • ...Ich arbeite gerade an einer (hoffentlich) verbesserten Version vom Sensor.pl sowie dem Web-Interface...


    Die Sensor.pl will ich durch TinySensor.py ersetzen - ein python3 Script was die Daten vom TinyRX annimmt und direkt in SQLite schreibt. Eine add.php würde dann also entfallen.
    Allerdings habe ich das aufgrund von möglichst hoher Flexibilität umstrukturiert:
    - Für jede NodeID wird ein Verzeichnis angelegt.
    - In diesem Unterordner liegt die SQLite3 Datenbankdatei sensor.db
    - Für jeden Wert wird in der Datenbankdatei eine eigene Tabelle erstellt.


    Der empfangene String von zB. " 22 v=3100&t=3400&h=6700&r=0 " wird zerlegt.
    Als erstes anhand des Leerzeichens um die NodeID von den Daten zu trennen und schon mal zu speichern.
    Dann wir der Daten-String anhand von " & " zerlegt, um dann jeden einzelnen Wert in einer Schleife abzuarbeiten. Also zB ein Schleifendurchgang für "v=3100", danach ein Durchgang für "t=3400" usw.
    Dann zerlege ich diesen Wert ebenfalls noch mal anhand des " = " um eben den Wert-Namen vom eigentlichen Wert zu trennen...
    Nun wird eine Tabelle (falls noch nicht vorhanden) mit dem "Wert-Namen" angelegt, ein timestamp von dem Moment wo die Daten empfangen wurden (selber timestamp in allen Tabellen) eingefügt sowie der "value" also tatsächliche Wert.


    Was ich mir dabei gedacht habe ist folgendes:


    Wer sein Funksensor Netzwerk später mit einem Sensor erweitern möchte der aber noch nicht eingepflegt ist, musste bisher selber die SQLite Datenbank um eine weitere Spalte erweitern. Das geht meistens nicht so einfach bzw nur mit entsprechenden Kentnissen, oder eben sowas wie phpMyAdmin für SQLite....
    Also wie ihr bestimmt schon gesehen habt steht " t= " für Temperatur, " h= " für Luftfeuchte, " p= " für Luftdruck , " v= " für supplyV usw.
    Nimmt man jetzt aber einen anderen Sensor wie zB einen Ultraschall, muss man sich einen anderen Wert-Namen überlegen bzw in den Sketch einsetzen - wie zum Beispiel " us= ". Dieser Wert wird dann aber aktuell nicht eingepflegt da weder die add.php davon "weiß" noch die SQLite Datenbankdatei dafür eine Spalte hat.


    Eben genau aus diesem Grund wird mit der Version die ich aktuell entwickle, nur im TinySensor.py ein mal eingestellt welcher "kurze Wert-Name" (also " t= " usw) in wirklichkeit wofür steht bzw wie dann der Tabellen-Name lauten soll.
    Alle anderen Werte die nicht in dem Script stehen werden in die Tabelle "unknown" eingetragen.
    Diese Einstellung sieht wie folgt aus:

    [/spoiler]


    Allerdings bringt das noch nicht sooo viel, solange das Web-Interface noch nicht angepasst wurde :fies: Daran arbeite ich zZt noch... [Blocked Image: http://raspberrypi.roxxs.org/pcdau.gif]

  • Ist dieser Spannungswert in Ordnung? Ich messe an den AKKUS 4.15V.
    15 v=3362&t=2380&h=3750


    Warum zeigt er mir 3362mV?

    Using Tapatalk

  • Send_DHT22_Watchdog.ino, Platine von erster Sammelbestellung mit Booster, Insgesamt 7 Sensor aber erstmal ein Sensor zum Testen angeschlossen

    Using Tapatalk


  • Ist dieser Spannungswert in Ordnung? Ich messe an den AKKUS 4.15V.
    15 v=3362&t=2380&h=3750


    Warum zeigt er mir 3362mV?


    Der Booster regelt die Spannung auch bei höherer Eingangsspannung auf 3,3V . Ist also in Ordnung.


    Fraglich ist, ob wir mit der aktuellen Umsetzung überhaupt mitbekommen, ob sich die Akkus langsam leeren...


  • Der Booster regelt die Spannung auch bei höherer Eingangsspannung auf 3,3V .


    Sicher? Das war doch nur ein Step-UP aber kein Step-DOWN :s :D


    Fraglich ist, ob wir mit der aktuellen Umsetzung überhaupt mitbekommen, ob sich die Akkus langsam leeren...


    Naja ich denke der Booster wird mit sinkender Kapazität auch unter 3.3V fallen und das wär dann ein Indikator dafür - aber auch wenn der Sensor länger als dem üblichen Intervall nichts mehr gesendet hat wäre es ein Hinweiß ;)


    Send_DHT22_Watchdog.ino


    Kannst du Deinen Sketch bitte auch mal posten?
    (bitte in CODE!)


    Insgesamt 7 Sensor


    7 Sensoren an einem Sender? :-/ Wie geht das denn :s Eigentlich gehen nur maximal sechs Sensoren an einen TinyTX4

  • Haha, ich habe dich falsch verstanden. Es hängt nur ein DHT22 dran. Es sind sieben Sender [emoji2]


    An deinem Sketch wurde nichts geändert ausser die ID des Sensors. Ich bin gerade unterwegs, kann dir daher den Code nicht mitteilen.
    [hr]
    Ich probiere es später mit fast leeren Batterien ob er mir was anderes anzeigt.

    Using Tapatalk

    Edited once, last by kenci ().

  • Wie wäre es mit diesen Akkus? Ich muss aber die Spannungsmessung in den Griff bekommen, und zwar so dass sich die Akkus nicht tiefentladen



    6000 mAh / 0,07 ma Schlafstrom = 10,6 Jahre wenn er nur schlafen würde, lol.


    Stimmt die Rechnung?

    Using Tapatalk

  • Hallo Leute,


    ich habe mir für dieses Projekt selber Platinen hergestellt. Bei meiner Pinbelegung gibt es allerdings ein Problem, denn ich habe MOSI auf SDI und MISO auf SDO gelegt. Dies ist ja eigentlich auch richtig aber die Attiny84 Pinbelegung in der RF12.cpp von Jeelib scheint "Falsch" zu sein.
    #define SPI_MISO 4 // PA6, pin 7
    #define SPI_MOSI 5 // PA5, pin 8
    Mir ist klar das hier ein Software SPI läuft und die Pins eigentlich egal sind, aber in der Beschreibung von RF12.cpp wird darauf hingewiesen das die Pins übereinstimmen sollten mit denen des Hardware SPI.
    Nun habe ich die Pins einfach anders definiert:
    #define SPI_MISO 5
    #define SPI_MOSI 4
    aber dies funkioniert nicht, die loop bleibt beim senden hängen. Wer kann mir auf die Sprünge helfen was habe ich übersehen?


    Vielen Dank
    atommeyer

  • Ein paar Änderungen in der TinySensor.py von gestern:


    - Es wird nicht mehr für jede NodeID ein Verzeichnis angelegt, sondern einfach nur die Datenbankdatei mit der NodeID benannt: 1.db 2.db , 3.db ... 29.db
    Diese Änderung musste ja zum glück auch nur in def insertData vorgenommen werden, und dazu auch gleich der Hinweiß das künftige Anpassungen für zB MySQL o.ä. ebenfalls eigentlich auch nur dort gemacht werden müssten - es sollte nun also leichter sein das eben jüst anzupassen.


    - Auch habe ich ein paar kleinere Fehler behoben, welche die Ausgabe auf der Konsole betroffen hat.


    - Für SensorTypes hab ich die Tabellen-Namen vernünftig benannt, da diese Namen auch im Web-Interface die Spalten benennen werden:
    [code=php]SensorTypes = ["v=Voltage=1000", "t=Temperature=100", "h=Humidity=100", "r=ReedSwitch", "p=Pressure", "us=Distance"][/php]Die tatsächlichen Namen (zB. Voltage) können nach belieben anders benannt werden, aber Falls das nachträglich gemacht wird muss die Datenbank gelöscht oder zumindest manuell angepasst werden denn sonst gibts noch die alte Tabelle.
    Einzig ' v= ' muss aber so bleiben, der Rest ist eher nebensächlich.


    Wenn ihr aber vor habt mehrere Temperaturwerte von einem Sender zu erfassen, dann solltet ihr auch mehrere ' t=Temperature ' definieren, also zum Beispiel:[code=php]SensorTypes = ["v=Voltage=1000", "t1=Temperatur_Kuehlschrank=100", "t2=Temperatur_Kueche=100", "h=Humidity=100"][/php]..und natürlich auch vom Sketch t1= und t2= usw übertragen lassen..


    - Die Werte von Voltage, Temperatur und Humidity usw werden bereits im TinySensor.py entsprechend geteilt/berechnet und fertig in die Datenbank eingetragen, damit es nicht zu kompliziert wird im Web-Interface herausfinden zu müssen ob die Werte durch 100 oder 1000 geteilt werden müssten... Dafür ist die optionale 2.Angabe: v=Voltage=1000


    - Ich speicher auch nicht mehr "place" in der Datenbank. Das wird nur ein mal in der config.php festgelegt, da das für die Datenbank an sich eigentlich nicht wichtig ist, denk ich :s


    - Zuvor gab es auch noch ein Rechteproblem, wodurch der www-data Benutzer kein Zugriff auf die Dateien hatte. Das Python Script regelt das jetzt ebenfalls.


    - Hab auch ein testMode eingebaut um die Einstellungen des Scripts zu überprüfen. Dabei werden 5 empfangene Node-Daten simuliert und durch processData gejagt, aber ohne irgend etwas in die Datenbanken zu schreiben.
    [code=php]
    processData("22 v=4100&t=3421&h=6712&r=0")
    processData("21 v=3099&us=321")
    processData("23 v=3100&t=3487&h=6798&r=0&p=926")
    processData("19 v=3000&t=4512&h=9911&r=0&p=321")
    processData("10 v=4321&t2=5612")
    [/php]




    Vom Web-Interface werden nur Datenbank-Dateien beachtet die eine Zahl am Anfang des Dateinamens enthalten. So könnte später also auch noch eine Datenbank-Datei existieren in der die NodeID und der 'place' hinterlegt ist, aber das behalte ich mir vor vielleicht irgendwann mal zu erweitern :fies:



    Mit dem WI bin ich aber noch nicht fertig :blush:


    :sleepy:

  • So, noch ein paar kleinere Änderungen :angel:


    - Unterstützung für MySQL eingebaut, für den Fall das jemand zB. mehrere RaspberryPI's hat aber alle in eine Datenbank schreiben sollen, oder einfach nur um die Daten auszulagern.
    Dafür verwende ich CyMySQL da das einfacher einzubauen ist (für MySQLdb mit python3 ist der Installationsaufwand größer).


    Aber ich muss euch dennoch warnen, MySQL ist (zumindest auf dem Pi-1) langsamer und verursacht auch mehr CPU+RAM Auslastung! Außerdem verballert es permanent CPU+RAM auch wenn es gar nicht genutzt wird.


    Es wird wie mit SQLite pro NodeID eine Datenbank angelegt die aber mit dem Prefix TinyTX_ benannt ist (also zB. TinyTX_22) und in dieser Datenbank auch pro SensorType eine Tabelle.


    - Serial ist etwas umfangreicher implementiert um genauere Einstellungen vornehmen zu können.


    - Konsolen Ausgaben sind jetzt in Farbe :fies: Also insbesondere der Hinweis das die Battery leer sein könnte, aber auch Fehlermeldungen. Später könnte man auch die SensorTypen Ausgaben einfärben aber ich will's ja nicht gleich übertreiben... :daumendreh2:


    Zur Verwaltung der SQLite Datenbanken empfehle ich phpLiteAdmin, das ist nur ein PHP File was man irgendwo in /var/www/ ablegen brauch und ist so ähnlich wie phpMyAdmin.





    Das sollte es aber auch erst mal zur TinySensor.py sein. Werde mich jetzt nur noch ums WebIf kümmern :geek:

  • Nein, brauch ich aber auch nicht hab noch 6 hier rumfliegen :fies:
    Bin ich bisher nicht zu gekomm das zu testen - vielleicht morgen :daumendreh2:


    Hi meigrafd,


    bis Du u.U. schon mal zum Testen gekommen? Evtl. im Rahmen Deiner TinySensor.py Weiterentwicklung - da hast Du als Beispiel ja einen Ultraschall-Sensor erwähnt :thumbs1: