STC89C51シリーズマイクロコントローラに基づく気温と湿度の検出および警報システム
記事ディレクトリ
概要
今日は、STC89C51シリーズマイクロコントローラーをベースにした気温と湿度の検出および警報システムを紹介します。このプロジェクトは、シングルチップ マイクロコンピュータ、DHT11 温湿度モジュール、LCD1602 ディスプレイ モジュール、ボタン、ブザー、その他のコンポーネントを組み合わせて、環境の温度と湿度をリアルタイムで監視し、設定されたしきい値を超えたときにアラームをトリガーします。このプロジェクトの開発プロセス、ハードウェア設計、ソフトウェア実装、製品紹介について詳しく見ていきましょう。
プロジェクトの背景
現代の生活において、人々は室内環境の快適さと健康にますます注目しています。特に、季節が交互に変化したり、多湿な気候や雨が多い気候では、周囲の温度と湿度を監視することが特に重要です。室内環境に対する人々のニーズを満たすために、私たちは便利で実用的な気温と湿度の検出および警報システムを開発することにしました。周囲の温度や湿度の状態を把握し、異常な温度や湿度が発生した場合に警報を発するシステムです。
ハードウェア設計
1. STC89C51マイクロコントローラー
STC89C51 は、さまざまなアプリケーション シナリオに適した、強力な機能と安定性を備えたコスト効率の高い 8 ビット マイクロコントローラです。データを処理し、周辺機器を制御するために、これを制御コアとして選択します。
2. DHT11 温湿度モジュール
DHT11は、低コストで使いやすいことが特徴のデジタル温湿度センサーです。単線シリアルインターフェースを介してSTC89C51マイクロコントローラーと通信し、環境の温度と湿度を正確に測定できます。
3. LCD1602 ディスプレイモジュール
ユーザーが温度と湿度のデータを直感的に観察できるようにするために、LCD1602 表示モジュールを使用します。シングルチップマイコンSTC89C51とパラレルインターフェースで接続され、温度や湿度などの情報を表示できる16×2キャラクタ液晶ディスプレイです。
4. 人間とコンピュータの対話モジュール
システムの双方向性を高めるために、モード切り替えボタン、しきい値プラスボタン、しきい値マイナスボタンの 3 つのボタンを設計しました。ユーザーは、ボタンを押すことでシステムの動作モードを切り替え、温度と湿度のアラームしきい値を調整できます。同時に警報装置としてブザーも追加しました。
5. パワーモジュール
システムの安定した動作を保証するために、システム内の各モジュールに安定した電圧と電流を提供する適切な電源モジュールを設計しました。
ソフトウェア設計
1. ハードウェアの初期化
ソフトウェア設計の初期段階では、STC89C51のI/Oポート、タイマー、シリアルポート通信の設定など、ハードウェアの初期化設定を実行しました。
F1602_init();
F1602_clear();
timer0_init();
DHT11_start();
uart_init() ;
TI = 1;
SendString("welcome to temp sys");
TI = 0;
P22 = 0;
2. DHT11データ読み込み
DHT11 センサーから温度と湿度のデータを読み取るために、対応する関数を作成しました。DHT11 センサーは単線シリアル通信プロトコルを使用するため、コマンドを正しく送信し、センサーから返されたデータを解析する必要があります。
void DHT11_receive()
{
uchar R_H,R_L,T_H,T_L,revise;
DHT11_start();
if(Data==0)
{
while(Data==0);
DHT11_delay_us(40);
R_H=DHT11_rec_byte();
R_L=DHT11_rec_byte();
T_H=DHT11_rec_byte();
T_L=DHT11_rec_byte();
revise=DHT11_rec_byte();
DHT11_delay_us(25);
if((R_H+R_L+T_H+T_L)==revise)
{
RH=R_H;
RL=R_L;
TH=T_H;
TL=T_L;
}
}
}
3. データ表示
読み取った温度と湿度のデータは、LCD1602 表示モジュールに表示する必要があります。ユーザーが環境情報を直観的に観察できるように、データをフォーマットして LCD 画面に表示する関数を作成しました。
void display0()
{
if(mode == 0)
{
gotoxy(1,0);
display_string("TH:");
display_num(TH_set);
gotoxy(2,0);
display_string("temp:");
display_num(TH);
display_string(".");
display_num(TL);
}
if(mode == 1)
{
gotoxy(1,0);
display_string("temp high:");
gotoxy(2,0);
display_num(TH_set);
}
}
4. アラームロジック
アラーム機能を実現するために、対応するアラームロジックを設計しました。温度と湿度が設定したしきい値を超えると、ブザーが警報信号を発し、環境の異常をユーザーに知らせます。
if(TH >= TH_set) P22 = 1;
else P22 = 0;
5. ボタン機能
キー機能を実現するために、キースキャン関数を作成しました。ボタンの状態を検出し、ボタンイベントを処理することで、モード切り替えや閾値調整機能を実現します。
void key0()
{
if(k1 == 0)
{
while(k1 == 0);
F1602_clear();
mode++;
if(mode >= 2)mode = 0;
}
if(k2 == 0)
{
while(k2 == 0);
if(mode == 1)TH_set++;
if(TH_set >= 100)TH_set = 100;
// if(mode == 2)TL_set++;
// if(TL_set >= TH_set)TL_set=TH_set;
}
if(k3 == 0)
{
while(k3 == 0);
if(mode == 1)TH_set--;
// if( TH_set<= TL_set)TH_set= TL_set;
// if(mode == 2)TL_set--;
if(TH_set <= 0)TH_set = 0;
}
}
6.Bluetooth機能
Bluetooth機能を実現するために、シリアルポート送信関数を作成しました。データをフォーマットして携帯電話に表示すると、ユーザーは直感的に環境情報を確認することができます。
void SendData(unsigned char dat)
{
SBUF = dat;
while(!TI);
TI = 0;
}
void SendString(unsigned char *s)
{
while (*s)
{
SendData(*s++);
}
}
機能拡張
1. データの記録と保存
環境の変化傾向をより深く理解するために、データの記録とストレージ機能の追加を検討できます。メモリモジュールを追加することで、温度と湿度のデータを定期的に記録して保存し、曲線を描いたり統計レポートを作成したりして、温度と湿度の変化をより直感的に観察できるようになります。
2. データアップロードと遠隔監視
ネットワーク接続がある場合は、リモート監視と管理のためにデータをクラウド プラットフォームにアップロードすることを検討できます。ユーザーは携帯電話やコンピュータを通じて環境データを確認したり、遠隔アラーム機能を設定したりすることもできるため、システムはよりインテリジェントで便利になります。
3. 温湿度補正
システムの測定精度を向上させるために、温湿度補正機能を追加することが考えられます。センサーデータと温度と湿度の非線形補正を校正することにより、システムの測定結果はより正確で信頼性が高くなります。
シミュレーション
回路図
製品説明
1. 外観デザイン
シンプルで実用的なシェルを設計し、その中にSTC89C51マイクロコントローラー、DHT11センサー、LCD1602ディスプレイモジュール、ボタン、ブザー、その他のコンポーネントを組み込みました。シェルは環境に優しいプラスチック素材で作られており、表面はマット加工が施されており、手触りが良く、指紋や汚れを効果的に防ぐことができます。
2. 利用シーン
気温と湿度の検知および警報システムは、家庭、オフィス、研究室などのさまざまな場所に適しています。ユーザーはデスクトップまたは壁に設置して、環境の温度と湿度をリアルタイムで監視できます。
3. 使用上の注意
システムの使用方法は非常に簡単です。ユーザーが初めて使用するとき、システムはキャリブレーションやアラームしきい値の設定などの初期設定を実行します。その後、システムは周囲の温度と湿度を自動的に監視し、データを LCD 画面に表示します。ユーザーはボタンを押すことでモードを切り替え、しきい値を調整できます。温度と湿度が設定したしきい値を超えると、ブザーが警報信号を発し、環境の異常をユーザーに知らせます。
4. セキュリティと安定性
ユーザーの安全を確保するために、過電圧保護、温度保護、電流保護など、製品に対して複数の安全性テストを実施しました。同時に、システムの長期安定性テストを実施し、製品の信頼性と耐久性を確認しました。
体験概要
プロジェクトの開発中に、いくつかの課題や困難に遭遇しました。たとえば、DHT11 センサーのキャリブレーションと高精度処理、ボタンのデバウンスや複数のトリガーの発行などです。真剣なデバッグと継続的な試行を通じて、最終的にこれらの問題を克服し、安定した信頼性の高いシステムを実現します。
トラブルシューティング
実際のアプリケーションでは、いくつかの障害が発生する可能性があります。たとえば、ディスプレイの不安定性、不正確なセンサー データ、その他の問題です。これらの問題は、ハードウェア接続を確認し、ソフトウェア アルゴリズムを調整し、例外処理メカニズムを追加することで解決できます。
要約する
このプロジェクトを通じて、STC89C51 シリーズ マイコンの使用法と基本原理を深く理解し、周辺モジュールとの通信およびデータ交換の方法を学びました。気温と湿度の検出および警報システムは、優れた学習プラットフォームを提供し、組み込みシステムとモノのインターネット技術の応用をより深く理解できるようになります。
このブログを読んでいただきありがとうございます! STC89C51をベースにした気温・湿度検知・警報システムにご興味がございましたら、独自のシステムを作成してさらに機能を拡張してみることも可能です。組込みシステム開発は無限の創造力が発揮される分野ですので、今後も皆様の素晴らしい作品をお待ちしております。
これらの問題は、ハードウェア接続を確認し、ソフトウェア アルゴリズムを調整し、例外処理メカニズムを追加することで解決できます。
要約する
このプロジェクトを通じて、STC89C51 シリーズ マイコンの使用法と基本原理を深く理解し、周辺モジュールとの通信およびデータ交換の方法を学びました。気温と湿度の検出および警報システムは、優れた学習プラットフォームを提供し、組み込みシステムとモノのインターネット技術の応用をより深く理解できるようになります。
このブログを読んでいただきありがとうございます! STC89C51をベースにした気温・湿度検知・警報システムにご興味がございましたら、独自のシステムを作成してさらに機能を拡張してみることも可能です。組込みシステム開発は無限の創造力が発揮される分野ですので、今後も皆様の素晴らしい作品をお待ちしております。