Гидропоника Arduino, как построить сенсорную станцию ​​с онлайн-панелью — Наука в гидропонике

связанныйrssYouTubeинстаграм

В предыдущем посте о гидропонике Arduino я рассказал о некоторых простейших проектах, которые вы можете построить с помощью Arduino. Мы также говорили о том, как можно неуклонно продвигаться к более сложным проектам, если начать с правильных досок и щитов. В этом посте я покажу вам, как создать простую сенсорную станцию, которая измеряет влажность среды, а также подключается к бесплатной платформе панели мониторинга (flespi). Arduino будет принимать и отображать показания датчика и передавать их через Интернет, где мы сможем отслеживать их с помощью специальной приборной панели. Этот проект не требует прототипов или навыков пайки.

Гидропоника Arduino, как построить сенсорную станцию ​​с онлайн-панелью — Наука в гидропонике
Arduino Wifi Rev2, подключенный к датчику влажности, передает показания на сервер MQTT, размещенный на flespi, который создает онлайн-панель.

Идея этого проекта состоит в том, чтобы предоставить вам простой старт в мир гидропоники Arduino и интерфейса IoT. Хотя проект довольно прост, вы можете использовать его в качестве основы для дальнейшего развития. Вы можете добавить больше датчиков, улучшить отображение, создать более сложные информационные панели и т. д.

Что тебе понадобится

Для этой сборки мы будем использовать Arduino Wifi Rev2 и ЖК-экран от DFRobot. Для нашего датчика мы собираемся использовать эти недорогие емкостные датчики влажности. В этом примере проекта используется только один датчик, но к экрану ЖК-дисплея можно подключить до пяти датчиков. Поскольку этот проект будет подключен к Интернету, ему требуется доступ к подключенной к Интернету сети Wi-Fi.

Кроме того, вам также понадобится бесплатная учетная запись flespi. Перейдите на страницу flespi и создайте учетную запись, прежде чем продолжить работу над проектом. Вы должны выбрать вариант MQTT при создании учетной записи, так как проект использует протокол MQTT для передачи. После входа в свою учетную запись скопируйте токен, показанный на странице «Токены», так как он понадобится вам для настройки кода.

Гидропоника Arduino, как построить сенсорную станцию ​​с онлайн-панелью — Наука в гидропонике
Скопируйте токен из меню «Токены» в flespi

Библиотеки и код

В этом проекте используются библиотеки U8g2, ArduinoMQTTClient и WiFiNINA. Вы должны установить их, прежде чем пытаться запустить код. Приведенный ниже код — это все, что вам нужно для проекта. Убедитесь, что вы отредактировали код, чтобы ввести свой WiFi SSID, пароль и токен Flespi, прежде чем загружать его на Arduino. Это также предполагает, что вы подключите датчик влажности к аналоговому порту 2 вашего Arduino. При необходимости вы должны изменить переменную ANALOG_PORT, чтобы она указывала на правильный порт.

#include <Arduino.h>
#include <U8g2lib.h>
#include <WiFiNINA.h>
#include <ArduinoMqttClient.h>
#include <SPI.h>

#define SECRET_SSID "enter your wifi ssid here"
#define SECRET_PASS "enter your password here"
#define FLESPI_TOKEN "enter your flespi token here"
#define ANALOG_PORT  A2

#define MQTT_BROKER    "mqtt.flespi.io"
#define MQTT_PORT      1883

U8G2_ST7565_NHD_C12864_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
float capacitance;
WiFiClient wifiClient;
MqttClient mqttClient(wifiClient);

// checks connection to wifi network and flespi MQTT server
void check_connection()
{
  if (!mqttClient.connected()) {
    WiFi.end();
    WiFi.begin(SECRET_SSID, SECRET_PASS);
    delay(10000);
    mqttClient.setUsernamePassword(FLESPI_TOKEN, "");
    if (!mqttClient.connect(MQTT_BROKER, MQTT_PORT)) {
      Serial.print("MQTT connection failed! Error code = ");
      Serial.println(mqttClient.connectError());
      delay(100);
    }
  }
}

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(4, OUTPUT);
  Serial.begin(9600);
  analogReference(DEFAULT);
  check_connection();
}

void loop() {

  String moisture_string;
  check_connection();

  // read moisture sensor, since this is a wifiRev2 we need to set the reference to VDD
  analogReference(VDD);
  capacitance = analogRead(ANALOG_PORT);
  
  // form the string we will display on the Arduino LCD screen
  moisture_string = String(capacitance) + " mV";
  Serial.println(moisture_string);
  
  // send moisture sensor reading to flespi
  mqttClient.beginMessage("MOISTURE1");
  mqttClient.print(capacitance);
  mqttClient.endMessage();

  // the LCD screen only works if I reinitialize it on every loop
  // I also need to reset the analogReference for it to properly work
  analogReference(DEFAULT);
  u8g2.begin();
  u8g2.setFont(u8g2_font_crox3h_tf); 
  u8g2.clearBuffer();          // clear the internal memory
  u8g2.drawStr(10,15,moisture_string.c_str());  // write something to the internal memory
  u8g2.sendBuffer();          // transfer internal memory to the display

  delay(5000);
  
}

Теперь ваш Arduino должен подключиться к Интернету, снять показания с датчика влажности, отобразить их на ЖК-дисплее и отправить на flespi для записи. Обратите внимание, что отображение данных на ЖК-дисплее довольно примитивно. Это потому, что я не оптимизировал шрифт и не слишком много играл с интерфейсом. Однако этот код должен предоставить вам хороший шаблон, если вы хотите улучшить отображение.

Настроить Флеспи

Следующим шагом будет настройка flespi для записи и отображения наших показаний. Сначала щелкните параметр MQTT слева, а затем перейдите в «Доску MQTT» (нажмите кнопку, а не стрелку, которая открывает новую страницу). Здесь вы сможете добавить нового подписчика. «Подписчик» — это экземпляр, который прослушивает публикуемые сообщения MQTT, а «MOISTURE1» — это тема, в которой наш Arduino будет публиковать сообщения. Если вы хотите опубликовать данные для нескольких датчиков, вы должны дать каждому датчику свою тему, а затем добавить одного подписчика flespi для каждого датчика.

Гидропоника Arduino, как построить сенсорную станцию ​​с онлайн-панелью — Наука в гидропонике
Перейдите на flespi и создайте нового «подписчика», установите тему MOISTURE1.

Создать информационную панель

Последний шаг — использовать меню «MQTT Titles» для создания информационной панели. Я добавил виджет датчика на новую панель инструментов, а затем установил для него тему MOISTURE1, чтобы его данные обновлялись с помощью наших сообщений MQTT. Я установил минимальное значение 200; максимальное значение до 460; и низкий, средний и высокий уровни до 250, 325 и 400 соответственно.

Гидропоника Arduino, как построить сенсорную станцию ​​с онлайн-панелью — Наука в гидропонике
Используйте меню заголовков MQTT для добавления виджетов на новую панель инструментов.

После того, как вы закончите создание информационной панели, вы можете использовать кнопку «Получить ссылку», которая выглядит как ссылка из цепочки рядом с заголовком вашей информационной панели. Вам нужно будет создать дополнительный токен в меню «Токены», чтобы вы могли использовать его для совместного использования панели инструментов. После того, как вы сгенерируете ссылку, она должна быть общедоступной для всех, кто заинтересован. Это ссылка на панель инструментов, которую я создал.

Заключение

Вы можете создать простую и расширяемую сенсорную станцию, используя Arduino Wifi Rev2, емкостный датчик влажности и ЖК-экран. Эта станция может быть подключена к Интернету через Wi-Fi и отправлять свои данные на flespi, что позволяет нам создавать бесплатные онлайн-панели. Вы можете расширить возможности этой сенсорной станции, добавив дополнительные датчики влажности или любые другие датчики, совместимые с Gravity Shield, например датчик BME280 для измерения температуры, влажности и атмосферного давления.

Фейсбуктвиттерреддитпинтерестсвязанный