工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

ArduinoUNOミニウェザーステーション

コンポーネントと消耗品

>
Arduino UNO
× 1
Espressif ESP8266 ESP-01
× 1
Arduinoプロトシールド
または通常のブレッドボード
× 1
DHT22温度センサー
× 1
シードグローブ-ライトセンサー
× 1
シードグローブ-UVセンサー
× 1
シードグローブ-バロメーターセンサー
× 1
シードグローブ-ダストセンサー
× 1
抵抗1kオーム
× 2
抵抗10kオーム
× 1
抵抗4.75kオーム
× 1
ジャンパー線(汎用)
× 1

アプリとオンラインサービス

>
Arduino IDE
ThingSpeak API

このプロジェクトについて

<図>

これは、Wi-Fi接続を備えたArduinoベースのミニウェザーステーションの第1世代であり、ThingSpeakプラットフォームを使用してオンラインでデータを公開することができます。

気象観測所は、さまざまなセンサーを使用して、気象と環境に関連する次のデータを収集します。

  • 温度
  • 湿度
  • 大気圧
  • 光の強さ
  • UVインデックス
  • 粉塵濃度

目的は、オープンハードウェアを使用して、小さくてシンプルな気象観測所を作成することです。

始めて楽しんでみましょう!

電子部品

<図> <図> <図> <図> <図> <図> <図> <図>

このプロジェクトの組み立てに特定のツールは必要ありません。すべてのコンポーネントは、お気に入りのeコマースストアでオンラインで見つけることができます。

回路はUSBポート(コンピューターまたは通常の電話充電器に接続)から電力を供給されますが、外部DC電源またはArduino電源ジャックに接続されたバッテリーを追加することもできます。

ウェザーステーションサーキットのケースは、このプロジェクトの範囲外です。

パーツの接続

<図> <図>

回路図に従ってすべてのコンポーネントを接続します。各センサーをブレッドボードに接続するには、ジャンパー線が必要です。プロトシールド(よりコンパクトな回路用)、通常のブレッドボードを使用するか、Arduinoシールドを独自に設計することができます。

USBケーブルをArduinoUnoボードに接続し、次の手順に進みます。

コード

<図>

最新のArduinoIDEをすでにインストールしている場合は、次のライブラリをダウンロードしてインストールします。

  • DHT22ライブラリ
  • AdafruitBMP085ライブラリ

ライブラリをArduinoIDEに追加する方法については、次のArduinoガイドを確認してください。

Arduinoコードをダウンロードします( weatherBox.ino )コードセクションに含まれています。 XXXXX を置き換えます WiFiルーターのSSIDで、 YYYYY ルーターのパスワード、および ZZZZZ ThingSpeakチャネルでAPIキーを書き込みます(次のステップで取得する方法を参照してください)。

ArduinoボードをコンピューターのUSBポートに接続し、コードをアップロードします。

ThingSpeakの構成

<図> <図> <図> <図>
  • ThingSpeakアカウントを作成する
  • 新しいチャンネルを作成する

気象観測所の名前と説明を指定します。次のチャネルを割り当てて、チャネルを保存します。

  • チャンネル1 =光
  • チャネル2 =湿度
  • チャネル3 =温度(DHT22から)
  • チャンネル4 =UVインデックス
  • チャネル5 =粉塵濃度
  • チャネル6 =圧力
  • チャネル7 =温度(BMP085から)

API書き込みキーをコピーします。これは、Arduinoコードの前のステップで使用されます。ステーションの電源がオンになると、センサー値が定期的にチャネルにアップロードされます。各変数のパブリックおよびプライベートの視覚化を構成できます。

公開チャンネルの例:https://thingspeak.com/channels/35540

Androidアプリの使用

どのブラウザでも気象観測所のデータを視覚化できます。ただし、Androidベースのスマートフォンで確認して、いつでも視覚化することもできます。

  • AndroidデバイスのGooglePlayストアからThingsViewアプリをダウンロードしてインストールします
  • アプリで、チャンネルID番号を挿入し、[追加]をクリックします。 IDはThingSpeakチャネル構成にあります
  • 各変数の現在の値がグラフに表示されます

楽しんでください!

コード

  • weatherBox.ino
weatherBox.ino Arduino
 #include  #include  #include  #include  #include  #include  #define SSID "XXXXX "// XXXXXをルーターに置き換えますSSID#define PASS" YYYYY "// YYYYYをルーターに置き換えますpassword#define IP" 184.106.153.149 "// thingspeak.com IP#define DHT22_PIN 2String GET =" GET / update?key =ZZZZZ&field1 ="; // ZZZZZをThingSpeakチャネルに置き換えますwritekeySoftwareSerial monitor(10、11); // ESP8266モジュール(RX、TX)へのシリアル通信dht DHT; Adafruit_BMP085_Unified bmp =Adafruit_BMP085_Unified(10085); // VariablesintluminancePin =A0; int uvPin =A1; int dustPin =8; unsigned long duration; unsigned long starttime; unsigned sampletime_ms =30000; unsigned long delay_time =60000; unsigned long lowpulseoccupancy =0; float ratio =0; floatdensity =0; // setupvoid setup(){//シリアル通信を開始Serial.begin(9600); monitor.begin(9600); Serial.println( "初期化中..."); // Arduinoピンを構成しますpinMode(dustPin、INPUT); //圧力センサーを初期化しますSerial.println( "BMP085圧力センサーを検出しています..."); if(!bmp.begin()){Serial.println( "BMP085センサーが検出されませんでした。接続またはI2CADDDRを確認してください!"); while(1); } Serial.println( "BMP085が検出されました!"); // Wi-Fiモジュールとの通信monitor.flush(); monitor.println( "AT"); delay(2000); if(monitor.find( "OK")){Serial.println( "ESP8266モジュールとの通信:OK"); } else {Serial.println( "ESP8266モジュールエラー"); } // Wi-Fiルーターを接続するconnectWiFi(); Serial.print( "Sampling("); Serial.print(sampletime_ms / 1000); Serial.println( "s)..."); //タイマーの開始時間を初期化=millis();} void loop(){//ダスト粒子の持続時間を測定=pulseIn(dustPin、LOW);低パルス占有率=低パルス占有率+持続時間; // 30秒のcicleif((millis()-starttime)> =sampletime_ms){ratio =lowpulseoccupancy /(sampletime_ms * 10.0); //パーセンテージ(de 0 a 100%)濃度=1.1 * pow(ratio、3)-3.8 * pow(ratio、2)+ 520 * ratio + 0.62; //データシートからlowpulseoccupancy =0; //他のセンサーを読み取るcharbuffer [10]; //光センサーフロート輝度=analogRead(luminancePin); // UVセンサーfloatuv =analogRead(uvPin); uv =uv * 0.0049; //値をボルトに変換しますuv =uv * 307; // mW /m²に変換uv =uv / 200; // UVインデックスを計算します//温度と湿度intchk =DHT.read22(DHT22_PIN);フロート湿度=DHT.humidity;フロート温度=DHT.temperature; //圧力と温度1sensors_event_tevent; bmp.getEvent(&event);フロート圧力=0;フロート温度1 =0; if(event.pressure){pressure =event.pressure; bmp.getTemperature(&temperature1); } //センサー値を文字列に変換するStringluminanceStr =dtostrf(luminance、4、1、buffer); luminanceStr.replace( ""、 "");文字列uvStr =dtostrf(uv、4、1、buffer); uvStr.replace( ""、 "");文字列humidityStr =dtostrf(humidity、4、1、buffer);湿度Str.replace( ""、 "");文字列temperatureStr =dtostrf(temperature、4、1、buffer); temperatureStr.replace( ""、 "");文字列dustStr =dtostrf(concentration、4、1、buffer); dustStr.replace( ""、 "");文字列pressureStr =dtostrf(pressure、4、1、buffer); pressureStr.replace( ""、 "");文字列temperature1Str =dtostrf(temperature1、4、1、buffer); temperature1Str.replace( ""、 ""); //データをThingSpeakに送信updateSensors(luminanceStr、HydriumStr、temperatureStr、uvStr、dustStr、pressureStr、temperature1Str); //次のサンプリングサイクルを待つSerial.print( "Wait"); Serial.print(delay_time / 1000); Serial.println( "次のサンプリング用"); Serial.println(); delay(delay_time); //新しいサイクルを初期化しますSerial.println(); Serial.print( "Sampling("); Serial.print(sampletime_ms / 1000); Serial.println( "s)..."); starttime =millis(); }} // ThingSpeakvoidにデータを送信updateSensors(StringluminanceStr、StringhimureStr、StringtemperatureStr、String uvStr、StringdustStr、StringpressureStr、Stringtemperature1Str){String cmd ="AT + CIPSTART =\" TCP \ "、\" "; cmd + =IP; cmd + ="\"、80 "; monitor.println(cmd); delay(2000); cmd =GET; cmd + =luminanceStr; cmd + ="&field2 ="; cmd + =湿度Str; cmd + ="&field3 ="; cmd + =temperatureStr; cmd + ="&field4 ="; cmd + =uvStr; cmd + ="&field5 ="; cmd + =dustStr; cmd + ="&field6 ="; cmd + =pressureStr; cmd + ="&field7 ="; cmd + =temperature1Str; cmd + ="\ r \ n"; delay(1000); int strsize =cmd.length(); monitor.println( "AT + CIPSEND =" + String(strsize)); delay(2000); monitor.print(cmd); if(monitor.find( "OK")){Serial.println( "送信が正常に完了しました"); } else {Serial.println( "送信に失敗しました!"); }} void sendDebug(String cmd){Serial.print( "SEND:"); Serial.println(cmd); monitor.println(cmd);} boolean connectWiFi(){Serial.println( "Connecting wi-fi ..."); String cmd ="AT + CWMODE =1"; monitor.println(cmd); delay(2000); monitor.flush(); //バッファをクリアしますcmd ="AT + CWJAP =\" "; cmd + =SSID; cmd + =" \ "、\" "; cmd + =PASS; cmd + =" \ ""; monitor.println(cmd); delay(5000); if(monitor.find( "OK")){Serial.println( "接続に成功しました!"); trueを返します。 } else {Serial.println( "接続に失敗しました!"); falseを返します。 } Serial.println();} 
Github
https://github.com/adafruit/DHT-sensor-libraryhttps://github.com/adafruit/DHT-sensor-library
Github
https://github.com/adafruit/Adafruit-BMP085-Libraryhttps://github.com/adafruit/Adafruit-BMP085-Library

製造プロセス

  1. ラズベリーパイウェザーステーション
  2. ArduinoUnoを使用した人間検出ロボティクスシステム
  3. K30センサーによるCO2モニタリング
  4. あなたの身長はどれくらいですか?
  5. Arduino UnoWiFiを使用したWebServerBlink
  6. シンプルなUNO計算機
  7. Arduinoクラウドセンサータワー
  8. 視覚の持続性
  9. ローカル気象台
  10. ヘルスステーションの監視
  11. スマートフォンの温度監視