CUL_TX Sensor Selbstbau mit Arduino Nano, DHT 22 und 433 Funkmodul

Begonnen von simonberry, 06 März 2016, 18:06:47

Vorheriges Thema - Nächstes Thema

simonberry

    Hallo zusammen,

    Es muss doch möglich sein, einen eigenen Temperatursensor zu basteln, dessen Daten mit einem CUL empfangen werden kann.
    Dazu habe ich im Netz folgendes gefunden:

    Protokoll von Lacrosse / Technoline
http://www.f6fbb.org/domo/sensors/tx3_th.php
Vorreiter mit meiner Idee: http://forum.arduino.cc/index.php?topic=155483.0

Folgende Teile auf einem Steckbrett zusammengesteckt

Und ein Arduino Sketch, der die Temperatur und Luftfeuchte misst und per 433 MHZ an meinen CUL433 sendet.

Im Sketch kann man die Pins von DHT und 433 Modul per define setzen, ich habe den DHT Datenpin auf Pin 2 gelegt und den Datenpin vom Sendemodul auf Pin 10.
Die Sensoradresse (1 - 127) kann man ebenfalls per define (derzeit 111) einstellen, die muss für jeden Sensor, wenn man mehrere hat unterschiedliche einstellen.
Ein original Lacrosse Sensor vergibt diese Adresse beim Batteriewechsel immer neu, mein Sketch ist da etwas konstanter. :-)

Außerdem kann man noch die Wartezeit zwischen den Messungen per Define einstellen.

Als nächste Ausbaustufe könnte man das ganze mit Attiny85 umsetzten und noch einen Stormsparmodus ergänzen, aber da fehlt mir (noch) die Erfahrung.
Dann kann das ganz wahrscheinlich auch mit Batterie betrieben werden, soweit bin ich aber noch nicht.

Viel Spaß damit

Simonberry

Edit 10.03.2016: Links zu Bauteilen ergänzt[/list]
NUC5i3RYK#DBLOG; MYSQL; LIRC; MPD; HM-CFG-HM-USB-2: HM-divers; MQTT2; Signalduino; Shelly; Sonoff; dash_dhcp; FS20; IT; FroniusWR; Somfy RTS; NFS-Server
Rpi B#: nfsmount; ser2net CUL868; CUL433; GPIO4:DS18B20; WEMOS-D1-MINI#JVC-via-IR;

sash.sc

Hört sich gut an! Hast du eine komplette bauteilliste und einen Verdrahtungsplan? Welches Funkmodul hat du denn dafür genommen? Einen Standart oder cc1101, oder......? Wie sieht es mir der Spannungsversorgung aus? Netzteil 5V oder Batterie?

Gruß
Sascha

Gesendet von meinem E6653 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

simonberry

Hallo

ich habe zu den Beuteilen Links ergänzt. Und noch ergänzt, welche Pins wo verbunden sind. (Vcc  und GND müssen natürlich auch jeweils verbunden werden)

Die Stromversorgung, läuft derzeit noch über den USB Port vom Nano, aber mit einem attiny85 will ich das ganze mit Knopfzellen in eine alte Filmdose packen.

viele Grüße

Simonberry
NUC5i3RYK#DBLOG; MYSQL; LIRC; MPD; HM-CFG-HM-USB-2: HM-divers; MQTT2; Signalduino; Shelly; Sonoff; dash_dhcp; FS20; IT; FroniusWR; Somfy RTS; NFS-Server
Rpi B#: nfsmount; ser2net CUL868; CUL433; GPIO4:DS18B20; WEMOS-D1-MINI#JVC-via-IR;

sash.sc

Coole Nummer........

Geht nur der DHT22 Sensor ?
Ich suche noch eine Möglichkeit, die Vorlauf und Rücklauftemp. von der Fußbodenheizung zu erfassen.
Am besten ein Funkmodul mit 2 Anlegefühler und batteriebterieben !;-)

Hast Du da ne Idee ???

Wie gesagt, deine ist schon recht einfach...... Cool

Grüße
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

simonberry

Hallo Sascha

die Dallas DS1820 Dinger müssten auch gehen. Da musst Du aber den Sketch entsprechend anpassen.

Da kannst Du auch mehrere Temperatursensoren an einem Nano anschliessen, braucht halt ein etwas längeres Kabel.

Google mal nach "Arduino Dallas ds1820"

Damit Du Temperaturen getrennt in FHEM erfassen kannst muss Dein Sensor die "SensorID" anpassen. z.B. SensorID + TempId

Da gibt es diverse Beiträge (z.B.: http://blog.wenzlaff.de/?p=1254)

Viel Spaß und Erfolg

Simonberry

NUC5i3RYK#DBLOG; MYSQL; LIRC; MPD; HM-CFG-HM-USB-2: HM-divers; MQTT2; Signalduino; Shelly; Sonoff; dash_dhcp; FS20; IT; FroniusWR; Somfy RTS; NFS-Server
Rpi B#: nfsmount; ser2net CUL868; CUL433; GPIO4:DS18B20; WEMOS-D1-MINI#JVC-via-IR;

sash.sc

Danke, werde mal schauen

Gesendet von meinem E6653 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

juergs

Hallo Zusammen,
das Thema hat mich interessiert, deshalb habe ich mal eine 18x20-Beta-Version zusammengestellt. 
Die Version liest den ersten Sensor ein und sendet ihn an FHEM.
Vorbereitet ist ebenfalls das Einlesen mehrer 18x20-Sensoren am Onewire-Bus. (.. noch nicht ganz fertig, aber ausbaubar ...) 
Benutze ein Arduino-Micro. Der 433-Sender liegt an D9 der 18x20-Data-Pin ist D2.
Die Luftfeuchte wird nicht erfasst, deshalb habe ich sie testhalber auf einen konstanten Wert gesetzt.

Danke @simonberry für die Protokoll-Umsetzung!

Weitergehende Infos: http://www.tweaking4all.com/hardware/arduino/arduino-ds18b20-temperature-sensor/

Reading multiple sensors:
1.)
   Sensor  : 10484b2101080094
   status: OK
   Chip-Type:DS18S20
   Temperature: 22.81 C  (73.06 F)
2.)
   Sensor  : 1019602101080005
   status: OK
   Chip-Type:DS18S20
   Temperature: 21.44 C  (70.59 F)
3.)
   Sensor  : 28ff74f564140178
   status: OK
   Chip-Type:DS18B20
   Temperature: 21.50 C  (70.70 F)

Reading multiple sensors done.

  ROM = 10 48 4B 21 01 08 00 94
  Chip = DS18S20
  Data = 1 2E 00 4B 46 FF FF 0F 10 55  CRC=55
  Temperature = 22.81 Celsius, 73.06 Fahrenheit
  Free RAM: 1489
                                                               22.81 °C
T: 22.81
H: 50.00

sending temperature ... 22.81
0a0de72872f
0a0de72872f
0a0de72872f
0a0de72872f
0a0de72872f

sending humidity    ... 50.00
0aede50050d
0aede50050d
0aede50050d
0aede50050d
0aede50050d

Sleeping: ..

sash.sc

Hört sich gut an!  Läuft das Programm auch auf nen arduino nano?

Gruß
Sascha

Gesendet von meinem SM-T560 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

juergs

Warum nicht? 
Das Programm benutzt nur 2 Port-Pins, evtl. die Leonardo-Serial-Umschalte-Warteschleife rausnehmen:
//--- wait until available (Arduino-Micro has Leonardo-like bootloader, using two COM-Interfaces)
  while (! Serial);


Dann sollte es auch auf dem NANO laufen.

... und auf die Hinweise im Code achten...

Vorbereitet ist schon der Index um auch die LaCrosse-ID hochzuzählen ...
Muss nur noch klären: SensorId zu Index  auf  LaCrosse-ID festzurren und die beliebige (?) Reihenfolge beim Einlesen der 18x20-Sensoren berücksichtigen.
Also gibt es noch Verbesserungs-Potential.
https://www.mikrocontroller.net/topic/168315#new

8)

juergs

Todo:
Einmalig: Sensoren auslesen + indizieren und via Menü LaCrosse-IDs zuordnen und im EEPROM speichern.
Loop: Danach die den Sensoren einlesen und mit der im EEPROM zugeordneter LaCrosseId ausgeben.

Hier eine Menu-Lib, die nicht nur LCD bietet, sondern auch seriell funktioniert und mehrstufige Menüstrukturen bietet:
https://github.com/Jomelo/LCDMenuLib
https://github.com/Jomelo/LCDMenuLib/blob/master/LCDMenuLib/doc/lcdml_german.pdf
http://forum.arduino.cc/index.php?topic=73816.0

Folgende Tasten haben eine Bedeutung im Menü:
e = Enter (In eine Ebene wechseln)
q = Quit   (Geht aus einer Ebene heraus)
u = Up      (Navigation nach oben im Menü)
d = Down (Navigation nach unten im Menü)
Die folgenden Tasten können aber auch in Funktionen verwendet werden:
e = Enter (Benutzerdefiniert  z.B. etwas setzen oder bestätigen)
q = Quit   (verlässt die Funktion und kehrt ins Menü zurück)
u = Up      (Benutzerdefiniert)
d = Down (Benutzerdefiniert)
l = Left      (Benutzerdefiniert)
r = Right   (Benutzerdefiniert)


Serieller Beispieloutput:

juergs

Hier der Zwischenschwenk auf den ATtiny85
https://forum.fhem.de/index.php/topic,52755.msg446298.html#msg446298

ATTINY 25/45/85 / ARDUINO
                   
                                               +-\/-+
       (RES)      Ain0 (D 5) PB5  1 |      | 8  Vcc
                     Ain3 (D 3) PB3  2 |      | 7  PB2 (D 2) Ain1     (DQ-Pin 18B20)     (SCK)
                     Ain2 (D 4) PB4  3 |      | 6  PB1 (D 1) pwm1                              (MISO)
                                    GND  4 |      | 5  PB0 (D 0) pwm0  (433MHz-Sender)  (MOSI)
                                               +----+

Kurt34

Gibt es die Sendecodes auch für andere TX Modelle um eine alte Wetterstation mit dem Arduino wieder mit Außentemperaturdaten zu versorgen?

http://www.techome.de/ratgeber-welcher-techno-line-sensor-passt.html

Ich würde mich für eine Lösung für die TX96 oder "TX95-TH-433 IW008T"  interessieren.

juergs

#12
Hallo Kurt34,

diese Technoline-Sensoren sind ja Fertig-Geräte, die möglicherweise in FHEM verwertet werden können.

Da ich die Sensor-Familie zwar namentlich kenne, aber die von Dir erwähneten nicht im Speziellen,
hatte ich auch Probleme mit deren Vertretern. (Stichwort: 868MHz IT+)
Die Technoline-Sensoren werden aber meist mit einenm anderen Empfangsmodul z.B. den RFM69 oder RFM12 empfangen.

=> Suche mal in der FHEM-SuFu oder im Wiki nach "Erkennung RFM69HCW-Jeelink" + "LaCrosseITPlusReader" + "LaCrosseGateway" .
Evtl. bekommt Du da mehr Infos, ob diese Sensoren in der Liste der erkannten Geräte + Protokolle mit dabei sind.

welches-gateway-fuer-welches-system
jeelink-luftfeuchte-und-temperatur-zum-low-cost-tarif-messen
fhem-temperatur-fuehlen-mit-jeelink
lacrosse-dostmann-technoline-temperatursensoren-an-fhem-anlernen/

Grüße,
Jürgen

burdusch

Hallo simonberry,

ich wollte mal fragen wie genau das Sketch verändert werden muss ich habe die Pinbelegung so wie du.
Den Pin für den Sender habe ich gändert aber den für den Sensor finde ich nicht bzw weiß nicht genau was dazugehört.

Bin für jede Hilfe dankbar!

ich muss zugeben das ich mich mit Arduino nicht so gut auskenne.


MfG

simonberry

Hi

Der pin vom Sensor lässt sich mit diesem define einstellen:

#define PIN_DHT     2    // what digital pin we're connected to

viele Grüße

Simonberry
NUC5i3RYK#DBLOG; MYSQL; LIRC; MPD; HM-CFG-HM-USB-2: HM-divers; MQTT2; Signalduino; Shelly; Sonoff; dash_dhcp; FS20; IT; FroniusWR; Somfy RTS; NFS-Server
Rpi B#: nfsmount; ser2net CUL868; CUL433; GPIO4:DS18B20; WEMOS-D1-MINI#JVC-via-IR;

burdusch

hallo nochmal,

Und danke ich habe es bei mir probiert aber es funktioniert trotzdem nicht, ich habe andere Sketch probiert das senden und der Sensor funktionieren aber das mit dem Lacrosse  klappt einfach nicht.

Wäre es möglich dein Komplettes Sketch  zu sehen.
Ich suche und probiere mich zu Tode es liegt sicher an etwas blödem.

LG

simonberry

Hallo

der Sketch (aus dem ersten Post) ist zwar uralt, aber komplett.

viele Grüße

Simonberry

NUC5i3RYK#DBLOG; MYSQL; LIRC; MPD; HM-CFG-HM-USB-2: HM-divers; MQTT2; Signalduino; Shelly; Sonoff; dash_dhcp; FS20; IT; FroniusWR; Somfy RTS; NFS-Server
Rpi B#: nfsmount; ser2net CUL868; CUL433; GPIO4:DS18B20; WEMOS-D1-MINI#JVC-via-IR;

burdusch

hallo,

ich habe es mit deinem Sektch gemacht, klappt bei mir leider nicht so ganz bzw manchmal kommt was durch aber sehr selten, wenn ich Funksteckdosen steuer funktioniert es super eigentlich, weiß nicht mehr woran es liegen kann.

Trotzdem Danke

MfG

juergs

#18
Die Pulsezeiten wurden etwas "optimiert":

Alt:
// Duration of pulses and delays
int iLongPulse=975, iShortPulse=250, iDelay=1450;


Neu:
https://forum.fhem.de/index.php/topic,52755.msg872773.html#msg872773

und hier:
https://forum.fhem.de/index.php/topic,56660.msg666579.html#msg666579


int iLongPulse = 1200;
int iShortPulse = 400;
int iDelay = 900;

burdusch

Das war es!

Boahh da hätte ich nie drauf kommen können.

Vielen Dank.

MFG