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

Arduinoで作るスマート室内ガーデン – 自動植物育成システム

必要な部品と材料

プロジェクトの概要

Arduinoで作るスマート室内ガーデン – 自動植物育成システム

ガーデニングにマイコンを組み合わせるのは人気のアイデアです。植物の要求は「光・水・空気」の3要素(正確には4要素)に集約され、これらを制御すればどこでも通年で栽培可能です。本プロジェクトでは、Arduino開発ボードを使ったシンプルな室内ガーデンシステムの構築手順を、ハードウェア・ソフトウェア両面から詳細に解説します。JLCPCBで発注したカスタムPCBを用いることで見た目も配線もすっきりまとまり、全ドキュメントとコードを提供するので、電子工作初心者でも挑戦しやすくなっています。

製作期間はわずか7日間:ハードウェア組み立て3日、コードとAndroidアプリ開発4日。Bluetooth経由でアプリからシステムを操作できます。

このチュートリアルで学べること

Step 1: 室内ガーデンとは?

Arduinoで作るスマート室内ガーデン – 自動植物育成システム
Arduinoで作るスマート室内ガーデン – 自動植物育成システム

植物の基本的ニーズは3つ:

本システムでは以下を自動制御します:

Step 2: センサとアクチュエータ

Arduinoで作るスマート室内ガーデン – 自動植物育成システム
Arduinoで作るスマート室内ガーデン – 自動植物育成システム

センサ

アクチュエータ

Step 3: PCB製作(JLCPCB製)

Arduinoで作るスマート室内ガーデン – 自動植物育成システム
Arduinoで作るスマート室内ガーデン – 自動植物育成システム
Arduinoで作るスマート室内ガーデン – 自動植物育成システム
Arduinoで作るスマート室内ガーデン – 自動植物育成システム
Arduinoで作るスマート室内ガーデン – 自動植物育成システム

JLCPCBについて

JLCPCB(深圳嘉立創電子科技発展有限公司)は中国最大のPCB試作企業で、10年以上の実績、20万以上の顧客、日量8,000件以上の受注、年産20万㎡の生産能力を誇ります。品質・価格・納期のバランスに優れ、今回も最適な選択でした。

ガーバーファイルをアップロードし、板厚・色・枚数を指定して注文。わずか2ドルで3日後に到着しました(送料無料キャンペーンも随時実施)。届いたPCBは設計通りのリーフ形状で、全ラベル・ロゴが印刷されており、はんだ付けガイドとして完璧に機能します。回路図(PDF)はこちら。

Step 4: 部品調達

Arduinoで作るスマート室内ガーデン – 自動植物育成システム

必要な部品と調達先リンク:

Step 5: 組み立て

Arduinoで作るスマート室内ガーデン – 自動植物育成システム
Arduinoで作るスマート室内ガーデン – 自動植物育成システム
Arduinoで作るスマート室内ガーデン – 自動植物育成システム
Arduinoで作るスマート室内ガーデン – 自動植物育成システム
Arduinoで作るスマート室内ガーデン – 自動植物育成システム
Arduinoで作るスマート室内ガーデン – 自動植物育成システム

ラベルに従いはんだ付け。まずArduinoコネクタから電源確認と基本動作テスト。各センサ・LEDも直接ボード接続なので個別にテスト可能。

はんだ付けのコツ: こて先を常に清潔に。スポンジで拭き、光沢を保つ。フラックスや酸化で汚れたら即座に掃除。中断してでも綺麗にする価値あり。熱伝導が格段に良くなります。

JLCPCBのPCBはラベルが充実しており、ミスなく実装できます。両面実装も可能。全部品実装後、CNCレーザーカット用のDXFファイル(こちら)で電子部品と植物を一体化するサポートを製作しました。

Step 6: Androidアプリ

Arduinoで作るスマート室内ガーデン – 自動植物育成システム
Arduinoで作るスマート室内ガーデン – 自動植物育成システム
Arduinoで作るスマート室内ガーデン – 自動植物育成システム

アプリ機能:

アプリはこちらから無料ダウンロード可能。

Step 7: Arduinoコードとテスト検証

Arduinoで作るスマート室内ガーデン – 自動植物育成システム
Arduinoで作るスマート室内ガーデン – 自動植物育成システム
Arduinoで作るスマート室内ガーデン – 自動植物育成システム
Arduinoで作るスマート室内ガーデン – 自動植物育成システム
Arduinoで作るスマート室内ガーデン – 自動植物育成システム

コードはこちらからダウンロード。よくコメントされており理解しやすい構成です。特に照度自動制御モードが実用的:ベース下部の照度センサが環境光を監視し、フロントLEDの明るさを自動調整。温湿度値もスマホ画面でリアルタイム確認できます。

ソースコード

/************************************************************************************************************************************************************************ 
 * - Author : BELKHIR Mohamed 
 * - Profession : (Developer) MEGA DAS owner 
 * - Main purpose : Industrial Application 
 * - Copyright (c) holder : All rights reserved 
 * - License : BSD 2-Clause License 
 * - Date : 20/11/2017 
 ***********************************************************************************************************************************************************************/

#include "DHT.h"
#include 
#include 

// 制御ピン定義
const int Pump = 4;         // ウォーターポンプ制御
const int Fan = 5;          // ファン速度制御(PWM)
const int Light = 6;        // LED明るさ制御(PWM)
const int TempHum = 7;      // DHT11データ入力
const int Moisture = 8;     // 水分センサ デジタル入力
const int TestLED = 9;      // テスト用LED
const int Brightness = 12;  // 照度センサ信号入力
const int analogMoisture = 0; // 水分センサ アナログ入力

#define DHTTYPE DHT11
DHT dht(TempHum, DHTTYPE);
BH1750 lightMeter;

char Data = 'x';
String cmd = "";
int flagModeAuto = 0;
int sprayCMD = 0;
int LightCMD = 0;
int lightLevelPlus = 0;
float temperature = 0;
float humidity = 0;
uint16_t lux = 0;

void setup() {
  Wire.begin();
  dht.begin();
  lightMeter.begin();
  Serial.begin(9600);
  Serial.setTimeout(100);
  pinMode(Pump, OUTPUT);
  pinMode(Fan, OUTPUT);
  pinMode(Light, OUTPUT);
  pinMode(Moisture, INPUT);
  pinMode(TestLED, INPUT);
  delay(1000);
  digitalWrite(Pump, LOW);
  digitalWrite(Fan, LOW);
  digitalWrite(Light, LOW);
}

void loop() {
  while (Serial.available()) {
    delay(10);
    Data = Serial.read();
    cmd += Data;
  }
  if (cmd == "dt") { Serial.print(humidity); }
  if (cmd == "dh") { Serial.print(lux); }
  if (cmd == "db") { Serial.print(temperature); }
  if (cmd == "o") { flagModeAuto = 1; }
  if (cmd == "m") { flagModeAuto = 0; }

  if (flagModeAuto == 1) {
    autoPump();
    lightBrightness();
    autoFan();
  } else {
    if (cmd == "f") { analogWrite(Fan, 255); }
    if (cmd == "x") { analogWrite(Fan, 0); }
    if (cmd == "l") { analogWrite(Light, 255); }
    if (cmd == "k") { analogWrite(Light, 0); }
    if (cmd == "w") { analogWrite(Pump, 255); }
    if (cmd == "y") { analogWrite(Pump, 0); }
  }
  cmd = "";
  lux = lightMeter.readLightLevel();
  temperature = dht.readTemperature();
  humidity = dht.readHumidity();
}

void autoPump() {
  if (analogRead(analogMoisture) < sprayCMD) {
    digitalWrite(Pump, HIGH);
    delay(1000);
    digitalWrite(Pump, LOW);
    delay(1000);
  }
}

void lightBrightness() {
  while (lux < LightCMD) {
    analogWrite(Light, lightLevelPlus);
    delay(100);
    lightLevelPlus++;
    lux = lightMeter.readLightLevel();
  }
}

void autoFan() {
  if (temperature > 30) {
    analogWrite(Fan, 255);
  } else {
    analogWrite(Fan, 0);
  }
}

カスタムパーツ・エンクロージャ

dxf_mdf_5mm_s0PEHuez4w.rar(CNCレーザーカット用DXFファイル)

回路図

(PCBパターンが回路図を兼ねています)

製造プロセス

  1. Arduinoで作るモニター用Ambilightシステム:没入感アップの自作ガイド
  2. Arduino UNOとOLEDディスプレイでクラシックPongゲームを自作:ステップバイステップチュートリアル
  3. Arduinoオーディオ周波数検出器 – 高感度サウンドモジュールで最大音量ピークの周波数を測定
  4. Arduinoで作る自作デジタルペット「Tamaguino」─ 3Dプリンター製ケース付き完全ガイド
  5. スマートワイヤレス照明スイッチコントローラー:Arduinoで物理スイッチを遠隔操作
  6. Arduino三目並べ:MAX7219 LEDマトリクスと段ボールケースで自作
  7. Arduino Nanoで作るスマートな動体検知水鉄砲
  8. SparkFun 7セグメントディスプレイで作る信頼性の高いArduinoカウントダウンタイマー
  9. Arduino向日葵:太陽を追尾する電子ヒマワリの製作
  10. Arduinoで自作RCポルシェカー:ステップバイステップガイド
  11. Arduino向けスマート屋内ナビゲーションロボットキット