MQ7-esp/esp8266-RM370-interrupt/README.md
2021-01-13 15:25:56 +01:00

4.0 KiB

README ESP8266

Die aktuelle Implementierung ist für den ESP8266 vorgesehen.

Dabei wird per Interrupt eine Veränderung (FALLING) der LED Steuerleitungen überwacht. Zusätzlich wird an die Steuerleitung des Buzzers ein Ausgang gelegt. Optional kann der analoge Eingang zur Überwachung der Batteriespannung eingesetzt werden (Mindestens 200k Ohm Widerstand fehlen noch).

Funktion Pin
rote LED D7
gelbe LED D6
grüne LED D5
Buzzer D2
GND GND
VCC RM370 5V

Durch die zwei Spannungsversorgungen und sowie unterschiedlichen VCC Rails ergeben sich in der Signalverarbeitung Probleme:

  1. Die ESP8266 GPIOs sind nicht 5V tolerant (https://www.espressif.com/sites/default/files/documentation/Espressif_FAQ_EN.pdf Punkt 5.14)
  2. Die Spannungslevel nach einem unidirectionalen LevelShifter sind falsch (https://www.espressif.com/sites/default/files/documentation/0a-esp8266ex_datasheet_en.pdf Kapitel 5.1)
  3. Die Spannungslevel funktionieren wenn die Batterien an Spannung verloren haben und die V_USB des wemos D1 mini die VCC vom RM370 übernimmt
  4. Wenn das Wemos D1 Board ohne Spannung ist, schweben die einzelnen GPIO
  5. Eine Spannungsmessung der Batterien ist nicht möglich, da selbst ohne Batterien die Spannung ~4.1V beträgt

Die Lösungen sind vermutlich wie folgt:

  1. Mit einem bidrectionalen Level Shifter kommt man auf passende Level
  2. Siehe Punkt 1, vermutlich
  3. Siehe Punkt 1 sowie den Rail vom RM370 mit 3.3V nutzen als Low Level
  4. Auswirkungen noch unbekannt
  5. keine

Der Versuchsträger führt die Kabel nach unten hinaus, die wemos D1 mini Platine (3,5cm x 2,5cm)sowie der Logic Level Shifter (1,5cm x 1,5cm) passen auch auf den Batteriehalter innerhalb des Gehäuses. Problematisch ist die Kabelführung, da die Befestigungsschrauben das PCB ohne größere Spalte an das Gehäuse drücken. Wenn dünne Einzellitzen genutzt werden, so können diese durch die vorhandenen Löcher der JTAG-Header gezogen werden. Alternativ kann je nach Stärke auch an der Platine zur LED Seite bzw beim Buzzer nach oben hin Kabel durchgeführt werden.

Mittels Diode kann man den freien V+ Pin nutzen.

PCB

Die wesentlichen Eigenschaften des PCB wären:

  1. Nutzung der Testpads auf der Unterseite
  2. Schutzschaltung vor Leckströmen
  3. Logic Level Shifter für die GPIO
  4. Spannungsteiler für den ADC 5V<->1V (440k und 100k)

Funktionsweise

Der eigentliche CO-Melder wird nicht verändert, es werden lediglich die Zustände erfasst und per WLAN weitergeleitet. Hierbei kommt ESP-Now zum Einsatz, ein WiFi Vendor Frame Format, welches ohne AP auskommt. der Payload wurde in einer Struktur geordnet, sodass man eine Präamble, eine eindeutige Kennung, den codierten Zustand sowie ein Flag für geringe Batteriespannung mitteilen kann. Maximal sind 20 Teilnehmer zugelassen, diese nutzen den Channel 3 und geben sich als AP mit der Kennung "CO-WARN" aus. Der Sketch verarbeitet maßgeblich zwei folgende Aufgaben:

  • Statusüberwachung
  • eingehende Broadcast Frames weiterleiten Hierzu werden die LEDs per Interrupt überwacht. In der Realität leuchten die LEDs nur kurz aber für einen Menschen erkennbar auf, dies ist aber zu lange für eine einmalige Interruptauslösung. Die Beschränkung auf RISING funktionierte nicht wie erwünscht. Grundsätzlich wird in den Interrupts für die LEDs wird der Eigenzustand im Strukt rm370 ownState gespeichert, zusätzlich wird der globale Status angepasst. Sollte der globale Status nicht dem Eigenen entsprechen, so wird der Buzzer aktiviert. Ist der Buzzer durch das System selbst schon aktiv bzw. die LED rot oder gelb leuchten, dann wird der Buzzer nicht beeinflusst. Ist der eigene Status entweder rot oder gelb, so wird diese Nachricht an alle anderen verschickt. Werden Nachrichten empfangen, so werden diese mit dem eigenen Status abgeglichen und bei Code 'rot' oder 'gelb' wieder per Broadcast weitergeleitet. Weiterhin wird geprüft, ob diese Kennung schonmal empfangen wurde. Nach 20 Sekunden wird der globale Status wieder zurückgesetzt. Dies setzt ein Ausbleiben eingehender Nachrichten voraus.