CO2レベルの測定別名TheSleepiness Multiplier
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 |
アプリとオンラインサービス
> |
| |||
|
このプロジェクトについて
動機
午後の会議を終えるのに苦労したことはありますか?あくびを止められませんか?あなたの3時間の講義を通して眠っていますか?いいえ、私はあなたにエネルギーサプリメントを販売していません。あなたはおそらく昨夜十分な睡眠をとらなかったでしょう、私たちのほとんどはそうしません。しかし、あなたの眠気は完全にあなたのせいではないかもしれません!換気が悪く、二酸化炭素のレベルが高いと、眠くなる可能性があります。
このNDIRCO2センサーを使用すると、CO2レベルを正確に測定し、単純なUARTシリアルインターフェースを使用して値を読み取ることができます。従来のCO2センサーは、多くの電力を消費し、読み取りを行う準備が整う前にランプをウォームアップするのに時間がかかりました。 LEDと赤外線検出器を使用すると、平均1.5mA未満を引き出すこの3.3vセンサーを使用してガスを正確に測定できます。光分散と他の魔術を使用しています。詳細については、Cozirのデータシートを確認してください。印象的です。
はじめに
では、オフィスのキュービクルの「眠気係数」の測定を開始するには何が必要ですか?
- ArduinoDueまたはZero
- AnduinoWiFiシールド
- CozirCO2センサー
- センサーを接続して電源を入れるためのいくつかのジャンパー。
これの接続は簡単で、センサーには10個のピンがありますが、配線する必要があるのは4本だけです。
Due接続を使用して3.3vを3V3に、GNDをグランドに、Rx(DIO19)をTxに、Tx(DIO18)をRxに接続します。 UARTワイヤを「交差」させたことを確認し、シリアル用語を使用して読み取り値を監視することをやめたくない場合を除いて、Tx(DIO1)およびRx(DIO0)を使用できないことを忘れないでください。センサーにはSerial1を使用しましたが、残りの3つのUARTのいずれでも使用できます。
**今のところArduinoをバイパスして、センサーに直接コマンドを送信してテストしたい場合は、パテまたはお気に入りのシリアルタームを開いて、9600ボー、8ビット、パリティなし、1ストップビットで接続してください。 asciiを送信するたびに「/ r / n」の送信を有効にする必要がある場合があります。**
***このセンサーは 3.3v TTLなので、comsが5vソースで発生する場合は、必ずロジックシフターを使用してください***
センサーのキャリブレーション
CO2センサーを校正する方法はいくつかあります。最良の方法の1つは、二酸化炭素を含まない既知のガス(窒素)でセンサーを飽和させることです。これにより、既知のゼロ読み取り値が生成されます。窒素が周囲にない場合は、新鮮な空気を使用してかなり正確に校正することもできます。だからあなたのサングラスをつかんで、私たちはフィールドトリップに行きます。
外にいるときは、以下のスケッチ例を実行してコメントを外したいと思うでしょう
calibrateFreshAir();
Setup()ルーチンで。これにより、「G」コマンドがシリアル経由でセンサーに送信され、要求が行われます...
較正!ここニューヨークの14階の現在のCO2濃度条件が正確にわからないため、これは完全ではありません(おそらく、ハワイの「地球」の平均よりも少し高いです)。しかし、実際に環境の違いを物理的に感知するためのしきい値は1,000 ppmであるため、この450ppmの新鮮な空気の読み取り値を会議室や教室を測定するためのキャリブレーションポイントとして使用するのはかなり安全だと思います。
char buffer [20] ={0}; int c =0; void setup(){Serial.begin(9600); while(!Serial){}; Serial1.begin(9600); while(!Serial){}; Serial.println( "CO2レベルの読み取りを開始"); // setOperatingMode(CZR_STREAMING); // setOperatingMode(CZR_POLLING); // calibrateFreshAir(); } void loop(){delay(10000); c =Request( "Z"); Serial.print( "CO2:"); Serial.println(c); Serial.println( ""); } int Request(char * s){buffer [0] ='\ 0'; int idx =0;コマンド; delay(250); while(Serial1.available()){buffer [idx ++] =Serial1.read(); } buffer [idx] ='\ 0'; uint16_t rv =0; switch(buffer [1]){case'T ':rv =atoi(&buffer [5]); if(buffer [4] ==1)rv + =1000;壊す;デフォルト:rv =atoi(&buffer [2]);壊す; } return rv; } void Command(char * s){Serial1.print(s); Serial1.print( "\ r \ n"); } uint16_t calibrateFreshAir(){return Request( "G"); } void setOperatingMode(uint8_t mode){sprintf(buffer、 "K%u"、mode);コマンド(バッファ); }
また、スケッチの上部にある2つの#defineステートメントにも注意してください。センサーを最初に開梱するときに、setOperatingMode()を使用してセンサーを構成する必要がある場合があります。このスケッチは、ポーリングモードで機能するように設計されています。キャリブレーションに成功し、端末へのCO2レベルを読み取っている場合は、これをクラウドに公開する準備ができています。 Adafruit IOに接続して、データの視覚化を始めましょう。
CO2指標をクラウドに公開する
anduinoWiFiを使用してAdafruitIOにまだ接続していない場合は、開始されるこのプロジェクトの記事を確認してください。ここで詳しく説明します。これが、毎分CO2レベルの公開を開始するためのスケッチです。
#include #include "Adafruit_MQTT.h" #include "Adafruit_MQTT_Client.h" #include "AnduinoLCD.h" // WiFiパラメーター#defineWLAN_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クライアント; Adafruit_MQTT_Client mqtt(&client、AIO_SERVER、AIO_SERVERPORT、AIO_USERNAME、AIO_KEY); / ******************************フィード****************** ********************* / // co2のフィードを設定Adafruit_MQTT_PublishcarbonDioxide =Adafruit_MQTT_Publish(&mqtt、AIO_USERNAME "/ feeds / co2"); / * AnduinoLCDのインスタンスを作成します* / AnduinoLCD LCD =AnduinoLCD(ST7735_CS_PIN、ST7735_DC_PIN、13); static int co2 =0; static int co2Prev =0; #define CZR_STREAMING 0x01 #define CZR_POLLING 0x02 char buffer [20] ={0}; void setup(){Serial.begin(115200); delay(3000); Serial1.begin(9600); // WiFiとAdafruit.IOに接続しますconnectToWiFi(); connectToAdafruit(); // LCDを初期化しますLCD.begin(); LCDinit(); // CO2キャリブレーションと初期設定// setOperatingMode(CZR_STREAMING); // setOperatingMode(CZR_POLLING); // calibrateFreshAir(); } void loop(){// adafruit ioに数回pingを実行して、接続されたままであることを確認しますif(!mqtt.ping(3)){// adafruit ioに再接続しますif(!mqtt.connected())connect(); } //現在のCO2読み取り値を取得co2 =Request( "Z"); // inttempをchar配列に変換しますcharb [20];文字列str; str =String(co2); for(int i =0; i =0)mqtt.disconnect(); Serial.println(F( "接続を再試行しています...")); delay(5000); } Serial.println(F( "Adafruit IO Connected!")); } void displayCo2(int co2、int co2Prev){//古い値をクリア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"); //新しい値を出力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"); } void connectToWiFi(){// WiFiアクセスポイントに接続します。 delay(10); Serial.print(F( "Connecting to")); Serial.println(WLAN_SSID); WiFi.begin(WLAN_SSID、WLAN_PASS); while(WiFi.status()!=WL_CONNECTED){delay(500); Serial.print(F( "。")); } Serial.println(F( "WiFi接続!")); } void connectToAdafruit(){// adafruitに接続ioconnect(); } void LCDinit(){LCD.setBacklight(ON); LCD.fillScreen(ST7735_BLACK); //画面をクリアしますLCD.showBanner(); // Andium Bannerをロード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; // CO2コマンドのコマンドリクエスト「Z」を送信します。 delay(250); while(Serial1.available()){buffer [idx ++] =Serial1.read(); } buffer [idx] ='\ 0'; uint16_t rv =0; rv =atoi(&buffer [2]); rvを返す; } void Command(char * s){Serial1.print(s); Serial1.print( "\ r \ n"); } uint16_t calibrateFreshAir(){return Request( "G"); } void setOperatingMode(uint8_t mode){sprintf(buffer、 "K%u"、mode);コマンド(バッファ); }
それでおしまい!
これは非常に敏感で、換気の良い部屋でもCO2濃度に基づいて部屋の占有レベルをほぼ追跡できます。あなたの教授に、それがあなたを落胆させるのは「微分方程式」ではないことを証明する時が来ました、それは不十分な換気です!クラスをビーチに移動する時間です!
コード
アンドゥイノ
Andium(Anduino)シールド用のArduinoライブラリ。 ArduinoをAndiumNodeに変換します。https://github.com/andium/Anduino製造プロセス
- CO2とNdレーザー切断:違いは何ですか?
- センシリオン:小型化されたCO2センサー
- センサーデータとRaspberryPiマイクロプロセッサーの統合
- レゴEV3のハッキング:独自のオブジェクトセンサー「目」を作成する
- レゴマインドストームNXT超音波センサーをラズベリーパイに接続する方法
- RaspberryPiのHC-SR04超音波距離センサー
- RaspberryPiでのA111パルスレーダーセンサーの使用
- 棚での顧客サービスレベルの改善
- RFワイヤレスパワーがセンサーネットワークのユビキタスを解き放ちます
- 5WのSARS-CoV-2RapidPlexセンサー
- 産業メンテナンスのレベルはどのくらいですか?