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

Arduino・WiFi・IFTTTで実現するオフィス植物自動水やりシステム

必要な部品と材料

部品名数量
Arduino Due / Zero / Anduino WiFiシールド対応ボード1
Andium Anduino WiFiシールド(またはWiFi接続可能なArduino)1
静電容量式土壌水分センサー1

使用ツール・サービス

プロジェクト概要

動機

Andiumオフィスに観葉植物を置いたものの、水やりを忘れて1週間で枯らせてしまいました。IoT企業としてこれは失格。Anduino WiFiシールドとIFTTTで植物に「声」を与え、水不足を通知するシステムを構築しました。
Arduino・WiFi・IFTTTで実現するオフィス植物自動水やりシステム Arduino・WiFi・IFTTTで実現するオフィス植物自動水やりシステム

始める前に

緑の指(園芸上手)の方は読む必要ないかも。私のように植物にデジタルで助けを求めさせたい人向けです。必要なもの: Arduino Due/Zero、Anduino WiFiシールド(またはAdafruit IO対応WiFi Arduino)、静電容量式土壌水分センサー、そして水(完成後に植物へ)。
Arduino・WiFi・IFTTTで実現するオフィス植物自動水やりシステム

水分センサーについて

湿った土に浸して使う数少ないセンサーの一つ。白線より下のみ浸水可能。それ以上は防水されていないので注意。
Arduino・WiFi・IFTTTで実現するオフィス植物自動水やりシステム 水やり時もセンサーの白線より上を濡らさないよう注意。

静電容量式土壌水分センサーのキャリブレーション

センサーは3線式: 3.3V(赤)、GND(黒)、信号(青)をアナログピンA1に接続。完全乾燥時と水没時(白線まで)の2点でキャリブレーションし、0-100%相対湿度の閾値を決定します。
Arduino・WiFi・IFTTTで実現するオフィス植物自動水やりシステム 筆者の環境では乾燥時807、水没時415でした。

キャリブレーション用スケッチ

int inputPin = A1;
void setup() {
  Serial.begin(115200);
  delay(3000);
}
void loop() {
  Serial.print("Raw val: ");
  Serial.println(readHumidity());
  delay(3000);
}
int readHumidity() {
  int sensorVal = analogRead(inputPin);
  return sensorVal;
}

メインスケッチ

#include <WiFi101.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
#include "AnduinoLCD.h"

// WiFiパラメータ
#define WLAN_SSID "YourSSID"
#define WLAN_PASS "YourPassword"

// Adafruit IO
#define AIO_SERVER "io.adafruit.com"
#define AIO_SERVERPORT 1883
#define AIO_USERNAME "your_username"
#define AIO_KEY "your_aio_key"

WiFiClient client;
Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);

Adafruit_MQTT_Publish humidityVal = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/officePlants");
AnduinoLCD LCD = AnduinoLCD(ST7735_CS_PIN, ST7735_DC_PIN, ST7735_RST_PIN);

int inputPin = A1;
const int dryVal = 807;  // ご自身の乾燥時値に変更
const int wetVal = 415;  // ご自身の水没時値に変更
int humidity = 0;
int humidityPrev = 0;
int relHumidity = 0;

void setup() {
  Serial.begin(115200);
  delay(3000);
  connectToWiFi();
  connectToAdafruit();
  LCD.begin();
  LCDinit();
}

void loop() {
  if (!mqtt.ping(3)) {
    if (!mqtt.connected()) connect();
  }
  humidity = readHumidity();
  
  char b[4];
  String str = String(humidity);
  for (int i = 0; i < str.length(); i++) b[i] = str.charAt(i);
  b[str.length()] = 0;
  
  if (!humidityVal.publish((char*)b)) {
    Serial.println("Failed to publish humidity");
  } else {
    Serial.print("Humidity published: ");
    Serial.println(humidity);
    displayHumidity(humidity, humidityPrev);
  }
  Serial.print("Humidity: ");
  Serial.print(humidity);
  humidityPrev = humidity;
  delay(600000); // 10分ごと
}

// 以下、接続・表示・変換関数省略(元コード参照)
// relHumidity = map(sensorVal, dryVal, wetVal, 0, 100); で0-100%変換

必要ライブラリ: WiFi101, Adafruit_MQTT, AnduinoLCD。ご自身のdryVal/wetValに書き換えてください。10分ごとにAdafruit IOへ湿度データを送信。
Arduino・WiFi・IFTTTで実現するオフィス植物自動水やりシステム

IFTTTで閾値通知設定

相対湿度が20%未満になったらTwitter(@andiumPlants)で「水をくれ」と通知するようIFTTT設定。
Arduino・WiFi・IFTTTで実現するオフィス植物自動水やりシステム Arduino・WiFi・IFTTTで実現するオフィス植物自動水やりシステム Arduino・WiFi・IFTTTで実現するオフィス植物自動水やりシステム

今後の展開

植物に「声」を与えるクリエイティブな方法は他にも。Anduino WiFiと土壌センサーで独自システムを作ってみてください!

ライブラリ

Anduinoライブラリ: GitHub

製造プロセス

  1. 肥料:科学、生産、持続可能な未来
  2. Bluetooth操作のArduinoスパイボットを自作する
  3. FlickMote:ジェスチャー操作のIRリモコンでスマートホームを制御
  4. 自作Arduino TV-B-Gone:全テレビ対応の万能リモコン
  5. 12メートル先から見える大型LEDマスタークロック(アラーム機能付き)を自作しよう
  6. ArduinoとBluetoothで作るスマート紛失防止タグ「Find Me」
  7. Arduinoプロジェクトのための最適化電源ソリューション
  8. Arduino三目並べ:MAX7219 LEDマトリクスと段ボールケースで自作
  9. TinyMLで植物の健康状態を診断:実践ガイド
  10. スマートArduino四足歩行ロボットの製作:ステップバイステップガイド
  11. ゲーム用カスタムArduinoジョイスティックハンドルの製作