Site Tools


tech:bedsensor

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tech:bedsensor [2020/10/09 18:37] – [Programmierung] bullartech:bedsensor [2020/10/13 17:26] (current) – external edit 127.0.0.1
Line 3: Line 3:
 ====Motivation==== ====Motivation====
  
-Jeder der mit dem Thema Smart Home infiziert wurde überlegt fast kontinuierlich wie er/sie manuelle, wiederkehrende Aufgaben automatisieren kann. Vorausgesetzt genügend Sensoren und Aktuatoren sind schon vorhanden. Ein Bereich der etwas unterrepräsentiert erscheint ist der Belegungssensor um z.B. durch den Gang ins Bett Aktionen auszulösen. \\ +Jeder der mit dem Thema Smart Home infiziert hat, überlegt fast kontinuierlich wie er/sie noch manuelle, wiederkehrende Aufgaben automatisieren kann. Vorausgesetzt die passenden Sensoren und Aktuatoren sind schon vorhanden. Ein Sensorbereich der etwas unterrepräsentiert erscheintist der Belegungssensor um z.B. durch den Gang ins Bett Aktionen auszulösen oder zu unterlassen. \\ 
-Es gibt Alarmmatten oder professionelle Belegungssensoren aus dem Pflegebereich. Auch die Sitzsensoren aus der Automobilindustrie erfüllen eine ähnliche Aufgabe. Allen gemeinsam ist die fehlende Anbindung an ein offenes Protokoll wie MQTT und natürlich der eher hohe Anschaffungspreis.+Es gibt Alarmmatten als Bettvorleger oder professionelle Bettsensoren aus dem Pflegebereich. Auch die Sitzsensoren aus der Automobilindustrie erfüllen eine ähnliche Aufgabe. Allen gemeinsam ist aber die fehlende Anbindung an ein offenes Protokoll wie z.B. MQTT und natürlich der meist seeher hohe Anschaffungspreis.
  
-{{ :tech:bettsensor_prof.png?direct&200 |Professioneller Bettsensor}}+{{:tech:bettsensor_prof.png?direct&300|Professioneller Bettsensor}} 
 +{{:tech:sitzbelegungsmatte.jpg?direct&200|Sitzbelegungsmatte Kfz}}
  
-Einige findige Entwickler sind die Lücke angegangen und haben z.B. Schalter in das Bettgestell integriert [[https://homematic-forum.de/forum/viewtopic.php?t=16239|Selbstgebauter Bettsensor... Steuern und Regeln im Schlaf!]]+Einige findige Entwickler sind diese Lücke angegangen und haben z.B. Schalter in das Bettgestell integriert [[https://homematic-forum.de/forum/viewtopic.php?t=16239|Selbstgebauter Bettsensor... Steuern und Regeln im Schlaf!]]
  
-Mein Ansatz sieht etwas anders aus um möglichst minimalinvasiv für das Bettgestellt zu sein. Als Sensor verwende ich einen druckempfindlichen Widerstand (force-sensitive resistor FSR). Den gibt es auch in einer extra langen Version von 60cm [[https://cdn.sparkfun.com/datasheets/Sensors/Pressure/FSR408-Layout2.pdf|FSR 408]]. Unbelastet ist der Widerstand hochohmig (>10MOhm) und bei 10kg Belastung reduziert sich der Wert auf wenige 100 Ohm. Der Sensor ist selbstklebend und lässt sich einfach auf einem Lattenrost befestigen.+Mein Ansatz sieht etwas anders aus um möglichst minimalinvasiv für das Bettgestellt zu sein. Als Sensor verwende ich einen druckempfindlichen Widerstand (force-sensitive resistor FSR). Den gibt es auch in einer extra langen Version von 60cm [[https://cdn.sparkfun.com/datasheets/Sensors/Pressure/FSR408-Layout2.pdf|FSR 408]]. Unbelastet ist der Widerstand hochohmig (>10MOhm) und bei 10kg Belastung reduziert sich der Wert auf wenige 100 Ohm. Der Sensor ist selbstklebend und lässt sich einfach z.B. auf einem Lattenrost befestigen.
  
 {{ :tech:fsr408.png?direct&300 |FSR 408}}  {{ :tech:fsr408.png?direct&300 |FSR 408}} 
 {{ :tech:force_curve.png?direct&300 |Typical Force Curve}} {{ :tech:force_curve.png?direct&300 |Typical Force Curve}}
 +{{ :tech:bedsensor_installed.png?direct&300 |Installierter Bettsensor}} 
  
-Das lässt sich mit einen einfachen Widerstandsnetzwerk und einem A/D Wandler oder Comparator auswerten. +Beim FSR 408 lässt sich der vorliegende Druck leicht mit einen einfachen Widerstandsnetzwerk und einem A/D Wandler oder Comparator auswerten. 
-Um die Auswertung dann auch ins Smart Home Netzwerk zu bekommen gibt es mehrere Möglichkeiten. Eine der einfachsten ist ein ESP8266 Modul (ESP-07) mit der Open/Source Firmware [[https://www.letscontrolit.com/wiki/index.php/ESPEasy|ESP Easy]]+Um die Auswertung dann auch ins Smart Home Netzwerk zu bekommen gibt es mehrere Möglichkeiten. Eine der einfachsten ist ein ESP8266 Modul (ESP-07) mit der Open/Source Firmware [[https://www.letscontrolit.com/wiki/index.php/ESPEasy|ESP Easy]]. Übrigens kann man einen ähnlichen Lösungsansatz mit einem Raspberry Pi {{https://community.home-assistant.io/t/bed-occupancy-sensor-force-sensing-resistor-fsr-raspberry-pi-zero-wh-analogzero-phat/91999|hier}} nachlesen.
  
 {{ :tech:esp07.png?direct&200 |ESP-07}} {{ :tech:esp07.png?direct&200 |ESP-07}}
  
 ====Features==== ====Features====
-Die Lösung sollte folgende Anforderungen erfüllen: +Die Lösung für den Belegungssensor sollte folgende Anforderungen erfüllen: 
-  * Belegungsauswertung über druckempfindlichen Widerstand (FSR 408)+  * Belegungsauswertung über druckempfindlichen Widerstand (z.B. FSR 408)
   * Zwei Sensoreingänge für ein Doppelbett   * Zwei Sensoreingänge für ein Doppelbett
   * WLAN Einbindung   * WLAN Einbindung
Line 33: Line 35:
 {{ :tech:bedsensor_network.png?direct&200 | Widerstandsnetzwerk}} {{ :tech:bedsensor_network.png?direct&200 | Widerstandsnetzwerk}}
  
-Die Ausgangsspannung zum ADC berechnet sich daher so:+Die Ausgangsspannung zum ADC berechnet sich damit so:
  
 V_ADC = Vcc ( R2 / (R2 + R1) ) V_ADC = Vcc ( R2 / (R2 + R1) )
Line 48: Line 50:
 |  10.0  |  0.25  |  0.94  |  962  |  |  10.0  |  0.25  |  0.94  |  962  | 
  
-Der Maximalwert sollte 1V nicht überschreiten, da beim ESP-07 die interne analoge Referenzspannung 1V beträgt. Zusätzlich benötigen wir noch einen Multiplexer um zwei Sensoren auswerten zu können. Der vollständige Schaltplan ist trotzdem noch sehr übersichtlich.+Der Maximalwert sollte in unserer Anwendung 1V nicht überschreiten, da beim ESP-07 die interne analoge Referenzspannung 1V beträgt. Zusätzlich benötigen wir noch einen Multiplexer um zwei Sensoren auswerten zu können. Der vollständige Schaltplan ist trotzdem noch sehr übersichtlich.
  
 {{ :tech:bedsensor_schematic.png?direct&400 | Schaltplan Bettsensor}} {{ :tech:bedsensor_schematic.png?direct&400 | Schaltplan Bettsensor}}
  
-Natürlich kann man auch nur einen FSR408 mit R2 direkt an das Modul anschliessen und umgeht so eventuell die Platine. +Natürlich kann man auch nur einen FSR408 mit R2 direkt an das Modul anschliessen und umgeht so eventuell sogar die Platine mit einer Freiverdrahtung.
  
-Um das Modul möglichst klein zu halten ist die Schaltung in SMD ausgeführt. +Um das Modul möglichst klein zu halten ist die Schaltung in SMD ausgeführt. Geeignete Heim-Löttechniken sind ja schon an verschiedenen Stellen veröffentlich worden.
  
 {{ :tech:bedsensor_pcb.png?direct&400 | Platine Bettsensor}} {{ :tech:bedsensor_pcb.png?direct&400 | Platine Bettsensor}}
  
-Der Anschluss der Sensoren erfolgt über eine standard 2.5mm Klinkenbuchse (JY029). Die Spannungsversorgung ist auch steckbar mit einer 2.1mm Hohlbuchse (HEBW21). Hierzu findet man sehr preiswerte [[https://www.ebay.de/itm/351218451793|Steckernetzteile]] mit stabilisiertem 3.3V Gleichspannungsausgang. Mehr drahtgebundene Konnektivität benötigt der Bettsensor nicht. \\ +Der Anschluss der Sensoren erfolgt über Standard 2.5mm Klinkenbuchsen (JY029). Die Spannungsversorgung ist auch steckbar mit einer 5.5/2.1mm Hohlbuchse (HEBW21). Hierzu findet man sehr preiswerte [[https://www.ebay.de/itm/351218451793|Steckernetzteile]] mit stabilisiertem 3.3V Gleichspannungsausgang. Mehr drahtgebundene Konnektivität benötigt der Bettsensor nicht. \\ 
-Mit einem 3D Drucker lässt sich dann noch ein unauffälliges Gehäuse verwirklichen.+Mit einem 3D Drucker lässt sich dann noch ein unauffälliges Gehäuse verwirklichen was man leicht mit doppelseitigen Klebeband unterhalb des Bettes befestigen kann.
  
 {{ :tech:bedsensor_housing.png?direct&400 | Gehäuse Bettsensor}} {{ :tech:bedsensor_housing.png?direct&400 | Gehäuse Bettsensor}}
Line 65: Line 67:
 ====Programmierung==== ====Programmierung====
  
-Nachdem die Hardware erstellt wurde müssen wir noch das ESP Modul programmieren. Wir schon erwähnt basiert der Bettsensor auf [[https://www.letscontrolit.com/wiki/index.php/ESPEasy|ESPEasy]]. Im Link findet man auch Anleitungen wie die ESPEasy Firmware auf das Modul aufgesp[eilt wird. Um in den Programmiermodus zu gelangen muss beim Reset Release der Jumper SJ1 geschlossen sein. Die Programmierung erfolgt seriell über JP1.+Nachdem die Hardware erstellt ist müssen wir noch das ESP Modul programmieren. Wir schon erwähnt basiert der Bettsensor auf [[https://www.letscontrolit.com/wiki/index.php/ESPEasy|ESPEasy]]. Im Link findet man auch Anleitungen wie die ESPEasy Firmware auf das Modul aufgespielt wird. Um in den Programmiermodus zu gelangenmuss beim Reset Release der Jumper SJ1 geschlossen sein. Die Programmierung erfolgt seriell über JP1 (USB-Serial Wandler).
  
-Wenn alles geklappt hat und das Modul im heimischen WLAN eingebunden ist kann die gesamte weitere Einstellung über das Webinterface erfolgen. Dazu benötigen wir +Wenn alles geklappt hat und das Modul im heimischen WLAN eingebunden istkann die gesamte weitere Einstellung über das Webinterface erfolgen. Dazu benötigen wir: 
-  * MQTT client setup +  * MQTT Controller setup 
-  *  +  * Device Setup 
-====Beispiel====+  * Rules Setup
  
-Hier die Aufzeichnung der konvertierten Werte [0..1023] einer NachtDie Drops sind nicht bedingt durch eine altersbedingte Inkontinenz sondern das kurzzeitige Wegkuscheln auf die andere Betthälfte :-)  +===MQTT Controller setup=== 
 +Der Bettsensor soll sich ja mit einem vorhandenen MQTT Server verbinden und die aktuelle Belegungsinformation bei Änderung dorthin übertragenDazu gehen wir auf den Reiter //Controller// und tragen die entsprechende Daten einDazu gehören u.a. die IP Adresse des MQTT Servers sowie die Account Daten für die Anmeldung. Das Resultat sollte ähnlich dem folgenden Beispiel aussehen.
  
-{{ :tech:bed?diagram.jpeg?direct&500 Aufzeichnung einer Nacht}}+{{ :tech:easyesp_controller.png?direct&300 MQTT Controller Setup}}
  
 +===Devices===
 +Als zweites brauchen wir ein Device was den analogen Wert misst und speichert. Das lässt sich über den Reiter //Devices// erreichen. Für jeden Sensor gibt es ein eigenes Device und zusätzlich benötigen wir noch ein Dummy Device um den vorherigen Messewert zwischen zu speichern.
  
 +{{ :tech:easyesp_devices.png?direct&400 | Devices Setup}}
  
 +Die grünen Zahlen rechts geben übrigens die aktuellen Messwerte wieder. In dem Beispiel liegt keiner im Bett.\\
 +Hier die Einstellungen für die Devices:
 +
 +{{:tech:easyesp_analog.png?direct&300| Analog Device Setup}}
 +{{:tech:easyesp_dummy.png?direct&300| Dummy Device Setup}}
 +
 +===Rules===
 +Nun haben wir eine Anbindung an den MQTT Server und wir können die Messwerte des ADC abfragen. Was fehlt ist die Ablaufsteuerung. Innerhalb des ESPEasy gibt es dafür die //Rules//:
 +Dazu den folgenden Code in das Rules Set 1 kopieren.
  
-====Rules==== 
 <code> <code>
 On System#Boot do On System#Boot do
Line 117: Line 131:
 endon endon
 </code> </code>
 +
 +Während des SystemBoot setzen wir den Multiplexer entsprechend auf Eingang 1, die Startwerte auf 100 und einen Timer der jede Sekunde die folgende Routine aufruft.
 +Jede Sekunde werden dann beide Werte ausgelesen und wenn es eine Veränderung um den Schwellwert gegeben hat, wird das Ergebnis an den MQTT Server gesendet. Das sind die Zustände IN bzw. OUT. Man kann natürlich auch die aktuellen Werte übermitteln und die Entscheidung ob IN oder OUT der Homeautomatisierung überlassen. Im folgenden Beispiel habe ich so mal eine Nacht aufgezeichnet. 
 +
 +====Beispiel====
 +Hier die Aufzeichnung der konvertierten Werte [0..1023] einer Nacht. Die Drops sind nicht bedingt durch eine altersbedingte Inkontinenz sondern das kurzzeitige Wegkuscheln auf die Bettmitte :-)  
 +
 +{{ :tech:bed?diagram.jpeg?direct&500 | Aufzeichnung einer Nacht}}
 +
 +
 +====Fazit====
 +Der Bettsensor läuft jetzt seit 2 Jahren ohne Probleme. Je nachdem wie stabil das heimische WLAN ist kann aber mal ein Neustart des Bettsensors notwendig werden.
 +
 +====Downloads====
 +  * {{:tech:bedsensor_BOM.pdf|Bestückungsliste (BOM)}}
 +  * {{:tech:bedsensor.brd.zip|PCB}} Eagle format (.brd)
 +  * {{:tech:bedsensor_v2.stl.zip|Gehäuse}} (STL Datei)
 +
 +====Links====
 +  * [[http://www.heise.de/hardware-hacks/artikel/SMD-Loeten-in-der-Pizzapfanne-1276166.html]] SMD Löten mit einfachen Mittel
 +
 +
tech/bedsensor.1602268638.txt.gz · Last modified: 2020/10/09 19:37 (external edit)