Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Автоматическая система полива офисных растений на Arduino, WiFi и IFTTT

Компоненты и материалы

Arduino Due 1 шт.
Andium Anduino WiFi 1 шт.
Arduino Zero 1 шт.
Ёмкостной датчик влажности почвы 1 шт.

Приложения и сервисы

О проекте

Мотивация

В Andium переехали в новый офис, украсили растениями. Забыли поливать — через неделю растения завяли.

Автоматическая система полива офисных растений на Arduino, WiFi и IFTTT
Автоматическая система полива офисных растений на Arduino, WiFi и IFTTT

Мы IoT-компания, мы лучше этого. Почему растения не подключены к интернету! Срочно делаем решение на anduinoWiFi shield и IFTTT. Даём растениям голос!

Начало работы

Если у вас зелёный большой палец — вы уже не читаете. Если как я — нужно дать растениям умолять о воде цифровым способом — вы по адресу.

Нужен Arduino Due или Zero, anduinoWiFi shield (или любой WiFi Arduino, говорящий с Adafruit IO) и ёмкостной датчик влажности почвы. И стакан воды (дайте растению когда закончим, оно скажет спасибо по email).

Автоматическая система полива офисных растений на Arduino, WiFi и IFTTT

Датчик влажности

Датчик классный — его можно погрузить в мокрую землю. Не погружайте ниже белой линии — контакты не выдержат.

Автоматическая система полива офисных растений на Arduino, WiFi и IFTTT
Автоматическая система полива офисных растений на Arduino, WiFi и IFTTT

Зачем датчик в стакане воды? Для калибровки!

Калибровка ёмкостного датчика влажности почвы

Три провода: 3.3V (красный), земля (чёрный), сигнал (синий) → аналоговый пин A1. Калибруем: сухой датчик → значение dryVal, погружённый до белой линии в воду → wetVal. Это 0-100% относительной влажности.

Подключите датчик, запустите скетч, запишите результаты. У меня dryVal=807, wetVal=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 parameters
#define WLAN_SSID "Andium"
#define WLAN_PASS "maybeitsjustpassword"
// Adafruit IO
#define AIO_SERVER "io.adafruit.com"
#define AIO_SERVERPORT 1883
#define AIO_USERNAME "yourusernname"
#define AIO_KEY "dosifje0j230fj32lksdfj230ff23"
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= 0) mqtt.disconnect();
    Serial.println(F("Retrying connection..."));
    delay(1000);
  }
  Serial.println(F("Adafruit IO Connected!"));
}
void displayHumidity(int humidity, int humidtyPrev) {
  LCD.setTextColor(ST7735_BLACK);
  LCD.setTextSize(2);
  LCD.setTextWrap(true);
  LCD.setCursor(40,60);
  LCD.setTextSize(5);
  LCD.print(humidityPrev);
  LCD.setTextSize(2);
  LCD.print("%");
  LCD.setTextColor(ST7735_WHITE);
  LCD.setTextSize(2);
  LCD.setTextWrap(true);
  LCD.setCursor(40,60);
  LCD.setTextSize(5);
  LCD.print(humidity);
  LCD.setTextSize(2);
  LCD.print("%");
}
void connectToWiFi() {
  delay(10);
  Serial.print(F("Connecting to "));
  Serial.println(WLAN_SSID);
  WiFi.begin(WLAN_SSID, WLAN_PASS);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(F("."));
  }
  Serial.println(F("WiFi connected!"));
}
void connectToAdafruit() { connect(); }
void LCDinit() {
  LCD.setBacklight(ON);
  LCD.fillScreen(ST7735_BLACK);
  LCD.showBanner();
  LCD.setTextColor(ST7735_WHITE);
  LCD.setTextSize(2);
  LCD.setTextWrap(true);
  LCD.setCursor(0,40);
  LCD.print("Humidity: ");
}
int readHumidity() {
  int sensorVal = analogRead(inputPin);
  relHumidity = map(sensorVal, dryVal, wetVal, 0, 100);
  Serial.println("relHumidity");
  Serial.print(relHumidity);
  return relHumidity;
}

Скопируйте в IDE, установите библиотеки: WiFi101, Adafruit_MQTT, AnduinoLCD. Подставьте свои калиброванные dryVal и wetVal.

Если всё ок — каждые 10 минут публикуются показания. Скриншот показаний:

Автоматическая система полива офисных растений на Arduino, WiFi и IFTTT

Теперь используем IFTTT для порогового уведомления.

IFTTT порог

Настроил порог: когда относительная влажность почвы падает ниже 20%, растения твитят (@andiumPlants) просьбу о поливе.

Автоматическая система полива офисных растений на Arduino, WiFi и IFTTT
Автоматическая система полива офисных растений на Arduino, WiFi и IFTTT
Автоматическая система полива офисных растений на Arduino, WiFi и IFTTT

Что дальше?

Фантазируйте! Как ещё дать растениям голос. Берите anduinoWiFi и датчик почвы и творите!

Код

Anduino

Библиотека Arduino для Andium(Anduino) shield. Превратите Arduino в AndiumNode. GitHub

Производственный процесс

  1. Удобрения: наука, производство и устойчивое будущее
  2. Сборка Bluetooth-робота-шпиона на Arduino с управлением с телефона
  3. FlickMote: жестовое IR-пульт для умного дома на Arduino 101 и ультразвуковом датчике
  4. DIY Arduino TV-B-Gone: универсальный пульт для выключения любого телевизора
  5. Создание пользовательских LED-часов с будильником — видно с 12 метров
  6. Find Me: Умный поисковик вещей на Arduino и Bluetooth
  7. Оптимизированные решения питания для проектов на Arduino
  8. Крестики-нолики на Arduino с матрицей MAX7219 и картонным корпусом
  9. Оценка здоровья растений с TinyML: Практическое руководство
  10. Пошаговое руководство: сборка умного четырёхногого робота на Arduino