AWS-Arduino Weather Station
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
必要なツールとマシン
> |
|
このプロジェクトについて
AWS、Arduino Weather Stationは、環境の正確な24時間データを提供します。特に、Arduinoマイクロコントローラーボードに基づいており、環境分析用のセンサーの完全なスタックをサポートしています。
目的
この制御の目的は、上記のセンサーを介して一連のデータを検出し、LCD画面を介してユーザーとのインターフェースをとることです。プロジェクトの「ハードウェア」のサイズが小さいため、レーザーカット機で作られた小さな箱に入れることができます。
使用したセンサー
水と雪のレベルセンサー
水位インジケーターは、オーバーヘッドタンク内の水位を示すために使用されます。これを使用することで、水のオーバーフローを回避でき、いつでもタンク内の水位を知ることができます。
DHT11湿度および温度センサー
DHT11デジタル温度湿度センサーは、校正済みのデジタル信号出力温度湿度複合センサーであり、アプリケーション固有のモジュールがテクノロジーとデジタル温度湿度センサーテクノロジーをキャプチャして、高い信頼性と優れた長期安定性を備えた製品を保証します。この製品は、優れた品質、高速応答、干渉防止能力、低コスト、およびその他の利点を備えています。
フォトレジスター
光依存抵抗器(LDR)とも呼ばれるフォトレジスターは、光の有無を示したり、光の強度を測定したりするために最もよく使用される感光性デバイスです。暗闇では、それらの抵抗は非常に高くなりますが、LDRセンサーが光にさらされると、光の強度に応じて、抵抗は劇的に低下し、数オームまで低下します。
LCD I2C1602ディスプレイ
I2Cバスを備えたLCD1602は、シリアルバスの一種です。マルチホストシステムに必要なバスルーリングと高速または低速のデバイス同期機能を備えた高性能シリアルバスです。 I2C LCD1602の青いポテンショメータは、バックライトだけに使用されています。
I2Cは、抵抗でプルアップされた2つの双方向オープンドレインライン、シリアルデータライン(SDA)とシリアルクロックライン(SCL)のみを使用します。使用される一般的な電圧は+ 5Vまたは+ 3.3Vですが、他の電圧のシステムも許可されます。
DS1302リアルタイムクロックモジュール
これは、リアルタイムクロック/カレンダーと31バイトのスタティックRAMが搭載された統合DS1302に基づいています。時間の形式はhh / mm / ssで、日付の形式はyyyy / mm / ddです。
LM35温度センサー
LM35高精度温度センサーは、非常に正確な方法で温度を検出するセンサーです。アナログ-デジタルコンバータ(ADC)は、式ADCValue =サンプル* 1024 /基準電圧(+ 5v)に基づいて、アナログ値をデジタル近似に変換します。したがって、+ 5ボルトの基準では、デジタル近似は=入力電圧* 205になります。
赤外線受信機とリモコン
これらの2つのコンポーネントは連携して機能します。赤外線レシーバーは、リモートコントローラーからのデータの受信を許可します。データは、押したいボタンによって異なります。次のボタンは、特定の機能に割り当てるために選択されています。
- 0ボタン:LCD画面に時刻と日付を表示できます。
- 1ボタン:LCD画面にLM35の温度データとDHT11の湿度データを表示できます。
- 2ボタン:LCD画面で暗さのパーセンテージを確認できます。
- 3ボタン:LCD画面に液体レベル(mm)の値を確認できます。
- 「サイクル」ボタン:4秒間隔ですべての画面を表示できます。
THE A.W.S.
ステップ1:ボックスの構築
プロジェクトの規模を考慮した上で、プレキシグラスボックスの建設を進めました。センサーワイヤの出口用の相対的なインターロッキングシートと穴を備えた面のサイズは、Autocadソフトウェアで設計されており、レーザーカット機で面をカットしました。そして最後に、すべてを強力な接着剤で組み立てました。
ステップ2:回路図とハードウェアの接続
これがArduinoウェザーステーションの概略図の画像です。それはフリッツソフトウェアで行いました。接続はかなり簡単です。
ステップ3:Arduino プログラミング
Arduino IDEでコードを作成し、必要なすべてのライブラリを使用して、気象観測所が希望どおりに動作するようにプログラムしました。
ステップ4:方法 動作
AWS( Arduino Weather Station )は、環境から一部のデータを取得し、赤外線リモコンを使用してそれらを表示できるようにする気象観測所です。それらをユーザーとインターフェースするために、ユーザーが交換可能な5つの異なる画面を備えたLCDディスプレイがあります。
画面は次のとおりです。
1. ホーム画面: これは、ボードのスイッチを入れたときにユーザーが見ることができる最初の画面です。特にフェージング効果のある「ArduinoWeatherStation」という言葉でプロジェクトを紹介します。この画面は、AWSにデータの表示を要求するたびに表示されます。
2. 日付と時刻の画面: これは、ユーザーがリモコンの0ボタンを押すだけでアクセスできる最初の画面です。押すと、画面に10秒の遅延があり、ホーム画面に戻ります。
3. 湿度と温度の画面: DHT11センサーとLM35センサーが受信した湿度と温度のデータを表示する画面です。リモコンの1ボタンに接続されており、押すと画面が10秒遅れてホーム画面に戻ります。
4. 暗闇の画面: これは、センサーの光の量についてLDRが受信したデータを表示する画面です。センサーの暗さのパーセンテージを示します。リモコンの2ボタンに接続されており、押すと画面に10秒の遅延があり、ホーム画面に戻ります。
5. 液体レベル画面: この画面は、レシピに含まれる液体の量の高さを示します。リモコンの3ボタンに接続されており、押すと画面が10秒遅れてホーム画面に戻ります。
サイクルボタンを押すと、最後の4つの画面を4秒間隔で連続して表示できます。 リモコンで。このモードでは、情報の1ラップのみが実行されます。
注意事項
このプロジェクトの寿命を延ばすために考慮すべき最初の事実は、液体やその他の有害物質がボードやステーション一般に接触しないようにすることです。
沈殿後、水容器を空にし、センサーをチェックして清掃する必要があります。
充電式電池の寿命は約2日ですので、放電する場合は充電(約2時間)が必要です。
おそらく、赤外線センサーが期待どおりに動作しないことがあるため、低温(約0度)でその機能が中断される可能性があります。問題はありません。実際、ボックスを開いてリセットボタンを押すだけで済みます。AWSは再び正常に動作します。
リセットボタンを押しても、RTC DS1302モジュールは、モジュール内に存在するサポートバッテリーが約10年間持続するため、日付と時刻に関する値を変更しません。
AWSの電源が切断されると、日時が変更されます。この問題を解決するには、好みに応じてリストに示されているポイントにリセットする必要があります。ロードしたら、以下に示すように、プログラムの設定を非表示にする必要があります。
Before:Time t(2017、12、03、10、15、00、1); rtc.time(t); After:// Time t(2017、12、03、10、15 00、1)//; rtc.time(t);
コード
// includeスケッチライブラリ#include #include //クロックライブラリ#include //クロックライブラリ#include //クロックlibrary#include // dht11 library#include // LCDライブラリ#include // LCDライブラリのワイヤ#definelmPinA1 // LM35をA1LiquidCrystal_I2Clcd(0x27、 16、2); // 16文字と2行のdisplaydhtDHTのLCDアドレスを0x27に設定します。 //変数タイプのdhtconstを作成しますintDHT11_PIN =4; // dht11をピン4に接続しますconstint waterSensor =0; //水センサー変数を設定しますintwaterValue =0; //水センサーの変数intmmwaterValue =0; int SensorPin =A3; //ポテンショメータの入力ピンを選択しますintluce =0; // ldrintpluceの変数=0; // ldrfloat tem =0の変数; //温度の変数lmVal =0; // LM35の変数// irconst int irReceiverPin =3; IRrecv irrecv(irReceiverPin); //タイプIRrecvdecode_resultsresultsの変数を作成します; //クロック変数を定義しますuint8_tRST_PIN =5; // RSTピン接続touint8_tSDA_PIN =6; // IOピン接続touint8_tSCL_PIN =7; // clk Pin attach to / *バッファの作成* / char buf [50]; char day [10]; / * DS1302オブジェクトの作成* / DS1302 rtc(RST_PIN、SDA_PIN、SCL_PIN); //変数タイプDS1302voidの作成print_time(){/ *チップから現在の時刻と日付を取得します* / Time t =rtc.time(); / *曜日に名前を付けます* / memset(day、0、sizeof(day)); switch(t.day){ケース1:strcpy(day、 "Sun");壊す;ケース2:strcpy(day、 "Mon");壊す;ケース3:strcpy(day、 "Tue");壊す;ケース4:strcpy(day、 "Wed");壊す;ケース5:strcpy(day、 "Thu");壊す;ケース6:strcpy(day、 "Fri");壊す;ケース7:strcpy(day、 "Sat");壊す; } / *時刻と日付をフォーマットし、一時バッファに挿入します* / snprintf(buf、sizeof(buf)、 "%s%04d-%02d-%02d%02d:%02d:%02d"、day、t。 yr、t.mon、t.date、t.hr、t.min、t.sec); / *フォーマットされた文字列をシリアルに出力して、時刻を確認できるようにします* / Serial.println(buf); lcd.setCursor(2、0); lcd.print(t.yr); lcd.print( "-"); lcd.print(t.mon / 10); lcd.print(t.mon%10); lcd.print( "-"); lcd.print(t.date / 10); lcd.print(t.date%10); lcd.print( ""); lcd.print(day); lcd.setCursor(4、1); lcd.print(t.hr); lcd.print( ":"); lcd.print(t.min / 10); lcd.print(t.min%10); lcd.print( ":"); lcd.print(t.sec / 10); lcd.print(t.sec%10);} void setup(){//クロックSerial.begin(9600); rtc.write_protect(false); rtc.halt(false); // ir irrecv.enableIRIn(); // irレシーバーモジュールを有効にしますlcd.init(); // lcdを初期化しますlcd.backlight(); //バックライトを開きますpinMode(sensorPin、INPUT);時間t(2017、12、03、10、15、00、1); //時間を初期化する/ *チップに時間と日付を設定する* / rtc.time(t);} void loop(){lcd。 setCursor(0、0); lcd.print( "A"); delay(50); lcd.setCursor(1、0); lcd.print( "r"); delay(50); lcd.setCursor(2、0); lcd.print( "d"); delay(50); lcd.setCursor(3、0); lcd.print( "u"); delay(50); lcd.setCursor(4、0); lcd.print( "i"); delay(50); lcd.setCursor(5、0); lcd.print( "n"); delay(50); lcd.setCursor(6、0); lcd.print( "o"); delay(50); lcd.setCursor(8、0); lcd.print( "W"); delay(50); lcd.setCursor(9、0); lcd.print( "e"); delay(50); lcd.setCursor(10、0); lcd.print( "a"); delay(50); lcd.setCursor(11、0); lcd.print( "t"); delay(50); lcd.setCursor(12、0); lcd.print( "h"); delay(50); lcd.setCursor(13、0); lcd.print( "e"); delay(50); lcd.setCursor(14、0); lcd.print( "r"); delay(50); lcd.setCursor(4、1); lcd.print( "S"); delay(50); lcd.setCursor(5、1); lcd.print( "t"); delay(50); lcd.setCursor(6、1); lcd.print( "a"); delay(50); lcd.setCursor(7、1); lcd.print( "t"); delay(50); lcd.setCursor(8、1); lcd.print( "i"); delay(50); lcd.setCursor(9、1); lcd.print( "o"); delay(50); lcd.setCursor(10、1); lcd.print( "n"); delay(50); if(irrecv.decode(&results))// irレシーバーモジュールレシーバーデータ{if(results.value ==0xFF6897)// if "0"がプッシュされた場合printTIME {lcd.clear(); // LCDをクリアしますprint_time(); delay(10000); //遅延10000mslcd.clear(); // LCD遅延をクリアします(200); //しばらく待ちますirrecv.resume(); //次の値を受け取ります} if(results.value ==0xFF30CF)// "1"がプッシュされた場合printTEMPERATURE and HUMIDITY {lcd.clear(); // LCDをクリアします// DHTのデータを読み取りますintchk =DHT.read11(DHT11_PIN); //データを表示lcd.setCursor(0、0); lcd.print( "Tem:"); lmVal =analogRead(lmPin); // A1 temの値を読み取る=(lmVal * 0.0048828125 * 100); // 5/1024 =0.0048828125; 1000/10 =100 lcd.print(tem); // print temlcd。 print(char(223)); //単位を印刷 "?" lcd.print( "C"); // Serial.println( "C"); lcd.setCursor(0、1); lcd.print( "ハム:"); //Serial.print("Hum: "); lcd.print(DHT.humidity、1); //湿度を液晶ディスプレイに印刷します//Serial.print(DHT.humidity,1); lcd.print( "%"); //Serial.println("% "); delay(10000); // 3000ミリ秒待つlcd.clear(); // LCD遅延をクリアします(200); //しばらく待ちますirrecv.resume(); //次の値を受け取ります} if(results.value ==0xFF18E7)// "2"がプッシュされた場合、DARKNESS {lcd.clear();を出力します。 // LCDをクリアしますlcd.setCursor(4、0); //カーソルを4列、1行に置きますlcd.print( "Darkness:"); luce =analogRead(sensorPin); // ldrを読み取りますpluce =map(luce、0、1023、0、100); //センサーの値は0〜100の値に変換されますlcd.setCursor(6、1); //カーソルをLCDの中央に置きますlcd.print(pluce); //パーセント値のlcd.print( "%");を出力します//シンボルを出力しますdelay(10000); //遅延10000ミリ秒lcd.clear(); // LCD遅延をクリアします(200); //しばらく待ちますirrecv.resume(); //次の値を受け取ります} if(results.value ==0xFF7A85)// "3"がプッシュされた場合、SNOWまたはWATER LEVEL {lcd.clear();を出力します。 // LCDをクリアしますlcd.setCursor(0、0); //カーソルを0列、1行に置きますlcd.print( "Fluid level(mm):"); // "Fluid level(mm):"を出力しますint waterValue =analogRead(waterSensor); //水センサー値を取得lcd.setCursor(6、1); //カーソルを6列、2行に置きますmmwaterValue =map(waterValue、0、1023、0、40); lcd.print(mmwaterValue); // lcd delay(10000);に表示される値//遅延10000mslcd.clear(); // LCD遅延をクリアします(200); irrecv.resume(); //次の値を受け取ります} if(results.value ==0xFF9867)// "PRESENTATION"がプッシュされた場合printTIME、TEM and HUM、DARKNESS and S or W LEVEL one time {lcd.clear(); // LCDをクリアしますprint_time(); delay(4000); //遅延10000mslcd.clear(); // LCD遅延をクリアします(200); //しばらく待ちます// DHTのデータを読み取りますintchk =DHT.read11(DHT11_PIN); //データを表示lcd.setCursor(0、0); lcd.print( "Tem:"); lmVal =analogRead(lmPin); // A0 temの値を読み取る=(lmVal * 0.0048828125 * 100); // 5/1024 =0.0048828125; 1000/10 =100 lcd.print(tem); // print temlcd。 print(char(223)); //単位を印刷 "?" lcd.print( "C"); // Serial.println( "C"); lcd.setCursor(0、1); lcd.print( "ハム:"); //Serial.print("Hum: "); lcd.print(DHT.humidity、1); //湿度を液晶ディスプレイに印刷します//Serial.print(DHT.humidity,1); lcd.print( "%"); //Serial.println("% "); delay(4000); // 3000ミリ秒待つlcd.clear(); // LCD遅延をクリアします(200); //しばらく待ちますlcd.setCursor(4、0); //カーソルを4列、1行に置きますlcd.print( "Darkness:"); luce =analogRead(sensorPin); // ldrを読み取りますpluce =map(luce、0、1023、0、100); //センサーの値は0〜100の値に変換されますlcd.setCursor(6、1); //カーソルをLCDの中央に置きますlcd.print(pluce); //パーセント値のlcd.print( "%");を出力します//シンボルを出力しますdelay(4000); //遅延10000ミリ秒lcd.clear(); // LCD遅延をクリアします(200); //しばらく待ちますlcd.setCursor(0、0); //カーソルを0列、1行に置きますlcd.print( "Fluid level(mm):"); // "Fluid level(mm):"を出力しますint waterValue =analogRead(waterSensor); //水センサー値を取得lcd.setCursor(6、1); //カーソルを6列、2行に置きますmmwaterValue =map(waterValue、0、1023、0、40); lcd.print(mmwaterValue); // lcd delay(4000);に表示される値//遅延10000mslcd.clear(); // LCD遅延をクリアします(200); irrecv.resume(); //次の値を受け取ります}}}
「ArduinoWeatherStation」の文字を文字ごとに書く代わりに、で書くことができます。 「switch / case」モード。
結論
Arduinoを使用して気象観測所を作成しました。これは、現在の日付と時刻を考慮し、環境データを取得して、赤外線リモコンで制御されるLCD画面に印刷します。
コード
- AWS code.ino
AWS code.ino C / C ++
// include Sketch libraries#include#include // clock library#include // clock library#include // clock library#include // dht11 library#include // LCD library#include // LCDライブラリのワイヤー#definelmPinA1 // LM35をA1LiquidCrystal_I2Clcd(0x27、16、2 ); // 16文字と2行のdisplaydhtDHTのLCDアドレスを0x27に設定します。 //変数タイプのdhtconstを作成しますintDHT11_PIN =4; // dht11をピン4に接続しますconstint waterSensor =0; //水センサー変数を設定しますintwaterValue =0; //水センサーの変数intmmwaterValue =0; int SensorPin =A3; //ポテンショメータの入力ピンを選択しますintluce =0; // ldrintpluceの変数=0; // ldrfloat tem =0の変数; //温度の変数lmVal =0; // LM35の変数// irconst int irReceiverPin =3; IRrecv irrecv(irReceiverPin); //タイプIRrecvdecode_resultsresultsの変数を作成します; //クロック変数を定義しますuint8_tRST_PIN =5; // RSTピン接続touint8_tSDA_PIN =6; // IOピン接続touint8_tSCL_PIN =7; // clk Pin attach to / *バッファの作成* / char buf [50]; char day [10]; / * DS1302オブジェクトの作成* / DS1302 rtc(RST_PIN、SDA_PIN、SCL_PIN); //変数タイプDS1302voidの作成print_time(){/ *チップから現在の時刻と日付を取得します* / Time t =rtc.time(); / *曜日に名前を付けます* / memset(day、0、sizeof(day)); switch(t.day){ケース1:strcpy(day、 "Sun");壊す;ケース2:strcpy(day、 "Mon");壊す;ケース3:strcpy(day、 "Tue");壊す;ケース4:strcpy(day、 "Wed");壊す;ケース5:strcpy(day、 "Thu");壊す;ケース6:strcpy(day、 "Fri");壊す;ケース7:strcpy(day、 "Sat");壊す; } / *時刻と日付をフォーマットし、一時バッファに挿入します* / snprintf(buf、sizeof(buf)、 "%s%04d-%02d-%02d%02d:%02d:%02d"、day、t。 yr、t.mon、t.date、t.hr、t.min、t.sec); / *フォーマットされた文字列をシリアルに出力して、時刻を確認できるようにします* / Serial.println(buf); lcd.setCursor(2、0); lcd.print(t.yr); lcd.print( "-"); lcd.print(t.mon / 10); lcd.print(t.mon%10); lcd.print( "-"); lcd.print(t.date / 10); lcd.print(t.date%10); lcd.print( ""); lcd.print(day); lcd.setCursor(4、1); lcd.print(t.hr); lcd.print( ":"); lcd.print(t.min / 10); lcd.print(t.min%10); lcd.print( ":"); lcd.print(t.sec / 10); lcd.print(t.sec%10);} void setup(){//クロックSerial.begin(9600); rtc.write_protect(false); rtc.halt(false); // ir irrecv.enableIRIn(); // irレシーバーモジュールを有効にしますlcd.init(); // lcdを初期化しますlcd.backlight(); //バックライトを開きますpinMode(sensorPin、INPUT);時間t(2017、12、9、11、20、00、7); //時間を初期化する/ *チップに時間と日付を設定する* / rtc.time(t);} void loop(){lcd。 setCursor(0、0); lcd.print( "A"); delay(50); lcd.setCursor(1、0); lcd.print( "r"); delay(50); lcd.setCursor(2、0); lcd.print( "d"); delay(50); lcd.setCursor(3、0); lcd.print( "u"); delay(50); lcd.setCursor(4、0); lcd.print( "i"); delay(50); lcd.setCursor(5、0); lcd.print( "n"); delay(50); lcd.setCursor(6、0); lcd.print( "o"); delay(50); lcd.setCursor(8、0); lcd.print( "W"); delay(50); lcd.setCursor(9、0); lcd.print( "e"); delay(50); lcd.setCursor(10、0); lcd.print( "a"); delay(50); lcd.setCursor(11、0); lcd.print( "t"); delay(50); lcd.setCursor(12、0); lcd.print( "h"); delay(50); lcd.setCursor(13、0); lcd.print( "e"); delay(50); lcd.setCursor(14、0); lcd.print( "r"); delay(50); lcd.setCursor(4、1); lcd.print( "S"); delay(50); lcd.setCursor(5、1); lcd.print( "t"); delay(50); lcd.setCursor(6、1); lcd.print( "a"); delay(50); lcd.setCursor(7、1); lcd.print( "t"); delay(50); lcd.setCursor(8、1); lcd.print( "i"); delay(50); lcd.setCursor(9、1); lcd.print( "o"); delay(50); lcd.setCursor(10、1); lcd.print( "n"); delay(50); if(irrecv.decode(&results))// irレシーバーモジュールレシーバーデータ{if(results.value ==0xFF6897)// if "0"がプッシュされた場合printTIME {lcd.clear(); // LCDをクリアしますprint_time(); delay(10000); //遅延10000mslcd.clear(); // LCD遅延をクリアします(200); //しばらく待ちますirrecv.resume(); //次の値を受け取ります} if(results.value ==0xFF30CF)// "1"がプッシュされた場合printTEMPERATURE and HUMIDITY {lcd.clear(); // LCDをクリアします// DHTのデータを読み取りますintchk =DHT.read11(DHT11_PIN); //データを表示lcd.setCursor(0、0); lcd.print( "Tem:"); lmVal =analogRead(lmPin); // A1 temの値を読み取る=(lmVal * 0.0048828125 * 100); // 5/1024 =0.0048828125; 1000/10 =100 lcd.print(tem); // print temlcd。 print(char(223)); //単位を印刷 "" lcd.print( "C"); // Serial.println( "C"); lcd.setCursor(0、1); lcd.print( "ハム:"); //Serial.print("Hum: "); lcd.print(DHT.humidity、1); //湿度を液晶ディスプレイに印刷します//Serial.print(DHT.humidity,1); lcd.print( "%"); //Serial.println("% "); delay(10000); // 3000ミリ秒待つlcd.clear(); // LCD遅延をクリアします(200); //しばらく待ちますirrecv.resume(); //次の値を受け取ります} if(results.value ==0xFF18E7)// "2"がプッシュされた場合、DARKNESS {lcd.clear();を出力します。 // LCDをクリアしますlcd.setCursor(4、0); //カーソルを4列、1行に置きますlcd.print( "Darkness:"); luce =analogRead(sensorPin); // ldrを読み取りますpluce =map(luce、0、1023、0、100); //センサーの値は0〜100の値に変換されますlcd.setCursor(6、1); //カーソルをLCDの中央に置きますlcd.print(pluce); //パーセント値のlcd.print( "%");を出力します//シンボルを出力しますdelay(10000); //遅延10000ミリ秒lcd.clear(); // LCD遅延をクリアします(200); //しばらく待ちますirrecv.resume(); //次の値を受け取ります} if(results.value ==0xFF7A85)// "3"がプッシュされた場合、SNOWまたはWATER LEVEL {lcd.clear();を出力します。 // LCDをクリアしますlcd.setCursor(0、0); //カーソルを0列、1行に置きますlcd.print( "Fluid level(mm):"); // "Fluid level(mm):"を出力しますint waterValue =analogRead(waterSensor); //水センサー値を取得lcd.setCursor(6、1); //カーソルを6列、2行に置きますmmwaterValue =map(waterValue、0、1023、0、40); lcd.print(mmwaterValue); // lcd delay(10000);に表示される値//遅延10000mslcd.clear(); // LCD遅延をクリアします(200); irrecv.resume(); //次の値を受け取ります} if(results.value ==0xFF9867)// "PRESENTATION"がプッシュされた場合printTIME、TEM and HUM、DARKNESS and S or W LEVEL one time {lcd.clear(); // LCDをクリアしますprint_time(); delay(4000); //遅延10000mslcd.clear(); // LCD遅延をクリアします(200); //しばらく待ちます// DHTのデータを読み取りますintchk =DHT.read11(DHT11_PIN); //データを表示lcd.setCursor(0、0); lcd.print( "Tem:"); lmVal =analogRead(lmPin); // A0 temの値を読み取る=(lmVal * 0.0048828125 * 100); // 5/1024 =0.0048828125; 1000/10 =100 lcd.print(tem); // print temlcd。 print(char(223)); //単位を印刷 "" lcd.print( "C"); // Serial.println( "C"); lcd.setCursor(0、1); lcd.print( "ハム:"); //Serial.print("Hum: "); lcd.print(DHT.humidity、1); //湿度を液晶ディスプレイに印刷します//Serial.print(DHT.humidity,1); lcd.print( "%"); //Serial.println("% "); delay(4000); // 3000ミリ秒待つlcd.clear(); // LCD遅延をクリアします(200); //しばらく待ちますlcd.setCursor(4、0); //カーソルを4列、1行に置きますlcd.print( "Darkness:"); luce =analogRead(sensorPin); // ldrを読み取りますpluce =map(luce、0、1023、0、100); //センサーの値は0〜100の値に変換されますlcd.setCursor(6、1); //カーソルをLCDの中央に置きますlcd.print(pluce); //パーセント値のlcd.print( "%");を出力します//シンボルを出力しますdelay(4000); //遅延10000ミリ秒lcd.clear(); // LCD遅延をクリアします(200); //しばらく待ちますlcd.setCursor(0、0); //カーソルを0列、1行に置きますlcd.print( "Fluid level(mm):"); // "Fluid level(mm):"を出力しますint waterValue =analogRead(waterSensor); //水センサー値を取得lcd.setCursor(6、1); //カーソルを6列、2行に置きますmmwaterValue =map(waterValue、0、1023、0、40); lcd.print(mmwaterValue); // lcd delay(4000);に表示される値//遅延10000mslcd.clear(); // LCD遅延をクリアします(200); irrecv.resume(); //次の値を受け取ります}}}
カスタムパーツとエンクロージャー
box_a5et5f4U9F.dwg 回路図
aws_DMDwb4iUZp.fzz 製造プロセス
- Weather Station V 2.0
- TinyML-言語検出器-エッジインパルスとArduinoに基づく
- MPU-6050を搭載したArduinoジャイロスコープゲーム
- 6-シューター:Arduinoドリンクミキシングステーション
- Arduino Digital Dice
- Find Me
- Arduinoオーディオリアクティブデスクライト
- Arduino Powered Weather Balloon Datalogger
- $ 10ポータブルArduinoウェザーステーション(AWS)
- NeoMatrix Arduino Pong
- ThingSpeak Arduino Weather Station