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

Arduino UNOとRaspberry Piでスマート自動ガーデンシステムを構築

必要なパーツと用品

Arduino UNO×1
Raspberry Pi 2 Model B(他のモデルでも可)×1
Raspberry Pi カメラモジュール×1
Arduino Ethernet Shield 2×1
リレー(汎用)×1
ワイヤーケーブル×1
フォトレジスタ(光センサー)×1
水ポンプ×1
ファン(PC用流用)×1
汎用NPNトランジスタ×1
MicroSDカード(16GB、タイムラプス用)×1

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

Arduino IDE
Raspberry Pi Raspbian
win32diskimager
PuTTY
myDevices Cayenne

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

これは私の自動ガーデン第2弾プロジェクトですが、今回はすべてCayenneで制御するため、はるかに簡単になりました。また、植物の成長をタイムラプス動画で記録するためにRaspberry Piを追加しました。

Arduinoのセットアップ

ガーデンを監視するためにいくつかのデバイスを使用します。開始前に、EthernetシールドをArduinoに接続することを忘れないでください。

接続

土壌水分センサー:

植物が水を必要としているかチェックします。

ファン:

温度が高くなりすぎたら作動、または新鮮な空気を送るために使用。

水ポンプ:

土壌水分センサーと連動して作動。

フォトレジスタ(オプション):

室内の光量が十分か測定します。

照明:

湿度/温度センサー:

Cayenneで正しく動作させるにはコードが必要です。

水位センサー:

最終組み立て

Fritzingに4チャネルリレーのパーツがなかったため、グラフィックでは2個のリレーを使用しています。実際は1個の12V電源で、プラスとマイナスの線を分岐し、プラス側から3本のワイヤーをハンダ付けして各リレーに接続しています。すべてが同時に動作するわけではないので1つの電源で十分です。

Arduino用に5V電源を使用。リレー接続:

Cayenneのセットアップ

Cayenneの設定方法を見てみましょう。非常に簡単です。

  1. まずこちらでアカウント作成
  2. EthernetシールドをRJ45ケーブルで接続
  3. 以下はCayenne接続用コードと湿度/温度センサー設定用コード

このコードはW5100シールド用です。他のEthernet/WiFiシールド用コードはCayenneサイトで入手可能です。アカウント作成後に取得できるトークンを忘れずに追加してください。

#include "DHT.h"
//#define CAYENNE_DEBUG // デバッグ表示有効化
#define CAYENNE_PRINT Serial // これをコメントアウトするとプリント無効化、メモリ節約
#include  // または適切なシールド用ライブラリ

#define DHTPIN 8
#define DHTTYPE DHT22

#define VIRT_TEMP V1
#define VIRT_HUM V2

char token[] = "your_token";

DHT dht(DHTPIN, DHTTYPE);
unsigned long prev_DHT_refresh, interval_DHT_refresh = 1000;

void setup() {
  Serial.begin(9600);
  Cayenne.begin(token);
  dht.begin();
}

void loop() {
  Cayenne.run();
  getDhtValues();
}

void getDhtValues() {
  unsigned long now = millis();
  if (now - prev_DHT_refresh > interval_DHT_refresh) {
    float h = dht.readHumidity();
    float t = dht.readTemperature();
    if (!isnan(h) && !isnan(t)) {
      Cayenne.virtualWrite(VIRT_HUM, h);
      Cayenne.celsiusWrite(VIRT_TEMP, t);
    }
    prev_DHT_refresh = now;
  }
}

Cayenneでのデバイス登録

Arduino側はほぼ完了。今度は簡単な部分:Cayenneにすべてのデバイスを追加します。

デバイス追加 → カスタムウィジェット

好みのウィジェットタイプを選択。湿度と水位にはチャート、その他は値表示を使用。湿度/温度センサーはバーチャルピンを使用:

その他のデバイスはバーチャルピンではなく、接続されているピンに対応するアナログピンを選択。アクチュエータ(照明/ファン/水ポンプ)も同様に、Arduinoのリレー接続ピンを選択。

イベントとトリガー

ダッシュボードができたらトリガーを設定:

Raspberry Piのセットアップ

植物の成長をタイムラプス撮影します。

必要な3つのソフトウェア:

Win32DiskImager:

  1. 「Device」でSDカードを選択(通常デフォルトでOK)
  2. フォルダアイコンをクリックし、ダウンロードしたRaspbian Jessieイメージを選択
  3. 「Write」クリックで完了。SDカードをRaspberry Piに挿入

PuTTY:

  1. Raspberry PiにLANケーブル接続
  2. Raspberry PiのIPアドレスを特定(ルーター管理画面で確認、またはモニター/キーボード接続でifconfig実行)
  3. PuTTYにIPアドレス入力(例:192.168.0.3)して接続
  4. 信頼確認で「はい」
  5. ログイン: pi, パスワード: raspberry

Raspberry Piが起動したら、以下のコマンドでアップデート:

sudo apt-get update
sudo apt-get upgrade

VNC(リモートデスクトップ):

モニターがない場合はVNCでリモート操作:

sudo apt-get install tightvncserver
vncserver :1

PCにVNC Viewerをインストールし、IP:1(例:192.168.0.3:1)で接続。

Cayenne: CayenneでもRaspberry Piをリモート制御可能。インストール:

wget https://cayenne.mydevices.com/dl/rpi_03wl1tt4nt.sh
sudo bash rpi_03wl1tt4nt.sh -v

タイムラプス撮影

カメラを有効化:

sudo raspi-config

「Enable Camera」を選択。画像保存用フォルダ作成:

cd /home/pi/Desktop
mkdir timelapse

Webカメラ(またはPiカメラ)接続後、1時間ごとに撮影するスクリプト作成:

cd /home/pi/Desktop
nano timelapse.sh

以下を貼り付け:

SAVEDIR=/home/pi/Desktop/timelapse/
while [ true ]; do
  filename=-$(date -u +"%d%m%Y_%H%M-%S").jpg
  /opt/vc/bin/raspistill -o $SAVEDIR/$filename
  sleep 3600;
done

実行権限付与:

chmod +x timelapse.sh

結論

チュートリアルは長くなりましたが、やることはシンプル:いくつかのデバイスを接続し、プラットフォームを設定するだけです。写真では配線がごちゃごちゃしています。ワイヤーが長すぎました。植物が育ちきったらタイムラプスの結果を公開予定です。

アドバイス:

Ethernetシールドで「DHCP fail」エラーが出ることがあります。Arduinoフォーラムで解決策を見つけました:ランダムな場所に100Ω抵抗を2本ハンダ付けして、読者を困らせましょう(冗談です。実際の対処法はフォーラム参照)。

コードスニペット

コードスニペット #1 (Arduino)

#include "DHT.h"
//#define CAYENNE_DEBUG
#define CAYENNE_PRINT Serial
#include 

#define DHTPIN 8
#define DHTTYPE DHT22
#define VIRT_TEMP V1
#define VIRT_HUM V2

char token[] = "your_token";

DHT dht(DHTPIN, DHTTYPE);
unsigned long prev_DHT_refresh, interval_DHT_refresh = 1000;

void setup() {
  Serial.begin(9600);
  Cayenne.begin(token);
  dht.begin();
}

void loop() {
  Cayenne.run();
  getDhtValues();
}

void getDhtValues() {
  unsigned long now = millis();
  if (now - prev_DHT_refresh > interval_DHT_refresh) {
    float h = dht.readHumidity();
    float t = dht.readTemperature();
    if (!isnan(h) && !isnan(t)) {
      Cayenne.virtualWrite(VIRT_HUM, h);
      Cayenne.celsiusWrite(VIRT_TEMP, t);
    }
    prev_DHT_refresh = now;
  }
}

コードスニペット #9 (Shell)

SAVEDIR=/home/pi/Desktop/timelapse/
while [ true ]; do
  filename=-$(date -u +"%d%m%Y_%H%M-%S").jpg
  /opt/vc/bin/raspistill -o $SAVEDIR/$filename
  sleep 3600;
done

製造プロセス

  1. LIRCでプロフェッショナルなRaspberry Piユニバーサルリモコンを構築
  2. Raspberry PiでRFをDCに変換: エンベロープ検波器の構築とトラブルシューティング
  3. Cycle Chaser: Raspberry Piで自転車をナイトタイムライトショーに変身
  4. Raspberry Piベースの泥棒検知器を構築 - ステップバイステップガイド
  5. Raspberry Pi、MCP9808、InfluxDB、Grafanaで作る家庭温度モニター
  6. Raspberry Piで構築するホームオートメーションシステム:リモート制御対応
  7. Raspberry PiとWebダッシュボードで作る自動植物水やりシステム
  8. MrRobot: Ubuntu Mobile で操作する Rapiro ロボット – 音声、タッチ、シェイクインタラクション
  9. DIY Wall-E 風 Raspberry Pi CD ボックスロボット
  10. Bluetooth 制御 Raspberry Pi ロボットに音声フィードバックを追加して構築
  11. Arduino & Raspberry Pi でインターネット制御ビデオストリーミングロボットを構築