Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Messen des CO2-Gehalts, auch bekannt als Schläfrigkeitsmultiplikator

Komponenten und Verbrauchsmaterialien

Andium Anduino WiFi
× 1
Arduino Due
× 1
CO2-Sensor
× 1

Apps und Onlinedienste

Arduino-IDE
Adafruit IO

Über dieses Projekt

Motivation

Hatten Sie schon einmal Mühe, ein Nachmittagsmeeting zu überstehen? Sie können nicht aufhören zu gähnen? Verschlafen Sie Ihre 3-stündigen Vorlesungen? Nein, ich verkaufe Ihnen keine Energieergänzung. Du hast letzte Nacht wahrscheinlich nicht genug geschlafen, die meisten von uns nicht. Aber Ihre Schläfrigkeit ist möglicherweise nicht ganz Ihre Schuld! Schlechte Belüftung und hohe Kohlendioxidwerte können zu Schläfrigkeit führen!

Mit diesem NDIR CO2-Sensor können Sie den CO2-Gehalt genau messen und die Werte über eine einfache serielle UART-Schnittstelle ablesen. Herkömmliche CO2-Sensoren verbrauchten viel Strom und brauchten Zeit, um die Lampe aufzuwärmen, bevor sie für die Messung vorbereitet wurden. Mit einem LED- und Infrarotdetektor können Sie jetzt Gase mit diesem 3,3-V-Sensor, der im Durchschnitt weniger als 1,5 mA zieht, genau messen. Es verwendet optische Dispersion und einige andere Hexereien, sieh dir das Datenblatt von Cozir für weitere Details an, es ist beeindruckend.

Erste Schritte

Was brauche ich also, um den "Schlaffaktor" meiner Bürokabine zu messen?

  • Arduino Due oder Zero
  • AnduinoWiFi-Schild
  • Cozir CO2-Sensor
  • Ein paar Jumper zum Anschließen und Einschalten des Sensors.

Die Anschlüsse für diesen sind einfach, der Sensor hat 10 Pins, aber Sie müssen nur 4 verdrahten.

Mit dem Due verbinden Sie 3,3 V mit 3 V3, GND mit Masse, Rx (DIO19) mit Tx und Tx (DIO18) mit Rx. Stellen Sie sicher, dass Sie die UART-Kabel "gekreuzt" haben, und denken Sie daran, dass Sie Tx (DIO1) und Rx (DIO0) nicht verwenden können, es sei denn, Sie möchten auf die Verwendung des seriellen Begriffs zur Überwachung Ihrer Messwerte verzichten. Ich habe Serial1 für den Sensor verwendet, obwohl Sie jeden der drei verbleibenden UARTs verwenden können.

** Wenn Sie das Arduino vorerst umgehen und das Senden von Befehlen direkt an den Sensor testen möchten, öffnen Sie einfach Kitt oder Ihren bevorzugten seriellen Begriff und verbinden Sie mit 9600 Baud, 8 Bit, keine Parität, 1 Stoppbit. Möglicherweise müssen Sie das Senden von '/r/n' bei jeder Übermittlung von ASCII aktivieren.**

***Dieser Sensor hat 3,3 V TTL verwenden Sie also unbedingt einen Logikschieber, wenn die Coms von einer 5-V-Quelle stammen***

Kalibrieren des Sensors

Es gibt mehrere Möglichkeiten, den CO2-Sensor zu kalibrieren. Eine der besten Möglichkeiten besteht darin, den Sensor mit einem bekannten Gas (Stickstoff) zu sättigen, das kein Kohlendioxid enthält. Dadurch wird ein bekannter Nullwert generiert. Wenn Sie keinen Stickstoff herumliegen haben, können Sie auch mit Frischluft ziemlich genau kalibrieren. Also schnapp dir deine Sonnenbrille, wir machen eine Exkursion.

Wenn Sie draußen sind, möchten Sie die folgende Beispielskizze ausführen und die Kommentarzeichen aufheben

 kalibrierenFreshAir();  

in der Setup()-Routine. Dies sendet den 'G'-Befehl seriell an den Sensor, der anfordert...

Kalibrierung! Das ist jetzt nicht perfekt, da ich nicht genau weiß, wie die aktuellen CO2-Konzentrationsverhältnisse im 14. Stock hier in NYC wirklich sind (möglicherweise hier etwas höher als der Durchschnitt der "Erde" auf Hawaii). Aber da unsere Schwellenwerte für die tatsächliche physische Wahrnehmung von Unterschieden in der Umgebung im Bereich von 1.000 ppm liegen, denke ich, dass wir diesen Frischluftmesswert von 450 ppm ziemlich sicher als Kalibrierungspunkt für die Messung unserer Konferenzräume und Klassenzimmer verwenden können.

Zeichenpuffer[20] ={0}; intc =0; Void setup () { Serial.begin (9600); while(!Seriell){}; Serial1.begin (9600); while(!Seriell){}; Serial.println ( "Beginnen Sie mit dem Lesen der CO2-Werte"); //setOperatingMode (CZR_STREAMING); //setOperatingMode (CZR_POLLING); // kalibrierenFreshAir (); aufrechtzuerhalten. Void Schleife () { Verzögerung (10000); c =Anfrage("Z"); Serial.print("CO2:");Serial.println(c); Serial.println(""); } int Request(char* s) { buffer[0] ='\0'; int-idx =0; Befehl(e); Verzögerung (250); while(Serial1.available()) {Puffer[idx++] =Serial1.read(); } Puffer[idx] ='\0'; uint16_t rv =0; switch(buffer[1]) { case 'T':rv =atoi(&buffer[5]); if (Puffer[4] ==1) rv +=1000; brechen; Standard:rv =atoi(&buffer[2]); brechen; } rv zurückgeben; aufrechtzuerhalten. Void Befehl (char * s) {Serial1.print (s); Serial1.print("\r\n"); } uint16_t calibrateFreshAir () { Return Request ( "G"); aufrechtzuerhalten. Void setOperatingMode (uint8_t Modus) { Sprintf (Puffer, "K %u", Modus); Befehl (Puffer); }  

Beachten Sie auch schnell die beiden #define-Anweisungen oben in der Skizze. Wenn Sie Ihren Sensor zum ersten Mal auspacken, müssen Sie ihn möglicherweise mit setOperatingMode() konfigurieren. Diese Skizze wurde für den Abfragemodus entwickelt. Wenn Sie erfolgreich kalibriert haben und CO2-Werte am Terminal ablesen, können Sie dies in der Cloud veröffentlichen. Verbinden wir uns mit Adafruit IO und beginnen wir mit der Visualisierung der Daten.

CO2-Messwerte in der Cloud veröffentlichen

Wenn Sie sich noch nicht über anduinoWiFi mit Adafruit IO verbunden haben, sehen Sie sich diese Projektbeschreibung an, die beginnen wird. Es deckt alle Details ab, die ich hier beschönigen werde. Hier ist die Skizze, mit der Sie beginnen können, Ihre CO2-Werte jede Minute zu veröffentlichen.

#include  #include "Adafruit_MQTT.h" #include "Adafruit_MQTT_Client.h" #include "AnduinoLCD.h" // WLAN-Parameter #define WLAN_SSID "YOUR_SSID" #define WLAN_PASS "YOUR_PASSWD" // Adafruit IO #define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883 #define AIO_USERNAME "YOUR_AIO_USERNAME" #define AIO_KEY "YOUR_AIO_KEY" WiFiClient-Client; Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY); /****************************** Einspeisungen ****************** *********************/ // Feed für co2 einrichten Adafruit_MQTT_Publish carbonDioxide =Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/co2"); /*Eine Instanz des AnduinoLCD erstellen */ AnduinoLCD LCD =AnduinoLCD(ST7735_CS_PIN, ST7735_DC_PIN, 13); statisch int co2 =0; statisch int co2Prev =0; #define CZR_STREAMING 0x01 #define CZR_POLLING 0x02 Zeichenpuffer[20] ={0}; Void setup () { Serial.begin (115200); Verzögerung (3000); Serial1.begin (9600); // Verbinden mit WiFi &Adafruit.IO connectToWiFi (); connectToAdafruit(); // LCD initialisieren LCD.begin (); LCDinit(); // CO2-Kalibrierung und Ersteinrichtung // setOperatingMode (CZR_STREAMING); //setOperatingMode (CZR_POLLING); // kalibrierenFreshAir (); } void loop() { // Ping adafruit io ein paar Mal, um sicherzustellen, dass wir verbunden bleiben if(! mqtt.ping(3)) { // erneut mit adafruit io verbinden if(! mqtt.connected()) connect(); } // Holen Sie sich den aktuellen CO2-Wert co2 =Request("Z"); // int temp in char-Array umwandeln char b[20]; Zeichenfolge str; str=String(co2); for(int i=0; i=0) mqtt.disconnect(); Serial.println (F ( "Verbindung wird erneut versucht ...")); Verzögerung (5000); } Serial.println (F ("Adafruit IO verbunden!")); aufrechtzuerhalten. Void displayCo2 (int co2, int co2Prev) {// den veralteten Wert löschen LCD.setTextColor (ST7735_BLACK); LCD.setTextSize(2); LCD.setTextWrap(true); LCD.setCursor(40,60); LCD.setTextSize(3); LCD.print (co2Prev); LCD.setTextSize(1); LCD.print("ppm"); // Neuen Wert drucken LCD.setTextColor (ST7735_WHITE); LCD.setTextSize(2); LCD.setTextWrap(true); LCD.setCursor(40,60); LCD.setTextSize(3); LCD.print (co2); LCD.setTextSize(1); LCD.print("ppm"); aufrechtzuerhalten. Void connectToWiFi () {// Mit dem WLAN-Zugangspunkt verbinden. Verzögerung(10); Serial.print (F ("Verbinden mit")); Serial.println (WLAN_SSID); WiFi.begin(WLAN_SSID, WLAN_PASS); Während (WiFi.status () !=WL_CONNECTED) { Verzögerung (500); Serial.print (F(."")); } Serial.println (F ("WiFi verbunden!")); aufrechtzuerhalten. Void connectToAdafruit () {// Verbindung mit Adafruit io connect (); aufrechtzuerhalten. Void LCDinit () { LCD.setBacklight (ON); LCD.fillScreen(ST7735_BLACK); // den Bildschirm löschen LCD.showBanner (); // Andium Banner laden LCD.setTextColor (ST7735_WHITE); LCD.setTextSize(2); LCD.setTextWrap(true); LCD.setCursor(0,40); LCD.print("CO2:"); } uint16_t Request(char* s) { buffer[0] ='\0'; int-idx =0; // Befehlsanforderung 'Z' für CO2-Befehle senden; Verzögerung (250); while(Serial1.available()) {Puffer[idx++] =Serial1.read(); } Puffer[idx] ='\0'; uint16_t rv =0; rv =atoi(&puffer[2]); zurück rv; aufrechtzuerhalten. Void Befehl (char * s) {Serial1.print (s); Serial1.print("\r\n"); } uint16_t calibrateFreshAir () { Return Request ( "G"); aufrechtzuerhalten. Void setOperatingMode (uint8_t Modus) { Sprintf (Puffer, "K %u", Modus); Befehl (Puffer); }  

Das ist es!

Dieses Ding ist sehr empfindlich, Sie können die Raumbelegung anhand der CO2-Konzentration sogar in einem gut belüfteten Raum nahezu verfolgen. Es ist an der Zeit, Ihrem Professor zu beweisen, dass es nicht 'diff eq' ist, das Sie runterzieht, sondern die schlechte Belüftung! Zeit, die Klasse an den Strand zu verlegen!

Code

Anduino
Eine Arduino-Bibliothek für das Andium(Anduino)-Schild. Verwandeln Sie Ihr Arduino in einen AndiumNode.https://github.com/andium/Anduino

Herstellungsprozess

  1. Sensirion:Miniaturisierter CO2-Sensor
  2. Integration von Sensordaten mit Raspberry Pi-Mikroprozessor
  3. Das Lego EV3 hacken:Bauen Sie Ihren eigenen Objektsensor „Augen“
  4. Anschließen eines Lego Mindstorms NXT Ultraschallsensors an den Raspberry Pi
  5. HC-SR04 Ultraschall-Reichweitensensor auf dem Raspberry Pi
  6. Verwenden des gepulsten Radarsensors A111 mit einem Raspberry Pi
  7. Verbesserung des Kundenserviceniveaus im Regal
  8. HF-Drahtlosenergie entfesselt die Allgegenwärtigkeit von Sensornetzwerken
  9. 5 Ws des SARS-CoV-2 RapidPlex Sensors
  10. Was sind die Ebenen der industriellen Wartung?