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

SmartAgro

コンポーネントと消耗品

>
Arduino MKR GSM 1400
× 1
SORACOM Air Global IoT SIM
× 1
Arduino MKRMEMシールド
× 1
GY21温度と湿度
× 1
Adafruit SI1145UVライトセンサー
× 1
SparkFun土壌水分センサー(ネジ端子付き)
× 1
Adafruit防水DS18B20デジタル温度センサー
× 1
ジャンパー線(汎用)
× 1

必要なツールとマシン

>
はんだごて(汎用)

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

概要

農地は貴重な資源であり、現代社会の存続に必要です。しかし、農業では非常に多くの課題に直面しているため、作物に適した温度、湿度、日光を取得する必要があります。次に、作物を破壊するものがないことを確認する必要があります。

コンセプトスマートファーミング 近年、作物の状態をリモートで監視するというアイデアが具体化しています。しかし、この農業革命には多大なコストがかかります。利用可能なシステムのほとんどは、小規模なファームに実装するにはコストがかかりすぎ、大規模なファームをカバーできない可能性があります。

SmartAgroは、監視対象のフィールドに配置できる、使いやすいデバイスのネットワークを作成することを目的としています。デバイスは、大気データ、土壌関連のパラメータ、および光の値を収集し、すべてのデータをクラウドに送信して、ダッシュボードに表示します。

これにより、あらゆる規模の農場が新しい時代の農業に参入し、干ばつが近づいた場合に警告できるスケーラブルなデバイス群を土地全体に実装できます。

ビデオ

画像

機能性

SmartAgroを使用すると、ユーザーは監視対象のフィールドに一連のデバイスを簡単に実装できます。これらのデバイスは、定義された時間間隔でセンサーからサンプルを取得します。

次に、データはSDカードの.csvファイルに記録され、バックエンドに送信され、ダッシュボードに視覚化されます。プロジェクトはフロントエンドとバックエンドで構成されています。

フロントエンド

プロジェクトのフロントエンドとは、フィールドに配置された物理デバイスを指します。これらのデバイスは、センサーからデータのサンプルを取得し、それらをSDカードに書き込んで、データをバックエンドに送信します。以下は、プロジェクトの機能の概要です。

MKR GSMがフロントエンドに使用され、デバイスはデータを収集してからSoracomに送信し、そこで視覚化されます。以下は、データを収集するときにデバイスが実行する手順です。

SDカード

デバイスは、センサーから取得したデータを、接続されているSDカードに記録します。データは.csvファイルに追加され、ダウンロードできるようになります。

セットアップでは、デバイスは書き込み先の.csvファイルが利用可能かどうかを確認し、すでに存在する場合はそれに追加します。ファイルが存在しない場合は、新しいファイルが作成されます。以下はファイルの画像です。

バッテリー

デバイスは、複数の方法で電力を供給できます。デバイスの付属ポートを介してLiPoバッテリー、パワーバンク、またはデバイスのVINポートを介してバッテリーを接続することで電力を供給できます。

デバイスの寿命は、バッテリーの電力に大きく依存します。デバイスは、可能な限り多くのエネルギーを節約するために、読み取りの合間にスリープモードになります。

データ送信

データは、サーバーへのGSM接続を介してSoracomに送信されます。データはJSONペイロードとして送信されます。このデータはバックエンドで受信され、処理されます。以下はペイロードの例です。

  {"Latitude":53.3570404、 "Longitude":-6.2609935、 "soilTemp":20.56、 "soilHumidity":40、 "atmoTemp":22.12、 "atmoHumidity":62、 "uvLight":0.00、 "irLight":257、 "deviceName": "device1"}  

バックエンド

アプリケーションのバックエンドはSoracomを参照しています。データはSoracomによって受信され、処理されてからダッシュボードに表示されます。

ダッシュボード

プロジェクトのダッシュボードはSoracomLagoonでホストされています。データはバックエンドのSoracomAirによって受信され、Soracom Harvestがデータを収集してから、LagoonがHarvestからデータを照会します。

フリート内の各デバイスの位置とすべてのセンサーデータがダッシュボードにプロットされます。ダッシュボードのスクリーンショットは以下のとおりです。

アラート

ユーザーは、デバイスによって収集されたUVインデックスまたは土壌湿度が異常である場合に電子メール通知を受信するようにバックエンドを設定することもできます。このようにして、ユーザーは作物に注意が必要かどうかを知ることができます。

メリット

このプロジェクトを運営するユーザーには多くのメリットがあります:

  • ダッシュボードを使用して、いつでもどこでも外出先でデータを視覚化できます。
  • デバイスを簡単にスケールアップして、複数として使用できます。
  • 市場に出回っている通常のソリューションよりも低コスト。

プロジェクトの構築

ステップ1:必要な装置

このプロジェクトには、センサーとその他の材料のリストが必要です。必要な資料の完全なリストは以下のとおりです。

  • 1、Arduino MKR GSM
  • 1、ArduinoMEMシールド
  • 1、GY-21温度および湿度モジュール
  • 1、防水温度センサー
  • 1、SI-1145UV光センサー
  • 1、土壌水分センサー
  • 1、2AAバッテリーボックス(バッテリー付き)または LiPoバッテリー
  • 1、ソラコムSIMカード
  • 1、SDカード
  • ジャンパー線

ステップ2:回路を接続する

すべてのコンポーネントを一緒にはんだ付けするには、はんだごてが必要になります。回路図は、以下のフリッツファイルに示されています。

MEMシールドをボードに取り付けることを忘れないでください!

MKRGSMの準備

Arduino MKRGSMを準備する必要があります。 VINポートを介して2本のAA電池でボードに電力を供給しました。手順は次のとおりです。

ステップ3:コードの確認

プロジェクトに使用されるコードには、4つの主要なセクションがあります。

  • SDを準備する
  • データを収集する
  • データをSDに書き込む
  • Soracomにデータを送信

これらのセクションはすべて、以下で説明および詳細化されています。

SDを準備する

  bool createFile(){// SDカードに.csvファイルを作成Serial.println( "Creating File"); Serial.println( "OK-ファイルの作成とオープン");ファイルdataFile =SD.open( "datalog.csv"、FILE_WRITE); if(dataFile){Serial.println( "OK-ファイルが作成されました"); Serial.println( "OK-凡例をファイルに追加"); Serial.print( "OK-追加中"); Serial.println(凡例); dataFile.println(凡例); dataFile.close(); Serial.println( "成功-追加されたデータ"); } else {Serial.println( "エラー-ファイルが検出されません"); Serial.println( "OK-5秒後に再試行します"); Serial.println( "________________________________________"); Serial.println( ""); dataFile.close(); delay(5000); falseを返します。 } Serial.println( "________________________________________"); Serial.println( ""); trueを返します;} void checkFile(){Serial.println( "Checking .csv"); Serial.println( "________________________________________"); Serial.println( "ファイルの設定"); Serial.println( "OK-ファイルの存在を確認しています"); if(SD.exists( "datalog.csv"))// .csvファイルがすでに存在するかどうかを確認します{//既存のファイルに追加します存在する場合Serial.println( "OK-File Exists"); Serial.println( "OK-既存のファイルに追加します"); Serial.println( "________________________________________"); Serial.println( ""); } else {// Serial.println( "OK-File Not Present");に追加する新しいファイルを作成しますSerial.println( "OK-ファイルの作成"); Serial.println( ""); while(!createFile()){}; }}  

checkFile() 関数は、デバイスが追加することになっている.csvファイルが存在するかどうかをチェックします。ファイルが存在する場合、関数は終了します。存在しない場合は、 createFile()を呼び出します。 追加するnew.csvファイルを作成します。

CollectData

  void collectData(){Serial.println( "Gathering Data"); Serial.println( "________________________________________"); Serial.println( "センサーからのデータの取得"); Serial.println( "OK-すべてのセンサーに接続しています"); //すべてのセンサーからデータを収集soilSens.requestTemperatures();プレッションテンプ=soilSens.getTempCByIndex(0);土壌湿度=analogRead(A1); soleHumidity =map(soilHumidity、1023、0、0、100); atmoTemp =gy21.readTemperature(); atmoHumidity =gy21.readHumidity(); visibleLight =uv.readVisible(); irLight =uv.readIR(); rawUVLight =uv.readUV(); uvLight =(rawUVLight / 100); Serial.println( "OK-収集されたデータ"); Serial.println( "OK-データのダンプ"); Serial.print( "[Light] Visible"); Serial.println(visibleLight); Serial.print( "[Light] Infrared"); Serial.println(irLight); Serial.print( "[ライト]紫外線"); Serial.println(uvLight); Serial.print( "[Atmo] Temperature"); Serial.println(atmoTemp); Serial.print( "[Atmo]湿度"); Serial.println(atmoHumidity); Serial.print( "[土壌]温度"); Serial.println(soilTemp); Serial.print( "[土壌]湿度"); Serial.println(soilHumidity); Serial.println( "成功-データダンプ"); Serial.println( "________________________________________"); Serial.println( "");}  

コードのこのセクションは、搭載されているすべてのセンサーからデータを収集します。気温と湿度、土壌の水分と温度、UVインデックス、IR光値、可視光のセンサーに接触します。

データをSDに書き込む

  bool burnData(String data){Serial.println( "Burning Data"); Serial.println( "________________________________________"); Serial.println( "データをSDカードに書き込む"); Serial.println( "OK-ファイルを開く");ファイルdataFile =SD.open( "datalog.csv"、FILE_WRITE); if(dataFile){Serial.println( "OK-ファイルが存在します"); Serial.print( "OK-追加中"); Serial.println(data); Serial.println( "OK-書き込みデータ"); dataFile.println(data); //データをSDカードに書き込みますdataFile.close(); Serial.println( "成功-追加されたデータ"); Serial.println( "________________________________________"); Serial.println( ""); } else {Serial.println( "エラー-ファイルが存在しません"); Serial.println( "OK-5秒後に再試行します"); Serial.println( "________________________________________"); Serial.println( ""); delay(5000); } Serial.println( "");}  

この関数は、以前にa.csvファイルの行にコンパイルされたデータをSDカードに書き込みます。データはカードのファイルに追加されます。

ソラコムにデータを送信

  void parseData(String dataToSend){Serial.println( "Sending Data"); Serial.println( "________________________________________"); Serial.println( "Soracomへのデータの送信"); Serial.println( "OK-接続の設定"); if(client.connect(url、80))//接続を準備してフォーマットを送信{Serial.println( "OK-接続が確立されました、データを解析しています"); client.println( "POST / HTTP / 1.1"); client.println( "ホスト:harvest.soracom.io"); client.println( "ユーザーエージェント:Arduino / 1.0"); client.println( "接続:閉じる"); client.print( "Content-Length:"); client.println(dataToSend.length()); client.println( ""); client.println(dataToSend); Serial.println( "OK-データ解析済み"); } Serial.println( "OK-応答の取得"); Serial.println( ""); //サーバーから読み戻すwhile(1){if(client.available()){char c =client.read(); Serial.print(c); } if(!client.connected()){break; }} Serial.println( "成功-データは解析されます"); Serial.println( "________________________________________"); Serial.println( "");}  

最後に、データはソラコムに送信されます。デバイスはサーバーとの接続を確立してから、資格情報を準備します。次に、データがサーバーに送信され、応答がシリアルモニターに出力されます。

その後、デバイスは定義された時間スリープ状態になり、手順を再度繰り返します。

ステップ4:変数の設定

プロジェクトを使用する前に、ユーザーがいくつかの変数を編集する必要があります。編集可能な変数は、コードのメインファイルにあります。これらについて以下に説明します。

  • deviceName デバイスのカスタム名を表します。これはペイロードと一緒にSoracomに送信されるため、デバイスのフリートを管理するときにデバイスを区別するのに役立ちます。
  • sleepTime 読み取りの間にデバイスがスリープする時間(ミリ秒単位)です。バッテリーの消費量を減らすために、デバイスは読み取りの合間にスリープ状態になります。
  • proDebug バグがある場合はtrueに設定され、それ以外の場合はfalseに設定されます。 proDebugが有効になっている場合、デバイスを機能させるには、シリアルモニターがオンになっているコンピューターに接続する必要があります。デバッグ時にはtrueに設定しますが、フィールドにある場合はfalseに設定されていることを確認します。 proDebugがfalseの場合でも、デバイスはシリアルに出力することに注意してください。

ステップ5:SDカードを設定する

SDカードは、デバイスで使用する前に準備する必要があります。 SDカードはFAT32としてフォーマットする必要があります。SDカードを準備するには、以下の手順に従ってください。

ステップ6:コードをアップロードする

バックエンドを設定する前に、データをバックエンドに送信する必要があります。

これを行うには、MKR GSMをコンピューターに接続し、コードをデバイスにアップロードします。このセットアップでは、デバイスのモードが1に設定されていることを確認してください。コードがアップロードされたら、すべてのセンサーを水中に置きます。

次に、デバイスのボタンを押して、データが収集されて送信されるのを待ちます。これを数回繰り返して、SoracomAirにデータを入力します。

ステップ7:Soracomの設定

このステップは2つのセクションに分かれており、最初のセクションではSoracomでのアカウントの作成とSIMの登録について説明し、もう1つのセクションではAirからデータを収集するためのSoracomHarvestの設定について説明します。すでにソラコムのアカウントをお持ちの場合は、最初のセクションをスキップしてください。

セクション1:アカウントの作成

セクション2:グループと収穫

ステップ8:ソラコムラグーンの設定

Soracomで最後に設定するのはLagoonです。これは、データを視覚化し、データが適切でない場合に電子メールアラートを作成するために使用するツールです。以下の手順に従ってください。

ライブラリ

  • ArduinoLowPower(c)2016 Arduino LLCGNU劣等一般公衆利用許諾契約書このライブラリはパブリックドメインにあります
  • MKRGSM(c)2016 Arduino AGGNU劣等一般公衆利用許諾契約書このライブラリはパブリックドメインにあります
  • Wire(c)2006 Nicholas Zambetti GNU Lesser General PublicLicenseこのライブラリはパブリックドメインにあります
  • OneWire(c)2007 Jim Studt GNU General PublicLicenseこのライブラリはパブリックドメインにあります
  • DallasTemperature GNU General PublicLicenseこのライブラリはパブリックドメインにあります
  • RTCZero(c)2015 Arduino LLCGNU劣等一般公衆利用許諾契約書このライブラリはパブリックドメインにあります
  • SPI(c)2015 Hristo Gochkov Lesser GNU Lesser General PublicLicenseこのライブラリはパブリックドメインにあります
  • SD(C)2010 SparkFun Electronics GNU General PublicLicenseこのライブラリはパブリックドメインです

最終

最後に、プロジェクト用のエンクロージャーを設計しました。UVセンサーをエンクロージャー内に配置できるように、エンクロージャーの上部が透明であることが望ましいです。干渉を防ぐために、センサーをエンクロージャーの外側に配置しました。

Finally, ensure that all the variables are set and then place the device on the field, it should be ready to monitor all parameters now.

Using an SD Card Module

I have chosen to use the Arduino MKR MEM shield as it is easy to use and quite compact. An SD card module can also be used though most operate with 5v while the MKR GSM can only provide 3.3v, therefore a level convertor is needed to step up the 3.3v to 5v.

Background

I came up with this idea while going on a bus past fields. I remembered reading about new devices used to monitor agricultural fields but I was made aware of the costs which are mostly not affordable for farmers.

So I decided to use the low cost Arduino to monitor multiple parameters on the farm and allow any farm, big or small to step into the age of IoT and smart farming.

コード

SmartAgro
完全なコード

回路図

schematics_rrBJ3HiIfc.fzz

製造プロセス

  1. Arduinoセンサー–タイプとアプリケーション
  2. 自宅にワイヤレスセンサーネットワークを構築する
  3. K30センサーによるCO2モニタリング
  4. あなたの身長はどれくらいですか?
  5. Arduinoを搭載したシンプルな障害物センサー
  6. ArduinoまたはESP8266を搭載した静電容量式指紋センサー
  7. Arduinoクラウドセンサータワー
  8. モーションセンサー水鉄砲
  9. PHPを使用してArduinoと通信するWebサイトを作成する方法
  10. Arduinoを搭載したミニレーダー
  11. ArduinoがMySQLサーバーにセンサーデータを送信する(PHPMYADMIN)