Роботы

Робот для полива растений

В этой статье мы вместе с мастером-самодельщиком рассмотрим изготовление робота для полива растений.
Мозгом робота является Ардуино и работает он следующим образом
Первоначально он двигается вперед по прямой линии. Когда он обнаружит цветочный горшок с помощью ультразвукового датчика, он останавливается.

После этого рука робота начнет двигаться вниз, пока не упирается в почву почву в цветочном горшке.
В этот момент датчик влажности начинает работать и передает данные о влажности почвы на Arduino.
Если в почве недостаточно влаги — он начинает поливать почву водой до тех пор, пока уровень влажности не достигнет оптимального уровня.
Если в почве достаточно влаги — робот проигнорирует этот цветочный горшок и начнет проверять другой горшок.
В конце статьи можно будет посмотреть демонстрационный ролик с работой такого устройства.

Инструменты и материалы:
-Arduino UNO;
-Мотор-редуктор 2-100 об / мин;
-Колеса;
-Винты;
-Зажимы;
-Деталь из акрила (длинный и узкий прямоугольник);
-Держатель батареи;
-Драйвер мотора L293D;
-Серводвигатели SG90;
-Насос;
-Ультразвуковые датчики;
-Зарядный модуль TP4056;
-Датчик влажности;
-Перемычки;
-Li-on батарея;
-Деревянный ящик;
-Пластиковый контейнер;

Шаг первый: установка колес
К небольшому деревянному ящику мастер прикручивает четыре кронштейна. К кронштейнам прикручивает моторедукторы и устанавливает на их оси колеса.

Шаг второй: ультразвуковые датчики
Закрепляет на корпусе ультразвуковой датчик.

Закрепляет батарейный отсек.

Шаг третий: рычаг
Теперь нужно сделать рычаг или руку. Ее мастер сделал из узкой пластинки из акрила. На конце пластинки крепиться датчик влажности и ультразвуковой датчик. Второй конец пластинки крепится на концах двух серводвигателей.

Сервоприводы крепятся к верхней части корпуса.

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

Шаг четвертый: электромонтаж
Теперь нужно смонтировать электрическую часть. Схема подключения ниже.

К контактам моторедукторов припаивает провода.

Плату L293D размещает между батарейными отсеками.

В верхней части корпуса сверлит отверстие для проводов серводвигателя, датчика влажности и ультразвукового датчика. Подключает провода к плате.

Устанавливает модуль зарядки и переключатель.

Шаг пятый: код
После сборки устройства нужно загрузить код. Скачать его нужно ниже.

 Показать / Скрыть текст// ********CODE BY KHURAFATI BABA (SARTHAK MISHRA)********** // ********CODE BY KHURAFATI BABA (SARTHAK MISHRA)********** #include //For adding the library of shield #include //For adding the library of servo motor Servo m1; //Variable of servo motor 1 Servo m2; //variable of servo motor 2 int pos; //Variable that will define the postion of servos const int trigPin = A0; //Defines the trig pin of ultrasonic sensor 1st const int echoPin = A1; //Defines the echo pin of ultrasonic sensor 1st const int trigPin1=A2; //Defines the trig pin of ultrasonic sensor 2nd const int echoPin1=A3; //Defines the echo pin of ultrasonic sensor 2nd int mpin = A4; //Defines the pin of moisture sensor pin int mout; //Variable to store the value given by moisture sensor long duration, duration1; //Variable that stores the duration value given by ultrasonic sensor int distance, distance1; //Variable that stores the distance value calculated by the formaula AF_DCMotor motor1(1, MOTOR12_1KHZ); //Defines the frequency which will be given to motor 1 AF_DCMotor motor2(2, MOTOR12_1KHZ); //Defines the frequency which will be given to motor 2 AF_DCMotor motor4(4, MOTOR12_1KHZ); void setup() { Serial.begin(9600); //starts serial communication with the arduino and PC pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(trigPin1, OUTPUT); pinMode(echoPin1, INPUT); m1.attach(10); //Define the attached pin for servo motor 1 m2.attach(9); //Define the attached pin for servo motor 1 m1.write(0); m2.write(120); motor1.setSpeed(255); //To set the particular speed of motor 1 motor2.setSpeed(255); //To set the particular speed of motor 2 } void loop() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance= duration*0.034/2; digitalWrite(trigPin1, LOW); delayMicroseconds(2); digitalWrite(trigPin1, HIGH); delayMicroseconds(10); digitalWrite(trigPin1, LOW); duration1 = pulseIn(echoPin1, HIGH); distance1= duration1*0.034/2; if (distance>=15) { Forward(); delay(100); } else if(distance<15) { Stop(); delay(70); digitalWrite(trigPin1, LOW); delayMicroseconds(2); digitalWrite(trigPin1, HIGH); delayMicroseconds(10); digitalWrite(trigPin1, LOW); duration1 = pulseIn(echoPin1, HIGH); distance1= duration1*0.034/2; if(distance1>=6) { servoF(); delay(100); } } mout=analogRead(mpin); if(distance1<6 && mout<=500) { servoB(); delay(100); Forward(); delay(1000); } if(distance1<6 && mout>500) { while(mout>500) { motor4.run(FORWARD); mout=analogRead(mpin); if(mout<=500) { motor4.run(RELEASE); delay(100); break; } } } } void Stop() { motor1.run(RELEASE); motor2.run(RELEASE); } void Forward() { motor1.run(FORWARD); motor2.run(FORWARD); } void servoF() { Serial.println("servo forward is fine"); delay(100); for (pos=0;pos<=120;pos+=1) { digitalWrite(trigPin1, LOW); delayMicroseconds(2); digitalWrite(trigPin1, HIGH); delayMicroseconds(10); digitalWrite(trigPin1, LOW); duration1 = pulseIn(echoPin1, HIGH); distance1= duration1*0.034/2; if(distance1>6) { m1.write(pos); m2.write(120-pos); } } } void servoB() { Serial.println("Servo back is fine"); delay(100); for(pos=120;pos>=0;pos-=1) { { m1.write(pos); m2.write(120-pos); } delay(30); } }
Корпус робота-поливальщика можно покрасить в любой цвет. И конечно, нужно установить емкость с водой и поместить туда насос.

Все готово, а на видео можно посмотреть процесс сборки и демонстрацию его работы.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Кнопка «Наверх»

Яндекс.Метрика
Закрыть
Закрыть