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

HydroMazingスマートガーデンシステム

コンポーネントと消耗品

>
Raspberry Pi3モデルB
オプション-モノのインターネット-テキストメッセージ
× 1
Arduino Nano R3
× 2
ArduinoNano拡張シールド
× 2
DHT21 / 22温度/湿度センサー
Vcc /データ間に10kの抵抗が必要な場合があります
× 1
フォトセルモジュール
× 1
nRF24L012.4Ghzワイヤレス無線トランシーバーモジュール
SMAアンテナの有無にかかわらず
× 1
ダラス温度センサー(養液温度用)
おそらくコネクタが必要です
× 1
433MHzRF送信機および受信機モジュール
× 1
セット3〜5パックのワイヤレス制御アウトレットにはリモコンが含まれています
× 1
ArduinoUno用シールドボタン付きDFRobotLCD
× 1

必要なツールとマシン

>
はんだごて(汎用)

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

>
Arduino IDE
Microsoft Visual Studio 2015

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



製品を作るつもりはありませんでした。よくある問題を解決したかっただけです。屋内または管理された条件下で植物を育てたいです。一般的に入手可能な電子機器や家庭用品を使用して、植物が繁栄するための最適な環境をどのように作成できますか?土壌と水耕栽培のどちらが最適ですか?

HydroMazingは、家庭で植物をうまく育てるのに最適な栽培条件を簡単に提供できるようにするためのツールです。リモートクラウドではなく、独自のデバイスに配置された独立したデータ収集システムとWebインターフェイス。

植物を育てる方法を学ぶことは複雑で費用がかかる可能性があります。植物は回復力がありますが、たった1つの無実の見落としが作物を台無しにする可能性があります。スマートガーデニングシステムにあなたのために大変な仕事をさせることによって、これらの費用のかかる間違いを避けることができます!

<図> <図>

私がArduinoUnoマイクロコントローラーを使用して、個々のLux WIN100加熱および冷却プログラム可能アウトレットサーモスタットの代わりに使用することを決定したのは、2年前のことです。これらのコンセントは、小さなヒーターや、この場合は換気扇などの電化製品を制御します。コンセントに接続されているデバイスは、各デバイスに手動でプログラムした温度設定を使用して、アプライアンスのオンとオフを切り替えます。換気ファンを制御するためのこの手法は効果的ですが、いくつかの延長コードを使用します。温度出口コントローラーは、旧式のリレーを使用してデバイスの状態を切り替えます。私の最初の試みは、拡張ボックスをハックして、自分のリレーを挿入し、ArduinoUnoに接続することでした。コネクタナットがたくさん付いたワイヤが散らかって、がっかりした気分になるまで、それほど時間はかかりませんでした。

ホームオートメーション

<図> <図> <図>

しばらく頭の中で跳ね回っていたホームオートメーションのアイデアは、ハンドヘルドリモコンを使用するワイヤレス制御のACコンセントを使用することでした。リモコンをハッキングして、Arduino Unoの対応するピンで選択されたONまたはOFFボタンの信号を送信するのは、それほど難しいことではありませんよね?私がこのアイデアをテストすることを妨げていたしつこい懸念は、信号が信頼できないこと、そしてUnoが実際に故障したときにデバイスの電源を入れたと「考える」かもしれないという恐れでした。最終的に、私は自分自身を確信することができました。それを見つけるための最良の方法は、何が起こるかを試してみるだけです。残念ながら、このテストの結果は、リレーの試みよりもはるかに優れていませんでした。

ウェブ上で「Arduino」を使ってほぼすべてのセンサーや電子機器を検索すると、数ドルで多くの製品が販売されることになります。この場合、私は315Mhzと433Mhzの​​送信機と受信機のペアが、ほとんどの商用ワイヤレス制御コンセントの周波数範囲内にあることを発見しました。これらのタイプのプロジェクトにArduinoファミリーのマイクロコントローラーを使用する最大の利点は、開始するためのオープンソースソフトウェアを見つけることができることです。 Webで「Arduinoライブラリ」を検索します。この場合は、送信機と受信機、またはtx / rxペアです。今、それは私にとってエキサイティングになりました。リモコンから出てくるコードを読んで記録し、Arduinoをプログラムして対応するコンセントを制御することができました。 ArduinoUnoで動作するソフトウェアを設計することが課題になりました。 Arduinoソフトウェアに付属している例とライブラリに含まれている例は、プロジェクトの優れたスタートです。私の経験では、例を組み合わせて変更を加え始めると、壁にぶつかるまでそれほど時間はかかりません。私は優れたプログラマーではないと思います。頑固な完璧主義者だと思います。

私のお気に入りの本の1つである禅とオートバイ修理技術の著者であるロバート・ピルシグは、強迫観念の罠について語っています。本質的に、強迫観念の罠は、人が熱意を失い、プロジェクトを開始または継続することを思いとどまらせる可能性のある出来事または考え方です。いつ不快感や欲求不満を乗り越え、いつ休憩してプロジェクトから離れるのかを知ることは、個人的な課題です。休憩を取っていたら、ソースコードの競合に対する優れた解決策を思い付かなかったかもしれません。逆に、1ヶ月ほど離れて、まったく違うタイプのプロジェクトに取り組んだことが、元気を取り戻したと感じることがあります。おそらく、プロジェクトが十分に重要である場合、私たちはそれに取り組むことを余儀なくされるでしょう。罠は、プロジェクトが素晴らしいものであったとしても、プロジェクトに戻る価値がないことを確信しています。おそらく、完全に戻る価値はないでしょう。これで多くのプロジェクトが終了します。

プログラミング

<図> <図>

私が開発したソフトウェアはマイクロコントローラーにプログラムされており、「センサー」オブジェクトと「アプライアンス」オブジェクトのタイミング、管理、送信、受信のための一連の基本パラメーターを備えています。アプライアンスの制御は、私が「TheDecider」と名付けた一連のアルゴリズムによって実現されます。これは、センサーの読み取り値と事前にプログラムされたしきい値に基づいて決定を下し、マイクロコントローラーにワイヤレス制御のコンセントをオンまたはオフにするように促します。私は、アクアポニックス、成長するきのこ、およびプログラムされたルールに基づいてセンサーを読み取り、アプライアンスを操作することによって制御が達成されるあらゆる環境で動作するように、システムを簡単に変更できるようにしたかったのです。ワイヤレス制御のコンセントは、Arduinoを使用してファンを制御し、温度センサーの読み取り値に応じて信号を送信する信頼性の高い方法であることが証明されました。ソースコードが獣に進化するのにそれほど時間はかかりませんでした。 Arduinoファミリのマイクロコントローラは、実行できる命令の数に制限があり、点滅するLEDを数個以上制御する場合は、プログラムサイズの制限に達するのにそれほど時間はかかりません。サイズの制限により、最初よりも優れた、より効率的なコードを作成する必要があることがわかりました。クリエイティブな変数処理とカスタムライブラリを使用しても、最終的には別のマイクロコントローラーが必要になるか、より大きなマイクロコントローラーに移行する必要があります。

インターネットなしのワイヤレス監視

<図> <図>

マイクロコントローラが相互に通信する方法はいくつかあります。私が見つけた最も安価なワイヤレス方式は、nRF24L01ワイヤレス無線トランシーバーです。このモジュールは、低電力で軽量のさまざまなBluetoothであり、hydroMazingに監視ユニットとの通信機能を提供します。

センサーが読み取っているもの、アプライアンスの状態、通知付きのアラートを表示できるように、液晶ディスプレイシールド付きのArduinoUnoをもう1つ追加することにしました。

私は、さまざまなガーデニングのニーズと条件に合わせてカスタマイズできる、独自のオープンで適応性のあるプラットフォームを作成しました。それでも、自己完結型のワイヤレスシステムでもあります。システムのオープンアーキテクチャにより、インターネット接続とWebサービスの統合が容易になります。

インターネット監視

<図> <図> <図>

nRF24L01モジュールに接続されたRaspberryPiを入力します。

Arduinoソースコードの多くを変更して、着信送信をリッスンし、そのデータをいくつかのファイルに書き出すことができました。まず、PiとhydroMazingMonitor間のすべての通信をキャプチャするログファイル。次に、プログラムにすべてのセンサーオブジェクトの現在の状態と、すべてのアプライアンスオブジェクトのファイルを書き出させます。アラートが発生すると、プログラムはそのアラートを含むファイルを作成します。次に、PHPスクリプトを追加して、それぞれのファイルからデータオブジェクトを読み込み、PiのApacheサーバーにライブで表示しました。

次に、アラートファイルのディレクトリを読み取るPythonスクリプトを作成しました。存在する場合は、ファイルを読み取り、関連情報を解析してから、ユーザーに電子メールまたはSMSテキストで送信します。電子メールまたはテキストアラートの送信に加えて、PythonスクリプトはアラートファイルをPHPスクリプトが読み取って表示できる位置に移動します。作成されたログファイルを使用して、データをデータベースにインポートすることができます。 HydroMazingのデータがRaspberryPiにあるデータベースに記録されると、分析の実行を開始し、いくつかのレポートを生成できます。システムの監視と制御は主に私たちのために行われますが、hydroMazingが問題を警告する必要がある場合は、RaspberryPiを使用することで可能になります。

成長全体をガイドするhydroMazingGarden Wizard!システムは、hydroMazingが特定した問題を管理する方法に関するフィードバックとヒントを提供します。 http://www.hydroMazing.com

養液モニタリング

<図> <図> <図>

水耕栽培コンテナシステムの養液レベルを監視する必要があります。

養液のレベルが下がると、真水を補充する必要があります。そうしないと、養液がより濃縮され、一部の植物はうまく反応しなくなります。 HydroMazing Nutrient Controllerは、淡水を追加するポンプを作動させて、濃度を開始時のレベルに戻すことができます。これは、「補充」と呼ばれることがよくあります。 HydroMazing Nutrient Controllerは、pHとECも監視し、ポンプを作動させて溶液を管理し、変更が必要になったときに通知します。

<図> <図> <図>

もっと知りたいですか?

  • 実存的危機-Arduinoロールプレイングゲームシミュレーター
  • 購入できるのになぜDIYなのですか?
  • 「スマート」ガーデンとは何ですか?
  • スマートインドアガーデンの開始
  • 屋内ガーデニングを深く掘り下げる
  • 屋内ガーデニング:何がうまくいかない可能性がありますか?
  • 栄養ソリューションシステムの管理
  • PiができるのになぜArduinoなのか?

コード

  • オブジェクトの設定
オブジェクトの設定 C / C ++
CoreSettings.hファイルには、nRFネットワーク、ACコンセントのリモートスイッチコード、hydroMazingシステムで使用されるタイマー、アプライアンス、センサーオブジェクトの定義など、多くの重要な設定が含まれています。
 / ** @file CoreSettings.h * Copyright( C)2015 Cory J. Potter-無断複写・転載を禁じます*このコードは* LICENSE.txtの条件*の下で使用、配布、変更できます*商用利用を目的としていません!* LICENSE.txtのコピーを次のように受け取っているはずです。 * このファイル。そうでない場合は、次のアドレスにご連絡ください。アドレス1または2uint8_tnode_address =1; uint8_t totalNodes =3; unsigned long lastRxTimeStamp =0; const uint64_t nRFbaseAddress =1034834473100; uint8_t nRFaddress =0; // 00 --255 //注:定数の末尾の「LL」は「LongLong」タイプです// 1034834473185、1034834473170 // const uint64_t tx_pipes [5] ={0xF0F0F0F0E1LL、0xF0F0F0F0D2LL、0xF0F0F0F0D2LL、0xF0F0F0F141LL、0 // CONST uint64_tをrx_pipes [5] ={0xF0F0F0F22ALL、0xF0F0F0F299LL、0xF0F0F0F308LL、0xF0F0F0F377LL、0xF0F0F0F3E6LL}; // uint64_tをtx_pipes [3] ={0xF0F0F0F0E8LL、0xF0F0F0F0E7LL、0xF0F0F0F0E6LL}; // uint64_tをrx_pipes [3] ={0xF0F0F0F0E1LL、0xF0F0F0F0E2LL、 0xF0F0F0F0E3LL}; uint64_t tx_pipes [3] ={0xF0F0F0F0F8LL、0xF0F0F0F0F7LL、0xF0F0F0F0F6LL} ************************************************** **** ///ワイヤレス制御アウトレットスイッチ/ ************************************** ********************************** /// ETEKCITY#1401 // unsigned long mySwitchOn [] ={24 、1398067,1398211,1398531}; // unsigned long mySwitchOff [] ={24、1398076,1398220,1398540}; // ETEKCITY#1405 // unsign ed long mySwitchOn [] ={24,1135923,1136067,1136387}; // unsigned long mySwitchOff [] ={24,1135932,1136076,1136396}; // ETEKCITY#1406 // unsigned long mySwitchOn [] ={24、 4281651,4281795,4282115}; // unsigned long mySwitchOff [] ={24,4281660,4281804,4282124}; // ETEKCITY#1407 // unsigned long mySwitchOn [] ={24,87347,87491,87811}; // unsigned long mySwitchOff [] ={24,87356,87500,87820}; // ETEKCITY#1411 // unsigned long mySwitchOn [] ={24,283955,284099,284419}; // unsigned long mySwitchOff [] ={24、 283964,284108,284428}; // ETEKCITY#1415 // unsigned long mySwitchOn [] ={24,21811,21955,22275,23811,29955}; // unsigned long mySwitchOff [] ={24,21820,21964,22284 、23820,29964}; // ETEKCITY#1419 // unsigned long mySwitchOn [] ={24,333107,333251,333571,335107,341251}; // unsigned long mySwitchOff [] ={24,333116,333260,333580、 335116,341260}; // ETEKCITY#0319uint8_t totalSwitches =5; unsigned long mySwitchOn [] ={24,333107,333251,333571,335107,341251}; unsigned long mySwitchOff [] ={24,3331 16,333260,333580,335116,341260}; / ************************************** ********************************** // * I2C通信* // ******** ************************************************** ************** / const int MY_ADDRESS =42; const int SEND_TO_ADDRESS =22; / ********************** ************************************************** // *タイマー* // ******************************************* ***************************** ///タイマーオブジェクト={(タイプ)、(ミリ秒単位の間隔)、準備完了、トリガー、タイムスタンプ、(次のオブジェクトへのポインタ)Timer Timer_txData ={TIMER_TX_DATA、30000UL、true、false、0、NULL}; // Timer Timer_Lcd ={TIMER_LCD、12000UL、true、false、0、&Timer_Log}; // Timer Timer_Lcd_Cycle ={ TIMER_LCD_CYCLE、6000UL、true、false、0、&Timer_Lcd}; //タイマーTimer_Lcd_Scroller ={TIMER_LCD_SCROLLER、500UL、true、false、0、&Timer_Lcd_Cycle}; // Timer Timer_Ping ={TIMER_SENSOR_READINGS、10U L、true、false、0、&Timer_Log}; // Timer Timer_Lite ={TIMER_LITE、180000UL、true、false、0、&Timer_Ping}; Timer Timer_Save_Settings ={TIMER_SAVE_SETTINGS、3600000UL、true、false、0、&Timer_txData}; // Timer Timer_Sensor_Read ={TIMER_SENSOR_READINGS、7000UL、true、false、0、&Timer_Save_Settings}; // Timer Timer_Alerts ={TIMER_ALERTS、45000UL、true、false、0、&Timer_Sensor_Read}; Timer Timer_rxData ={TIMER_RX_DATA }; / *********************************************** ************************* ///アプライアンスの初期化/ ******************* ************************************************** *** / Appliance Appliance_Light_1 ={101、1、APPLIANCE_LIGHT、DEFAULT_TIME、true、false、OFF、NULL}; // Appliance Appliance_Light_2 ={102、0、APPLIANCE_LIGHT、DEFAULT_TIME、true、false、OFF、&Appliance_Light_1}; // Appliance Appliance_Light_3 ={103、0、APPLIANCE_LIGHT、DEFAULT_TIME、true、false、OFF、&Appliance_Light_2}; Appliance Appliance_Int akeFan ={104、1、APPLIANCE_INTAKE_FAN、DEFAULT_TIME、true、false、OFF、&Appliance_Light_1}; Appliance Appliance_ExhaustFan ={103、1、APPLIANCE_EXHAUST_FAN、DEFAULT_TIME、true、false、OFF、&Appliance_IntakeFan}; Appliance Appliance_Humidifier 、DEFAULT_TIME、true、false、OFF、&Appliance_ExhaustFan}; Appliance Appliance_Heater ={101、0、APPLIANCE_HEATER、DEFAULT_TIME、true、false、OFF、&Appliance_Humidifier}; // Appliance Appliance_AirPump ={PIN4、2、APPLIANCE_PUMP、DEFAULT_TIME 、OFF、&Appliance_Heater}; Appliance Appliance_FeedPump ={105、1、APPLIANCE_PUMP、DEFAULT_TIME、true、false、OFF、&Appliance_Heater}; uint8_t totalAppliances =6; / ***************** ************************************************** ***** ///センサーの初期化/ *************************************** ********************************* ///センサー:={ピン; node_address; SENSOR_TYPE;周波数; minVal; maxVal; ULタイムスタンプ;浮動小数点値; struct Sensor * next; } //最初のNULL-オブジェクトがまだ作成されていないことを示すことはできません。SensorSensor_Photocell={PIN_A0、1、SENSOR_PHOTO、100、50、100、0、25、NULL}; Sensor Sensor_Temp ={PIN7、 1、SENSOR_TEMPF、50、70、80、0、75、&Sensor_Photocell}; Sensor Sensor_Humidity ={PIN7、1、SENSOR_HUMIDITY、50、40、70、0、50、&Sensor_Temp}; Sensor Sensor_WaterTemp ={PIN3_INT1、1、SENSOR_WATER_TEMPF、 100、50、70、0、65、&Sensor_Humidity}; Sensor Sensor_Flow ={PIN2_INT0、2、SENSOR_FLOW、100、50、50、0、75、&Sensor_WaterTemp}; // Sensor Sensor_Microphone ={PIN_A1、0、SENSOR_SOUND、60、 10、100、0、75、&Sensor_Flow}; // Sensor Sensor_Ultrasonic ={PIN_A2、0、SENSOR_ULTRASONIC、60、10、100、0、75、&Sensor_Microphone}; // Sensor Sensor_PIR ={PIN_A2、0、SENSOR_PHOTO、60、 10、100、0、75、&Sensor_Microphone}; // Sensor Sensor_Moisture ={PIN_A2、0、SENSOR_MOISTURE、60、10、100、0、75、&Sensor_Flow}; Sensor Sensor_Float ={PIN_A2、1、SENSOR_FLOAT、100、0、 1、0、1、&Sensor_Flow}; Sensor Sensor_Volta ge ={PIN1_TX、1、SENSOR_VOLTAGE、100、0、100、0、50、&Sensor_Float}; uint8_t totalSensors =7; / ********************** ************************************************** / 

回路図

吸気および排気ファン、グローライト、ヒーター、除湿機、およびポンプは、ワイヤレスACコンセントを介して自動的に制御されます このプロジェクトで使用される一般的なワイヤレス制御のACコンセント。 組み立てとテスト hydroMazingプロトタイプWebインターフェイス アラート通知用のhydroMazingプロトタイプWebインターフェイス。

製造プロセス

  1. ラズベリーパイの温度監視
  2. LM35を使用した温度ベースのデバイス制御システム
  3. MCP3008を使用したRaspberryPiのアナログセンサー
  4. スマートホームスキルのギャップ
  5. すべてがスマートになる可能性がある:最新のスマートシティの主な特徴–パート1
  6. IoTを活用したレベル監視システムで飲料業界をよりスマートに
  7. ポータブル点字ディスプレイの5W
  8. アンチロック ブレーキ システム (ABS) の仕組みを理解する
  9. 電子点火システムの働きを理解する
  10. マグネトー点火システムの働きを理解する
  11. アメリカの製造システムとは何ですか?