Operácie

Automatické zavlažovanie: Rozdiel medzi revíziami

Zo stránky SensorWiki

StudentMIPS (diskusia | príspevky)
StudentMIPS (diskusia | príspevky)
Riadok 41: Riadok 41:
<tab name="AVR C-code"><syntaxhighlight  lang="c++" style="background: LightYellow;">
<tab name="AVR C-code"><syntaxhighlight  lang="c++" style="background: LightYellow;">
#include <avr/io.h>
#include <avr/io.h>
#include <util/delay.h>
#define RELAY_PIN    PD7
#define PRAH_SUCHO  350
#define PRAH_VLHKO  250
#define CAS_PUMPY_MS 2000
#define PUMPA_ON()  PORTD &= ~(1 << RELAY_PIN)
#define PUMPA_OFF()  PORTD |=  (1 << RELAY_PIN)
void adc_init(void)
{
ADMUX = (1 << REFS0);
ADCSRA = (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1);
}
uint16_t adc_citaj(uint8_t kanal)
{
ADMUX = (ADMUX & 0xF0) | (kanal & 0x0F);
ADCSRA |= (1 << ADSC);
while (ADCSRA & (1 << ADSC));
return ADC;
}


int main(void)
int main(void)
{
{
  unsigned int measuredValue;
DDRD |= (1 << RELAY_PIN);
PUMPA_OFF();
adc_init();
 
while (1)
{
uint16_t vlhkost = adc_citaj(0);


  while (1)
if (vlhkost > PRAH_SUCHO)
  {
{
    /*  relax  */ 
PUMPA_ON();
  }
_delay_ms(CAS_PUMPY_MS);
PUMPA_OFF();
_delay_ms(5000);
}


  return(0);
_delay_ms(500);
}
return 0;
}
}



Verzia z 11:57, 5. jún 2026

Záverečný projekt predmetu MIPS / LS2026 - Dávid Vričan


Zadanie

Cieľom môjho projektu bolo zostrojiť systém automatického zavlažovania rastlín pomocou snímača vlhkosti pôdy a pumpičky. Systém pomocou kapacitného senzora priebežne meria vlhkosť pôdy. Keď vlhkosť klesne pod nastavenú hranicu, mikrokontrolér ATmega328P automaticky zapne pumpičku cez relé, ktoré začne čerpať vodu do kvetináča. Po dosiahnutí požadovanej vlhkosti sa pumpička automaticky vypne.

Vývojová doska Arduino UNO.

Literatúra:


Analýza a opis riešenia

Arduino UNO (klon s ATmega328P) — hlavná riadiaca jednotka Kapacitný senzor vlhkosti pôdy v1.2 — meria vlhkosť pôdy, analógový výstup (AOUT) pripojený na pin A0 Relé 1 kanál 5V — spína napájanie pumpičky, ovládaný digitálnym pinom D7 Minipumpa 5V DC — čerpá vodu z rezervoára do kvetináča Breadboard — prepojenie komponentov bez spájkovania Jumper káble — prepojenie pinov

Zapojenie je realizované na breadboarde. Kapacitný senzor vlhkosti pôdy je napájaný z 5V pinu Arduina a jeho analógový výstup (AOUT) je pripojený na pin A0 mikrokontroléra. Relay modul je napájaný taktiež z 5V a jeho ovládací pin IN je pripojený na digitálny pin D7. Pumpička je zapojená cez spínacie kontakty relay modulu (COM a NO). Celý systém je napájaný cez USB kábel z počítača.

Celkový pohľad na zariadenie.

Nezabudnite doplniť schému zapojenia! V texte by ste mali opísať základné veci zo zapojenia, samotná schéma nie je dostačujúci opis.

Schéma zapojenia.


Algoritmus a program

Algoritmus programu využíva toto a toto, základné funkcie sú takéto a voláma ich tuto... Výpis kódu je nižšie...


#include <avr/io.h>
#include <util/delay.h>

#define RELAY_PIN    PD7
#define PRAH_SUCHO   350
#define PRAH_VLHKO   250
#define CAS_PUMPY_MS 2000

#define PUMPA_ON()   PORTD &= ~(1 << RELAY_PIN)
#define PUMPA_OFF()  PORTD |=  (1 << RELAY_PIN)

void adc_init(void)
{
	ADMUX = (1 << REFS0);
	ADCSRA = (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1);
}

uint16_t adc_citaj(uint8_t kanal)
{
	ADMUX = (ADMUX & 0xF0) | (kanal & 0x0F);
	ADCSRA |= (1 << ADSC);
	while (ADCSRA & (1 << ADSC));
	return ADC;
}

int main(void)
{
	DDRD |= (1 << RELAY_PIN);
	PUMPA_OFF();
	adc_init();

	while (1)
	{
		uint16_t vlhkost = adc_citaj(0);

		if (vlhkost > PRAH_SUCHO)
		{
			PUMPA_ON();
			_delay_ms(CAS_PUMPY_MS);
			PUMPA_OFF();
			_delay_ms(5000);
		}

		_delay_ms(500);
	}
	return 0;
}
#include <avr/io.h>

void adc_init(void);                                   // A/D converter initialization

unsigned int adc_read(char a_pin);

Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x zdrojaky.zip:

Zdrojový kód: zdrojaky.zip

Overenie

Ako ste overili funkciu, napríklad... Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. Na konci uvádzame fotku hotového zariadenia.

Aplikácia.

Video:

Čo by som urobil inak

Zamyslite sa spätne nad problémom, ktorý ste riešili a napíšte, čo sa vám nepodarilo a nabudúce by ste spravili inak.


Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.