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

Tiny Internet Weather Station

コンポーネントと消耗品

>
Arduino Nano 33 IoT
× 1
BME気象センサー
× 1
0.96のOLEDディスプレイ-128x64
× 1
プラスチックケース3.9 "x 2.7"
× 1
マイクロUSBケーブル
× 1
オスからメスへのブレッドボードジャンパー線
× 1
USBウォールチャージャー
× 1

必要なツールとマシン

>
ホットグルーガン(汎用)

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

>
Arduino IDE
Blynk

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

スマートフォンをモノのインターネットに接続できるアプリはたくさんあります。私はそれらの束を試しましたが、通常はがっかりしました。ブリンクではそうではありません!非常に柔軟性があり、美しいユーザーインターフェースを備え、あらゆる種類のIoTプラットフォームで動作し、AndroidとiPhoneの両方で動作します。愛好家も無料です!つまり、これは比較的単純なIoTプロジェクトであり、Blynkを使用して探索することができました。

ハードウェア

このプロジェクトのハードウェアはかなりシンプルです。 WiFiを処理するArduinoNano 33 IoT、温度、湿度、気圧をすべて1つのユニットに持つBME280センサーボード、および1インチのOLEDディスプレイを使用します。 3つすべてが3.3ボルトで正常に動作します。表示は明らかにオプションです-目標は、お使いの携帯電話に天気予報ステーションを表示させることです。ただし、Blynkとスマートフォンを扱う前に、最初にOLEDディスプレイですべてを起動して実行する方がはるかに簡単です。

以下の回路図は、ハードウェアがどのように相互接続されているかを示しています。センサーとディスプレイの両方がI2Cとインターフェースします。理論的には、1つのI2Cで複数のデバイスをサポートできますが、センサーとディスプレイのライブラリにいくつかの競合があったため、2つの異なるI2Cポートになってしまいました。センサーは、アナログで通常のデフォルトのI2Cポートを使用します ピン4と5。デ​​ィスプレイは、デジタルに設定されたセカンダリI2Cポートを使用します。 ピン4と5。(はい、逆になっています。SDAはデジタルピン5です))

ハードウェアは、ディスプレイが見えるように、前面が透明な小さなプラスチックケースに収められています。 WiFiのRFに対して透過的である必要があるため、プラスチックです。比較的耐候性が必要ですが、センサーは底部の1/2 "の穴で外気にさらされています。センサーはその穴のすぐ内側に収まるように取り付けられています。ケース内のすべてをホットメルトで取り付けました。接着剤ですが、夏の暑さの中で屋外に置く予定がある場合は、代わりにエポキシを使用することをお勧めします。

電源はUSBケーブルを介して供給されます。そうすれば、箱から出てくる1本のケーブルでプログラムしたり電力を供給したりできます。そのケーブルは、プログラミング時にコンピュータに接続したり、気象観測所として使用しているときにプラグインUSB電源に接続したりできます。

ソフトウェア

Arduinoで実行されているソフトウェアは、センサー、ディスプレイ、Blynkのライブラリ例のマッシュアップにすぎません。関連するライブラリは、センサー用のAdafruit_BME280_Library、ディスプレイ用のss_oledライブラリ、およびBlynk用のBlynkライブラリです。 3つすべては、Arduinoのライブラリマネージャーから直接ダウンロードできます。それぞれをよりよく理解するために、これらの各ライブラリを個別に試してみることをお勧めします。

Blynkには、ハードウェアを構成してインターフェースする方法の例がたくさんあります。https://examples.blynk.cc/残念ながら、サポートされているArduinoの1つとしてNano 33IoTをリストしていません。ただし、Blynkは、Nano 33IoTおよび他のいくつかのArduinoプロセッサで使用されるWiFiNINAをサポートしています。したがって、次の2つのインクルードを追加すると、その問題が解決されました。#include と#include

私のコードに表示されるもう1つの追加は、次のとおりです。#include これは、センサーから出力される数値をOLEDディスプレイに表示するのに適した文字列に変換するために必要でした。これに少しひねりを加えて、私に少し不満を感じたのは、Blynkが文字列として送信されたか数値として送信されたかにかかわらず、データを喜んで表示することでした。最初は、OLEDに送信していたのと同じ文字列をBlynkに送信しました。数値を表示するには問題なく機能しましたが、グラフを追加すると完全に失敗しました。グラフを機能させるために、Blynkは明らかに実際の数値を必要としていました。

注-気圧は通常、海面に補正されて報告されます。より高い標高では、気圧が明らかに低下するため、センサーからの値を海面での同等の読み取り値に修正するには、標高1000フィートごとに約1インチHgの測定値に値を追加する必要があります。添付されている私自身のコードでは、海抜1300フィートの私自身の高度を補うために1.3を追加したことがわかります。自分の標高に一致するようにこの値を変更する必要があります。 1000フィートあたりの1 "Hgは概算です。正確な補正が必要な場合は、標高の正確な補正を提供するテーブルがオンラインにあります。

ブリンクのない気象観測所

この時点で、ハードウェアをセットアップし、私のattahedソフトウェアを使用してOLEDディスプレイに気象データを表示することができます。セットアップでBlynk.begin()行をコメントアウトするだけで、ウェザーステーションを単独で実行できます。 (Blynkへの有効な接続がない状態でBlink.begin()をコメントアウトしないと、スケッチはその時点で停止またはハングします。)次のセクションでは、Blynkとその両方の設定方法について説明します。 Arduinoスケッチとスマートフォンで気象観測所を電話に表示します。

ブリンク

BlynkはiPhoneまたはAndroidに簡単にインストールでき、詳細なドキュメントが付属しています:http://docs.blynk.cc/しかし、そこには非常に多くの情報と非常に多くのオプションがあるため、最初は少し混乱しました。ここに、Blynkの使用を開始する方法の独自のバージョンを提供します。

私はiPhoneでBlynkを使用しましたが、Androidでも経験は十分に似ているので、どちらでも私の指示に従うことができると思います。アプリを入手したら、アカウントを作成する必要があります。そこから、アプリ内で新しいプロジェクトを作成します。プロジェクトには、ハードウェアをプロジェクトにリンクするために使用される認証コードが提供されます。最初の仕事は、ハードウェアをWiFi経由でBlynkプロジェクトに接続することです。これを実現し、examples.blynk.ccにあるBlynkBlinkと呼ばれるBlynkのデフォルトのスケッチ/プログラムを使用してテストできます。これによりNano33IoTのオンボードLEDのオンとオフを切り替えることができます。私の提案は、ウェザーステーションをBlynkで動作させる前に、これを試して動作させることです。

Nano 33IoTをBlynkで動作させるためのソフトウェアの構成についてはすでに少し話しました。 examples.blynk.ccを開くと、デフォルトでESP8266ボードになります。 #include と#include を見つけて、Nano 33IoTボードの#include と#include

Nano 33 IoTのWiFiNINAサポートを追加することに加えて、すでに説明したように、WiFiクレデンシャルとBlynkプロジェクトの認証コードを追加する必要があります。 LEDのオン/オフについては後ほど説明しますが、まずは接続を確認してみましょう。 Blynk Blinkスケッチが適切に構成されて実行されている状態で、Arduinoのシリアルモニターを開くと、Blynkクラウドサーバーへの接続が確立されていることを確認できます。この時点で、ハードウェアを確保して、電話でBlynkアプリを操作できます。

私はBlynkアプリがやや混乱していることに気づいたことを認めます。左上のアイコンを使用すると、プロジェクトを選択したり、アカウントからログアウトしたりできます。右上にあるものを使用すると、プロジェクトの編集モードに出入りすることができます。真ん中のものはあなたがどこにいるかによります。

オンボードLEDを制御するには、アプリで編集モードに入る必要があります。その後、空白の画面が表示されます。左にスワイプすると、横に移動してウィジェットのツールボックスが表示されます。ボタンをクリックして選択すると、メイン画面に表示されます。そこでクリックすると、設定のために開きます。プッシュモードからスイッチモードに移動します。ピン選択を使用して、オンボードLED(Nano 33 IoTのデジタルピン13)を選択します。次に、[OK]をクリックし、右上のアイコンを押して編集モードを終了します。これで、ボタンがLEDを制御するはずです。

ブリンクのある気象観測所

これで、気象観測所をBlynkプロジェクトにリンクする準備が整いました。添付のソフトウェアを開き、セットアップでBlynk.begin()行のコメントを解除し、プロジェクト認証コードとWiFiクレデンシャルを追加して、Arduinoにアップロードします。

スマートフォンでBlynkを開きます。このチュートリアルに従っている場合、ボタンはまだそこにあり、オンボードLEDのオンとオフを切り替えることができるはずです。編集モードに移動し、ボタンをクリックして構成し、一番下にある[削除]を使用して削除します。次に、ツールボックスに移動して、ラベル付きの値を選択します。それは、ディスプレイの下のリストの下にあります。表示ページに戻り、[ラベル付きの値]画面をクリックして構成します。ピンをクリックしてから、仮想ピンV3を選択します。次の段落で仮想ピンについて説明します。ここで、「e.g。Temp」と表示されているラベルについて、「Temp /pin.#/deg.F」と入力します。 。#は、小数点を1桁超えて表示するようにアプリに指示します。大きいテキストサイズを選択し、[更新間隔]を[プッシュ]に、[テキストの色]を[緑]のままにします。次に、[OK]をクリックします。これで、ラベル付きの値で温度を表示する準備がほぼ整いましたが、狭すぎます。ゆっくりと選択します-設定モードに戻らないように十分に遅くします。ラベルの輪郭が点灯します。これで、線全体を表示するために引き伸ばすことができます。ここでは行いませんが、移動することもできます。画面全体の約3/4のところまで伸ばします。次に、編集モードを終了すると、電話に温度が表示されます。

Blynkの構成を完了する前に、温度表示の設定で見たいくつかのことを説明する価値があります。 Blynkは、仮想ピンと呼ばれるややユニークなアイデアを使用しています。表示値ウィジェットは、プロセッサのアナログピンを読み取るように設定することも、デジタルピンがハイかローかを読み取るように設定することもできます。しかし、多くの場合、変数の内容を表示したいと思います。その変数に仮想ピン番号を割り当てることでこれを行い、それ以降、Blynkアプリはその変数をその仮想ピン番号で参照します。したがって、私のソフトウェアでは、華氏の温度を仮想ピンV3に割り当てた場所が表示されます。

すぐに言及する価値のあるもう1つのBlynkのアイデアは、プッシュモードで残した更新間隔です。これは、Arduinoスケッチがデータをプッシュしていることを意味します。この場合、温度、湿度、気圧を1分に1回更新します。ただし、BlynkはPullメソッドもサポートしています。このメソッドでは、Blynkアプリが間隔を設定し、ハードウェアに新しいデータを問い合わせます。

それでは、Blynkに気象観測所を表示する作業を終了しましょう。さらに2つのラベル付き値表示が必要になります。1つは湿度(%)(仮想ピンV4)、もう1つは圧力( "in。HG"または水銀柱インチ(仮想ピンV5))です。私のように見せるためには、湿度を金で、圧力を赤で表示する必要があります。湿度については、小数点以下1桁を示しました。圧力については、小数点以下2桁を示しました。

温度、湿度、気圧を示す3つのラベル付き値表示がある場合は、3つすべてのグラフを追加できます。これは、SuperChartウィジェットを追加することで実現されます。まず、画面の残りの部分がいっぱいになるように下に伸ばします。次に、それをクリックして構成します。 [x軸の値を表示]をオンにして、ライブ、1時間、6時間、1日、1週間、1か月の解像度を選択しました。と3カ月。 3つのデータスチームが必要です。3つの変数ごとに1つです。各データストリームを構成するには、その右側にあるアイコンをクリックします。それぞれの仮想ピンを再度選択する必要があります。 y軸のスケーリングには、高さを選択します。次に、温度の場合は高さを67〜100に設定します。湿度の場合は、高さを34〜66に設定します。圧力の場合は、高さを0〜33に設定します。ラベルの値と一致するように色を設定します。 [Y軸を表示]をオンにします。それについてです。編集モードを終了すると、電話のディスプレイは私のように見えるはずです。グラフが開始されるまで少し時間がかかります。迅速な結果を得るには、ライブまたは1時間の解像度を表示します。

知っておきたいBlynkのもう1つの機能は、完成したBlynkプロジェクトを他のスマートフォンと共有して、複数の電話で天気予報ステーションを表示できるようにすることです。共有を開始するには、プロジェクトを編集モードにして、プロジェクト設定の上部中央のアイコンをクリックします。 [共有]をオンにして、リンクを生成します。それはあなたが電子メールまたは他の方法で共有することができるQRコードをあなたに与えるでしょう。新しいユーザーにはBlynkアプリが必要ですが、Blynkのアカウントは必要ありません。未登録ユーザーのアプリには、他人のBlynkプロジェクトのQRコードを読み込むためのリンクがあります。それでおしまい。

これはBlynkのかなり限定的な紹介ですが、開始するのに適した場所になるはずです。ブリンクは無料だと先に述べましたが、ほとんど無料です。ウィジェットと共有の両方が、Blynkがエネルギーと呼ぶポイントを使い果たします。最初は無料で2500ポイント獲得できると思います。このプロジェクトを無料で行うには、これで十分です。しかし、それを共有したり追加したりすると、ブリンクのエネルギーが不足する可能性があります。追加の5000ポイントを獲得するために$ 6を費やしました。 Blynkで他のプロジェクトを行う場合は、Blynkの燃料に数ドルを費やす必要があるかもしれません。

コード

  • 小さなインターネット気象台
Tiny Internet Weather Station Arduino
WiFiとBlynkto Smartphone
 / *このスケッチはArduinoNano 33IoT用ですBME280センサーボードを使用します0.96インチ128x 64OLEDディスプレイを使用しますWiFi経由でBlynkクラウドサーバーに接続してスマートフォンに気象データを表示します* /#include  #include  #include  // BME280ライブラリ#include  // OLEDに表示するために気象番号を文字列に変換するために使用されます# include  // OLEDライブラリ// Nano 33 IoTをBlynkで動作させるために必要な次の2つのインクルード#include  #include  char auth [] ="YourBlynkProjectCode"; char ssid [ ] ="YourWifiID"; char pass [] ="YourWiFiPassword"; Adafruit_BME280 bme; // I2Cインターフェイスを使用Adafruit_Sensor * bme_temp =bme.getTemperatureSensor(); Adafruit_Sensor * bme_pressure =bme.getPressureSensor(); Adafruit_Sensor * bme_humidity =bme.getHumiditySensor(); #define SDA_PIN 5#define SCL_PIN 4#define -1#define FLIP180 0#define INVERT 0#define USE_HW_I2C 0#define MY_OLED OLED_128x64#define OLED_WIDTH 128#define OLED_HEIGHT 64SSOLED ssoled; // OLEDBlynkTimerタイマーのインスタンス; // Blynkのインスタンスtimervoidsetup(){if(!bme.begin(0x76)){//センサーが検出されるまで待機します(1)delay(10); } bme_temp-> printSensorDetails(); bme_pressure-> printSensorDetails(); bme_humidity-> printSensorDetails(); oledInit(&ssoled、MY_OLED、OLED_ADDR、FLIP180、INVERT、USE_HW_I2C、SDA_PIN、SCL_PIN、RESET_PIN、400000L); oledFill(&ssoled、0x0、1); Blynk.begin(auth、ssid、pass); //この行をコメントアウトして、Blynkタイマーなしで気象観測所を操作します。setInterval(60000L、myupdate); // myupdateを1分に1回実行しますmyupdate(); //メインループが1分間待機するため、表示とデータの初期更新をBlynkに対して実行します} void loop(){Blynk.run(); // Blynkは、メインループで単独で実行することを好みます。 timer.run(); //他のすべてはBlynkタイマーを介して処理されます} //このルーチンはBlynkタイマーによって呼び出され、OLED表示を更新してデータをBlynkvoidにプッシュしますmyupdate(){sensor_event_t temp_event、pressure_event、hydature_event; bme_temp-> getEvent(&temp_event); bme_pressure-> getEvent(&pressure_event); bme_humidity-> getEvent(&humidity_event); float ctemp =temp_event.temperature; //摂氏で温度を取得floatftemp =32 +(9 * ctemp)/ 5; // tempを華氏に変換しますfloathum =Hydraulic_event.relative_humidity; //相対湿度を取得しますfloatppress =pressure_event.pressure; //圧力をmmで取得floatmpress =1.3 + ppress / 33.8939; //インチHgに変換し、1.3を追加して、実際にローカルで報告された気圧に一致させます。 1.3を削除したり、独自の調整を追加したりすることもできます。 char mytemp [8]; dtostrf(ftemp、6、2、mytemp); // tempを文字列に変換しますcharmyhum [8]; dtostrf(hum、6、2、myhum); //湿度を文字列に変換しますcharmypress [8]; dtostrf(mpress、6、2、mypress); //圧力を文字列に変換します// OLED表示を更新しますoledWriteString(&ssoled、0,2,1、(char *) "Weather Station"、FONT_NORMAL、0、1); oledWriteString(&ssoled、0,2,3、(char *) "Temp ="、FONT_NORMAL、0、1); oledWriteString(&ssoled、0,50,3、(char *)mytemp、FONT_NORMAL、0、1); oledWriteString(&ssoled、0,105,3、(char *) "F"、FONT_NORMAL、0、1); oledWriteString(&ssoled、0,2,5、(char *) "Humid ="、FONT_NORMAL、0、1); oledWriteString(&ssoled、0,50,5、(char *)myhum、FONT_NORMAL、0、1); oledWriteString(&ssoled、0,105,5、(char *) "%"、FONT_NORMAL、0、1); oledWriteString(&ssoled、0,2,7、(char *) "Press ="、FONT_NORMAL、0、1); oledWriteString(&ssoled、0,50,7、(char *)mypress、FONT_NORMAL、0、1); oledWriteString(&ssoled、0,105,7、(char *) "in"、FONT_NORMAL、0、1); //新しい気象データをBlynkにプッシュしますBlynk.virtualWrite(V3、ftemp); Blynk.virtualWrite(V4、hum); Blynk.virtualWrite(V5、mpress); } 

回路図


製造プロセス

  1. 集積回路
  2. ラズベリーパイをベースにした気象観測所
  3. Raspberry Pi2ウェザーステーション
  4. ラズベリーパイウェザーステーション
  5. 気象台とIOTに参加– CWOP
  6. Weather Station V 2.0
  7. 鉄道模型デジタルDCCコマンドステーションArduinoと無料アプリ
  8. 6-シューター:Arduinoドリンクミキシングステーション
  9. MotionSense
  10. Arduino Powered Weather Balloon Datalogger
  11. ArduFarmBot-パート2:リモートステーションとIoTの実装