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.
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