РосГородник

ROB-53491

 

Принципиальная схема робота

Рос-Городник - отечественный робот для ухода за огородом и комнатными теплицами.

Актуальность нашей задачи заключается, в том, что многие люди пренебрегают уходом за растениями, и, из-за этого многие растения погибают. Именно, из-за этого мы решили разработать нашего робота, который лишает человека, таких рутинных задач, в области ухода за растениями. 

Новизна нашего проекта заключается, в том, что в нашей необъятной стране нет таких функциональных и дешёвых роботов-огородников, которые могут ухаживать за растениями. 

Цель нашего проекта, создать робота-огородника, который сможет полностью ухаживать за растениями без участия человека. 

Задача нашего проекта: создать систему авто полива, система обогрева и система контроля освещения.

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

Структура нашего робота: микроконтроллер, который управляет всем «железом», реле(2х), от одного идёт светодиодная лента, а от другого, помпа (для полива растений) и также разветвитель (для распределения воды по всей территории почвы), а также датчик влажности почвы подключенный к плате управления и датчик влажности и температуры воздуха.

Детали корпуса – это короб с 4 отверстиями: 1-ое для перепрошивки микроконтроллера, 2-ое для вывода шланга с водой от помпы, 3-ие для вывода проводов от помпы и 4-ое для питания от 220В.

Из механизмов в нашем проекте используется водяная помпа с макс. скоростью 100л/мин и потреблением 180 мА и рабочим напряжением 12В.

Мы рассчитываем развернуть полномасштабное производство таких роботов и сформировать вокруг робота инфраструктурный комплекс, который позволит обслуживать не только небольшие огороды, но и крупные сельскохозяйственные угодья. Наш робот может научиться работать совместно с БПЛА или комбайнами для наиболее эффективного использования разных ресурсов, а главное - времени работников.

Доступная компонентная база и модульная структура робота позволит подстроить его под гибкий спектр задач, ухаживать за различными культурами и определять в будущем готовность урожая или пригодность участка для той или иной растительности.

#include "Peripheral_management.h" // импортируем класс для работы с устройсвами
#include <iarduino_RTC.h> // импортируем биб. для часов реального времени
#include <EEPROM.h> // импортируем биб. для работы с EEPROM памятью
iarduino_RTC time(RTC_DS1307); // указывааем модель часов
unsigned long timing; // создаем переменую timing для использования в таймере 
int led = 4; // порт для реле к свет. ленте
int real_time; // переменая для хранения часа
int sensor = 0; // порт для подключения датчика влажности почвы
int sensor_avalue; // показатель датчика

PUMP pump(3, 0, 0, 300); // создания объекта класса pump и использованиия функции конструктора класса

void shine_on(){ // функция для включения реле для свет. ленте
  digitalWrite(led, HIGH);
}

void shine_off(){ // функция для выключения реле для свет. ленте
  digitalWrite(led, LOW);
}

int rtc(){ // функция для получения реального времени(часа)
  real_time = time.gettime("H");
  return real_time;
}

void setup(){
  pinMode(led, OUTPUT); // иницилизируем порт, как выход
  Serial.begin(9600); // включения и иницилизация serial port
  time.begin(); // иницилизация функции часов реального времени
  pump.set_Time(300); // установление времени полива
}

void set_data(int place, byte number){ // установление числа в ячейку
  EEPROM.update(place, number); 
}
int get_data(int place, byte number){ //чтение числа в ячейку
  return EEPROM.read(place); 
} 

void loop(){
  if (millis() - timing > 28800000){ // таймер на 8 часов
    timing = millis();
    sensor_avalue=analogRead(sensor); // чтение аналогового значения с датчика влажности почвы
    Serial.print(sensor_avalue); // вывод показателей в консоль для отладки
      if (sensor_avalue < 300){ // если значения датчика меньшя 300(сухая почва)
       pump.sway(); // вызов функции sway из класса
  }
  if (rtc < 19 and rtc > 7){ // если время от 8 часов до 20, то 
    shine_on(); // вызов функции включения ленты
  }else{
    shine_off(); // вызов функции выключения ленты
    }
  }
}

 

#pragma once
#include <Wire.h>                        
#include <TimeLib.h>
//импорт всех библиотек

class PUMP { // создания класса
  public:
  PUMP(int nRelayDrive, int sensor, int sensor_avalue, int time_for_water){ // создания функции конструктура
    nRelayDrive = nRelayDrive;
    sensor = sensor;
    sensor_avalue = sensor_avalue;
    time_for_water = time_for_water;
    pinMode(nRelayDrive, OUTPUT);
    // определения переменых
  }
  void set_Time(int time_for_water){ // функция чтобы менять время полива во время программы
    time_for_water = time_for_water;
  }
    void sway(){
    sensor_avalue=analogRead(sensor);
      Serial.print(sensor_avalue);
      digitalWrite(nRelayDrive, HIGH); // включаем реле
      delay(time_for_water);
      digitalWrite(nRelayDrive, LOW);
    //функция для включения реле для включения помпы
    }
  private:
    int nRelayDrive = 3 ; // пин 3 у нас для управления реле
    int sensor = 0;
    int sensor_avalue;
    int time_for_water;
};

Файлы

Добавлен 27.11.2023

Дополнительные файлы

Добавлен 27.11.2023

Добавлен 27.11.2023