Pro M5stack či M5stick jednotky lze zakoupit různé rozšiřovací moduly. Já jsem zde použil dohromady modul Earth pro měření odporu půdy a Relay s jednoduchým relátkem pro spínání zátěže. Při jejich kombinaci tedy můžeme ještě připojit čerpadlo s nádobou na vodu, které pak na základě naměřených hodnot Earth modulem můžeme spínat pomocí Relay modulu.

M5stack Earth a Relay moduly

Ukázkový program najdete níže, přičemž jeho popis můžete najít na videu, které je připojeno na konci návodu. Je v něm rovnou spojeno využití chování Earth modulu a ovládání Relay:

// M5 stack a jednotky Earth + Relay
// Měření odporu půdy a spínání relé
// navody.dratek.cz

// připojení potřebné knihovny
#include <M5StickC.h>
// nastavení čísel propojovacích pinů
#define PIN_AOUT 33
#define PIN_DOUT 32
#define PIN_RELE 26
// proměnné pro ukládání načtených dat
uint16_t analogRead_value = 0;
uint16_t digitalRead_value = 0;

void setup() {
  // zahájení komunikace s M5 stack
  M5.begin();
  // zahájení komunikace s napájecím čipem
  M5.Power.begin();
  // nastavení typů propojovacích pinů
  pinMode(PIN_AOUT, INPUT);
  pinMode(PIN_DOUT, INPUT);
  pinMode(PIN_RELE, OUTPUT);
  // výchozí vypnutí relé
  digitalWrite(PIN_RELE, LOW);
  // výpis základních informací na displej
  M5.Lcd.setRotation(1);
  M5.Lcd.setTextColor(YELLOW);
  M5.Lcd.setCursor(25, 2);
  M5.Lcd.printf("Zalevac kvetinn");
  M5.Lcd.setCursor(10, 30);
  M5.Lcd.print("Analog:");
  M5.Lcd.setCursor(10, 50);
  M5.Lcd.print("Digit: ");
}

void loop() {
  // vypsání starých údajů na displej černou
  // barvou pro jejich vymazání
  M5.Lcd.setCursor(80, 30);
  M5.Lcd.setTextColor(BLACK);
  M5.Lcd.printf("%dn", analogRead_value);
  M5.Lcd.setCursor(80, 50);
  M5.Lcd.printf("%dn", digitalRead_value);
  // načtení nových údajů z modulu
  analogRead_value = analogRead(PIN_AOUT);
  digitalRead_value = digitalRead(PIN_DOUT);
  // vypsání nových údajů žlutou barvou
  M5.Lcd.setTextColor(YELLOW);
  M5.Lcd.setCursor(80, 30);
  M5.Lcd.printf("%dn", analogRead_value);
  M5.Lcd.setCursor(80, 50);
  M5.Lcd.printf("%dn", digitalRead_value);
  // pokud je načtená analogová hodnota
  // větší než naše mez (max 4095),
  // tak sepneme výstup na relé
  if (analogRead_value > 3000) {
    digitalWrite(PIN_RELE, HIGH);
  }
  // v opačném případě vypneme relé
  else {
    digitalWrite(PIN_RELE, LOW);
  }
  // krátká pauza před novým během smyčky
  delay(100);
}

Celý záznam:

Na eshopu můžete tyto M5stack moduly zakoupit zde:
https://dratek.cz/arduino/20926-m5stack-esp32-grey-vyvojovy-kit-pro-iot.html
https://dratek.cz/arduino/20872-m5stack-rele-modul-3a.html
https://dratek.cz/arduino/20870-m5stack-senzor-pudni-vlhkosti.html

FB tw

Další podobné články