Arduino als kabelloser Temperatur-Sensor?

Hallo,

ich habe bisher ein wenig mit Arduino und Raspberry rumgebastelt - Programmierkenntnisse kann ich mir angeignen, von Elektrotechnik kenne ich mich, bis auf Basics aus dem Physikunterricht, nicht aus.

Ich möchte die Temperatur meiner Wohnräume überwachen. Da ich in Miete wohne und keine Kabel in jeden Raum legen möchte, suche ich nach einer kabellosen Möglichkeit, ein Temperatursignal an einen zentralen Arduino (eher ein Raspberry) zu übertragen.

Anscheinend stehe ich damit nicht alleine da, aber wirkliche Lösungen habe ich bisher nicht gefunden (oder aus zuwenig Verständnis übersehen).
Da es anscheinend noch niemandem gelungen ist, von so einer einfachen Wetterstation mit Funk-Außensender das Protokoll zu knacken um die Daten an Arduino/Raspberry einzulesen, folgt für mich mental die Idee, selbst einen batteriebetriebenen Funk-Temperatursensor zu basteln.

Größtes Problem ist hier wohl der Energieverbrauch um zumindest auf 2-3 Monate Batterielaufzeit zu kommen.

Ich stelle es mir vielleicht zu einfach vor?

  • Kleiner Arduino (kenne nicht alle, eben einer, der äußerst wenig Strom verbraucht oder sich in Sleep setzen lässt) mit 433 Mhz Sender + einem einfachen Temperatursensor
  • Angeschlossen an ein kleines Batteriepack mit Akkus
  • Temperatursignal wird per 433 verschickt und von einem Raspberry mit 433 Empfänger empfangen und weiterverarbeitet

Einen Temperatursensor auslesen sollte nicht das Problem sein. Auch die Daten per 433 verschicken wird möglich sein. Was wohl problematischer ist, ist der Batteriebetrieb.

Nun meine Fragen:

  1. Gibt es ggf. schon soetwas "fertig"; ein fertiges Shield, Kit, oder Produkt? Ein HowTo zum nachbauen?
  2. Welcher Arduino (oder Klon) hat den geringsten Stromverbrauch? Anschlüsse müssen, wie gesagt, für einen 433 Sender + Tempfühler ausreichen
  3. Welche Arduinos unterstützen diesen "Sleep"-Modus? Ich habe von einer jeeLib gelesen, die über eine loseSomeTime()-Funktion in einen Stromsparmodus wechselt; und ich habe von "Interupts" gelesen. Ich habe hier zwei Arduinos rumliegen (UNO und Ethernet), unterstützen die von Haus aus so einen Sleep-Modus? Sodass ich vielleicht selbst schon ein wenig basteln und testen kann?
    Es würde ja völlig genügen, wenn der Arduino alle 5 oder 10 MInuten aus dem Schlaf aufwacht, das Temperatursignal schickt und wieder einschläft.

Vielen Dank für eure Hilfe!

Das Protokoll der Kabellosen Wetterstation ist bekannt. (bin jetzt mal zu faul zu suchen)

Die Arduino mit dem wenigsten Stromverbrauch im Sleepmodus sind die die keine zusätzliche Elektronik (außer dem ATmega) auf der Platine haben. Das ist der Arduino mini und PRO mini.

Alle Arduinos unterstützen prinzipiell den Sleep-Modus. Aber bei den wenigsten ist er sinnvoll. Ein Arduino UNO zB hat außer dem Amega 328 auch noch einen ATmega16U2 einen Operationsverstärker 4 LED wovon 1 immer leuchtet. Wenn Du nun den ATmega328 in sleep schickst und der einige µA verbraucht aber der Rest auf der Platine fröhlich seine 5-10 mA weiterverbraucht dann sparst Du wenig.
Außerdem muß der Sender auch in Sleepmodus gehen können.

Grüße Uwe

Das mit den verschiedenen Sleep Modi und Optionen zum Aufwecken ist hier in größter Ausführlichkeit (und ohne extra Libs) erklärt:

Aber es ist wie gesagt nur bei einem nackten Prozessor wirklich sinnvoll. Da steht schon gleich am Anfang, dass die Entwicklungsboards etwa 30mA zusätzlich brauchen.

neovanmatix:
...
Da es anscheinend noch niemandem gelungen ist, von so einer einfachen Wetterstation mit Funk-Außensender das Protokoll zu knacken um die Daten an Arduino/Raspberry einzulesen, folgt für mich mental die Idee, selbst einen batteriebetriebenen Funk-Temperatursensor zu basteln.
...

So ganz richtig ist das nun auch wieder nicht :wink:
Ich habe u.a. die TFA 30.3125 "geknackt" und es funktioniert problemfrei!

neovanmatix:

  1. Gibt es ggf. schon soetwas "fertig"; ein fertiges Shield, Kit, oder Produkt? Ein HowTo zum nachbauen?

Wüßte ich nicht. Sieht wohl eher mau aus.

neovanmatix:
2) Welcher Arduino (oder Klon) hat den geringsten Stromverbrauch? Anschlüsse müssen, wie gesagt, für einen 433 Sender + Tempfühler ausreichen

Den geringsten Stromverbrauch hat ein "nackter" Atmega-Controller. Ohne Spannungswandler, ohne USB-Chip, ohne Power-ON-LED. Der dann die meiste Zeit im Sleep-Modus betrieben wird.

neovanmatix:
3) Welche Arduinos unterstützen diesen "Sleep"-Modus?

Alle.

neovanmatix:
Ich habe hier zwei Arduinos rumliegen (UNO und Ethernet), unterstützen die von Haus aus so einen Sleep-Modus? Sodass ich vielleicht selbst schon ein wenig basteln und testen kann?

Ja, basteln und testen kannst Du damit. Bei einem UNO braucht allerdings der Controller den wenigstens Strom. Ein UNO-Board zieht ca. 45 mA, davon der Atmega alleine ca. 15 mA. Selbst wenn Du mit Sleep-Modus den Stromverbrauch des Controllers von 15 mA auf 0 mA senkst, braucht das Board noch 30 mA. Du kannst dann zwar das Abstrippeln anfangen, aber auch das Auslöten der Power-On-LED vom Board spart nur vielleicht 8 mA. Wie gesagt, testen und programmieren kannst Du mit so einem Board. Aber wenn der Baustein fertig programmiert ist, mußt Du ihn quasi "nackt" betreiben, nur mit der unbedingt notwendigen Hardware. Für Batteriebetrieb möglichst heruntergetaktet auf 8 MHz. Je niedriger die Taktfrequenz, bei desto niedrigerer Spannung läuft ein Atmega328.

Der "sichere" Betriebsbereich bei der Spannungsversorgung hängt nämlich von der Taktrate ab. Bei 16 MHz läuft ein Arduino sicher zwischen 3,8 und 5,5 V. Aber bei 8 MHz läuft er sicher zwischen 2,5V und 5,5V. Und: Bei 8 MHz verbraucht er weniger Strom als bei 16 MHz, wenn er nicht im Sleepmodus arbeitet.

Der Betriebsbereich von 2,5 bis 5,5 V läßt sich sehr gut mit drei handelsüblichen Mignon-Batterien abdecken: Drei Alkali-Mangan AA-Zellen haben "voll" ca. 31,6V und "leer" ca. 31,0V. Macht Betriebsbereich 3,0 bis 4,8 Volt, wenn Du ein 3*AA Batteriepack dranhängst und den Controller mit 8 MHz taktest. Der Controller läuft damit prima. Du müßtest dann nur noch einen Temperatursensor und einen Funksender dranhängen, die mit Betrieb bei dieser Schwankungsbreite bei der Eingangsspannung ebenfalls klarkommen. Wobei man da notfalls tricksen könnte: Es gibt Step-Up Wandler, die man nur bei Bedarf einschalten könnte, wenn beispielsweise Sensor und Sender eher mit einer stabilisierten 5V Spannung versorgt werden müßten.

neovanmatix:
Es würde ja völlig genügen, wenn der Arduino alle 5 oder 10 MInuten aus dem Schlaf aufwacht, das Temperatursignal schickt und wieder einschläft.

Genau so funktioniert Batteriebetrieb mit allen mikroprozessorgesteuerten Geräten, die mit einem Batteriesatz Laufzeiten von bis zu mehr als einem Jahr erreichen.

Aber wie gesagt: Alle mir bekannten handelsüblichen "Boards" kannst Du dafür vergessen, mit Power-ON LED, mit Spannungswandlern, mit USB-Chip etc. Außer eben, um das Programm fertig zu entwickeln und zu testen, dafür sind die Boards gut. Aber nicht für dauerhaften Batteriebetrieb.

Hallo,

hm. Die einzige Möglichkeit, dass also sinnvoll umzusetzen, wäre ENTWEDER einen Pro Mini mit 8mhz zu besorgen, oder sich das nötigste selbst auf einer Platine zusammenzulöten.

Wenn ich das richtig verstanden habe, kann ich einen ATmega auf meinen Uno stecken, über USB programmieren, und dann programmiert "frei" betreiben. Der Pro Mini hat, wenn ich das in einigen Beiträgen richtig gelesen habe, im Sleep-Modus trotzdem noch etwa 5mA - kann das sein? Oder habe ich mich da verlesen?

Ist es kompliziert oder sind spezielle Kenntnisse/Hardware nötig, um einen ATmega per Hand zusammenzulöten?

@mde110: Kannst du damit mehrere Funk-Sender abfragen? Oder nur einen?

Nimm doch einen Attiny44 (1-2 Euro) oder etwas noch kleineres, einen Sensor (1 Euro) und in der Bucht die Nummer 330908570273 (4pcs 433Mhz WL RF transmitter and receiver link kit for Arduino/ARM/MCU, für 4 Euro gleich 4 Sender und Empfänger).
Den Attiny programmierst Du über einen Arduino. Hat einen Stromsparmodus und alles, was man braucht. Wozu gleich einen Atmega?

Sowas habe ich auch demnächst vor, zur totalen Überwachung meiner vier Wände - der NSA immer einen Schritt voraus :wink:

Grüße

Hi,

prima, die Empfänger/Sender habe ich mir direkt mal bestellt - wollte mir sowieso einen 433 Empfänger besorgen; jetzt krieg ich halt 4 :->
Dann habe ich auch hier ein HowTo gefunden, wie der Attiny44 mit einem Arduino programmiert werden kann:
http://hlt.media.mit.edu/?p=1695

Das ist prima; sieht aus, als würde ich das auch noch tatsächlich ohne viel einlesen hinkriegen :slight_smile:

Ich habe mir mal einen Warenkorb zurecht geklickt; habe aber noch 2 Fragen.

Einkaufszettel:
1x 3 Mignon Batteriehalter (HALTER 3XAA: Batteriehalter für 3 Mignon (AA), geschlossen bei reichelt elektronik)
1x 10 uF Kondensator (SM 10 - 16RAD: Subminiatur-Elko, radial, 10 µF, 16 V, RM 1,5, 85°C, 1000h, 20% bei reichelt elektronik)
1x ATTiny44 A-PU (ATTINY 44A-PU: 8-Bit-ATtiny AVR-RISC Mikrocontroller, 4 KB, 20 MHz, PDIP-14 bei reichelt elektronik)

Den Kondensator benötige ich, laut den Anleitungen, am Arduino zur Programmierung des ATTiny. Da gibt es mehrere Ausführungen (16V, 100V, etc.). Ist der obige OK?

Weiter, und viel wichtiger: Wenn ich bei Reichelt nach ATTiny44 suche, finde ich ~6-8 Einträge. Optisch unterscheiden Sie sich schonmal von den kleinen Beinchen - ich benötige da wohl die mit den langen, damit ich sie aufs Steckbrett klemmen kann.
Nun gibt's da aber immernoch drei Varianten:
ATtiny44A-PU
ATtiny44-20PU
ATtiny44V-10PU

V steht wohl für "Low Voltage". A für eine zweite Revision. P für DIP-Gehäuse. U für Bleifrei. 10 und 20 wohl für die Mhz. Der ohne Zahlangabe hat wohl auch 20 Mhz.

Welchen nehm ich den nun? "Reicht" mir der LowVoltage mit 10Mhz um ein Temperatursignal auszulesen und per 433 zu verschicken? Wie äußerst sich das den? Vermutlich werden Befehle einfach nur langsamer abgearbeitet, oder?

neovanmatix:
...
@mde110: Kannst du damit mehrere Funk-Sender abfragen? Oder nur einen?

Die Sender werden nicht direkt bidirektional "abgefragt" sondern nur "Broadcast-mäßig" empfangen ;). Alle die empfangen werden, werden auch ausgewertet.
Wenn du einen MEGA mit RFM12 hast, kannst du den Sketch ohne Änderungen laden.
Ansosnten musst du die Interrupts ändern...

neovanmatix:
Welchen nehm ich den nun? "Reicht" mir der LowVoltage mit 10Mhz um ein Temperatursignal auszulesen und per 433 zu verschicken? Wie äußerst sich das den? Vermutlich werden Befehle einfach nur langsamer abgearbeitet, oder?

Ich will dir nicht zu Nahe treten, aber mit dem Wissen willst du mehrere kleine Temp Sender bauen? Das ist aber ein großer Schritt! Power Management ist auch eine tricky Sache...
Aber BTW: Keine Sorge, 10Mhz reichen locker aus und sind für diese Anwendung unkritisch.

Various power-saving techniques:

Solang mich dieser kleine Schritt 20 Euro kostet und ich mich ein paar Stunden beschäftigen kann... kommt ein Kinobesuch mit schlechtem Film auch nicht billiger :slight_smile:

Und, was ich gesehen habe, benötige ich da doch gar kein sonderlich großes "Wissen" - also nichts, wo man sich als nicht-fachkundiger Wochenlang die Zähen ausbeist?

Den ATTiny bekomme ich sicherlich programmiert. Einen Sensor abfragen und per 433 verschicken sollte auch nicht das Thema sein.
Was das "Feintuning" bzgl. den Sleepmodis angeht werde ich mir mit Sicherheit die Zähne ausbeisen. Den passendes Werkzeug, um z.B. zu testen, ob und wie der Atmel in den Sleepmodus geht, habe ich natürlich nicht.
Und ein "Live-Test" wird halt auch schwierig: Warten bis die Batterien leer sind; ggf. im Code nachbessern, neue Batterien rein und warten bis die leer sind... naja; da sprechen wir wohl von Wochen oder Monaten :smiley:

Ich werde die Tage mich noch ein wenig einlesen, und hier nochmal meinen Warenkorb auf Fehler prüfen lassen - ist halt immer ärgerlich bei diesen 10 Cent beträgen; wenn man da was vergisst und wieder 6 € Porto zahlen muss... :slight_smile:

neovanmatix:
Solang mich dieser kleine Schritt 20 Euro kostet und ich mich ein paar Stunden beschäftigen kann... kommt ein Kinobesuch mit schlechtem Film auch nicht billiger :slight_smile:
...

Das ist gut :fearful: Musste echt schmunzeln!
Du suchst Beschäftigung, die wirst du finden :smiley:

Ich werde die Tage mich noch ein wenig einlesen, und hier nochmal meinen Warenkorb auf Fehler prüfen lassen - ist halt immer ärgerlich bei diesen 10 Cent beträgen; wenn man da was vergisst und wieder 6 € Porto zahlen muss... smiley

Ist einfach echt wahr!

Hast du ein Multimeter? Damit kannst du den Stromverbrauch messen. Ist dann nur eine Frage des Messbereichs. mA sollten kein Problem sein. Aber man muss auch nicht unbedingt µA messen können um festzustellen ob er überhaupt schläft. Da würde ich mich dann auf den Code verlassen und die Angaben auf der Seite (siehe oben), da das jemand schon mal gemessen hat.

Ansonsten testweise eine LED anschließen die nur blinkt wenn er aufgeweckt ist.

Ich bin auch gerade dabei, eine art Wetterstation zu bauen, um meine Raumtemperaturen zu überwachen. Ich verwende hierfür ATtiny84-Sensoren zusammen mit einem 433MHz-Sender (RFM12B). Hab meine Sensoren zwar erst seit einigen Wochen in Betrieb, Laufzeit dürfte aber etwa 1 Jahr betragen mit 2xAA-Batterien.

Schau dir doch mal diese Seite hier an, dort ist alles super erklärt: http://nathan.chantrell.net/tinytx-wireless-sensor/
Das Design und der Code ist bereits auf minimaler Stromverbrauch ausgelegt. Gibt auch Eagle- bzw. Gerber-Dateien, um sich Platinen fertigen zu lassen.

Bei Fragen hierzu kann ich dir gerne weiter helfen.

Top Link! Da hast du alles was du benötigst!

Und die Verbindung zwischen Basis und Sensor funktioniert im Datenmodus. Also nicht mit OOK.