赤色警報!
この章は、nrf-hal の次のリリースで Pulse Width Modulation (PWM) を使用するようにリファクタリングされます
CO2 測定デバイスは、周囲の二酸化炭素濃度を測定して表示できるようになりました。この章では、さらにインタラクティブ性を追加します。このデバイスは値を表示するだけでなく、その量を分類し、それに応じて動作します。空気中の二酸化炭素について、通常レベル、警告レベル、上限値を定義します。すべてのレベルは LED で示され、上限値ではブザーによる音響警告も行われます。
配線
ブザーには 2 本の脚があり、一方をグラウンドに、もう一方をピンに接続します。複数のデバイスをボードに接続する場合は、それらすべてが同じグラウンドに接続されていることを確認してください。 この図では、ケーブルが交差しないようにピンが変更されています。以前のピン配置のままでもかまいません。

実装
ブザー
ブザーは単純な仕組みで動作します。ピンとグラウンドに接続されています。何らかの電圧変化があると、ブザーが鳴ります。この変化の周波数が低いほど、ブザー音の音程は低くなります。
✅ ブザー用のモジュールを作成してください。次のメソッドを持つ型を作成してください。 * init: ピンを受け取り、初期レベル low の push pull output モードに設定します。 * high: ピンを high にします。 * low: ピンを low にします。 * buzz: 各切り替えの間に 1 ミリ秒の間隔を置いて、ピンを low と high に設定します。異なる間隔の長さを試してみてください。
✅ fn main() でセンサーを初期化するときに、動作確認のためにブザーを 500 ms 鳴らしてください。
CO2 アラート
150 年以上にわたり、二酸化炭素濃度は室内空気の質を示す指標と見なされてきました。室内に人がいると二酸化炭素濃度が上昇し、それに伴って人からのその他の排出物(微生物やその他のガス)の濃度も上昇し、空気の質が低下します。二酸化炭素は測定しやすい代替指標であるだけでなく、このガス自体も認知機能に大きな影響を与え、濃度が高くなると健康にも影響します。空気の質に関してはさまざまな規制があります。自動換気を規定する DIN 13779 では、800 ppm 未満の値を最高の空気質を示すもの、800 ppm から 1000 ppm の値を中程度の品質、1000 ppm から 1400 ppm の値をやや不十分な品質、1400 ppm を超える値を低品質と見なしています。1000 ppm を超える値を低品質と見なす 150 年前の Pettenkofer number は、その根拠については時代遅れと見なされていますが、それでも有用な数値です。現在の推奨事項では、1000 ppm 未満の値をかなり安全、1000 ppm から 2000 ppm の値を感知できるレベル、2000 ppm を超える値を非衛生的と見なしています。コロナウイルスに感染する可能性を下げるためには、値を 1000 ppm 未満に保つことが強く推奨されます。
✅ センサーで達成したいことに応じて、CO2 の警告レベルと上限値を何にしますか?
✅ CO2 アラート用の新しいモジュールを作成してください。これには次のものが含まれます。
- CO2 の警告レベルを定義します。
- CO2 の上限値を定義します。
- 現在の CO2 レベルがアラートかどうかを判定する関数を含みます。
値が
- 警告レベル未満の場合、LED は緑です。
- 警告レベルを超え、上限値未満の場合、LED は黄色です。
- 上限値を超えた場合、LED は赤になり、ブザーが鳴ります。
ヘルプ:
モジュール内で他のモジュールにアクセスするには:
#![allow(unused)]
fn main() {
use crate::rgb_led::LEDColor;
use crate::buzzer::Buzzer;
}
ユーザーエクスペリエンス
次の実験を行ってください。二酸化炭素センサーが 2000 ppm を超える濃度を検出し、窓を開けた場合、濃度が 400 から 500 ppm の間のベースラインに戻るまでにどれくらい時間がかかりますか?
おそらく、予想より長い時間がかかります。その間ずっとブザーを鳴らし続けるのは煩わしく、目的を果たしません。人々は単に完全にオフにしてしまうからです。ベースラインに達したときに視覚的な信号だけでなく音響信号もあるのは理にかなっています。冬に長時間窓を開けたままにするのはエネルギーの無駄だからです。ここでは、設計に多くの自由度があります。
✅ 独自の信号スキームを考えてください。発生し得るイベントは何ですか?それらについてどのように通知されたいですか?
いくつかのアイデアを示します。
イベント:
- 湿度の値が低い(暖房を多く使う冬に関連)
- 二酸化炭素のベースライン(500 ppm 未満)
- 非常に高い二酸化炭素レベル
- 湿度の値が高い(暖房されていない部屋でのみ関連)
- サーモスタットで制御されたヒーターがなく、省エネルギーをしたい場合の温度アラート。
通知:
- 通知は常にオンである必要はありません。リマインダーとして機能し、一定時間が経過しても状況が変わらない場合に再度オンにできます
- LED は点滅させたり、常時点灯させたりでき、すべて異なる色にできます
- ブザーは異なる周波数で鳴らしたり、1 つの信号内で周波数を変えたりできます。
- 低い周波数は警告感が弱いものの信号としては機能し、高い周波数は緊急感を生み出します。
その他のアイデア:
- スヌーズボタン
- データが未準備/準備完了であることを示すインジケーター
✅ あなたのスキームを実装してください!