Entwicklung: Temperatur Funk Sensor

  • Hallo Soulhunter,

    wichtig für die Bestellung sind die Spalten 1,2 und 3.
    1= Typ und laufende Nummer des Bauteile (z.B.C1 = Kondensator Nr.1) und Referenz in den Schaltplan.
    2 = Wert des Bauteils (z.B. Kapazät in Farad, Widerstand in Ohm)
    3 = Bauform (C0508, R0508 etc.)


    Die Spule L1 hat laut Datenblatt 10µH (Mirkohenry) vgl. http://cds.linear.com/docs/en/datasheet/3525fc.pdf.
    Die Kathode der LED ist markiert vgl. z.B. http://www.mouser.com/ds/2/244/SML-LXT08...-82662.pdf.
    Bei der Positionierung der Bauteile (wie z.B. LED) solltest Du am Besten den Schaltplan und das Platinenlayout vergleichen, die Ausrichtung des Bauteile ist zwar in der letzen Spalte enthalten (z.B. R270 = Drehung um 270 Grad) aber für eine Handbestückung eher nicht geeignet.
    Du kannst ja wenn Du die Liste zusammen hast, diese als Update Meigrafd zur Verfügung stellen.
    Weiterhin solltest Du Dir überlegen ob du den Booster wirklich brauchst oder die Batterie direkt anschliesst, so wie schon der TinyTX von Nathan (https://nathan.chantrell.net/tinytx-wireless-sensor/). Bei mir werden die Akkus immer so leergezogen, das mein Ladegerät dann einen defekten Akku erkennt.


    PS: Die meisten Bauteile bekommst Du auch in der Buch von deutschen Lieferanten zu ähnlichen Preisen und schneller sind diese meist auch :) .


    Gruß
    Golmic

    Gruß

    Golmic:)

    Edited once, last by golmic ().

  • Ich bin nochmal deinem Hinweis gefolgt und habe einige Bauteile aus der Bucht eingefügt. Ich denke, dass sollte es dann sein. Den Booster mache ich mal als Jumper, denn ich möchte, wie du auch, wiederaufladbare Batterien einsetzen.


    Gibt es denn schon ein Sketch für Temp/Feuchte UND Bewegungssensor?

  • ... schau mal unter http://www.forum-raspberrypi.d…tuer-ueberwachung-tinytx3.
    Denke ein HC-SR501 funktioniert im Prinzip als Schalter und sollte z.B. mit einem DHT22 zusammen laufen. Ob der Speicherplatz ausreicht, solltest Du ausprobieren, genauso wie Du mal prüfen solltest wie lange ein PIR mit Akku läuft. Ich habe beides noch nicht gemacht.
    Gruß
    Golmic
    Vielleicht solltest du auchmal einen neuen Thread dazu aufmachen :) .

    Gruß

    Golmic:)

  • Auf der TinyTX4 Platine ist der Bereich wo der Booster und dessen Bauteile platziert werden, markiert. Die von dir genannten befinden sich innerhalb dieses Bereichs, also lautet die Antwort: Nein
    :fies:


    Wenn du ohne Booster nutzen willst wäre für dich ggf auch TinyTX3 ausreichend, es sei denn du willst den TinyTX4 als Empfänger nutzen... Das ist prinzipiell möglich. Leider ist uns ja bei der Entwicklung ein kleiner Fehler unterlaufen, der von nurazur herausgefunden wurde

  • Welcher Aufwand wäre es denn die TinyRX-Platine, so wie von nurazur beschrieben, zu ändern?
    Ggf. könnte man auch die RFM21PI Platine als Empfänger zu verwenden. Die hat, glaube ich, diesen Fehler nicht und wenn man eh alles neu bestellen muss, spielt das auch keine Rolle. Funtionieren sollten beide mit den TinyTX.

    Gruß

    Golmic:)


  • Welcher Aufwand wäre es denn die TinyRX-Platine, so wie von nurazur beschrieben, zu ändern?
    Ggf. könnte man auch die RFM21PI Platine als Empfänger zu verwenden. Die hat, glaube ich, diesen Fehler nicht und wenn man eh alles neu bestellen muss, spielt das auch keine Rolle. Funtionieren sollten beide mit den TinyTX.


    Bei der Entwicklung der TinyRX4 haben wir uns an der RFM12PI_V2 Platine orientiert - ob diese nicht auch den Fehler haben kann ich nicht beurteilen... Dort geht die RX/TX Leitung aber auch unter der 3V3 Leitung her und kein Kondensator zur Entkopplung, ebenso wie die Leiterbahnen direkt unter dem RFM12B Module - also zumindest ein Punkt den nurazur bemängelt hatte.
    Prinzipiell sind die natürlich Kompatibel, wie => hier <= beschrieben.


    Man könnte auch auf den AVR auf dem Empfänger verzichten und den RFM12B direkt an den Pi anschließen - das RFM12B Module nutzt SPI. Das hatte ich Seinerzeit => hier <= probiert, bedarf dann aber einiger Anpassungen der Scripts usw.


    Ich bin bereits an einer Abspaltung des TinyRX4 Projekts am werkeln - spontan nannte ich es TinyRX5_USB aber da dort kein "Tiny" mehr verbaut ist, sondern ein ATmega, werde ich das Projekt vermutlich noch umbenennen. Ist aber auch noch nicht ganz fertig..
    Bei der Entwicklung hat sich nurazur beteiligt und Tipps gegeben ;)
    => http://www.forum-raspberrypi.d…nsor?pid=211198#pid211198


    Nach dem "RX5_USB" kann ich noch mal gucken ob eine TinyRX4_V2 machbar wäre.

  • Hallo, erstmal danke für die Mühe die sich hier viele Leute mit diesem Projet gemacht haben.


    Bin gerade dabei Funksensoren nachzubauen und habe leider einige Probleme damit. Ich habe bisher 3 Sender auf Steifenplatinen selbst zusammengelötet und in Betrieb genommen. Darauf ist der 18B20 Sensor verbaut.
    Alle Sender besitzten im Moment eine LED und werden von zwei AA Batterien versorgt.
    Der este Sender hat auf Anhieb nach quittieren des Init mit 1s LED-Anzeige barv alle 10s (im Moment so eingestellt) die 2x blinken des erfolgreichen Sendens angezeigt.
    Der zweite Sender braucht nach dem Einschalten der Versorgungsspannung ca. 5s bis er auch in diesen Modus verfällt (deutlich länger wie der erste)
    Der dritte Sender durchläuft anscheinen nur den Init und dann bleibt die LED dunkel. (liegt wohl das er keine gültige Temperatur auslesen kann)


    Der Empfänger durchläuft auch den Init mit Quittierung LED von 1s und blinkt dann aber nur einmal wenn die Sender etwas senden, manchmal auch zwischendurch.
    Woran kann das liegen bzw. wie kann ich hier weitersuchen?


    Danke schon mal für euer Hilfe.


  • Hallo Flint,


    damit wir über das Gleiche sprechen:
    Auf welche Basis (Platinen) hast Du nachgebaut?
    Nach deiner Beschreibung laufen Sender 1 und der Empfänger "normal". :thumbs1: Konntest Du den Empfang von sinnvollen Daten aus diesem "Paar" prüfen?
    Dann können wir uns langsam weitertasten.
    Gruß

  • ...sind denn alle tinytx wirklich identisch und welche Software nutzt du?
    Wartet das Programm auf ein Empfangsbestätigung des tinyrx?
    Vieleicht hat der 2. Sensor Probleme mit dem Senden.

    Gruß

    Golmic:)

  • einmal Aufleuchten heisst CRC Fehler, aber es zeigt dass etwas empfangen wurde, dh. der Gruppencode wurde erkannt - du hast sicherlich eine Antenne (165 mm Draht) angeschlossen, oder ?
    Dein Link funktioniert bei mir übrigens nicht.
    Vielleicht passen auch die Sender und Empfänger Sketches nicht zusammen. Welche verwendest du?

  • ... sind die denn wirklich gleich und hast du geprüft, ob beim Löten keine Fehler (Lötbrücken, falsche Bauteile etc.) gemacht wurden?
    Vielleicht stellst Du mal ein paar Bilder ein.

    Gruß

    Golmic:)

    Edited once, last by golmic ().

  • Bin gerade dabei einen meiner TinyTx nodes auf HTU21D umzurüsten. Mit den sketches von luetzel (hier) hat das auch *** relativ *** schnell geklappt. Mein HTU21 Sensor Board hat zwar 4k7 Pull-ups für SCL und SDA verbaut, aber man braucht schon eine Lupe um zu erkennen dass man erst Loetbrücken schliessen muss damit sie auch wirklich an VCC hängen.


    Bei der Gelegenheit, weil mein "Fuhrpark" gerade voll aufgebaut ist, habe ich einige Strommessungen gemacht:
    Im ersten Plot sieht man die Stromaufnahme mit einer Abtastrate von 2ms. Die Energieaufnahme für eine Messung + Versenden des Telegrams ist also durch die Fläche unter der Messkurve repräsentiert. Dankenswerrterweise liefert das von mir verwendete Programm den Wert: 5.581 mA * 2.46s = 13.7 mAs. Was man auch sehen kann ist dass der Stromverbrauch des RFM Moduls nur ca. 2% des Gesamtverbrauchs darstellt (hierzu habe ich die Rohdaten ausgewertet). Am Ende sieht man sehr schön das Blinken der LED. Die Blink-Funktion beginnt mit einer Pause, was völlig unnötig ist -
    ich habe den Code dafür jetzt wie folgt geändert. Das mag wie Erbsenzählen aussehen - weil eigentlich braucht man die LED ja gar nicht, wenn das System einmal stabil läuft.



    Mir ist aufgefallen dass die Vorlaufzeit für die Temperatur/Feuchtigkeitsmessung 2s ist. Das ist verdammt lang, verglichen mit den 15 ms die das Datenblatt auf Seite 9 fordert:


    "The HTU21D(F) sensor requires a voltage supply between 1.5V and 3.6V. After power up, the device needs atmost 15ms while SCK is high for reaching idle state (sleep mode), i.e to be ready accepting commands from the MCU. No command should be sent before that time. Soft reset is recommended at start, refer p.13."


    Braucht es die 2s Einweichzeit trotzdem oder ist es ein Relikt aus dem DHT22 Sketch?


    Anyway,
    um den Erergieverbrauch genau zu bestimmen hab ich noch eine Ruhestrommessung aufgebaut, wobei mir das etwas "hemdsärmelig" vorkommt, aber eigentlich recht gut funtioniert:
    Als erstes hab ich mir einen 1kOhm Widertsand ausgemessen mit genau 1000 Ohm. Den hab ich dann in Reihe in die Stromversorgung eingebaut und erst einmal überbrückt, das Modul gestartet und die Differenz vor und nach dem Widerstand gemessen (meine 0-Referenz). Dabei habe ich den Cursor nach Augenschein in die Mitte der gemessenen Kurve gelegt (Mitteln machts nicht genauer!). Wenn das Modul in den Sleep-Modus gewechselt hat, entferne ich die Brücke und messe die Spannungsdifferenz erneut.
    Hier das Ergebnis, der Sleep Strom ist irgendwo zwischen 5 und 6.5 µA, also ziemlich genau da wo wir ihn erwarten.
    Frage, kann man das so machen?
    In der Mitte sieht man sehr schön eine Strom"spitze" die durch das Aufwachen des ATtiny entsteht.
    Im dritten Bild habe ich dann noch die Zeit zwischen den Aufwachphasen gemessen die doch deutlich vom Datenblatt abweicht und bei diesem Modul bei etwa 9.1s liegt (statt 8s). Dies deckt sich genau mit meinen Beobachtungen. Meine Nodes senden alle 30Minuten, hierzu muss ich das Senddelay so einstellen:

    Code
    #define SENDDELAY  1592000


    Dies gilt mit geringen Abweichungen für alle meine Nodes. Weiss jemand den Grund dafür?

    forum-raspberrypi.de/attachment/12477/


  • Mit den sketches von luetzel (hier) hat das auch *** relativ *** schnell geklappt.
    Mir ist aufgefallen dass die Vorlaufzeit für die Temperatur/Feuchtigkeitsmessung 2s ist. Das ist verdammt lang, verglichen mit den 15 ms die das Datenblatt auf Seite 9 fordert:
    Braucht es die 2s Einweichzeit trotzdem oder ist es ein Relikt aus dem DHT22 Sketch?


    Tach'chen,


    freut mich das der Sketch doch noch sinnvolle Verwendung findet :thumbs1: Was das Delay betrifft, so kann ich mich noch dunkel erinnern,
    dass ich auch die 15ms im Datenblatt gefunden und das auch so eingestellt hatte (steht ja auch im Kommentar). Funktionierte jedoch
    nicht zuverlässig, d.h. bei einem kürzeren Delay wurden keine Daten mehr gesendet :s .


    Über den Grund kann ich nur wild spekulieren, meinen Sensor habe ich damals beim Chinesen (Aliexpress) bestellt ...


    Den Sketch habe ich seitdem nicht mehr verändert und der Sensor ist seit einem Jahr im Dauerbetrieb auf meinem Balkon.
    Batterien (keine Markenzellen) musste ich bisher noch nicht wechseln. Über den Stromverbrauch mache ich mir daher keine
    Gedanken.


    Beste Grüße,
    /luetzel


  • freut mich das der Sketch doch noch sinnvolle Verwendung findet :thumbs1:


    Ich bin dir wirklich dankbar für die fundierte Arbeit. Hat mir eine Menge Zeit erspart. :thumbs1:


    Was das Delay betrifft, so kann ich mich noch dunkel erinnern,
    dass ich auch die 15ms im Datenblatt gefunden und das auch so eingestellt hatte (steht ja auch im Kommentar). Funktionierte jedoch
    nicht zuverlässig, d.h. bei einem kürzeren Delay wurden keine Daten mehr gesendet :s .


    Über den Grund kann ich nur wild spekulieren, meinen Sensor habe ich damals beim Chinesen (Aliexpress) bestellt ...


    Ich auch - mein erster Sensor funktioniert einwandfrei. Ich habe testweise die "Einweichzeit" auf 50ms verkürzt, hab den TinyTx4 die ganze Nacht durchlaufen lassen, absolut ohne Probleme.
    Da war noch was - das Datenblatt verlangt SCL=HIGH während dieser Zeit. Das habe ich noch eingefügt.


    Den Sketch habe ich seitdem nicht mehr verändert und der Sensor ist seit einem Jahr im Dauerbetrieb auf meinem Balkon.
    Batterien (keine Markenzellen) musste ich bisher noch nicht wechseln. Über den Stromverbrauch mache ich mir daher keine
    Gedanken.


    Am DHT22 war mein erster Satz Batterien nach einem Jahr leer... Gut, es waren Eneloop Batterien, die sollen ja 80% ihrer Kapazität noch nach einem Jahr haben. Die Enttäuschung war trotzdem gross. Dank dem Booster waren sie dann auch noch kaputt (tiefenentladen, das moegen Akkus nicht) daran hatte ich nicht gedacht dass der Booster und Akkus nicht zusammen gehen. Jetzt verwende ich Markenbatterien mit ca. 2800Ah Kapazität, ohne Booster. Jetzt interessiert mich natürlich schon ob die Batterien wieder nach einem Jahr ihren Geist aufgeben.
    So, ich weiss nicht wie oft du pro Stunde sendest, aber ich genüge mich mit 2 Updates pro Stunde. Dann sieht das Budget so aus:
    2x Burst a 14mAs = 28mAs. 6.5 µA * 3600s Leckstrom macht ca. 23 mAs, zusammen etwa 50mAs. Wenn ich nur 1/2 der Batterieladung nutzen kann, also 1400mAh, dann reichen meine Batterien etwa 1400*3600/50 Stunden, also 4200 Tage oder 11.5 Jahre. Also ewig. Na da bin ich ja mal gespannt. Den Energieverbrauch durch den Watchdog Timer, wenn er den Zähler inkrementiert, hab ich noch nicht genau vermessen koennen, auch nicht schätzen, und habe ihn daher in meiner Rechnung vernachlässigt.


  • Ich auch - mein erster Sensor funktioniert einwandfrei. Ich habe testweise die "Einweichzeit" auf 50ms verkürzt, hab den TinyTx4 die ganze Nacht durchlaufen lassen, absolut ohne Probleme.
    Da war noch was - das Datenblatt verlangt SCL=HIGH während dieser Zeit. Das habe ich noch eingefügt.


    Habe eben mal mit einem SI7021 versucht das ganze auszulesen. Leider klappt es nicht das Auslesen bricht mit einem CRC Fehler (return (0.00)) ab.
    An welcher Stelle hat Du das SCL=HIGH eingefügt?
    Gruß
    Golmic

    Gruß

    Golmic:)

  • Mir ist beim Studium des Codes aufgefallen, dass der I2C Bus nur in setup() einmal korrekt initialisiert wird. Wenn aber der ATtiny aufwacht, muss der I2C Bus natürlich jedesmal wieder initialisiert werden. Das tue ich wie folgt in loop(), sofort nach dem Aufwachen:


    Code
    digitalWrite(powerPin, HIGH); // Einschalten des Sensors
    i2c.i2c_init();
    delay(50);
    temp = myHTU21D.readTemperature();
    ...


    Allerdings ist die Funktion i2c_init() privat. Deshalb habe ich sie kurzerhand als 'public' umdeklariert. Das ist aber extrem schlechter Programmierstil, weil der Sensor ausschliesslich über die Klasse 'HTU21D_SoftI2C' angesprochen werden sollte. Hierzu muss ich beide Klassen noch anpassen, aber die Funktionalität bleibt die gleiche.


  • So, ich weiss nicht wie oft du pro Stunde sendest, aber ich genüge mich mit 2 Updates pro Stunde.


    Ich sende alle 5 min und verwende auch nur TinyTX4 mit Booster. Danke für den Hinweis zum i2c_init().


    Funktioniert bei mir erstaunlicherweise auch ohne init(), auch wenn ein längeres Delay notwendig ist.
    Ist vielleicht nicht ganz korrekt, aber werde ich bei mir erst einmal nicht ändern, wegen "never change a running system ..." :D



    Beste Grüße,
    /luetzel