Personal Weather Station(Arduino + ESP8266 + Thingspeak)
コンポーネントと消耗品
| × | 1 | ||||
![]() |
| × | 1 | |||
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 5 | |||
| × | 1 |
必要なツールとマシン
| ||||
![]() |
| |||
![]() |
| |||
| ||||
|
アプリとオンラインサービス
> ![]() |
| |||
![]() |
|
このプロジェクトについて
はじめに:個人用気象台を作成する
部屋に座っていると、発汗したり、冷たくなったりします。部屋の温度はどれくらいになるのだろうか?または湿度はどうなりますか?これはしばらく前に私と一緒に起こりました。
これにより、部屋の温度、湿度、圧力、光の強さを監視し、thingspeak.comのプライベートチャネルにアップロードするPersonal WeatherStationが開始されます。
始めましょう。
ステップ1:クイックビデオ
これは、5分ですべてを要約した小さなビデオです。
YouTubeで視聴するには、ここをクリックしてください。
ステップ2:パーソナルウェザーステーションに必要な電子部品
説明: DHT11を使用して湿度を検出し、BMP180を使用して温度と圧力を検出し、光依存抵抗器(LDR)を使用して光の強度を大まかに把握します。 Arduino nanoはこれらのセンサーからデータを収集し、ESP8266に送信して、thingspeak.comのプライベートチャネルにアップロードします。 Arduino nanoに12V-2Aウォールアダプターから電力を供給し、センサーとESP8266はLM2596ベースのバックコンバーターからダウンコンバートされた電圧を受け取ります。
コンポーネントのリスト:
- BMP180圧力および温度センサー
- DHT11湿度センサー
- 光依存抵抗器(LDR)、
- ESP8266 Wi-Fiモジュール(ファームウェア対応)、
- Arduino nano、
- 2つの抵抗器-51KOhmおよび4.7KOhm、
- LM2596バックコンバーター
- DCジャック
- 切り替えて
- 12V-2Aウォールアダプター。


ステップ3:パーソナルウェザーステーションに必要なツールと追加アイテム
説明: ワイヤーストリッパーを使用してワイヤーを剥ぎ取り、エンクロージャーの切り込み/穴を滑らかにするためのファイル、エンクロージャー内にコンポーネントを配置するためのグルーガン、エンクロージャーの蓋を閉じるためのスクリュードライバー、はんだごてを使用して汎用回路基板(GCB)に回路を組み立てます。 4x4x2インチのプラスチックボックスがエンクロージャーとして機能します。また、GCBで適切に組み立てるために、オスとメスのベルグストリップとメスのコネクタが必要になります。
ツールのリスト:
- ワイヤーストリッパー、
- ファイル
- グルーガン、
- スクリュードライバーと
- はんだごてとはんだワイヤー。
追加アイテムのリスト:
- 4x4x2インチのプラスチックの箱(私はこの寸法を使用しました。近くの寸法は問題ありません)、
- 汎用回路基板
- オスとメスのベルクストリップと
- メスコネクタ。

ステップ4:ソフトウェア要件
説明:センサーデータの値を確認するには、thingspeak.comにプライベートチャネルが必要です。 arduino nano用のarduinoコードを書くには、ArduinoIDEが必要です。 (皆さんはPC /ラップトップとインターネットにアクセスできるwifiルートを所有していると思います)
ソフトウェア要件のリスト:
- Thingspeak.comのプライベートチャンネルと
- Arduino IDE(できれば最新バージョン)。
ArduinoIDEの最新バージョンはarduino.ccからダウンロードできます。それでは、thingspeak.comでプライベートチャンネルを作成しましょう。
ステップ5:Thingspeak.comでプライベートチャンネルを作成する
thingspeak.comでプライベートチャンネルを作成するには、次の手順に従います。
- Webブラウザーを開き、thingspeak.comにアクセスして、右上隅にある[サインアップ]タブをクリックします(画像番号1)
- 詳細を入力して[アカウントの作成]をクリックします(画像2)
- [新しいチャンネル]タブをクリックします(画像番号3)
- もう一度チャネルの詳細を入力して4つのフィールドを有効にし(4つのセンサー値を送信するため)、下にスクロールして[チャネルの保存]タブをクリックします(画像番号4/5)
- このページで[APIキー]タブをクリックし、[APIキーの書き込み]を書き留めます。






これですべてです。これで、プライベートのThingSpeakチャンネルができました。
それでは、すべての電子部品をまとめましょう。
ステップ6:パーソナルウェザーステーションの概略図
ここに、パーソナルウェザーステーションの回路図の画像を添付します。同じためにフリッツファイルも添付しています。接続はかなり簡単です。
- BMP180はarduinonanoのI2Cポートに接続します。
- LDRは51KOhmの抵抗で分圧器方式で接続され、接合部はarduinonanoのA1ピンに接続されます。
- DHT11のデータピンは4.7KOhmの抵抗でハイにプルアップされ、arduinonanoのA0ピンに接続されます。
- ESP8266のTXとRXは、それぞれarduinonanoのD10とD11に接続します。 ESP8266のCH_PDは3.3Vレールに接続します。
- このモジュールのポテンショメータを回して、LM2596モジュールの出力を3.3Vに調整します。このモジュールの出力を、BMP180、DHT11、LDR、およびESP8266のVccとGndのVccとGndにそれぞれ接続します。
- LM2596モジュールの入力は、ArduinonanoのVinとGndにも接続する12V-2Aウォールアダプターから供給されます。

この回路を汎用回路基板上に組み立てる必要があります。そうしよう。
ステップ7:汎用回路基板(GCB)に回路を組み立てる
ステップ3のハードウェアツールと追加アイテムが現在使用されています。
- Arduino nanoとESP8288のGCBへの配置には、メスのベルグストリップを使用してください。
- はんだごてとはんだワイヤーを使用して、ボードに電気的に接続します。
- メスコネクタを使用して、すべてのセンサーとLM2596モジュールがエンクロージャの蓋と壁に固定されるため、それらの範囲を拡大します。
- オスのベルグストリップを使用して、上記のメスのエクステンションの接続ポイントを作成します。
- ワイヤーを使用してGCBの回路図を実現する(ワイヤーストリッパーを使用してそれらを剥ぎ取ります)、または溶けたはんだワイヤーのレール、そして最後に
- マルチメータを使用して回路に電力を供給する前に、種類を確認してください。




すべてのハードウェアがGCBに配置されたので、コードを見てみましょう。
ステップ8:コード
パーソナルウェザーステーションのコードはかなり単純です。移植性を容易にするために、コードに適切にコメントを付けました。 コードを書き込む前に、次のことに注意してください。
- すべてのライブラリがインストールされていることを確認してください
- コードの14行目でハイフンをアクセスポイント(wifiルーター)のSSIDに置き換えます。
- コードの15行目で、ハイフンをWi-Fiネットワークのパスワードに置き換えます。
- 17行目でハイフンをThingSpeakのプライベートチャネル書き込みAPIキーに置き換えます。
- Arduino nanoをプログラミングするときは、12VDC電源がオフになっていることを確認してください。
これは、私が使用したコードとライブラリをダウンロードするためのgithub(Personal Weather Station)へのリンクです。
ハードウェアとソフトウェアが整ったので、残っているのはパッケージングだけです。
ステップ9:エンクロージャの準備
次に、4x4x2インチのボックスにさまざまな形状とサイズの穴を開ける必要があります。 DCジャック用の穴を開けて、エンクロージャーの任意の壁にスイッチを入れる必要があります。また、エンクロージャーの蓋にセンサー用の穴を開ける必要があります。
エンクロージャーに開ける必要のある穴の寸法を示す画像を添付しました。

ホットブレードを使用してプラスチックを切断します。
ファイルを使用して穴を滑らかにします。




これで、エンクロージャーが回路をホストする準備が整いました。
ステップ10:ふたを閉じる
組み立てたGCBをエンクロージャー内に置きます。
スイッチとDCジャックを壁の穴に配置します。ふたの穴のセンサー。それらの位置を確定し、グルーガンを使用してそれらを固定します。最後にドライバーを使用して蓋を閉じます。
そこにあなたはそれを持っています、あなたのパーソナルウェザーステーション。電源をオンにして、ThingSpeakプライベートチャネルのスマートフォン/ PC /ラップトップ/タブレットを介して、世界中のどこからでも部屋の温度、湿度、圧力、光の強さを確認します。
このプロジェクトは以上です。疑問がある場合はコメントしてください。読んでくれてありがとう。
コード
- コード
コード Arduino
#include#include #include #include #define DEBUG 0 //値を1に変更して、シリアルモニターを使用したデバッグを有効にします#define dht_pin A0 // DHTセンサーのピンA0を定義します#definelightSensor A1 //ピンA1をLDR電圧分割器の入力ピンとして定義しますDHT; Adafruit_BMP085 bmp; SoftwareSerial esp8266Module(10、11); // RX、TXString network ="----"; //アクセスポイントSSIDStringpassword ="-------------"; // Wi-Fiアクセスポイントpassword#define IP "184.106.153.149" //thingspeak.comのIPアドレスStringGET ="GET / update?key =----------------"; //チャネルに置き換えますkeyvoidsetup(){if(DEBUG){Serial.begin(9600); //ハードウェアのシリアルボーレートを9600に設定} esp8266Module.begin(9600); //ソフトシリアルボーレートを9600に設定if(!bmp.begin()){if(DEBUG){Serial.println( "有効なBMP085センサーが見つかりませんでした。配線を確認してください!"); } while(1){}} delay(2000);} void loop(){setupEsp8266(); DHT.read11(dht_pin);ダブルフミ=DHT.humidity; double bmp_temp =bmp.readTemperature(); double bmp_pressure =bmp.readPressure(); int lightIntensity =analogRead(lightSensor); updateTemp(String(bmp_temp)、String(lightIntensity)、String(bmp_pressure)、String(humi)); delay(30000);} // ------------------------------------------ ------------------------- //関数のセットアップに続いてesp8266を作成したステーションに配置し、// Wi-Fiアクセスポイントに接続します。//- -------------------------------------------------- --------------- void setupEsp8266(){if(DEBUG){Serial.println( "Reseting esp8266"); } esp8266Module.flush(); esp8266Module.println(F( "AT + RST")); delay(7000); if(esp8266Module.find( "OK")){if(DEBUG){Serial.println( "Found OK"); Serial.println( "Changing espmode"); } esp8266Module.flush(); changeMode(); delay(5000); esp8266Module.flush(); connectToWiFi(); } else {if(DEBUG){Serial.println( "OK not found"); }}} // ------------------------------------------------- ---------------------- //次の関数はesp8266をステーションモードに設定します// ----------------- -------------------------------------------------- bool changeMode(){esp8266Module.println(F( "AT + CWMODE =1")); if(esp8266Module.find( "OK")){if(DEBUG){Serial.println( "モードが変更されました"); } trueを返します。 } else if(esp8266Module.find( "NO CHANGE")){if(DEBUG){Serial.println( "Already in mode 1"); } trueを返します。 } else {if(DEBUG){Serial.println( "モード変更中のエラー"); } falseを返します。 }} // ---------------------------------------------- --------------------- //次の機能はesp8266をwifiアクセスポイントに接続します// ----------------- -------------------------------------------------- bool connectToWiFi(){if(DEBUG){Serial.println( "inside connectToWiFi"); } String cmd =F( "AT + CWJAP =\" "); cmd + =network; cmd + =F(" \ "、\" "); cmd + =password; cmd + =F(" \ ""); esp8266Module.println(cmd); delay(15000); if(esp8266Module.find( "OK")){if(DEBUG){Serial.println( "Connected to Access Point"); } trueを返します。 } else {if(DEBUG){Serial.println( "アクセスポイントに接続できませんでした"); } falseを返します。 }} // ---------------------------------------------- --------------------- //次の関数はセンサーデータをthingspeak.comに送信します// ---------------- -------------------------------------------------- -void updateTemp(文字列電圧1、文字列電圧2、文字列電圧3、文字列電圧4){文字列cmd ="AT + CIPSTART =\" TCP \ "、\" "; cmd + =IP; cmd + =" \ "、80"; esp8266Module.println(cmd); delay(5000); if(esp8266Module.find( "Error")){if(DEBUG){Serial.println( "ERROR while SENDING"); } 戻る; } cmd =GET + "&field1 =" +電圧1+ "&field2 =" +電圧2+ "&field3 =" +電圧3+ "&field4 =" +電圧4+ "\ r \ n"; esp8266Module.print( "AT + CIPSEND ="); esp8266Module.println(cmd.length()); delay(15000); if(esp8266Module.find( ">")){esp8266Module.print(cmd); if(DEBUG){Serial.println( "データ送信"); }} else {esp8266Module.println( "AT + CIPCLOSE"); if(DEBUG){Serial.println( "接続が閉じられました"); }}}
パーソナルウェザーステーションのライブラリとコード
Readmehttps://github.com/jayraj4021/Personal-Weather-Station-14 回路図

製造プロセス