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

Helium & DFRobotで無線土壌水分センサーシステム - リアルタイム植物ケア

部品と用品

Helium Atom XBeeモジュール ×1
Helium Element アクセスポイント ×1
DFRobot Gravity: アナログ容量式土壌水分センサー ×1
Helium Arduino/mbedアダプター ×1
Arduino UNO ×1

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

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

植物に声を - 無線土壌水分センサーで

植物は水不足で枯れがち。忙しいと水やりを忘れがちです。このプロトタイプ水分プローブで、フェンやフィカスを健康に保ちましょう。

このガイドで学べること (所要約60分)

土壌水分プローブの構築

完成イメージ:

Helium & DFRobotで無線土壌水分センサーシステム - リアルタイム植物ケア

  1. Helium AtomをHelium Arduinoアダプターに挿し、Arduinoボードに接続。RX/TXジャンパー設定をボードに合わせて調整必須 (詳細リンク参照)
  2. 土壌水分プローブの3線ケーブル (黒/赤/青) をHelium Arduinoアダプターに接続: 黒→GND、赤→5V、青→ADOヘッダー
  3. 白コネクタをDFRobot土壌水分プローブに接続 (カチッとはまる)

配線完了時の様子:

Helium & DFRobotで無線土壌水分センサーシステム - リアルタイム植物ケア

Helium Elementの展開

約30秒で自分のHeliumネットワークが完成。Elementを電源とイーサネットに接続 (セルラー対応版でもイーサネット推奨)。前面LEDが緑 (イーサネット) またはティール (セルラー) になれば接続完了。

Helium DashboardでのElementとAtom登録

Helium Dashboardはハードウェア監視・管理のホスト型UI。出荷済みハードウェアはシステム登録済みだが、誰が展開するか紐付けが必要。

  1. Dashboardアカウント作成 (未作成の場合)
  2. New Atom で登録: 名前 (例:「Fern Saver」)、MACアドレス下4桁、HVVコード4桁を入力し保存
  3. New Element で同様に登録: 位置情報も入力し地図表示可能に

Elementオンライン確認: Dashboardの「Status & Signal」で確認。

Helium HTTPチャネルの展開

Heliumの特徴であるChannels: AWS IoT、Google Cloud IoT、Azure IoT、MQTT、HTTPなどへの事前構築済みコネクター。統合作業をHeliumが肩代わり。

この例ではHTTPチャネルでrequestb.in (HTTPテスト用無料サービス) へデータ転送。スケッチ内でチャネル名 HTTP を参照するため、同名で作成。

設定手順はGIFアニメ参照 - 数クリックで完了。

Arduino IDE設定とスケッチアップロード

  1. 最新Arduino IDEをインストール
  2. ライブラリマネージャーで Helium と ArduinoJson を検索・インストール (JSONフォーマット送信のため)
  3. 新規スケッチ作成、以下のコードをペースト
  4. USB接続してアップロード。AtomのLED点滅でネットワーク接続開始を確認

完全スケッチ (Soil_Humidity.ino)


/* Copyright 2017, Helium Systems, Inc. */
#include "Board.h"
#include 
#include 
#include 
#include 

#define CHANNEL_NAME "HTTP"
#define CHANNEL_DELAY 5000
#define CHANNEL_SEND_CYCLE 12

Helium helium(&atom_serial);
Channel channel(&helium);
int channel_counter;

void report_status(int status, int result = 0) {
  if (helium_status_OK == status) {
    if (result == 0) Serial.println(F("Succeeded"));
    else { Serial.print(F("Failed - ")); Serial.println(result); }
  } else { Serial.println(F("Failed")); }
}

void connect() {
  while (!helium.connected()) {
    Serial.print(F("Connecting - "));
    int status = helium.connect();
    report_status(status);
    if (helium_status_OK != status) delay(1000);
  }
}

void channel_create(const char * channel_name) {
  int8_t result; int status;
  do {
    connect();
    Serial.print(F("Creating Channel - "));
    status = channel.begin(channel_name, &result);
    report_status(status, result);
    if (helium_status_OK != status) delay(1000);
  } while (helium_status_OK != status || result != 0);
}

void channel_send(const char * channel_name, void const * data, size_t len) {
  int status; int8_t result;
  do {
    Serial.print(F("Sending - "));
    status = channel.send(data, len, &result);
    report_status(status, result);
    if (status == helium_status_OK && result != 0) channel_create(channel_name);
    else if (status != helium_status_OK) delay(1000);
  } while (helium_status_OK != status || result != 0);
}

void setup() {
  Serial.begin(9600);
  Serial.println(F("Starting"));
  helium.begin(HELIUM_BAUD_RATE);
  channel_create(CHANNEL_NAME);
  channel_counter = 0;
}

#define DRY_VALUE 536  // 乾燥時 (空気中)
#define WET_VALUE 303  // 湿潤時 (水中)
#define HUM_RANGE (DRY_VALUE - WET_VALUE)

void loop() {
  Serial.print(F("Reading - "));
  float reading = analogRead(A0);
  float percent = 100 * (1 - (reading - WET_VALUE) / HUM_RANGE);
  Serial.print(reading); Serial.print(" - "); Serial.println(percent);
  
  if (--channel_counter <= 0) {
    StaticJsonBuffer jsonBuffer;
    JsonObject &root = jsonBuffer.createObject();
    root[F("value")] = reading;
    root[F("percent")] = percent;
    char buffer[HELIUM_MAX_DATA_SIZE];
    size_t used = root.printTo(buffer, HELIUM_MAX_DATA_SIZE);
    channel_send(CHANNEL_NAME, buffer, used);
    channel_counter = CHANNEL_SEND_CYCLE;
  }
  delay(CHANNEL_DELAY);
}

土壌水分データについて

データはJSON形式で送信。例: {"value": 433, "percent": 55.5}。DFRobotセンサーは乾燥/湿潤校正値間のアナログ値を読み取り、パーセント換算。校正値は環境に合わせて調整推奨 (DFRobot公式Wiki 参照)。

Helium Dashboardでの接続・データ確認

次のステップとヘルプ

おめでとうございます! フェンの未来は守られました。さらに学ぶなら:

製造プロセス

  1. 不屈の成功:エイブラハム・リンカーンとメンテナンスリーダーシップに学ぶ粘り強さ
  2. QR・RFID・体温検知統合アクセス制御システム(Raspberry Piベース)
  3. Raspberry Piで低コスト土壌水分センサーを構築 - スマート灌漑に活用
  4. Raspberry Piと湿度センサーで作る自動エアロポニックスシステム
  5. Raspberry Pi と Python でロボットを構築:完全ガイド
  6. Arduino Portenta H7にMAX6675でサーモカップル温度センサーを接続する
  7. Arduino & MPU6050:SG90 & MG996Rサーボの精密制御
  8. u-blox LEA-6H 02 GPSモジュール: Arduino & Python 統合ガイド
  9. Arduino Dueでマスターする音声認識と音声合成
  10. 土壌水分センサー:仕組みと実用的なアプリケーション
  11. AI強化デジタルカメラで土壌水分監視に革命