Einbinden von kompensierten Luftqualitätssensoren in das Internet der Dinge

Zur Verfügung gestellt von Nordamerikanische Fachredakteure von Digi-Key

Durch den Einbau von Luftqualitätssensoren in intelligente Gebäudesysteme kann eine frühzeitige Warnung vor gefährlichen Gasen und Chemikalien erreicht werden, aber den kommerziellen Luftqualitätssensoren fehlen bisher integrierte Fähigkeiten, die für Netzwerke von intelligenten Gebäuden unverzichtbar sind. Allerdings können diese Defizite durch den Einsatz von benutzerfreundlichen Entwicklungskits überwunden werden, die die erforderliche zusätzliche Rechenleistung und eine drahtlose Funkverbindung bieten.

Der beliebteste Baustein zur Messung der Luftqualität, der die ppm-Konzentration von CO2 und flüchtigen organischen Verbindungen (Volatile Organic Compounds, VOC) in der Umgebungsluft misst, basiert auf einem elektrochemischen Halbleiterelement, das eine zur gemessenen Konzentration des Stoffes proportionale Ausgangsspannung generiert. Die Genauigkeit der Messung wird dabei jedoch von der Temperatur und der Feuchtigkeit beeinflusst. Temperatur- und Feuchtigkeitssensoren – die die Daten für einen Algorithmus zur ständigen Kompensierung und damit zur Erhöhung der Genauigkeit der Ausgabe eines Luftqualitätssensors liefern könnten – gehören in der Regel nicht zur Grundausstattung dieser Art von Luftqualitätssensoren.

Darüber hinaus verfügt das derzeitige Sortiment von Luftqualitätssensoren nicht wie andere Sensortypen über die für die Verbindung mit Netzwerken von intelligenten Gebäuden erforderliche Drahtlostechnologie.

Aufgrund dieser Defizite ist es für die Ingenieure schwieriger, Luftqualitätssensoren für den drahtlosen Einsatz in Heim, Gewerbe und Industrie zu konstruieren.

Da seit kurzem Entwicklungskits mit Temperatur- und Feuchtigkeitssensoren sowie mit drahtloser Verbindungsmöglichkeit für Luftüberwachungsprodukte lieferbar sind, kann dieser Herausforderung jedoch nunmehr begegnet werden. In diesem Artikel wird die Verwendung dieser Entwicklungskits zur Verkürzung des Entwicklungszyklus für Luftqualitätsprodukte beschrieben.

Merkmale von MOS-Sensoren

Es gibt mehrere Arten von Sensoren zur Überwachung der Luftqualität. Beispiele sind elektrochemische Sensoren (EC), nicht dispersive Infrarot-Sensoren (NDIR), Photoionisierungsdetektoren (PID) und thermische Sensoren.

Aber ein MOS-Sensor (Metal Oxide Semiconductor - Metalloxid-Halbleiter) erfüllt die Überwachungsanforderungen für intelligente Gebäude am besten. Die Bausteine sind kompakt und relativ kostengünstig, sie können mit Batterien betrieben werden (mit ausreichender Kapazität zur regelmäßigen Beheizung des MOS-Sensors) und die Erkennungsreichweite entspricht den typischen Konzentrationen von C02 und VOC an Arbeitsplätzen in geschlossenen Räumen (Abbildung 1).

Diagramm der Änderung der CO2- und VOC-Konzentration in einem Schlafzimmer

Abbildung 1: Änderung der CO2- und VOC-Konzentration in einem Schlafzimmer im Laufe eines Tages. (Bildquelle: IDT)

Im Betrieb wird das Sensorelement auf mehrere Hundert Grad Celsius (˚C) aufgeheizt. Die exakte Temperatur bestimmt die Selektivität des Elements für einen bestimmten Stoff. Die Empfindlichkeit hängt von der Dicke des Materials ab.

Die Sensorelemente werden mit Halbleitern vom n-Typ oder p-Typ hergestellt. Das Sensorelement absorbiert (p-Typ) oder desorbiert (n-Typ) den speziellen Stoff, und durch eine elektrochemische Reaktion mit der speziellen Verbindung werden dem Leitungsband des Halbleiters Elektronen hinzugefügt oder entnommen. Aufgrund der Wanderung der Elektronen ändert sich der elektrische Widerstand des Sensorelements ausgehend von einem bekannten Grundwert (Abbildung 2).

Diagramm des Widerstands eines MOS-Sensorelements

Abbildung 2: Der Widerstand eines MOS-Sensorelements ändert sich linear als Reaktion auf die Änderung der Konzentration eines bestimmten Stoffes. In diesem Fall handelt es sich um Äthanol. (Bildquelle: IDT)

ams führt einen kommerziellen MOS-Sensor für Anwendungen für das intelligente Heim. Der CCS811B ist eine digitale MOS-Sensorlösung mit Mikrocontroller, ADW (Analog/Digital-Wandler) und I2C-Schnittstelle (Abbildung 3). Der Baustein wandelt rohe Sensordaten in „Äquivalente flüchtige organische Verbindungen insgesamt“ (equivalent total VOC, eTVOC) und „CO2-Äquivalent“ (eCO2) um. Der Sensor ist in einem 2,7 x 4,0 x 1,1 mm großen Gehäuse mit 10 Anschlüssen lieferbar.

Schaltbild des digitalen MOS-Sensors CCS811B von ams

Abbildung 3: Der digitale MOS-Sensor CCS811B von ams wird mit einem integrierten Mikrocontroller für die Online-Verarbeitung der Sensor-Rohdaten geliefert. (Bildquelle: ams)

Ein MOS-Sensor hat einen charakteristischen Grundwiderstand für eine bestimmte Zusammensetzung, Temperatur und Feuchtigkeit der Luft. Dieser dient als Grundlage für die Berechnung der Konzentration des Gases oder der Chemikalie: Die Differenz des Widerstands zum Grundwert ist proportional zur Konzentration des Gases bzw. der Chemikalie.

Die Umgebungstemperatur und die Feuchtigkeit am Ort der Messung beeinflussen den Grundwiderstand des Sensorelements und damit auch seine Empfindlichkeit und ebenso seine Genauigkeit. Ein Anstieg der Umgebungstemperatur erhöht beispielsweise den Grundwiderstand des Sensorelements (bei einer bestimmten Feuchtigkeit), während ein Anstieg der Feuchtigkeit den Grundwiderstand (bei einer bestimmten Temperatur) senken kann.

Die Sensorhersteller raten, zusätzlich zum Luftqualitätssensor einen Temperatur- und einen Feuchtigkeitssensor einzusetzen, sodass ein Mikroprozessor die Messungen überwachen und Abweichungen des Grundwiderstands ständig kompensieren kann.

Ein beliebter Baustein für diesen Einsatzzweck ist der BME280 von Bosch Sensortec. Der BME280 kombiniert digitale Messungen von Feuchtigkeit, Luftdruck und Temperatur und wird in einem 2,5 x 2,5 x 0,93 mm großen LGA-Gehäuse geliefert. Der Sensor verfügt über eine I2C-Schnittstelle für die Kommunikation mit einem externen Mikroprozessor. Er benötigt eine Versorgungsspannung von 1,71 bis 3,6 V für den Sensor. Wenn sich der Sensor im Ruhemodus befindet, sinkt der Stromverbrauch auf 0,1 Mikroampere (μA).

Kommerzielle MOS-Sensoren verfügen über keine Anschlussmöglichkeit an ein drahtloses Netzwerk. Es gibt aber viele Chips mit geringem Energieverbrauch, die für eine direkte Kommunikation mit Sensoren bestimmt sind. Viele dieser Bausteine verfügen auch über eingebettete Mikroprozessoren, die leistungsfähig genug für die Algorithmen zur Verarbeitung der Sensor-Rohdaten und zur Kompensation der Feuchtigkeits- und Temperaturänderungen sind. (Weitere Informationen zu geeigneten Wireless-Technologien für diese Anwendung finden Sie im Digi-Key-Artikel „Comparing Low-Power Wireless Technologies (Vergleich energiesparender Wireless-Technologien)“.)

Entwicklung eines einfachen Luftqualitätssensors

Der Konstrukteur eines Luftqualitätssensors mit drahtloser Kommunikation muss einen diskreten MOS-Sensor, einen Feuchtigkeits- und einen Temperatursensor, einen Funk-Transceiver und (in manchen Fällen) einen Mikroprozessor zu einem funktionsfähigen System zusammenbringen. Wegen ihrer Komplexität kann dies eine respekteinflößende und zeitraubende Aufgabe sein.

Es sind aber eine Reihe von Entwicklungskits auf dem Markt, die die Entwicklung und die Tests beträchtlich vereinfachen. Auf der Quick Environmental Combo Breakout SEN-14348 von SparkFun Electronics für die Entwicklung von Luftqualitätssensoren ist beispielsweise ein Luftqualitätssensor CCS811B mit einem Sensor BME280 für die Kompensation von Temperatur und Feuchtigkeit kombiniert. Darüber hinaus sind zwei physische I2C-Schnittstellen in Form eines gepolten 4-Pin-Qwiic-Steckverbinders integriert (Abbildung 4).

Bild: Breakout-Platine SEN-14348 von SparkFun

Abbildung 4: Auf der Breakout-Platine SEN-14348 von SparkFun ist der Sensor CCS811B mit dem Sensor BME280 zur Temperatur- und Feuchtigkeitskompensation kombiniert. (Bildquelle: SparkFun)

Obwohl die SEN-14348 als Grundlage eines Luftqualitätssensors mit Temperatur- und Feuchtigkeitskompensation dienen kann, ist diese Lösung nicht vollständig. Der CCS811B enthält zwar einen Mikroprozessor, aber die Fähigkeiten des Bausteins gehen nicht über die Überwachung von regelmäßigen Messungen und die Kompensation bezüglich der Grundwerte hinaus. Komplexere Aufgaben, z. B. die Überwachung von Grenzwerten für die Luftqualität oder die Berechnung von Langzeitkonzentrationen von Gas oder Chemikalien, liegen jenseits der Fähigkeiten des Mikroprozessors. Für anspruchsvollere Zwecke muss die SEN-14348 an einen leistungsfähigeren Mikroprozessor angeschlossen werden.

Für den Einstieg in die Entwicklung empfiehlt SparkFun, die Breakout-Platine SEN-14348 an einen Arduino-kompatiblen Computer anzuschließen, z. B. an den RedBoard. Der RedBoard wird mit einem USB-Kabel an einen PC angeschlossen (dieser versorgt die Platine auch mit Strom), um Code von der Arduino IDE hochzuladen. Wenn der RedBoard mit der Qwiic-Breakout-Platine verwendet werden soll, benötigt der Computer ein Qwiic-Shield DEV-14352. Das Shield besitzt einen I2C-Anschluss und regelt auch die 5 V des RedBoard auf die von den Sensoren der Breakout-Platine SEN-14348 benötigten 3,3 V herunter.

Um mit der Entwicklung beginnen zu können, müssen die Arduino-Bibliotheken für SparkFun CCS811 und BME280 von Github heruntergeladen werden. Die Sensoren werden von der Arduino-IDE mit Informationen wie Abtastrate, FIR-Filterkoeffizienten (Finite Impulse Response) und Oversampling-Modi initialisiert.

Das folgende Codebeispiel zeigt die Routine zur Initialisierung des Sensors BME280 vor der Ablesung. (Die Initialisierung des CCS811 ist ähnlich.)

Kopieren

#include <SparkFunBME280.h>

#include <SparkFunCCS811.h>

#define CCS811_ADDR 0x5B //Default I2C Address

//#define CCS811_ADDR 0x5A //Alternate I2C Address

//Global sensor objects

CCS811 myCCS811(CCS811_ADDR);

BME280 myBME280;

void setup( void )

{

  Serial.begin(9600);

Serial.println();

  Serial.println("Apply BME280 data to CCS811 for compensatio

n.");

  //This begins the CCS811 sensor and prints error status of .

begin()

  CCS811Core::status returnCode = myCCS811.begin();

  if (returnCode != CCS811Core::SENSOR_SUCCESS)

{

    Serial.println("Problem with CCS811");

    printDriverError(returnCode);

  }

else {

    Serial.println("CCS811 online");

  }

  //Initialize BME280

  //For I2C, enable the following and disable the SPI section

  myBME280.settings.commInterface = I2C_MODE;

  myBME280.settings.I2CAddress = 0x77;

  myBME280.settings.runMode = 3; //Normal mode

  myBME280.settings.tStandby = 0;

  myBME280.settings.filter = 4;

  myBME280.settings.tempOverSample = 5;

  myBME280.settings.pressOverSample = 5;

  myBME280.settings.humidOverSample = 5;

  //Calling .begin() causes the settings to be loaded

  delay(10);  //Make sure sensor had enough time to turn on. B

ME280 requires 2ms to start up.

  byte id = myBME280.begin(); //Returns ID of 0x60 if successf

ul

  if (id != 0x60)

{

    Serial.println("Problem with BME280");

  }

else {

    Serial.println("BME280 online");

  }

}

Codebeispiel 1: Initialisierung des Sensors BME280 vor der Ablesung. (Codequelle: SparkFun)

Zur Ablesung der Sensoren muss eine Schleife ohne Rückgebewert („void loop()“) in den Code eingefügt werden (Arduino- „Sketch“) (Codebeispiel 2).

Kopieren

void loop() {

if (myCCS811.dataAvailable()) //Check to see if CCS811 has n ew data (it's the slowest sensor)

{

    myCCS811.readAlgorithmResults(); //Read latest from CCS81

1 and update tVOC and CO2 variables

    //getWeather(); //Get latest humidity/pressure/temp data f

rom BME280

    printData(); //Pretty print all the data

}

  else if (myCCS811.checkForStatusError()) //Check to see if C

CS811 has thrown an error

{

    Serial.println(myCCS811.getErrorRegister()); //Prints what

ever CSS811 error flags are detected

  }

  delay(2000); //Wait for next reading

}

Codebeispiel 2: Routine zum Auslesen und Ausdrucken der Werte des Sensors CCS811. (Codequelle: SparkFun)

Die Umgebungsdaten („ENV_DATA“) vom BME280 werden in den CCS811 geschrieben, damit der Grundwiderstand mit einem Kompensationsfaktor zur Berücksichtigung des Einflusses von Temperatur und Feuchtigkeit versehen werden kann.

Die Feuchtigkeits- und Temperaturwerte werden als vorzeichenlose 16-Bit-Ganzzahlen mit einer Auflösung von 1/512 % r. L. (relative Luftfeuchtigkeit) und 1/512 Grad übertragen. Der Standardwert der Feuchtigkeit ist 50 Prozent (= 0x64, 0x00). 48,5 Prozent Feuchtigkeit entspricht z. B. 0x61, 0x00. Der Temperaturwert enthält einen Versatz, wobei 0 der Temperatur -25 °C entspricht. Der Standardwert ist 25 °C (= 0x64, 0x00). 23,5 °C entspricht z. B. 0x61, 0x00.

Bei der Übertragung der Temperatur und der Feuchtigkeit vom BME280 zum CCS811 kann der Mikroprozessor den Kompensationsalgorithmus anwenden (Codebeispiel 3).

Kopieren

void loop() {

  //Check to see if data is available

  if (myCCS811.dataAvailable())

{

    //Calling this function updates the global tVOC and eCO2 v

ariables

    myCCS811.readAlgorithmResults();

    //printData fetches the values of tVOC and eCO2

    printData();

    float BMEtempC = myBME280.readTempC();

    float BMEhumid = myBME280.readFloatHumidity();

    Serial.print("Applying new values (deg C, %): ");

    Serial.print(BMEtempC);

    Serial.print(",");

    Serial.println(BMEhumid);

    Serial.println();

    //This sends the temperature data to the CCS811

    myCCS811.setEnvironmentalData(BMEhumid, BMEtempC);

  }

  else if (myCCS811.checkForStatusError())

{

    Serial.println(myCCS811.getErrorRegister()); //Prints what

ever CSS811 error flags are detected

}

delay(2000); //Wait for next reading

}

Codebeispiel 3: Übertragung der Temperatur- und Feuchtigkeitsdaten mit Ausführung des Kompensationsalgorithmus durch den Sensor CCS811. (Codequelle: SparkFun)

Einbinden von Luftqualitätssensoren in das IoT

Mit der Breakout-Platine SEN-14348 von SparkFun, dem Arduino-Computer und dem Shield können die Luftqualitätsdaten zwar kontrolliert und gesammelt werden, aber es ist keine drahtlose Kommunikation mit dem System möglich. Das PSoC 4 BLE Pioneer Kit CY8CKIT-042-BLE-A von Cypress Semiconductor verfügt über die erforderlichen drahtlosen Kommunikationsmöglichkeiten.

Das PSoC 4 BLE Pioneer Kit ist ein Tool, das Ingenieure bei der Entwicklung von drahtlosen Sensor-Anwendungen unterstützt. Mit dem Kit können Anwendungen programmiert und kompiliert werden. Die Firmware kann dann auf das PSoC 4 Bluetooth Low Energy SoC von Cypress portiert werden. Das SoC umfasst einen 32-Bit-48-MHz-Prozessor Arm® Cortex®-M0 und ein Bluetooth Low Energy-Funkmodul.

In diesem Fall werden die kompensierten Luftqualitätsdaten von der Breakout-Platine über den I2C-Anschluss der Breakout-Platine an einen I2C-Anschluss auf der Platine des Kits übertragen. Der Prozessor empfängt nicht nur Daten von der SDA-Leitung der I2C-Schnittstelle, er kann den Sensor auch zurücksetzen, unterbrechen und in den Ruhemodus versetzen.

Für das Programmieren und Debuggen eines Luftqualitätssensors mit diesem Kit ist allerdings einiger Entwicklungsaufwand erforderlich. Cypress bietet zum Programmieren und Testen das Windows CySmart Host Emulation Tool (läuft auf einem PC) und einen Bluetooth Low Energy-Dongle an. Dongle und Pioneer Kit können während der Entwicklung gleichzeitig mit einem gemeinsamen Host-PC verbunden werden (Abbildung 5).

Bild: Cypress Bluetooth Low Energy-Entwicklungstools (zum Vergrößern klicken)

Abbildung 5: Cypress bietet Bluetooth Low Energy-Entwicklungstools und einen Dongle (als zentrales Bluetooth Low Energy-Gerät konfiguriert) an, das die Entwicklung von Anwendungsfirmware mit dem PSoC 4 BLE Pioneer Kit erleichtert. (Bildquelle: Cypress Semiconductor)

Die Entwicklung mit dem PSoC 4 BLE Pioneer Kit CY8CKIT-042-BLE-A umfasst vier Stufen:

  • Den Schaltplan auf der Schaltplanseite von PSoC Creator erstellen
  • Die Firmware zum Initialisieren und zum Behandeln der Bluetooth Low Energy-Ereignisse schreiben
  • Das Bluetooth Low Energy SoC mit dem Pioneer Kit programmieren
  • Die Schaltung mit dem CySmart Host Emulation Tool (oder mit der Mobil-App) testen

(Weitere Informationen zur Entwicklung von Bluetooth Low Energy-Anwendungen finden Sie im Digi-Key-Artikel „Bluetooth 4.1, 4.2 and 5 Compatible Bluetooth Low Energy SoCs and Tools Meet IoT Challenges“ (Bluetooth 4.1-, 4.2- und 5-kompatible Bluetooth Low Energy-SoC und -Tools stellen sich den Herausforderungen des IoT.)

Mithilfe der Anwendungsfirmware kann das Bluetooth Low Energy-SoC die Sensordaten erfassen und verarbeiten und die Informationen über die Bluetooth Low Energy-Verbindung z. B. an ein Smartphone zur Analyse und Anzeige übermitteln.

Die Sensordaten könnten dann vom Smartphone zur Einsparung von Ressourcen an einen Cloud-Server weitergeleitet werden und möglicherweise von den Daten abhängige „If This Then That“-Benachrichtigungen (IFTTT) auslösen. Ein ständig erhöhter CO2-Wert im Schlafzimmer eines Kindes könnte eine Benachrichtigung auf dem Smartphone eines Elternteils auslösen und eine bessere Belüftung empfehlen.

Eine direkte Verbindung des Sensors mit der Cloud ist etwas komplizierter. Bluetooth Low Energy-SoCs wie die Cypress-Komponente verfügen im Allgemeinen über keine native IPv6-Netzwerkschicht. Die Lösung besteht darin, die Bluetooth-Daten an ein „Gateway“ zu senden und ein anderes Protokoll für die Verbindung mit der Cloud zu verwenden (z. B. Wi-Fi).

Cypress und SparkFun haben auch dies gemeinsam möglich gemacht. Mithilfe eines PSoC 6 BLE Pioneer Kits CY8CKIT-062-BLE von Cypress und eines PSoC Pioneer IoT-Add-on-Shields DEV-14531 von SparkFun (mit einem XBee-Wi-Fi-Modul XB2B-WFWT-001 ausgestattet) kann ein Netzwerk entwickelt werden, das die kompensierten Daten vom Luftqualitätssensor über eine Bluetooth Low Energy-Verbindung vom PSoC 4 BLE Pioneer Kit CY8CKIT-042-BLE-A zum PSoC 6 BLE Pioneer Kit CY8CKIT-062-BLE und von dort (über Wi-Fi) zur Cloud überträgt (Abbildung 6). (Weitere Informationen zur Verwendung von Wi-Fi-Modulen zur Verbindung mit der Cloud finden Sie im folgenden technischen Artikel von Digi-Key: „802.11x Modules, Dev Kits Can Help Simplify IoT Wireless Design Efforts“ (802.11x-Module und -Entwicklungskits können die Entwicklung drahtloser IoT-Designs vereinfachen)

Schaltbild eines mit den Entwicklungskits von Cypress und SparkFun aufgebauten Wireless-Systems

Abbildung 6: Dieses mithilfe der Entwicklungskits von Cypress und SparkFun aufgebaute Wireless-System sendet die Daten des Luftqualitätssensors über Bluetooth Low Energy und Wi-Fi zur Cloud. (Bildquelle: Digi-Key Electronics)

Fazit

Das Einbinden von Luftqualitätssensoren in das Netzwerk eines intelligenten Gebäudes wird aufgrund der wachsenden Sorge vor Gesundheitsschäden durch das Vorhandensein von VOC und Gasen wie CO2 in klimatisierten Gebäuden wichtig.

Kommerzielle Luftqualitätssensoren verfügen derzeit nicht über leistungsfähige integrierte Mikroprozessoren und über keine Möglichkeiten zur drahtlosen Kommunikation, wie es bei anderen (modularen) Sensoren üblich ist. Allerdings sind die Entwickler mithilfe von benutzerfreundlichen Design-Tools in der Lage, nicht nur die rohen Luftqualitätsdaten bezüglich der Auswirkungen von Temperatur und Feuchtigkeit zu kompensieren, sondern auch die Informationen über ein Bluetooth Low Energy-Netzwerk und dann über ein Smartphone-Netzwerk oder ein Wi-Fi-Modul zur Cloud zu übertragen.

Haftungsausschluss: Die Meinungen, Überzeugungen und Standpunkte der verschiedenen Autoren und/oder Forumsteilnehmer dieser Website spiegeln nicht notwendigerweise die Meinungen, Überzeugungen und Standpunkte der Digi-Key Electronics oder offiziellen Politik der Digi-Key Electronics wider.

Über den Verlag

Nordamerikanische Fachredakteure von Digi-Key