Irigarea automată a camerelor cu Arduino. Robimo autosuflare roslin pentru Arduino ajuta cronometre electronice cu keruvans software

Irigarea automată a camerelor cu Arduino. Robimo autosuflare roslin pentru Arduino ajuta cronometre electronice cu keruvans software


Ard o cameră... La magazinele tematice, vând un astfel de design la un preț nebunesc. Cu toate acestea, costă atât cât mașina reglează independent „porturile” pentru cultivator.

La readachev-ul tău, este posibil să instalezi puterea automată pe arduino. Microcontrolerul din acest vypadku este reprezentat de sistemul de control al atașamentelor periferice.

Instrumente și periferice necesare pentru implementarea proiectului „Avtopoliv” pe baza microcontrolerului Arduino

Irigator - controlul scăzut al umidității solului. Atașat la transferul de date către senzor, care este, de asemenea, proiectat pentru irigarea automată a șobulețului robotului. Pentru plierea programelor, puteți utiliza programul C ++.

Tabel cu materialele necesare:

componentă a descrie
Microcontroler Arduino Uno Platforma este stocată în 2 părți: software-ul este hardware. Codul pentru închiderea dispozitivelor de octeți este programat pe un middleware fără bobină - Arduino IDE.

Pentru a instala programul pe microcontroler, trebuie să adăugați un cablu USB. Pentru roboții autonomi, cumpărați o unitate de locuit de 10 V.

Există 12 pini pe platformă, rolul acestor poli în introducerea și livrarea digitală. Coristuvach vibrează individual funcția știftului pielii.

cablu USB Obligatoriu în proiectarea sistemului de „udare automată pe Arduino” pentru codul transferat.
Placă senzor - Troyka Shield Pentru plata suplimentară, trebuie să conectați periferia senzorului cablurilor auxiliare. La margini, contactele sunt cusături 3 Pina - S + V + G.
împingeți blocul de borne Serviți ca fixator pentru fire de pachet. Designul este fixat în spatele butoanelor suplimentare de pe arcuri.
Unitate de locuit, echipamente cu intrare USB

Analizor de umiditate a solului

Ideal pentru conectarea platformelor. Proiectarea angrenajelor are un lichtar, adică despre știuletul roboților.

Pristosuvannya dă semnale, dacă pământul este copleșit sau lipsit de spațiu. Conexiunea înainte de plată se efectuează pentru 3 picături suplimentare.

● MAX gibini pentru îngropare în pământ - 4 cm;

● Alimentare MAX - 50 mA;

● Tensiune pentru pășunat - până la 4 V.

Pompați cu o țeavă pentru plictisit în apă Managementul este disponibil pentru asistența comutatorului. Cablul Dovzhin ajunge la 2 metri.
cheie de alimentare Proiectat pentru amestecarea și distribuirea unui miză electrică. Iakshcho vikoristovuvati atașament la construirea irigării automate Arduino, nu va fi nevoie de aderențe suplimentare. Conexiunea la panoul principal este, de asemenea, conectată cu 3 fire.
Linie telefonică furnizată - "batko-batko" Un pic de fire pentru a conecta anexele periferice.
Furnizați linia telefonică - „mama-batko” Realizarea creează, de asemenea, anexe la periferie.
apartament cu cameră Sistemul este potrivit pentru tip camera roslin.

Schema conexiunii și algoritmul roboților din proiectul „Avtopoliv” pe baza mk Arduino

Reprezentările inferioare sunt algoritmul și diagrama conexiunii la proiect pe platforma arduino. Apa automată va fi rangul ofensator:

  1. Dezvoltarea unei plăci pentru un senzor pe un microcontroler.
  2. Un analizor cheie pentru plată suplimentară, descris în alimente, până la un pin similar - A0.
  3. Senzorul este acceptat de microcontroler:
    1. Contact CS este conectat la pinul 9 de pe tablă.
    2. Contactele SPI funcționale sunt conectate la afișajul de pe aceeași placă.
  4. Tasta de alimentare este introdusă în pinul 4.
  5. Comutatorul este adus la comutatorul de alimentare în trandafiri, notat cu literele p +, p-.
  6. acum comutați pompă de apă din tubul din spatele blocului terminal auxiliar în contact cu literele l + і l-. Înainte de a construi o ființă umană, a fost solicitată o diagramă.
  7. Panou tactil încorporat, ca analiză a logicii, în menajeră cu o scrisoare.
  8. Tubul Kinets este introdus cu apă în sol. Dacă nu schimb 2 kg în același timp cu menajera în spatele vagonului, voi închide furtunul okremo. De asemenea, puteți arunca peste cearșaf pentru picături de apă.
  9. Cobor pompa de apă într-un dans, care amintește de apă.
  10. Pidklyuchaaєmo design la viața electrică.

Mai jos vă oferim două scheme alternative pentru anexa noastră:

Senzorul analizează starea acidității solului. Înainte de a introduce un irigator în sistem, este necesar să protestați și să afișați:

  1. Va înregistra vizualizările pe ecran. În același timp, senzorul trebuie blocat într-un olar uscat. Pentru a fi recunoscut, yak min vologosti.
  2. Pământul este udat odată cu creșterea. Chekaumo, dacă apa trebuie să reînvie solul înainte de sfârșit. Todi este afișat pe ecranul tactil pentru a afișa unul. Este necesar să notați responsabilitatea asupra proprietății. Tse înseamnă max vologosti.
  3. Voi nota notițele constantelor fizice HUM_MIN și HUM_MAX la aceste valori, deoarece bulo este corectat în rezultatul calibrărilor. Sensul prescris în program, deoarece este transferat la microcontroler.

Vishche a descris proiectarea autosuflării pentru un singur bilet. Cu toate acestea, printre iubitorii de camere, cabinele sunt amenajate de highlanders cu renunțările. Pe de o parte, sursa de alimentare este de asemenea pliabilă: este necesar să conectați autocolantul pompei și analizorul la sol. Ale іsnu este mult mai ieftin și mai simplu în proiectarea autosuflării.

La furtunul de la pompă, deschideți 25 de centimetri cu ajutorul unui punte. În otrimanі dіrochki, există pixuri shmatochki tăiate în format sac. Mergeți la geantă:

  • alpiniștii cu rozlini shykuyutsya la rând pe pidvіkonnі;
  • tubul este așezat pe menajera cu o minte mică, astfel încât apa din piele să se verse în menajera okremii;
  • voila: vinakhid udând toate liniile de creștere simultan.

Oră auto-selectată Koristuvach pentru udare, ale doar pentru o carte. În mod frecvent nu există cotații pentru aceeași dimensiune și dimensiune. Totuși, solul din munți se usucă în aceeași oră. Pentru multe invenții, metoda de combinare: numărul menajerelor este împărțit în grupuri de vagoane și dimensiuni.

Aplicat la codul pentru Arduino pentru proiectul „Auto-udare”

Trecem la codul programului:

// Biblioteca Zavanazhuєmo pentru afișarea robotică și comutați la programele #include "QuadDisplay2.h"; // Aceasta este o constantă care denotă contactul înainte ca pompa de apă să fie conectată // #define VODPOMPA_PIN 4; // Construiți o constantă, care denotă un contact, la care a fost conectat // un analizator al jurnalului pământesc #define HUM_PIN A0; // Min după volum #define HUM_MIN 200; // Max by vologosti #define HUM_MAX 700; // Ora schimbării udării #define INTER 60000 * 3; // Este o nebunie, în orice caz, valoarea valorii va fi luată. Unsigned int hum = 0; // În mijlocul unei modificări, vom face avansul orar nesemnat Mult timp = 0; // Obiectul Ogoloshuєmo din clasa QuadDisplay, apoi plăcuța de înmatriculare este transferată // către CS QuadDisplay contact dis (9); // Creați o metodă care va răspunde la configurarea unui robot de afișare (void) (// Rulați metoda begin (); // O funcție curată care va răspunde la ieșirea unei pompe de apă din // contact pinMode (VODPOMPA_PIN, OUTPUT); // afișajul luminează numărul - 0 dis.displayInt (0);) // Se creează metoda, care este afișată pentru indicatorul pentru un moment dat bucla de gol (nul) (// Indicatorul lui Rosrakhov pentru o moment dat int humNow = analogRead (HUM_PIN); // Dacă valoarea indicatorului nu este în față, atunci ... if (humNow! = Hum) (// Luați valoarea simultan hum = humNow; / / Vizualizați valoarea de pe ecran Afișează Int (humNow);) // Întreabă-mă: cum să scap de sarcini aproximativ o oră în // starea vologului în sol este mai mică decât este necesar, atunci ... dacă ( (Time == 0 || millis () - Time> INTER) && hum< HUM_MIN) { // Даем сигнал о начале работы водяной помпы digitalWrite(VODPOMPA_PIN, HIGH); //Объявляем потом, длящийся 2 секунды delay(2000); // Завершаем работу помпы digitalWrite(POMP_PIN, LOW); // Ставим в значение переменной Time текущее время и добавляем 3 минуты Time = millis(); } }

Înainte de asta, te poți minuna la câteva videoclipuri de la colegii noștri.


Această statistică va descrie modul în care trebuie asamblată o unitate mică udare automată roslin pe baza Arduino cu control vologost. Necesitatea udării în sine se va baza pe senzorul din volumul solului. Cu bazhanna, puteți uda stropirea de rozelină dintr-o dată.

Materiale și instrumente:
- Arduino Uno
- Roslin ca menajeră pe uscat
- Pompă de apă
- Senzor în sol cu ​​o buclă
- Tasta de pornire (trei) cu o buclă
- Clemă de prindere
- Furnizat „tato-tato” × 1 bucată
- Furnizat „mama-tato” × 1 bucată
- Unitate de locuit cu trandafir USB
- Cablu USB

zbirka:
Afișajul este conectat la contactul 3 triika-Shild. Când toate firele sunt conectate la acest tip, este important să utilizați contactul GND pentru a închide gaura neagră.

La pompă la capetele contactelor din timpul zilei, blocul de borne este victorios. Dacă trebuie să lipiți contactele, lipiți-le corect pe firele cu „firele fixate”.

Axa este atât de vizibilă pentru conexiuni:

Pentru IDE-ul Arduino suplimentar, programați Arduino Uno, atașați-l la fișierul de mai jos. Senzorul în sine vologosti, foarte bine, este încorporat în pământ. Coborâți capătul tubului cu apă în pământ. Deoarece menajera este importantă, autorul vă recomandă să închideți conducta, astfel încât roslinul să nu fie dat peste cap. Dal, pompa ar trebui să fie coborâtă în bazinul de apă, iar alimentele să fie conectate.

calibruvannya:
Când este afișat senzorul, este necesar să efectuați o procedură incomodă pentru calibrare. De aceea, precizia indicației trebuie depusă fără prezența acidității în sol.

1. Când vă strecurați într-o menajeră uscată, senzorul va fi afișat pe ecran. Prețul este mic și mic.

2. Turnarea apei și verificarea faptului că apa nu pătrunde în pământ, iar senzorul se arată că este tras la o valoare. Dani să se înscrie și să fie recunoscut ca valoarea maximă.

3. Fișierul firmware va modifica valoarea constantelor HUMIDY_MIN, va fi setată valoarea minimă, iar HUMIDY_MAX va avea evident valoarea maximă. Arduino Uno clipește din nou.

amploarea proiectului
Există descrieri statty ale modului de a uda totul pentru un singur bilet. Ale trebuie adesea udate imediat cu un strop de rozelină. Evident, puteți conecta mai multe pompe și senzori la Arduino, dar va fi mai scump. Autorul, în general, promovează soluția este mai ieftină și mai simplă. La țeavă, iacul este adus la fast, săgețile sunt străpunse cu un ciur, există aproape 30 de centimetri între ele, în deschidere există o tăietură de la mânerul sacului vicoristan.

Alpinistii din stand, de regulă, stau la rând, de exemplu, pe pidvikonn. Țeava a fost așezată pe alpiniști, astfel încât deschiderile slabe au fost spuse de menajeră. Numai axa deciziei privind udarea va fi luată în considerare prin adăugarea unui șofer la rând. De cele mai multe ori, alpiniștii de aceeași dimensiune vor merge deseori la pavilioane în acest fel. Uscarea solului în ele va fi aproximativ aceeași. Când bazhani i mare număr roslin acasă, puteți conecta pompe suplimentare și distribui toți alpiniștii în grupuri de dimensiuni egale.

Pentru a implementa proiectul, trebuie să înființăm o bibliotecă:

  • Biblioteca iarduino_4LED (pentru roboți cu un indicator LED din patru cifre).

Despre cele despre modul de instalare a bibliotecilor, puteți consulta pagina Wiki - Instalarea bibliotecilor în IDE Arduino.

Video:

Diagrama conexiunii:

În acest urotsi, indicator LED al conexiunilor la conexiunile digitale 2 și 3, butoane pentru conectarea la conexiunile digitale 11 și 12, comutator de alimentare la conexiunea digitală 10 (cu PWM), senzor la nivelul solului la intrarea analogică A0.

Algoritm robotizat:

  • La depunerea unui trai, Administrarea este inactivă (pe indicatorii blimas, valoarea solului este exact aceeași).
    • De îndată ce apăsați o singură dată butoanele „A” și „B” pentru infracțiune, moara care curge în sol va fi menținută ca limită (apoi, dacă trebuie să începeți udarea), și setați să comutați la locul de muncă modul. Valoarea limită a conținutului solului poate fi modificată în modul valorii de intrare.
    • Dacă apăsați butoanele „A” și „B” mai mult de 2 secunde, atunci veți trece la modul de valoare introdus.
  • Modul de lucru setat să se afișeze pe indicatorul următoarelor: conținutul de apă curgătoare al solului, conținutul de apă prag al solului și o oră pentru a trece prin momentul ultimei udări. (Valoarea prag a solului este percepută ca fiind mai întunecată și mai mică decât media). Dacă vă aflați în modul de lucru și valoarea conținutului de apă curgătoare al solului în partea de jos este mai mică decât valoarea pragului conținutului de apă al solului, atunci veți trece la modul de irigare.
  • Mod de udare setați să porniți indicatorul câteva secunde până la sfârșitul punctelor de irigare și direcționare și, de asemenea, să dați un semnal PWM comutatorului de alimentare, care pornește pompa. Valoarea PWM (turația motorului pompei) este inclusă în schiță. Trivialitatea udării este setată la modul de valoare introdus. După terminarea udării, prist_y pentru a trece la modul och_kuvannya.
  • Ai un regim setați indicatorul să scrie STOP și blimas cu puncte. Modul de transmisie danez este utilizat pentru a se asigura că operatorul este răspândit uniform pe sol înainte ca accesoriul să treacă în modul de lucru. În schițe va fi folosită o oră de ședere în modul ochikuvannya. După sfârșitul orei în modul ochikuvannya, încercați să treceți la modul de lucru.
  • În modul de introducere a valorii puteți trece la orice mod atingând butoanele „A” și „B” mai mult de 2 secunde. Modul danez este stocat în două puncte: setarea pragului conținutului de apă pentru sol (dacă aveți nevoie de mai multă udare) și setarea banalității pentru udarea însăși. Valoarea valorii pragului poate fi afișată, deoarece este posibil să schimbați atacul fie prin apăsarea butonului "A" (schimbare), fie a butonului "B" (creștere). Dacă apăsați butoanele „A” și „B” pe infracțiune o dată, atunci sensul se va schimba la exactitatea solului. Dacă pragul este setat, va dura mai mult de 2 secunde pentru a apăsa butoanele „A” și „B” zbіlshennya). Pentru aceasta, trivialitatea udării este setată, este necesar să apăsați și să tăiați butoanele „A” și „B” mai mult de 2 secunde, setate pentru a comuta la modul de lucru.
  • Când sunteți în modul de irigare, apăsați un buton, încercați să fixați udarea și comutați la modul de curățare.
  • Când sunteți în modul ochіkuvannya, apăsați un buton, setați-l în modul de lucru.

Codul programului:

#include // comutați la o bibliotecă pentru roboți cu un indicator LED din patru cifre iarduino_4LED dispLED (2,3); // obiect deschis pentru roboți cu funcțiile bibliotecii iarduino_4LED, din valorile indicatorului (CLK, DIO) const uint8_t pinSensor = A0; // o constantă evidentă din valorile numărului de intrare analogic, înainte de orice conexiune a senzorului de nivel al solului const uint8_t pinButtonA = 12; // constant scandalos de la valorile numărului la intrare, la care este conectat butonul A const uint8_t pinButtonB = 11; // constantă scandaloasă de la valorile numărului la ieșire, la care este conectat butonul B const uint8_t pinPump = 10; / * Visnovok cu PWM * / // o constantă flagrantă din valorile numărului din ieșire, înainte de orice conexiune, tasta de alimentare uint8_t btnState; // o schimbare îndrăzneață pentru selectarea butoanelor: 0-apăsat, 1-apăsat A, 2-apăsat B, 3-apăsat A și B, 4-apăsat A, 5-apăsat B, 6-apăsat A și B uint16_t arrMoisture ; // matrice goală pentru salvarea a 10 valori reziduale pentru sol vologosti uint32_t valMoisture; // schimbare bold pentru valoarea medie a valorii solului uint32_t timWatering; // o schimbare îndrăzneață timp de o oră pentru a presăra un coc de udare rămasă (în milisecunde) uint32_t timSketch; // o schimbare îndrăzneață pentru a dura o oră din momentul în care schița începe (în milisecunde) const uint8_t timWaiting = 60; // constantă scandaloasă pentru a lua o oră de curățat pentru udare (în secunde) de la 0 la 99 const uint8_t pwmPump = 100; // o constantă flagrantă pentru înfășurarea motorului pompei (randament) de la 0 la 255 uint16_t timDuration = 5; / * Pentru sugestii * / // există o mulțime de schimbări pentru udarea banală (în secunde) de la 0 la 99 uint16_t limMoisture = 0; / * Pentru înlocuiri * / // o schimbare clară pentru salvarea pragului conținutului de apă pentru sol (pentru pornirea pompei) de la 0 la 999 uint8_t modState = 0; / * La început * / // Voi face o mare schimbare de dragul de a deveni anexă: 0-activ, 1-curat, 2-activ, 3-udare, 4-setarea pragului, 5-setarea orei of watering void setup () (dispLED. begin (); // іnіtsіyєmo indicator LED pinMode (pinButtonA, INPUT); // modul de intrare pinButtonA la pinMode (pinButtonB, INPUT); ); // traductibil în modul PinButtonB (pinPump, OUTPUT); // traductibil pinPump în modul de ieșire digitalWrite (pinPump, LOW); // vimikєmo pump timWatering = 0; // skidmo hour for a cob of stop watering) void loop () (// ******* Citirea tributului: ****** * btnState = Func_buttons_control (); // citește setul de butoane, dar nu mai mult de 2 secunde timSketch = millis (); / / citește o oră din momentul în care schița începe dacă (timWatering> timSketch) (timWatering = 0;) // Zero o oră pentru ureche restul udării, când a devenit re-însămânțarea millis () valMoisture = 0; pentru (int i = 0; i<9; i++){arrMoisture[i]=arrMoisture;} arrMoisture=analogRead(pinSensor); for(int i=0; i<10; i++){valMoisture+=arrMoisture[i];} valMoisture/=10; // вычисляем среднее значение влажности почвы //*******Управление устройством:******* switch(modState){ // Устройство не активно case 0: if(btnState){ // если зафиксировано нажатие или удержание кнопок if(btnState==6){modState=4;} if(btnState==3){modState=2; limMoisture=valMoisture;} } if(timSketch%100==0){ // если начинается десятая доля секунды if(timSketch/1000%2){dispLED.print(valMoisture);}else{dispLED.print(" ");} } break; // Устройство в режиме ожидания (после полива) case 1: if(btnState){ // если зафиксировано нажатие или удержание кнопок if(btnState==6){modState=4;} if(btnState==1){modState=2;} if(btnState==2){modState=2;} if(btnState==3){modState=2;} } if(timSketch%100==0){ // если начинается десятая доля секунды dispLED.print("stop"); dispLED.point((timSketch/100%4)+1,true); } if(timDuration+timWaiting-((timSketch-timWatering)/1000)<=0){// если закончилось время ожидания modState=2; } break; // Устройство активно case 2: if(btnState){ // если зафиксировано нажатие или удержание кнопок if(btnState==6){modState=4; dispLED.light(7);} } if(timSketch%100==0){ // если начинается десятая доля секунды if(timSketch/1000%15<5){dispLED.light(7); dispLED.print(valMoisture);}else if(timSketch/1000%15<10){dispLED.light(1); dispLED.print(limMoisture,LEN4);}else {dispLED.light(7); if(timWatering){dispLED.print(int((timSketch-timWatering)/1000%3600/60),int((timSketch-timWatering)/1000%3600%60),TIME);}else{dispLED.print("----");}} } if(valMoisture<=limMoisture){ // если текущая влажность почвы меньше пороговой timWatering=timSketch; modState=3; dispLED.light(7); analogWrite(pinPump,pwmPump); } break; // Устройство в режиме полива case 3: if(btnState){ // если зафиксировано нажатие или удержание кнопок if(btnState==6){modState=4;}else{modState=1;} analogWrite(pinPump,0); } if(timSketch%100==0){ // если начинается десятая доля секунды dispLED.print(timDuration-((timSketch-timWatering)/1000)); dispLED.point(0,true); dispLED.point((timSketch/100%4)+1,true); } if(timDuration-((timSketch-timWatering)/1000)<=0){// если закончилось время полива modState=1; analogWrite(pinPump,0); } break; // Устройство в режиме установки пороговой влажности почвы case 4: if(btnState){ // если зафиксировано нажатие или удержание кнопок if(btnState==6){modState=5;} if(btnState==1){if(limMoisture>0) (limMoisture--;)) if (btnState == 2) (if (limMoisture<999){limMoisture++;}} if(btnState==3){limMoisture=valMoisture;} if(btnState==4){while(digitalRead(pinButtonA)){if(limMoisture>0) (limMoisture--;) întârziere (100); dispLED.print (limMoisture);)) if (btnState == 5) (while (digitalRead (pinButtonB)) (if (limMoisture<999){limMoisture++;} delay(100); dispLED.print(limMoisture);}} } if(timSketch%100==0){ // если начинается десятая доля секунды dispLED.print(limMoisture); } break; // Устройство в режиме установки длительность полива case 5: if(btnState){ // если зафиксировано нажатие или удержание кнопок if(btnState==6){modState=2;} if(btnState==1){if(timDuration>0) (timDuration--;)) if (btnState == 2) (if (timDuration<99){timDuration++;}} if(btnState==4){while(digitalRead(pinButtonA)){if(timDuration>0) (timDuration--;) întârziere (100); dispLED.print (timDuration);)) if (btnState == 5) (while (digitalRead (pinButtonB)) (if (timDuration<99){timDuration++;} delay(100); dispLED.print(timDuration);}} } if(timSketch%100==0){ // если начинается десятая доля секунды dispLED.print(timDuration); dispLED.point(0,true); } break; } } // Функция определения состояния кнопок uint8_t Func_buttons_control(){ uint8_t a=0, b=0; // время удержания кнопок A и B (в десятых долях секунды) while(digitalRead(pinButtonA)||digitalRead(pinButtonB)){ // если нажата кнопка A и/или кнопка B, то создаём цикл, пока они нажаты if(digitalRead(pinButtonA)){if(a<200){a++;}} // если удерживается кнопка A, то увеличиваем время её удержания if(digitalRead(pinButtonB)){if(b<200){b++;}} // если удерживается кнопка B, то увеличиваем время её удержания if(a>20 && b> 20) (dispLED.print ("----");) // if (a> 20 && b == 0) (return 4;) // dacă butonul A este aplatizat pentru mai mult de 2 secunde, se întoarce 4 dacă (a == 0 && b> 20) (returnează 5;) // când butonul B este aplatizat mai mult de 2 secunde, se întoarce cu 3 întârziere (100); // acoperiți 0,1 secunde, pentru a înăbuși murdăria) dacă (a> 20 && b> 20) (întoarceți 6;) // dacă butoanele au fost jignite mai mult de 2 secunde, ați rotit 6 dacă (a> 0 && b> 0 ) (return 3;) else // dacă butonul a fost jignit în mai puțin de 2 secunde, a fost rotit 5 if (a> 0 && b == 0) (return 1;) else // dacă butonul A a fost apăsat în mai puțin de 2 secunde, rotit 2 dacă (a == 0 && b> 0) (return 2;) altceva // dacă butonul B a fost apăsat mai puțin de 2 secunde, rotit 1 (return 0;) // dacă unul dintre butoane nu a fost apăsat , a împlinit 0)

Toată ziua bună! Axa a venit vara, toată lumea se îndreaptă de la loc, de la pământ și acasă, ca și creșterile, care trebuie udate. La sfârșitul zilei, până când se atinge toată căldura, vremea va fi crescută cu cantitatea de udare a rozelinului. Și, pentru a face acest lucru, nu vă luați dragostea pentru o schimbare, vă propunem să folosiți un sistem automat de udare pentru aceasta, precum și starea noastră actuală.

1. Informații despre prist_y

Pentru a înrădăcina sistemul și udarea, avem nevoie de:

  • Arduino uno
  • Senzor de vâscozitate la sol - modul arduino
  • Pompa (pompă de apă) - o pompă de apă, astfel încât să o puteți cumpăra singur în China sau să o construiți singură. Pentru o pompă, voi porni pompa la mai puțin de 12 volți pentru un releu suplimentar.
  • Інші important drіbnіsі - un furtun cu un diametru mic, un compartiment pentru apă, săgeți, viață dzherelo.

Imediat, voi spune că voi spune că nu vom conecta totul la dreptul de alimentare cu apă. Doriți să aflați despre stadiul tehnicii, pentru simplitate și strălucire, vom face rezervorul vikoristovuvat (mnist cu apă). O pompă (pompă) va pompa apa din rezervor, un efort mic va fi suficient, voi vikoristovuvati o pompă autopropulsată cu o sursă de alimentare de 12 volți. Dacă doriți să pompați un varto vrahuvati când pidbor: un furtun, pompa este instalată înainte de a uda linia de trandafiri, tipul de pompă. În cazul unui furtun pliant, acesta nu este foarte larg, este vibrat în funcție de diametrul orificiului de ieșire al pompei, dar defecțiunea nu este foarte mare la ieșirea către linie. Dacă sistemul este solicitat, tipul de irigație este necesar, se utilizează irigarea prin picurare optimă. Vyhodyach de la ts'go prystosovuyut un capăt vilny al furtunului de la pompă.

2. Senzorul conținutului de umiditate al solului

Senzorul conținutului de umiditate al solului este afișat ca un semnal analog de la 0 la 1023 sau digital (0 sau 1). Vom putea folosi un semnal analogic pentru un control mai mare al volumului minim. Valoarea este 0 tse maxim vologosti, 1.023 maxim uscat. Vom fi victorioși, valoarea a 200 este un vologism suficient, valoarea a 600 este uscarea critică. Pragurile pentru uscăciune și uscăciune, dacă este necesar, pot fi modificate în schița arduino. Senzorul în sine este stocat în două părți: o sondă (se scufundă în pământ) și un comparator. Un senzor de la 3,3 la 5 volți poate fi înregistrat, puteți vikoristovuvati vbudovanie trandafiri arduino.

Circuit comparator pe LM393:

Dani să meargă pe firul de semnal a0 și să fie pornit de gradul ofensiv:

3. Implementare practică

Logica robotului: o dată pe secundă (puteți face mai mult de trei pași) arduino va deduce valoarea senzorului. Dacă valoarea este mai mare de 550, pompa nu a început să pompeze timp de 15 minute, arduino pornește releul (până când pompa este pornită) timp de o oră de timp. Acoperirea a 15 chili cu irigare a fost spulberată pentru asta, b vologul s-a udat în pământ și pompa a pompat mai multă apă și mai puțină cerere. Minliva time_work va seta ora pentru pompa robot și va dura o oră pentru ca orice pompă să fie pentru a aprinde vikachati, voi avea nevoie de o cantitate de apă din rozelinul tău.
După udare, vor fi instalate 15 plume pentru pompa robotică, cu întregul arduino voi produce cusături pentru vology. Și apoi totul este ciclic. Când senzorul de nivel al apei este rupt, pompa nu se va porni chiar dacă există puțină apă în rezervoare și a existat o indicație.

Diagrama conexiunii:

Vlasne codul în sine:

Int minv = 600; // nivel scăzut int maxv = 220; // re-iriga int normv = 500; // trochs ale valorii int vologue = 0; // eliminați valoarea int last_value = 0; // opriți sensul de schimbare int value_sdvig = 50; // Ma refer la o schimbare int ralay = 6; // pin relay int time_work = 10; // pompează ora robotului pe secundă int analogPin = A0; // pinul senzorului

// Schimbați expirarea
int second = 0; // secunde
int time_off = 0; // răcitor pentru o oră
int pauză_ timp = 15; // ora de fixare a udării în khvili

configurare nulă () (
// puneți codul de configurare aici, pentru a rula o dată:
Serial.begin (9600);
pinMode (ralay, HIGH); // setare releu
digitalWrite (ralay, HIGH);
}

nul poliv ()
{
int time_tmp;
time_tmp = time_work;
digitalWrite (ralay, LOW);
while (time_tmp> 0 && value> normv) (// verificați sfârșitul orei time_work sau solul normal
întârziere (1000);
valoare = analogRead (analogPin); // aceeași valoare
time_tmp--;
}
digitalWrite (ralay, HIGH);
al doilea = 0; // derapează secunde la zero
time_off = pause_time; // Îl voi instala cu irigații
}

bucla nulă () (
// puneți codul principal aici, pentru a rula în mod repetat:
valoare = analogRead (analogPin);
if (valoare> (last_value + value_sdvig) || valoare<(last_value-value_sdvig)){// если last_value отклонился на value_sdvig выводим value в uart
Serial.println (valoare);
last_value = valoare;
}
if ((valoare> (minv-valoare_sdvig)) && time_off<1) poliv();//если значение влажности >vologie critică - 50 sau irigări recente
// funcțiile de timp nu ar trebui să fie prea ocupate cu temporizatoarele
dacă (al doilea> 59)
{
al doilea = 0;
if (time_off> 0) time_off--;
}
întârziere (1000); // pauză 1 sec
al doilea ++;
}

Toate pentru anul acesta, vă mulțumesc tuturor pentru respect! Verifică-ți comentariile.

Pentru asta, am avut un dar pentru mine, am fost conștient că este imposibil să automatizez procesul de irigații. Pentru asta am vapnenniy, nu voi muri prin căsătoria lui Vodi.
Am preluat designul, de parcă am udat scrisoarea în locul meu. Ca urmare, am o axă a unui astfel de dispozitiv care poate face față propriilor conexiuni:

Cu ajutorul a două regulatoare, este posibilă configurarea udării la un moment dat, precum și în timpul perioadei de udare. Cui Tsikavo - Dal lectura, Yak zrobiti atât de curat. În inima creierului, am blocat Arduino (Arduino Mega).
Pentru un sprinkler pliabil, aveți nevoie de câteva componente și nu mai mult de 30 de minute pe oră.

Componente Vikoristovuvani:

  • Arduino Mega
  • O pompă și un tub silikonov (dacă este o pompă pentru spălarea geamurilor mașinii - o puteți cumpăra de la orice piese auto sau puteți cumpăra o mică pompă submersibilă pe eBay)
  • Bloc de locuit
  • Două rezistențe variabile pentru reglare (be-yaki)
  • tranzistor IRL3705N
  • Două rezistențe (100 Ohm și 100 kOhm)
  • Diod (asemănător)
  • Rezervor de apă (după părerea mea o cutie de plastic de la Ikea)
  • aspect

Totul este luat în această schemă:

Mai sus, mai întâi:

Axa a fost găsită în mine:

Cu o pompă de protest spatku. Podamo pentru noul 5V. Yaksho vin zazizhchav, totul este în ordine, dal.

Acum pompa este conectată la Arduino. Pentru controlul pompei de la Arduino, există o mică legătură pe aspect.

Voi încerca să fac poker cu o pompă de la Arduino. Apelați acest cod

int pumpPin = 5; void setup () (pinMode (pumpPin, OUTPUT); digitalWrite (pumpPin, LOW);) void loop () (digitalWrite (pumpPin, HIGH); delay (1000); digitalWrite (pumpPin, LOW); delay (1000);)

Yaksho vin periodic dizzychit, asta înseamnă că știu că totul este în ordine.

Acum am pierdut doi regulatori. Răspuns la rezistența noastră la schimbarea atașamentului și convertibil la recepționer.

Apelați acest cod pe Arduino

int volumePin = A0; void setup () (pinMode (volumePin, INPUT); Serial.begin (9600);) void loop () (Serial.println (analogRead (volumePin)); delay (100);)

Mergeți la Serial Monitor și la reconectare, care este reacția la întoarcerea regulatorului. Vinovat de schimbare de la 0 la 1024

Acum am devenit copleșit de zmusiti pentru a câștiga dintr-o dată.

Axa fără cod sprinkler mediu:

// Primul regulator controlează ora, când apa va curge (de la 4 la 15 secunde) #define MAX_FLOWTIME 15 // secunde #define MIN_FLOWTIME 4 // secunde // Un alt regulator controlează frecvența udării o dată pe zi până o dată pe zi#define MAX_PERIOD 7 // days #define MIN_PERIOD 1 // days #define MAX 1015 #define MIN 0 int volumePin = A0; // Fixați, înainte de orice alimentare, regulatorul, care este responsabil pentru udarea cu apă int periodPin = A1; // Fixați, până când regulatorul este conectat, ceea ce este același pentru perioada dintre irigare int pumpPin = 5; // Pin, înainte de a fi transferat controlul pompei volumul int; perioada int; // O procedură care pornește pompa timp de o oră, sarcini în volum void water () (digitalWrite (pumpPin, HIGH); // porniți pompaîntârziere (volum); digitalWrite (pumpPin, LOW); // pompa vimikaєmoîntârziere (perioadă); ) Void setup () (pinMode (pumpPin, OUTPUT); digitalWrite (pumpPin, LOW);) bucla void () ( // Citiți valoarea regulatoarelor (schimbarea rezistențelor) volum = hartă (analogRead (volumePin), MIN, MAX, MIN_FLOWTIME, MAX_FLOWTIME) * 1000; period = hartă (analogRead (periodPin), MIN, MAX, MIN_PERIOD, MAX_PERIOD) * 1000 * 60 * 60 * 24; apă (); )

Axa este gata. Nasolodzhuєmosya vіdpochinkom. și vei fi nobilimea creșterilor tale pentru a curăța apa.

pereview

Salvați în Odnoklassniki salvați VKontakte