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

DIYスマートIoTデバイス:ATmega32U4、ESP8266、各種センサーで構築する植物栽培システム「GIY」

部品と材料

部品数量備考
Microchip ATmega32U41メインMCU(Arduino Leonardo互換)
Espressif ESP8266 ESP-12E1Wi-Fiモジュール
16MHz 水晶発振子1
パワーMOSFET Nチャネル4高電力負荷駆動用
電圧レギュレーターモジュール1Digilent製、12V→5V変換
DHT11 温湿度センサー(4ピン)1
DS18B20 防水温度センサー(1-Wire)1Maxim Integrated
水位センサー(MikroE Water Detect click)1
Arduino LCDスクリーン(128×64グラフィック)1ST7920コントローラー
フォトレジスタ(CdSセル)1光量検知用

必要な工具と機器

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

プロジェクト概要

導入

MITオープンアグリ文化イニシアチブのディレクター、ケイレブ・ハーパー氏のTEDトーク「デジタルファーミング:このコンピューターが未来の食料を育てる」に強く感銘を受け、このプロジェクトが始まりました。「世界中のどこでも、美味しく栄養価の高い食料を屋内で育てられたらどうなるか?」という問いかけが、私の原動力です。

目標は、植物の成長に最適な気候条件を自動で作り出す「箱/インキュベーター」を作ることです。必要な光量と栄養を正確に供給し、サンライトエミュレーター、灌漑システム、気候制御を一つのエレガントなデザインに統合します。

DIYスマートIoTデバイス:ATmega32U4、ESP8266、各種センサーで構築する植物栽培システム「GIY」

実装予定技術

類似プロジェクトは既に存在しますが、「既存のアイデアを改良するのが最高の創造的アイデアを生む方法」です。市販品の長所短所を分析し(スペース効率、コスト、同時栽培数など)、欠点を克服しベストな機能だけを実装した新しいオープンソースシステムを目指します。野心的ですが、やってみる価値はあります!

実験:栽培環境の比較検証

植物の成長には数週間〜数ヶ月かかるため、早期から実験を開始しました。以下の4グループで比較:

ドイツのスーパー「Kaufland」で購入したミックスハーブの種子で実験開始。発芽にはほぼ100%の湿度が必要なため、ペーパータオルで覆いビニール袋で密閉。1.5週間でほぼ全て発芽しました。

DIYスマートIoTデバイス:ATmega32U4、ESP8266、各種センサーで構築する植物栽培システム「GIY」

丈夫な苗を選別し、ココナッツコイアペレット(水で6倍に膨らむ有機培地)に植え替え。1週間で根が見え始め、ロックウール(岩綿)培地と粘土ボール、土に移植してフォグ栽培を開始。しかしフォグの水分が培地に行き渡らず、生存率は低かったです。

イースターブレイク後の再挑戦

休暇中にシステム停止で全滅。心機一転、ロックウール培地で再挑戦。IKEAで購入したロックウールと種子で発芽させ、フォグシステムの稼働時間を延ばして「フォグのみで発芽できるか」を検証中です。

電子回路設計・製作

最終基板に必要な機能とピン数を整理し、マイクロコントローラーを選定。候補はsatshakit(Daniele Ingrassia作、ATmega328Pベース)とFABLEO(Jonathan Grinham作、ATmega32U4ベース、ハードウェアUSB内蔵)。ATmega328Pは経験済みなので、新しい挑戦としてFABLEO(ATmega32U4)をベースに採用しました。

設計にはEAGLEを使用。回路図(.sch)で論理接続を定義し、基板レイアウト(.brd)でパターン設計。fab.lbrライブラリを活用し、ラベル機能で配線を簡素化しました。

DIYスマートIoTデバイス:ATmega32U4、ESP8266、各種センサーで構築する植物栽培システム「GIY」

主な回路ブロック:

基板レイアウトではグリッド解像度を0.01に設定し、GNDをポリゴンでベタ塗りして配線効率化。表裏2層基板として、裏面は水平反転して加工。

DIYスマートIoTデバイス:ATmega32U4、ESP8266、各種センサーで構築する植物栽培システム「GIY」

CNCフライス盤(Roland)で加工。FabModulesでPNGからG-code生成。0.2mmエンドミルで内側彫刻、1mmで外形切断。両面加工後、重ね合わせて接着。

DIYスマートIoTデバイス:ATmega32U4、ESP8266、各種センサーで構築する植物栽培システム「GIY」

DIYスマートIoTデバイス:ATmega32U4、ESP8266、各種センサーで構築する植物栽培システム「GIY」

はんだ付け後、マルチメーターで導通確認。VCC-GNDショートが見つかり(顕微鏡で1時間かけて発見)、ナイフでパターンを削って絶縁修正。昇圧レギュレーター(12V→24V)を裏面に実装し、24V出力に調整済み。ネットワーキング週に作ったWi-Fi基板も裏面に搭載。

DIYスマートIoTデバイス:ATmega32U4、ESP8266、各種センサーで構築する植物栽培システム「GIY」

配線と組み込みプログラミング(I/Oデバイス)

Arduino IDEで「Arduino Leonardo」として認識。「Arduino as ISP」スケッチを書き込んだArduino Unoをプログラマーとして使用し、ブートローダー書き込み後、Blinkスケッチで動作確認。

センサー実装詳細

DHT11 温湿度センサー:安価、3-5V動作、湿度5%精度、温度±2℃精度、1Hzサンプリング。VCC/GND/データピンの3線接続。DHT.hライブラリで簡単読み取り。

DS18B20 1-Wire防水温度センサー:-55〜125℃、±0.5℃精度、ユニークな64ビットシリアル番号で複数並列接続可能。4.7kΩプルアップ抵抗が必要(基板に未実装のため手配線で追加)。OneWire.h、DallasTemperature.hライブラリ使用。

LDR(光依存抵抗):暗闇で〜1MΩ、明るさで数kΩまで低下。アナログ電圧出力をArduino ADC(0-1023)で読み取り、閾値で「暗い/薄暗い/明るい/非常に明るい」を判定。

水位センサー(自作):土壌水分センサーを流用。電気伝導度測定の原理は同じ。アナログ値0〜1023を「EMPTY(0)」「LOW(〜800)」「FULL(900〜)」の3段階にキャリブレーション。

グラフィックLCD(128×64、ST7920):通常多ピン必要だが、シリアル接続モードでデジタル3ピンのみで制御可能。U8glibライブラリ使用。起動時にFabLabロゴ(ビットマップ表示)を表示する機能も実装。画像はPNG→縮小→BMP変換→LCD AssistantでHEX配列化。

pHセンサー(ロゴ pHセンサー v1.1):最も扱いが難しいセンサー。プローブが微小電圧(数mV)を出力し、オペアンプ基板で0-5Vに増幅。校正にはpH 4.01/6.86/9.18標準液(粉末タイプ推奨)を使用。オフセット(pH7を2.5Vに合わせる)とステップ(pH単位あたりの電圧変化)を決定し、ソフトウェアでpH値を算出。

MOSFET出力制御:RGB LEDストリップ(常時点灯)と超音波アトマイザー(水位センサー連動:水ありでON、空でOFF)を制御。

統合コード:GIY Board - CODE

#include "dht.h"
#include "U8glib.h"
#include <OneWire.h>
#include <DallasTemperature.h>

#define DHT11_PIN 2
#define ONE_WIRE_BUS 3
#define WATER_LEVEL A4
#define LDR_PIN A3
#define PH_PIN A5
#define GROW_LIGHT 10
#define FOG_PUMP 13

int waterLevel, LightLevel, pH;
dht DHT;
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature waterTemp(&oneWire);
U8GLIB_ST7920_128X64 u8g(4, 12, 6, U8G_PIN_NONE);

// FabLabロゴ ビットマップデータ(省略)
const unsigned char logo[] PROGMEM = { ... };

bool first = true;
float hum = 0.0;
double T = 0.0;

void dht_test(float *humPerc);

void setup(void) {
  waterTemp.begin();
  pinMode(GROW_LIGHT, OUTPUT);
  pinMode(FOG_PUMP, OUTPUT);
  digitalWrite(GROW_LIGHT, HIGH);
  
  // ディスプレイ初期化
  if (u8g.getMode() == U8G_MODE_R3G3B2) u8g.setColorIndex(255);
  else if (u8g.getMode() == U8G_MODE_GRAY2BIT) u8g.setColorIndex(3);
  else if (u8g.getMode() == U8G_MODE_BW) u8g.setColorIndex(1);
  else if (u8g.getMode() == U8G_MODE_HICOLOR) u8g.setHiColorByRGB(255,255,255);
  
  // 起動ロゴ表示
  u8g.firstPage();
  do { u8g.drawBitmapP(32, 0, 16, 64, logo); } while(u8g.nextPage());
  dht_test(&hum);
}

void RefreshDisplay(float *humPerc, double *T, int *WL, int *LL, int *pH_value) {
  u8g.setFont(u8g_font_fub11);
  u8g.setFontRefHeightExtendedText();
  u8g.setDefaultForegroundColor();
  u8g.setFontPosTop();
  
  u8g.drawStr(4, 0, "Hum%");
  u8g.setPrintPos(68, 0); u8g.print(*humPerc);
  
  u8g.drawStr(4, 15, "Temp");
  u8g.setPrintPos(68, 15); u8g.print(*T);
  
  u8g.drawStr(4, 30, "Wlvl");
  if (*WL == 0) {
    u8g.drawStr(68, 30, "EMPTY!");
    digitalWrite(FOG_PUMP, LOW);
  } else {
    if (*WL < 800) u8g.drawStr(68, 30, "LOW");
    else { digitalWrite(FOG_PUMP, HIGH); u8g.drawStr(68, 30, "HIGH"); }
  }
  
  if (*LL < 100) u8g.drawStr(68, 45, "Dark");
  else if (*LL < 200) u8g.drawStr(68, 45, "Dim");
  else if (*LL < 500) u8g.drawStr(68, 45, "Light");
  else if (*LL < 800) u8g.drawStr(68, 45, "Bright");
  else u8g.drawStr(68, 45, "2Bright");
  
  double voltage = 5.0 / 1024.0 * (*pH_value);
  float Po = 7 + ((2.5 - voltage) / 0.18);
  u8g.drawStr(4, 45, "pH");
  u8g.setPrintPos(28, 45); u8g.print(Po);
}

void loop(void) {
  waterTemp.requestTemperatures();
  T = waterTemp.getTempCByIndex(0);
  waterLevel = analogRead(WATER_LEVEL);
  LightLevel = analogRead(LDR_PIN);
  pH = analogRead(PH_PIN);
  
  int chk = DHT.read11(DHT11_PIN);
  hum = DHT.humidity;
  dht_test(&hum);
  
  if (first) { first = false; }
  else {
    u8g.firstPage();
    do { RefreshDisplay(&hum, &T, &waterLevel, &LightLevel, &pH); }
    while(u8g.nextPage());
  }
}

void dht_test(float *humPerc) { delay(1000); }

3D設計・3Dプリント

最終システムの外観設計にFusion 360を使用。「セクシーで機能的、組み立て可能」を目標に、3Dプリント、CNC、レーザーカットの技術を統合。BigRep(1m³造形可能)とUltimaker 2+の2台を使い分け。

水容器:中央にフォグメーカー設置穴、センサーケーブル用貫通穴、フロントにLCDスロット、取っ手、底面にスライドレールを設計。Simplify3Dでスライス、PLAフィラメントで出力。サポート除去が大変で穴が空いたため、後でモールディングで防水処理。

DIYスマートIoTデバイス:ATmega32U4、ESP8266、各種センサーで構築する植物栽培システム「GIY」

ネットポット:フォグと根の通気性を高めるため空洞を拡大、底部にボール形状のフィレットを追加して根誘導性向上。

DIYスマートIoTデバイス:ATmega32U4、ESP8266、各種センサーで構築する植物栽培システム「GIY」

底部構造・丸みコーナー:BigRepとUltimakerで出力、表面滑らかさを追求。

2D設計・レーザーカット

内部カバー用アクリルパーツ(緑:植物と調和、白:フロント/バック、透明:トップ)を5mmアクリルでレーザーカット(Epilog Fusion 60W)。Fusion 360からDXFエクスポートし、Rhinoで整理。

CNCフライス加工

構造フレーム用に18mm合板をCNC(e-sign Easy Worker MasterPro 2513、作業領域2600×1400mm)で加工。DXFからCAMでG-code生成、ゼロ点合わせ、彫刻→外形切断の順で実行。モールディング用型枠(10mm木材、7枚重ね)も同機で加工。

モールディング・キャスティング(水容器防水化)

CNCで削った型枠に真空成形(Formech手動真空成形機)で薄いシートを成形。型離れが悪いため、まず薄い層を1枚成形し、シリコンスプレーを吹いてから本体層を重ね成形する2段階法で成功。

DIYスマートIoTデバイス:ATmega32U4、ESP8266、各種センサーで構築する植物栽培システム「GIY」

最終組み立て

構造フレーム組み立て → RGB LEDストリップ4分割はんだ付け → センサー配線・基板固定 → 完成!

DIYスマートIoTデバイス:ATmega32U4、ESP8266、各種センサーで構築する植物栽培システム「GIY」

DIYスマートIoTデバイス:ATmega32U4、ESP8266、各種センサーで構築する植物栽培システム「GIY」

最終プレゼンテーション動画

© 2017 Albot Dima. All rights reserved | Creative Commons BY-NC-SA 4.0
詳細: Fab Academyアーカイブ

回路図

DIYスマートIoTデバイス:ATmega32U4、ESP8266、各種センサーで構築する植物栽培システム「GIY」

DIYスマートIoTデバイス:ATmega32U4、ESP8266、各種センサーで構築する植物栽培システム「GIY」

製造プロセス

  1. 名刺サイズPCBで作る4×4三目並べゲーム - 設計・製作・プログラミングガイド
  2. スマートホーム連携向けマルチポジション温度センサーシステム
  3. 862D+はんだごて用DIY温度コントローラー:精度と信頼性を両立
  4. MotionSense: ArduinoとESP8266で作るスマート侵入検知システム
  5. 3Dプリンター火災予防:スマートセンサーセーフティシステム
  6. Arduino、Yaler、IFTTTでWeb対応IoTゲージを構築する
  7. Arduinoで作る斥力式磁気浮上装置: シンプル回路とDIYガイド
  8. 高度なリモートコントロールグリッパーロボット: 精密ハンドリング向け
  9. 高性能 Arduino 気象観測気球データロガーの製作ガイド
  10. ArduFarmBot Part 2:リモートIoT制御ステーションの構築
  11. CoroFenceサーマルディテクター:Grid-EYE & PIRセンサー搭載IoT体温監視