Selbstbau Funkthermometer 433Mhz

Begonnen von matlen67, 28 April 2016, 09:59:57

Vorheriges Thema - Nächstes Thema

juergs

#150
Für den Fensterkontakt könnte ich mir diese Bauform ebenfalls Gehäuse-nah vorstellen:
https://www.reichelt.de/?ARTICLE=27688&PROVID=2788&wt_mc=amc141526782519998&gclid=CKf8qqrDpdACFUVmGwod8bsHHA
oder über einen Hallsensor mit Neodym-Magnet:
TLE4905L, ein Unipolar-Typ: TLE4905L

Das würde die Bauform wesentlich verkleinern  ;)

ArduPino

Zitat von: KölnSolar am 12 November 2016, 19:27:44
Bin jetzt auf 5µA runter  ;) Die werden vom WDT verursacht. Mein Problem war, dass ADC nicht abgeschaltet hatte, obwohl das eigentlich im power_down so sein soll. Machte also 260 µA !!. Schau ich mir noch einmal in Ruhe an.
Ohne WDT, also mit reinem Interrupt-wake-up läuft mit 0 µA(also mein Schätzeisen zeigt nix mehr an). Ideal für meine geplanten Postmelder  ;)
Grüße Markus

Mit deinem Digispark oder eigenbau Attiny85?
Also ADC schalte ich (eigentlich) ab. Wenn denn der code dafür stimmt:
void system_sleep() {
    GIMSK |= _BV(PCIE);                     // Enable Pin Change Interrupts
    PCMSK |= _BV(PCINT4);                   // Use PB4 as interrupt pin
   
    cbi(ADCSRA,ADEN);                    // switch Analog to Digitalconverter OFF
    set_sleep_mode(SLEEP_MODE_PWR_DOWN); // sleep mode is set here
    sleep_enable();
    sei();                                  // Enable interrupts
    sleep_mode();                        // System sleeps here

    sleep_disable();                     // System continues execution here when watchdog timed out

   
    //sbi(ADCSRA,ADEN);                    // switch Analog to Digitalconverter ON
   
}


ADC schalte ich nun sogar erst nach dem letzten sleep(); an. Habe mehrere hintereinander um die Zeit zu verlängern.
Habe aber wie gesagt ca. 0,6 mA mit meinem Digispark. Wenn du den auch verwendest, denke ich liegt es bei mir an was anderem. Hatte die verschiedenen Komponenten im Verdacht.

KölnSolar

ZitatMit deinem Digispark oder eigenbau Attiny85?
Ich hab doch das digispark-Derivat mit Dip-Sockel  ;) Gemessen hab ich dann "außerhalb" des Digispark. Wüßte jetzt auch gar nicht, wie ich mit Digispark messen kann, da der doch am USB hängt. Wie machst Du das denn ?
Zu ADC: Ich hab ja die "Vollversion" von narcoleptic aus dem Inet. Dort gibt es ein disable-ADC-Funktion, welches das PRADC im PRR-Register setzt. Das führte aber genau zu dem Problem. Ich mach es jetzt explizit über ADEN, so wie Du. Daran sollte es bei Dir also nicht liegen  :(
Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

juergs

#153
//----------------------------------------------------
void NarcolepticClass::sleep(uint8_t wdt_period)
{
  wdt_enable(wdt_period);
  wdt_reset();
  WDTCSR |= _BV(WDIE);
  cbi(ADCSRA, ADEN);                    //20160508_juergs added, switch Analog to Digitalconverter OFF
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);
  sleep_mode();     <-------- hier bleibt der ATtiny im Code stehen, bis er wieder aufwacht.
  wdt_disable();
  sbi(ADCSRA, ADEN);                    //20160508_juergs added,  switch Analog to Digitalconverter ON
  WDTCSR &= ~_BV(WDIE);
}


Hallöchen, war doch die ganze Zeit bei mir in der Lib drin.  ;)

Grüße,
Jürgen

ArduPino

Zitat von: KölnSolar am 13 November 2016, 16:09:54
Ich hab doch das digispark-Derivat mit Dip-Sockel  ;) Gemessen hab ich dann "außerhalb" des Digispark. Wüßte jetzt auch gar nicht, wie ich mit Digispark messen kann, da der doch am USB hängt. Wie machst Du das denn ?

Ich betreibe den Digispark mit einem 3,6V LiIon Akku, dafür gibt es ja auch Batteriehalter.
Daran habe ich mir eine USB Buchse gelötet, so kann ich den Digispark schnell entfernen und event. am Programm was ändern...und auch den Strom messen.
Also ein Stück Papier zwischen die Kontakte Batterie zu Halter und da dann gemessen  ;)


meggih

Hey, hab grade den Thread gefunden.

Ich hab sowas auch gebaut, also Attiny, 433Mhz Funkchip, Reed/Kupfer Kontakt.

Verbrauch bei geschlossenem Fenster 4 uA, bei offenem Fenster 6uA.
Hatte erst den internen PULL-UP Widerstand verwendet, der verbraucht aber zu viel bei offenem Fenster bei mir.
Interrupt hat bei mir das Aufwachen nicht zuverlässig funktioniert, also wache ich 1x pro Sekunde auf und checke den Status. Bei Änderung wird dann gesendet.
Alles im Intertechno Protokoll, eine CR2032 sollte n paar Jahre reichen nach großben Berechnungen.
Habe im Garten sowas auch als Bewegungsmelder - funzt mittlerweile über ein Jahr ohne Probleme.


Sketch:

#include <NewRemoteTransmitter.h>
#include <avr/sleep.h>
#include <avr/wdt.h>

#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif

byte REED_PIN=2;     
byte SEND_PIN=3;   

boolean Status=false;

NewRemoteTransmitter transmitter(50630001, SEND_PIN, 290, 2);   // 300us Pulslaenge an PIN 3

void setup() {
  pinMode(REED_PIN, INPUT);
 
  setup_watchdog(6);  // approximately 1 seconds sleep
  cbi(ADCSRA,ADEN);                    // switch Analog to Digitalconverter OFF
  set_sleep_mode(SLEEP_MODE_PWR_DOWN); // sleep mode is set here
}

void loop() {
system_sleep();
}

void system_sleep() {
  sleep_enable();
  sleep_mode();                        // System sleeps here
  sleep_disable();                     // System continues execution here when watchdog timed out
  //sbi(ADCSRA,ADEN);                    // switch Analog to Digitalconverter ON
}

// 0=16ms, 1=32ms,2=64ms,3=128ms,4=250ms,5=500ms
// 6=1 sec,7=2 sec, 8=4 sec, 9= 8sec

void setup_watchdog(int ii) {
  byte bb;
  int ww;
  if (ii > 9 ) ii=9;
  bb=ii & 7;
  if (ii > 7) bb|= (1<<5);
  bb|= (1<<WDCE);
  ww=bb;
  MCUSR &= ~(1<<WDRF);
  // start timed sequence
  WDTCR |= (1<<WDCE) | (1<<WDE);
  // set new watchdog timeout value
  WDTCR = bb;
  WDTCR |= _BV(WDIE);
}

// Watchdog Interrupt Service / is executed when watchdog timed out
ISR(WDT_vect) {
    if (digitalRead(REED_PIN)==LOW && Status==true){
         Status=false;
         transmitter.sendUnit(6, false);
         //pinMode(REED_PIN, INPUT);
    }else if (digitalRead(REED_PIN)==HIGH && Status==false) {
         Status=true;
         //pinMode(REED_PIN, INPUT_PULLUP);
         transmitter.sendUnit(6, true);
    }
}


KölnSolar

Hi, schöner Beitrag.
Verräts Du noch, mit welchem Transceiver Du empfängst und was sich dort #include <NewRemoteTransmitter.h> verbirgt. Ich interessiere mich ja fürs IT senden.
Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

meggih

Hey,

ja, das ist die Library https://bitbucket.org/fuzzillogic/433mhzforarduino/wiki/Home

Ich habe sie noch etwas modifziert (Akzeptanzniveaus für Empfang z.B.). Damit ließen sich noch ein paar "Prozent" mehr rausholen.
Wichtig ist, dass man die NEWRemoteLibrary verwendet.

Was ich besonders tolle finde ist, dass es auch Temp Sensoren und Empfänger gibt, die in FHEM als Hideki erkannt werden.

Und, es gibt auch Möglichkeiten zum Repeater-Bau, sowohl für IT als auch für Temp/Hum.

Somit läuft bei mir zu Hause jetzt alles tiptop, komplett selbstgebaut.

KölnSolar

KLASSSSSSEEEEEEE.
Genau eine solche Lib, mit der man IT V3 in Bastelprojekten verschicken kann, hab ich lange gesucht !!! Nicht nur, dass ich Lacrosse als ziemliche Krücke für Schalter empfunden hab, sondern mein RFXTRX, den ich produktiv einsetze, hatte das Protokoll aus unerfindlichen Gründen nicht erkannt, obwohl mein ausgemusterter CUL433 alles empfing.
DANKE
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

meggih

kein Problem, falls Du noch Fragen hast. Ich experimentiere auch ständig mit allem möglichen rum.

ArduPino

Zitat von: meggih am 21 November 2016, 10:01:31
Hey, hab grade den Thread gefunden.

Ich hab sowas auch gebaut, also Attiny, 433Mhz Funkchip, Reed/Kupfer Kontakt.

Verbrauch bei geschlossenem Fenster 4 uA, bei offenem Fenster 6uA.
Hatte erst den internen PULL-UP Widerstand verwendet, der verbraucht aber zu viel bei offenem Fenster bei mir.
Interrupt hat bei mir das Aufwachen nicht zuverlässig funktioniert, also wache ich 1x pro Sekunde auf und checke den Status. Bei Änderung wird dann gesendet.


Mein Sketch ist bestimmt drei mal so lang !
Ich habe das auch per Interrupt gemacht, weil ich dachte dann könnte ich die Sleep Phase länger laufen lassen.
Dieser funktioniert bei mir aber ohne Probleme, scheint aber nichts zu bringen, was Verbrauch betrifft, wenn ich das hier so sehe.

Was braucht man denn an minimal Hardware außer Attiny85, Sender Modul ?
Hast du auch einen Kondensator zwischen GND und Vcc
Ach da sehe ich gerade das es ein reiner Türkontakt ist...ok...könnte man ja leicht erweitern.

meggih

Hallo,

ich hab den Thread Titel eben erst gesehen - ich dachte, es ginge nur um die Fensterkontakte.
ich hab als gleiche Art, Temp/Hum-Sensoren, Tür/Garagen-Kontakte und Bewegungsmelder. Entweder mit Akku/Batterie oder 5V-AC-DC Wandler, je nach Ort.
Dazu auch: Repeater für IT und Hideki, Dachbodenklappensteuerung mit Licht/Mikroschalter und altem Akkuschrauber mit Bandaufwickeln als Motor.

-Attiny85 + 100nF Kondensator

-433Mhz Sender und/oder Empfänger: http://www.ebay.de/itm/282162804057?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT meist so ein Set
Die billigen Sender sind aber auch gut. Jedoch taugen bei mir nur die "teuren" Empfänger was.

-Sensor/Aktor(z.B. Relais mit Transistor Vorschaltung)

Zahlen werden über das Hideki Protokoll gesendet (Temp/Hum/Batterie-Spannung = 5,53V -> 55,3 Grad)
Alle digitalen Zustände werden über das IT Protokoll gesendet (Sensoren, auf/zu, Garagentor auf/zu machen, etc)

Erfahrung: Externe Interrupts funktionieren bei dem Attiny nicht zuverlässig bei mir. Beim Fensterkontakt, der geschlossen zu ist, 1M-Ohm PullUp Widerstand verwenden, da der interne ca 100 uA zieht. Am besten funktioniert das Watchdog 1 sec Schlafen bei Fensterkontakten und Status checken. Bei Tempsendern das Maximum 8s schlafen, aufwachen, Variable hochzählen, wieder schalfen und dann alle 10 mins n Wert senden.

KölnSolar

Lustig, die Library hatte ich mir schon vor `nem Monat aus dem Netz gesaugt. Da aber nicht auf Intertechno verwiesen war, hatte ich es erstmal liegen lassen, denn ich dachte, dass es irgendwas Eigengestricktes ist.  :-\

Die Lib funktioniert perfekt. Hab sendDim getestet. Ganz simpel zu nutzen ;D Empfang sowohl im CUL, als auch RFXTRX.

@meggih: kann es sein, dass Deine Interrupt-Probleme daher kamen, dass Du in der Interrupt-Routine die komplette Verarbeitung machst ? Soll man ja eigentlich vermeiden, wie man immer wieder liest.
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

juergs

#164
ZitatLustig, die Library hatte ich mir schon vor `nem Monat aus dem Netz gesaugt. Da aber nicht auf Intertechno verwiesen war, hatte ich es erstmal liegen lassen,
Ging mir auch so.....  :D

@meggih
Der Verweis
Zitatdie in FHEM als Hideki erkannt werden
ZitatSupports Sending and receiving signals from and to weather stations, made by Hideki Electronics.
These weather stations are sold under the brand names Cresta, Mebus, Irox, Honeywell and RST.
They have a remote outdoor 3 or 5 channel sensor for temperature and humidity.
More expensive variants also support a rain-sensor, anemometer and UV-sensor.

Ist ja sehr interressant. Ich schaue mir mal die Unterschiede zum Lacrosse-Protokoll an.
Interessant finde ich auch die Idee des IT-Reppeaters bei zu grossen Distanzen zwischen Sender + Empfänger.
Die Module scheinen etwas teurer zu sein, aber die Abschirmung scheint es wohl auszumachen...

Die 100nF am ATTiny scheinen mir etwas dünn, aber besser als keiner.
Meine 100uF zu hoch ... 1 uF scheint mir ausreichend zu sein.
Ist eher gedacht, das TX-Modul zu unterstützen ....

Ich habe auch noch ein passendes Thema zu 433+Powersave+Protokoll gefunden:
433MHz und jede Menge Tipps zu Sensoren

@KölnSolar
ZitatEmpfang sowohl im CUL, als auch RFXTRX.
Benutze ich nicht. Das Protokoll, mit dem beide gehen, scheint aber nicht LaCrosse TX3 zu sein.
-> Umso besser, lohnt sich also mal anzuschauen ...  ;) 

Danke für die Tipps!

Grüße,
an alle.