Plant Caretaker

Introducere

Îngrijitorul automat de plante monitorizeaza umiditatea solului, temperatura și lumina la care se expune planta și o udă atunci cand umiditatea este sub un anumit prag. Informațiile măsurate de senzori vor fi afișate pe un LCD și vor fi semnalate corespunzător prin LED-uri.

Plant Caretaker este util pentru toți posesorii de plante. Ideea de la care am pornit este că studenții iși petrec timpul în locații diferite (facultate, acasa, camin, în chirie, în vacanțe, etc.) iar plantele lor sunt lăsate în urma. Am dezvoltat aceasta idee și am adus cateva îmbunătățiri astfel încât, Plant Caretaker este un ajutor constant în îngrijirea plantelor.

Descriere generală

Hardware Design

Lista de piese

  • Placa PM Atmega324A-PU
  • Componentele de baza
  • Mini Pompă de Apă Submersibilă
  • Modul cu senzor de umiditate a solului
  • Senzor de nivel al apei
  • Senzor de temperatură
  • Modul senzor de lumina ambientala
  • LED x4
  • Potentiometru
  • Driver de Motoare Dual L9110S

Schema electrica

Software Design

  • Mediu de dezvoltare: Sublime Text
  • Compilare(avr-g++): am creat un Makefile prin care se genereaza fisierele plantCaretaker.hex si plantCaretaker.el.
  • Biblioteci folosite:

Am folosit atât biblioteci disponibile în standardul C, cât și biblioteci create special, ale căror fisiere sursă sunt incluse în arhiva proiectului.

#include <util/delay.h>
#include "lcd.h"
#include <string.h>
#include <stdlib.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdio.h>
#include "ADC_sensors.h"
#include <math.h>
  • Macrodefinitii

- Constante alese de mine experimental care insa se pot adapta la tipul plantei.

#define LUMINA_SLABA 200
#define NIVEL_APA_SCAZUT 300
#define UMIDITATE_SCAZUTA 8
#define TEMPERATURA_SCAZUTA 10

- Constante folosite in implemntarea ecuatiei Steinhart-Hart pentru a determina temperatura in grade Celsius.

#define SERIESRESISTOR 10000
#define NOMINAL_RESISTANCE 10000
#define NOMINAL_TEMPERATURE 25
#define BCOEFFICIENT 3950
#define ACOEFICIENT 90
#define CELSIUS 273.15
  • Lucrul cu senzorii

Am folosit 4 senzori analogici prin care obtin masuratori cu privire la: lumina ambientala, umiditatea solului, nivelul apei si temperatura. Folosesc convertorul analog-digital si sistemul de intreruperi integrate in microcontroller.

Functia initializeaza Timer1 pentru a genera o intrerupere care sa porneasca ADC-ul la fiecare 100ms.

void TIMER1_init()
{
    // initializare timer pentru COMPA la 100ms
    TCCR1B = (5 << CS10) | (1 << WGM12);
    TIMSK1 |= (1 << OCIE1A);
    OCR1A = 1561;
}

Conversia temperaturii Ecuatia Steinhart–Hart

int convert_temperature(int adc_value_temperature) {
	float Resistance;
	Resistance = (1023 / adc_value_temperature) - 1;
	Resistance = SERIESRESISTOR / Resistance;
	float steinhart;
	steinhart = Resistance / NOMINAL_RESISTANCE; // (R/Ro)
	steinhart = log(steinhart); // ln(R/Ro)
	steinhart /= BCOEFFICIENT; // 1/B * ln(R/Ro)
	steinhart += 1.0 / (NOMINAL_TEMPERATURE + 273.15); // + (1/To)
	steinhart = 1.0 / steinhart; // Invert
	steinhart -= CELSIUS + ACOEFICIENT; // conversie la grade celsius
	return steinhart;
}

Rezultate Obţinute

Proiectul este functional.

Imagini cu toate piesele asamblate ce intră în componența proiectului.

  1. Ansamblul
  2. Pompa si senzorul de nivel al apei
  3. LED-urile si senszorul de temperatura
  4. Planta si senzorul de umiditate

Concluzii

Acest proiect a fost o adevarata provocare intrucat a fost realizat de la zero: idee, hardware, software, testare, etc.. Cel mai mult mi-a placut sa iau fiecare senzor in parte, sa il testez, sa ma gandesc la niste valori potrivite pentru planta pe care am testat. Anterior am avut cateva impedimente in ceea ce privesc senzorii, dar pana la urma, cu rabdare, le-am rezolvat, iar satisfactia este pe masura.

In concluzie, consider ca proiectul este util avand in vedere ce am invatat pe parcursul realizarii lui.

Download

Bibliografie/Resurse

pm/prj2019/mlungoci/87695.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0