Arduinoの気象ステーション

かつて、インターネットを探索しているときに、興味深いArduinoボードに出会いました。 私はこのボードにとても興味がありました。 その助けを借りて、ロボット自体、気象観測所、アラーム、さらに深刻なもの、たとえば「スマートホーム」を作成できます。



このデバイスを購入して、私はその機能を研究し始めました。 LED、温度センサー、LCDディスプレイで十分に遊んだので、私はとても面白いことや家で便利になることをすることにしました。

そして、それが何から来たのか...



今日は、私の小さな家のプロジェクト、つまりArduinoの室内気象観測所についてお話したいと思います。 たとえば、誰もが自分の部屋の温度や湿度を確認したいと思うので、私のプロジェクトでこれを行うことができます。



これは、気象ステーションがアセンブリでどのように見えるかです:



画像



おそらく、同じデバイスを組み立てたいと思っていたので、引っ張らないようにしましょう。



特徴



しかし、最初に、気象ステーションで何ができるかを見てみましょう。



1)現在の日付と時刻を表示します。

2)現在の温度を表示します。

3)現在の湿度を表示します。

4)現在の大気圧を表示します。



構成



この気象ステーションを実装するために必要なもの:



1)Arduinoマイクロコントローラー自体(私はArduino nano v3を使用しました);

2)温度および湿度センサーDht22(測定値の小さな誤差);

3)BMP085気圧計は、たとえば大気圧、温度、海抜を測定するなど、多くのことを実行できます。

4)リアルタイムクロックDS3231(非常に正確で構成が容易です)。

5)私たちはまだこれをどこかで手に入れる必要があります;私は誰もがNokia 5110の有名なスクリーンとして選ばれました。

6)ストレートアーム、これは一切ありません。



必要に応じて:



7)構造全体に電力を供給するためのバッテリーボックス。 私はUSBを搭載しています。 電池から数日は生きません。

8)スイッチ。必要に応じて画面のバックライトをオンにするためにここにあります。

9)合板と脚。

10)電源を接続するためのコネクタ。



接続



次に、接続する場所と方法を見てみましょう。



1)私たちの画面が最初になります:

ピン3-シリアルクロックアウト(SCLK)

ピン4-シリアルデータ出力(DIN)

ピン5-データ/コマンド選択(D / C)

ピン7-LCDチップセレクト(CS)

ピン6-LCDリセット(RST)

3.3V電源



2)さらに、温湿度センサーDht22:

ピン10-DAT

5V電源



3)3番目は気圧計になります。

ピン4-SDA

ピン5-SCL

5V電源



4)次はリアルタイムクロックです。

ピン4-SDA

ピン5-SCL

5V電源



電源とアースを接続することを忘れないでください。



コード



さて、今、最も興味深いのは私たちのコードです。

私はそれを理解しやすいようにうまくコメントしようとしましたが、図書館からの英語の挿入物があります。 翻訳に問題はないと思います。



コード
#include <LCD5110_Graph.h> #include "DHT.h" #include <Wire.h> #include <BMP085.h> #include "RTClib.h" #define DHTPIN 10 // 10 pin   DHT22 #define DHTTYPE DHT22 RTC_DS1307 RTC; BMP085 dps = BMP085(); DHT dht(DHTPIN, DHTTYPE); long temp3 = 0, Pressure = 0, Altitude = 0; // pin 3 - Serial clock out (SCLK) // pin 4 - Serial data out (DIN) // pin 5 - Data/Command select (D/C) // pin 7 - LCD chip select (CS) // pin 6 - LCD reset (RST) LCD5110 myGLCD(3, 4, 5, 6, 7); extern unsigned char SmallFont[]; void setup() { myGLCD.InitLCD(); myGLCD.setFont(SmallFont); Wire.begin(); RTC.begin(); dht.begin(); delay(2000); dps.init(MODE_ULTRA_HIGHRES, 3200, true); // 3200  32     (    +           ) } void loop() { dps.getPressure(&Pressure); dps.getAltitude(&Altitude); dps.getTemperature(&temp3); DateTime now = RTC.now(); // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor) float h = dht.readHumidity(); // Read temperature as Celsius float t = dht.readTemperature(); myGLCD.setFont(SmallFont); //       myGLCD.clrScr(); //   myGLCD.print("Time=", LEFT, 0); //  myGLCD.printNumI(int(now.hour()), 32, 0); // 32,0  32=   ,    . 0=  myGLCD.print(":", 45, 0); myGLCD.printNumI(int(now.minute()), 50, 0); myGLCD.print(":", 62, 0); myGLCD.printNumI(int(now.second()), 67, 0); myGLCD.print("Date=", LEFT, 10); //  myGLCD.printNumI(int(now.day()), 32, 10); myGLCD.print("/", 44, 10); myGLCD.printNumI(int(now.month()), 50, 10); myGLCD.print("/", 62, 10); myGLCD.printNumI(int(now.year() - 2000), 68, 10); myGLCD.print("T=", LEFT, 20); //  myGLCD.printNumF(t, 2, 13, 20); //   DHT22 myGLCD.print("/", 45, 20); myGLCD.printNumF(temp3 * 0.1, 2, 53, 20); //    myGLCD.print("Hum=", LEFT, 30); //    DHT22 myGLCD.printNumF(h, 2, 28, 30); myGLCD.print("%", 63, 30); myGLCD.print("Pres=", LEFT, 40); //    myGLCD.printNumF(Pressure / 133.3, 2, 31, 40); //   myGLCD.print("mm", 68, 40); // Serial.print(" Alt(m):");  ,       // Serial.print(Altitude / 100); myGLCD.update(); //      delay (1000); //  1  }
      
      









ウェザーステーションの運用例



デバイスの写真
画像



画像



映像






ソースコード



必要なライブラリとプログラムコード自体は、次のWebサイトで入手できます。

リンク



ご質問やご提案がある場合は、ご記入ください。



All Articles