Automatinis kambarių drėkinimas naudojant „Arduino“. „Robimo“ automatinis vandens tiekimas „Arduino“ padeda elektroniniams laikmačiams su programine įranga

Automatinis kambarių drėkinimas naudojant „Arduino“. „Robimo“ automatinis vandens tiekimas „Arduino“ padeda elektroniniams laikmačiams su programine įranga


Ard kambarys... Teminėse parduotuvėse jie parduoda tokį dizainą už beprotišką kainą. Tačiau tai kainuoja tiek, kiek mašina augintojui savarankiškai sureguliuoja „uostus“.

Šiais statistiniais rodmenimis galima įrengti automatinį vandens tiekimą arduino. Mikrokontrolerį šiame vypadku vaizduoja periferinių priedų valdymo sistema.

Būtini įrankiai ir išoriniai įrenginiai, skirti įgyvendinti projektą „Avtopoliv“ remiantis mikrovaldikliu „Arduino“

Irigatorius - nesugadintas, mokyklų mainų dirvožemio drėgmės kiekio valdymas. Pridedamas prie duomenų perdavimo jutikliui, kuris taip pat yra skirtas automatiniam drėkinimui ant roboto burbuolės. Programoms sulankstyti galite naudoti C ++ programą.

Stalas su reikalingomis medžiagomis:

komponentas apibūdinti
Mikrokontroleris „Arduino Uno“ Platforma yra sudaryta iš dviejų dalių: programinė įranga yra aparatinė. Baitų įrenginių išjungimo kodas yra užprogramuotas tarpinėje programinėje įrangoje - „Arduino IDE“.

Norėdami įdiegti programą mikrovaldiklyje, turite pridėti USB kabelį. Savarankiškiems robotams nusipirkite 10 V gyvenamąjį bloką.

Platformoje yra 12 kaiščių, šių polių vaidmuo skaitmeniniame įvedime ir pristatyme. „Coristuvach“ individualiai vibruoja odos kaiščio funkciją.

USB kabelis Privaloma projektuojant perkeltą kodą „automatinio laistymo„ Arduino “sistema.
Jutiklio plokštė - „Troyka Shield“ Už papildomą mokestį prijunkite pagalbinių kabelių jutiklių periferiją. Kraštuose kontaktai yra siūlė 3 Pina - S + V + G.
stumti gnybtų bloką Tarnaukite kaip ryšulių laidų fiksatorius. Dizainas tvirtinamas už papildomų spyruoklių mygtukų.
Gyvenamasis vienetas, įranga su USB įvestimi

Dirvožemio drėgmės analizatorius

Idealiai tinka platformoms sujungti. Pavarų dizainas turi lichtary, tai yra apie robotų burbuolę.

Pristosuvannya duoda signalus, jei žemė yra perpildyta arba trūksta vietos. Prijungimas prieš mokėjimą atliekamas už papildomus 3 lašus.

● MAX gibini įkasimui į žemę - 4 cm;

● MAX maitinimo šaltinis - 50 mA;

● Įtempimas ganymui - iki 4 V.

Siurblys su vamzdžiu gręžimui į vandenį Komutatoriui gali padėti valdymas. Dovzhin kabelis siekia 2 metrus.
maitinimo klavišas Skirtas maišyti ir išpilstyti elektrinį kuolą. „Iakshcho vikoristovuvati“ priedas statant automatinį „Arduino“ drėkinimą, papildomų sukibimų nereikės. Jungtis prie pagrindinio skydo taip pat yra prijungta 3 laidais.
Teikiama telefono linija - „batko -batko“ Šiek tiek laidų periferiniams priedams prijungti.
Teikia telefono liniją - „mama -batko“ Atlikimas taip pat sukuria periferijos priedus.
kambario butas Sistema tinka šiam tipui kambario rozlinas.

Roboto prijungimo schema ir algoritmas projekte „Avtopoliv“, remiantis mk Arduino

Apatiniai vaizdai yra algoritmas ir ryšio su projektu schema arduino platformoje. Autowatering bus įžeidžiantis rangas:

  1. Mikrovaldiklio jutiklio plokštės sukūrimas.
  2. Pagrindinis analizatorius už papildomą mokestį, aprašytas maiste, iki analogiško kaiščio - A0.
  3. Jutiklį priima mikrovaldiklis:
    1. Kontaktinis CS yra prijungtas prie lentos 9 kaiščio.
    2. Funkciniai SPI kontaktai prijungti prie tos pačios plokštės ekrano.
  4. Maitinimo raktas įkišamas į kaištį Nr. 4.
  5. Jungiklis išvedamas į rožių maitinimo jungiklį, žymimą raidėmis p +, p-.
  6. dabar perjunk vandens siurblys iš vamzdžio, esančio už pagalbinio gnybtų bloko, liečiantis su raidėmis l + і l-. Prieš statant žmogų, buvo pateikta schema.
  7. Įmontuotas jutiklinis skydelis, kaip logikos analizė, namų šeimininkei su laišku.
  8. „Kinets“ vamzdelis su vandeniu įterpiamas į dirvą. Jei kartu su namų šeimininke už vagono nepakeisiu 2 kg, uždarysiu žarną „okremo“. Taip pat galite išmesti ant lapo vandens lašelius.
  9. Nuleidžiu vandens pompą į šokį, primenantį vandenį.
  10. Pidklyuchaaєmo dizainas elektriniam gyvenimui.

Žemiau siūlome dvi alternatyvias mūsų priedo schemas:

Jutiklis analizuoja dirvožemio rūgštingumo būklę. Prieš įkišdami drėkintuvą į sistemą, turite protestuoti ir parodyti:

  1. Įrašykite rodinius ekrane. Tuo pačiu metu jutiklis turėtų būti įstrigęs sausame puodyje. Tse reikia atpažinti, jakai min vologosti.
  2. Žemė laistoma augimu. Chekaumo, jei vanduo turi atgaivinti dirvą iki pabaigos. Todi rodomas jutikliniame ekrane, kad būtų parodytas vienas. Būtina užrašyti turto atsisakymą. Tse reiškia max vologosti.
  3. Į šias reikšmes užrašysiu fizinių konstantų HUM_MIN ir HUM_MAX bloknotus, nes bulo yra ištaisomas pagal kalibravimą. Numatyta reikšmė programoje, nes ji perkeliama į mikrovaldiklį.

Vishche aprašė vieno bilieto automatinio vandens tiekimo dizainą. Tačiau tarp kambarių mylėtojų, būdelės įrengtos aukštaičių su išėjimais. Iš vienos pusės maitinimo šaltinis taip pat yra sulankstomas: būtina prijungti siurblio lipduką ir analizatorių prie dirvožemio. „Ale іsnu“ yra daug pigesnis ir paprastesnis automatinio vandens tiekimo dizainas.

Prie siurblio žarnos atidarykite 25 centimetrus, kad gautumėte pagalbą. Otrimanі dіrochki maiše yra šmatochki plaukų kirpimo rašikliai. Eik į maišą:

  • alpinistai su rožiniais shykuyutsya iš eilės ant pidvіkonnі;
  • mėgintuvėlis dedamas ant namų šeimininkės taip, kad vanduo iš odos pilamas į okremii namų tvarkytoją;
  • voila: vinakhіd laistyti visas augančias linijas vienu metu.

Koristuvacho savarankiškai pasirinkta laistymo valanda, ale tik už vieną kortelę. Dažnai nėra tokio paties dydžio ir dydžio citatų. Otzhe, alpinistų dirvožemis išdžiūsta tą pačią valandą. Daugeliui išradimų derinimo metodas: namų tvarkytojų skaičius yra suskirstytas į vagonų ir dydžių grupes.

Taikomas „Arduino“ kodui „Automatinio laistymo“ projektui

Mes kreipiamės į programos kodą:

// Zavanazhuєmo biblioteka, skirta robotizuotam rodymui ir perjungimui į programas #include "QuadDisplay2.h"; // Tai konstanta, žyminti kontaktą prieš prijungiant vandens siurblį // #define VODPOMPA_PIN 4; // Sukurkite konstantą, žyminčią kontaktą, prie kurio jis buvo prijungtas // žemės tūrio analizatorius #define HUM_PIN A0; // Min pagal tūrį #define HUM_MIN 200; // Max pagal vologosti #define HUM_MAX 700; // Laistymo keitimo valanda #define INTER 60000 * 3; // Tai didelė klaida, jei vertė bus paimta ateityje unsigned int hum = 0; // Pasikeitus viduryje, mes pasiimsime valandinį avansą be parašo ilgai Time = 0; // „Ogoloshuєmo“ objektas „QuadDisplay“ klasėje, tada numerio ženklas perkeliamas // į „CS QuadDisplay“ kontaktinį diską (9); // Sukurkite metodą, kuris reaguotų į ekrano roboto tuštumos sąranką (void) (// Paleiskite metodą begin (); // Švari funkcija, kuri reaguos į vandens siurblio išėjimą iš // contact pinMode (VODPOMPA_PIN, OUTPUT); // ekrane užsidega skaičius - 0 dis.displayInt (0);) // Sukuriamas metodas, kuris rodomas dabartinio tuštumos ciklo (void) indikatoriui (// dabartinis akimirkos momentas int humNow = analogRead (HUM_PIN); // Jei indikatoriaus reikšmė nėra priešais priekį, tada ... if (humNow! = Hum) (// Imkite vertę iš karto hum = humNow; // Peržiūrėkite vertę ekrano ekraneInt (humNow);) // Klauskite manęs: kaip atsikratyti užduočių maždaug per valandą // vologo būklė žemėje yra mažesnė nei būtina, tada .. . jei ((laikas == 0 || milis () - laikas> INTER) && hum< HUM_MIN) { // Даем сигнал о начале работы водяной помпы digitalWrite(VODPOMPA_PIN, HIGH); //Объявляем потом, длящийся 2 секунды delay(2000); // Завершаем работу помпы digitalWrite(POMP_PIN, LOW); // Ставим в значение переменной Time текущее время и добавляем 3 минуты Time = millis(); } }

Prieš tai galite pasigrožėti pora mūsų kolegų vaizdo įrašų.


Ši statistika apibūdins, kaip turi būti sumontuotas mažas įrenginys automatinis laistymas roslin Arduino pagrindu su vologost kontrole. Laistymo poreikis bus pagrįstas dirvožemio tūrio jutikliu. Naudodami bazhaną, galite pabarstyti roželino pabarstą vienu metu.

Medžiagos ir įrankiai:
- Arduino Uno
- Roslin kaip namų šeimininkė sausoje žemėje
- Vandens siurblys
- Jutiklis žemėje su kilpa
- Maitinimo klavišas (trys) su kilpa
- spaustuko spaustukas
- Pateikite „tato-tato“ × 1 vnt
- Pateikite „mama-tato“ × 1 vnt
- Gyvenamasis blokas su USB rože
- USB kabelis

zbirka:
Ekranas prijungtas prie kontakto 3 triika-Shild. Kai visi laidai prijungti prie šio tipo, svarbu naudoti GND kontaktą, kad uždarytumėte juodąją skylę.

Prie siurblio, esančio dienos kontaktų galuose, laimi gnybtų blokas. Jei jums reikia lituoti kontaktus, tada teisingai lituokite juos prie laidų „prisegtais laidais“.

Ašys taip matomos jungtims:

Norėdami gauti papildomą „Arduino IDE“, užprogramuokite „Arduino Uno“, pridėkite jį prie žemiau esančio failo. Pats jutiklis yra vologosti, labai gerai, jis yra įterptas į žemę. Nuleiskite vamzdžio galą su vandeniu į žemę. Kadangi namų tvarkytoja yra svarbi, autorė rekomenduoja uždaryti vamzdį, kad rožinė nebūtų apversta aukštyn kojomis. Dal, siurblys turi būti nuleistas į vandens telkinį ir maistas prijungtas.

calibruvannya:
Kai rodomas jutiklis, būtina atlikti nepatogią kalibravimo procedūrą. Štai kodėl indikacijos tikslumas turi būti nusodintas be dirvožemio rūgštingumo.

1. Kai paslysite į sausą namų tvarkytoją, jutiklis bus rodomas ekrane. Kaina maža ir žema.

2. Supilkite vandenį ir patikrinkite, ar vanduo nepatenka į žemę, ir parodoma, kad jutiklis yra nubrėžtas viena verte. Dani užsiregistruoti ir būti pripažinta didžiausia verte.

3. Programinės įrangos failas pakeis HUMIDY_MIN konstantų vertę, bus nustatyta minimali vertė, o HUMIDY_MAX akivaizdžiai turės maksimalią vertę. „Arduino Uno“ vėl mirksi.

projekto mastą
Pateikiami apgailėtini aprašymai, kaip laistyti viską už vieną bilietą. Ale dažnai reikia nedelsiant palaistyti roželinio pabarstu. Akivaizdu, kad prie „Arduino“ galite prijungti daugiau siurblių ir jutiklių, tačiau tai bus brangiau. Autorius apskritai skatina sprendimą pigiau ir paprasčiau. Prie vamzdžio jakas atnešamas į pompą, smiginis pramuštas yla, tarp jų yra arti 30 centimetrų, angoje - pjūvis iš vikoristano maišelio rankenos.

Kabinoje esantys alpinistai paprastai stovi iš eilės, pavyzdžiui, ant pidvikono. Vamzdis buvo uždėtas ant alpinistų, todėl odinę skylę pasakė namų tvarkytoja. Pridedant vieną vairuotoją, bus atsižvelgiama tik į sprendimo dėl laistymo ašį. Dažniausiai tokio paties dydžio alpinistai dažnai eina į paviljonus. Išdžiovinkite dirvožemį jose bus maždaug tas pats. Kai bazhani i puikus skaičius Roslin savo namuose, galite prijungti papildomus siurblius ir visus alpinistus paskirstyti vienodo dydžio grupėmis.

Norėdami įgyvendinti projektą, turime įsteigti biblioteką:

  • Biblioteka iarduino_4LED (robotams su keturių skaitmenų LED indikatoriumi).

Apie tai, kaip įdiegti bibliotekas, galite peržiūrėti puslapyje „Wiki“ - „Arduino IDE“ bibliotekų diegimas.

Vaizdo įrašas:

Prijungimo schema:

Šiame urotsi, jungčių prie skaitmeninių jungčių 2 ir 3 LED indikatorius, jungčių prie skaitmeninių jungčių 11 ir 12 mygtukai, maitinimo jungiklis į skaitmeninę jungtį 10 (su PWM), žemės lygio jutiklis į analoginį įėjimą A0.

Robotų algoritmas:

  • Pateikdamas pragyvenimą, Pristrіy yra neaktyvus (pagal blimas rodiklius dirvožemio vertė yra tokia pati).
    • Kai tik vieną kartą paspausite nusikalstamos veikos mygtukus „A“ ir „B“, tada dirvožemyje tekantis malūnas bus išgelbėtas kaip ribinis (tada, jei reikia pradėti laistyti), ir bus nustatytas pereiti prie darbo režimu. Dirvožemio ribinę vertę galima pakeisti įvesties vertės režimu.
    • Jei paspausite mygtukus „A“ ir „B“ ilgiau nei 2 sekundes, tada įjungsite įvestos vertės režimą.
  • Darbo režimas nustatyti, kad indikatoriuje būtų rodoma: srauto vandens kiekis dirvožemyje, ribinis vandens kiekis dirvožemyje ir valanda paskutinio laistymo momento. (Ribinė dirvožemio vertė yra tamsesnė ir mažesnė nei vidutinė). Jei esate darbo režime, o tekančio vandens kiekis dirvožemyje dugne yra mažesnis už slenkstinio vandens kiekio dirvožemyje vertę, tada pereisite prie drėkinimo režimo.
  • Laistymo režimas nustatykite įjungti indikatorių keletą sekundžių iki drėkinimo pabaigos ir užsidegti, taip pat duoti PWM signalą maitinimo jungikliui, kuris įjungia siurblį. PWM (siurblio variklio greitis) vertė yra įtraukta į eskizą. Laistymo trivialumas nustatomas įvestos vertės režimu. Baigę laistyti, prist_y perjunkite į och_kuvannya režimą.
  • Turėkite režimą nustatykite, kad indikatorius būtų užrašytas STOP ir blimas su taškais. Danijos perdavimo režimas naudojamas siekiant užtikrinti, kad operatorius būtų tolygiai paskirstytas ant žemės, kol priedas persijungs į darbo režimą. Eskizuose bus naudojama valanda buvimo „ochikuvannya“ režimu. Pasibaigus valandai, pereikite prie „ochikuvannya“ režimo, pabandykite įjungti darbo režimą.
  • Reikšmės įvesties režimu galite perjungti į bet kurį režimą palietę „A“ ir „B“ mygtukus ilgiau nei 2 sekundes. Daniškas režimas saugomas dviejuose taškuose: nustatant slenkstinį vandens kiekį dirvožemyje (jei reikia daugiau laistyti) ir paties laistymo trivialumo nustatymą. Ribinės vertės reikšmė gali būti rodoma, nes antpuolį galima pakeisti paspaudus mygtuką „A“ (pakeisti) arba mygtuką „B“ (padidinti). Jei vieną kartą paspausite nusikaltimo mygtukus „A“ ir „B“, prasmė pasikeis į dirvožemio tikslumą. Jei slenkstis nustatytas, „A“ ir „B“ mygtukų paspaudimas užtruks ilgiau nei 2 sekundes). Tam yra nustatytas laistymo trivialumas, būtina ilgiau nei 2 sekundes paspausti ir išjungti mygtukus „A“ ir „B“, nustatyti perjungti į darbo režimą.
  • Kai esate laistymo režime, paspauskite mygtuką, pabandykite prisegti laistymą ir pereikite prie valymo režimo.
  • Kai esate ochіkuvannya režime, paspauskite mygtuką, nustatykite jį į darbo režimą.

Programos kodas:

#įtraukti // pereiti prie bibliotekos robotams su keturių skaitmenų LED indikatoriumi iarduino_4LED dispLED (2,3); // atviras objektas robotams su bibliotekos iarduino_4LED funkcijomis, iš indikatoriaus (CLK, DIO) reikšmių const uint8_t pinSensor = A0; // akivaizdi konstanta iš analoginio įvesties skaičiaus verčių, prieš prijungiant žemės lygio jutiklį konst uint8_t pinButtonA = 12; // siaubinga konstanta nuo skaičiaus verčių iki įvesties, prie kurios prijungtas mygtukas A const uint8_t pinButtonB = 11; // siaubinga konstanta nuo skaičiaus verčių iki išvesties, prie kurios prijungtas mygtukas B const uint8_t pinPump = 10; / * Visnovok su PWM * / // akivaizdi konstanta iš skaičiaus išvesties verčių, prieš bet kokį ryšį įjungimo klavišas uint8_t btnState; // paryškintas mygtukų pasirinkimo pakeitimas: 0 paspaudimų, 1 paspaudimo A, 2 paspaudimų B, 3 paspaudimų A ir B, 4 paspaudimų A, 5 paspaudimų B, 6 paspaudimų A ir B uint16_t arrMoisture ; // nuogas masyvas, skirtas išsaugoti 10 liekamųjų dirvožemio verčių vologosti uint32_t valMoisture; // paryškintas vidutinės dirvožemio vertės keitimas uint32_t timWatering; // drąsus pokytis valandai, kad pabarstytumėte burbuolę likusio laistymo (milisekundėmis) uint32_t timSketch; // drąsus pakeitimas, skirtas paleisti valandą nuo eskizo pradžios (milisekundėmis) const uint8_t timWaiting = 60; // pasipiktinusi konstanta, skirta valandai valyti laistymui (sekundėmis) nuo 0 iki 99 const uint8_t pwmPump = 100; // akivaizdi siurblio variklio apvyniojimo konstanta (efektyvumas) nuo 0 iki 255 uint16_t timDuration = 5; / * Pasiūlymams * / // ten yra daug pakeitimų trivialiam laistymui (sekundėmis) nuo 0 iki 99 uint16_t limMoisture = 0; / * Pakeitimams * / // aiškus pakeitimas, užtikrinantis ribinį vandens kiekį dirvožemyje (įjungus siurblį) nuo 0 iki 999 uint8_t modState = 0; / * Pradžioje * / // Aš padarysiu didelį pakeitimą, kad tapčiau priedu: 0 aktyvus, 1 švarus, 2 aktyvus, 3 laistantis, 4 nustatantis slenkstį, 5 nustatantis valandą of watering void setup () (dispLED. begin (); // іnіtsіyєmo LED indikatorius pinMode (pinButtonA, INPUT); // translatable pinButtonA to pinMode input mode (pinButtonB, INPUT); // translatable pinButtonB to pinMode input (pinPump, OUTPUT) ); // translatable to pinButtonB įvesties režimas (pinPump, OUTPUT); // translatable pinPump į išvesties režimą digitalWrite (pinPump, LOW); // vimikєmo siurblys timWatering = 0; // skidmo valanda laistymui sustabdyti) void loop () (// ******* Skaitymo duoklė: *******btnState = Func_buttons_control (); // skaito mygtukų rinkinį, bet ne ilgiau kaip 2 sekundes timSketch = millis ();/ / skaito valandą nuo eskizo pradžios momento, jei (timWatering> timSketch) (timWatering = 0;) // Nulis vienos valandos ausiai likusio laistymo, kai jis tapo pakartotinai sėjamas milis () valMoisture = 0; už (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--;) uždelsimas (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--;) uždelsimas (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 ("----");) // jei (a> 20 && b == 0) (grąžinkite 4;) // jei A mygtukas yra suplokštas daugiau nei 2 sekundžių, jis pasukamas 4, jei (a == 0 && b> 20) (grįžti 5;) // kai B mygtukas yra išlygintas ilgiau nei 2 sekundes, jis pasukamas 3 uždelsimu (100); // uždengti 0,1 sekundės, kad užgniaužtų nešvarumus), jei (a> 20 &&> 20) (grąžinkite 6;) // jei mygtukai buvo įžeisti ilgiau nei 2 sekundes, pasuko 6, jei (a> 0 && b> 0 ) (grįžti 3;) else // jei mygtukas buvo įžeistas per mažiau nei 2 sekundes, pasuko 5, jei (a> 0 && b == 0) (grąžinkite 1;) else // jei mygtukas A buvo paspaustas mažiau nei 2 sekundžių, pasuko 2, jei (a == 0 && b> 0) (grįžti 2;) else // jei mygtukas B buvo paspaustas mažiau nei 2 sekundes, pasuko 1 (grįžti 0;) // jei nebuvo paspaustas vienas iš mygtukų , sukako 0)

Visos geros dienos! Ašis atėjo vasarą, visi eina iš vietos, iš žemės ir namuose, nes ataugas reikia laistyti. Dienos pabaigoje, kol bus pasiekta visa šiluma, oras pagerės laistant rozeliną. Kad tai padarytumėte, nepriimkite savo meilės šiai progai, siūlome naudoti automatinę laistymo sistemą, taip pat dabartinę mūsų situaciją.

1. Informacija apie prist_y

Norėdami išrauti sistemą ir laistyti, mums reikia:

  • Arduino uno
  • Žemės klampumo jutiklis - arduino modulis
  • Siurblys (vandens siurblys) - vandens siurblys, kad galėtumėte jį nusipirkti patys Kinijoje arba pasigaminti patys. Siurblio atveju aš įjungsiu siurblį esant mažesnei nei 12 voltų įtampai, kad gautumėte papildomą relę.
  • Importantнші svarbus drіbnitsі - mažo skersmens žarna, skyrius vandeniui, smiginis, dzherelo vivlennya.

Iš karto pasakysiu, kad pasakysiu, kad mes neprijungsime visko prie vandens tiekimo teisės. Ar norėtumėte sužinoti apie naujausią technikos lygį, dėl paprastumo ir paprastumo, mes vikoristovuvat rezervuaras (mnist su vandeniu). Siurblys (siurblys) pumpuos vandenį iš rezervuaro, užteks šiek tiek pastangų, aš vikoristovuvati savaeigį siurblį su 12 voltų tiekimu. Jei norite siurbti varto vrahuvati, kai laikote: žarną, siurblys sumontuojamas prieš laistant rožių liniją, siurblio tipą. Sulankstomos žarnos atveju ji nėra labai plati, ji vibruojama pagal siurblio išleidimo angos skersmenį, tačiau gedimas nėra labai platus prie išėjimo į liniją. Jei sistema paraginama, reikia laistyti, naudoti optimalų lašelinį drėkinimą. Vyhodyach iš ts'go prystosovuyut vilny žarnos galas iš siurblio.

2. Dirvožemio drėgmės jutiklis

Dirvožemio drėgmės jutiklis rodomas kaip analoginis signalas nuo 0 iki 1023 arba skaitmeninis (0 arba 1). Galėsime pasiimti analoginį signalą, kad būtų galima geriau valdyti mažiausią garsumą. Reikšmė yra 0 tse didžiausias vologosti, 1023 didžiausias sausas. Mes laimėsime, 200 vertė yra pakankamas vologizmas, 600 - kritinis sausumas. Jei reikia, sausumo ir sausumo slenksčius galima pakeisti arduino eskize. Pats jutiklis yra laikomas dviejose dalyse: zondas (nuskendo į žemę) ir lygintuvas. Galima įrašyti jutiklį nuo 3,3 iki 5 voltų, galite pasiimti arduino rožes.

Lyginamoji grandinė LM393:

Dani eiti signaliniu laidu a0 ir būti įjungtam pagal įžeidžiančią kategoriją:

3. Praktinis įgyvendinimas

Roboto logika: kartą per sekundę (galite atlikti daugiau nei tris žingsnius) arduino atims jutiklio vertę. Jei vertė yra didesnė nei 550, siurblys neišpumpavo 15 minučių arduino, jis įjungia relę (kol siurblys neįjungiamas) valandą laiko_darbo. Dėl to drėkinimas padengė 15 chilinų, todėl vologas sušlapo į žemę, o siurblys pumpavo daugiau vandens ir sumažino paklausą. „Minliva time_work“ nustatys roboto siurblio valandą, ir užtruks valandą, kol jūsų siurblys užsidegs vykachati, man reikės daug vandens iš jūsų rožinės.
Po laistymo bus sumontuota 15 automatinio siurblio plunksnų, o visas arduino I siūlys siūles vology. Ir tada viskas vyksta cikliškai. Sugedus vandens lygio jutikliui, siurblys neįsijungs, net jei rezervuaruose yra mažai vandens ir buvo indikacija.

Prijungimo schema:

Vlasne pats kodas:

Int minv = 600; // žemas lygis int maxv = 220; // pakartotinai laistyti int normv = 500; // trochs of the vologue int value = 0; // pašalinti reikšmę int last_value = 0; // sustabdyti reikšmės keitimą int value_sdvig = 50; // Aš turiu galvoje pokytį int ralay = 6; // kaiščio relė int time_work = 10; // siurblio roboto valanda per sekundę int analogPin = A0; // jutiklio kaištis

// Keisti skirtąjį laiką
int antras = 0; // sekundės
int time_off = 0; // šaldiklis valandai
int pauzės laikas = 15; // valanda laistymui taisyti khiliny

negaliojanti sąranka () (
// įdėkite čia savo sąrankos kodą, kad paleistumėte vieną kartą:
Serial.begin (9600);
pinMode (relė, HIGH); // relės nustatymas
digitalWrite (relė, HIGH);
}

void poliv ()
{
int laikas_tmp;
time_tmp = laikas_ darbas;
digitalWrite (relė, LOW);
while (time_tmp> 0 && value> normv) (// patikrinkite, ar nėra laiko_darbo valandos pabaigos arba normalios dirvožemio sąlygos
vėlavimas (1000);
vertė = analogRead (analogPin); // ta pati vertė
time_tmp--;
}
digitalWrite (relė, HIGH);
antras = 0; // slenkite sekundes iki nulio
time_off = pause_time; // Aš jį nustatysiu laistydamas
}

tuštumos kilpa () (
// Įdėkite savo pagrindinį kodą čia, kad paleistumėte pakartotinai:
vertė = analogRead (analogPin);
if (vertė> (paskutinė_vertybė + vertė_svigė) || vertė<(last_value-value_sdvig)){// если last_value отклонился на value_sdvig выводим value в uart
Serial.println (vertė);
last_value = vertė;
}
if ((vertė> (minv-value_sdvig)) && time_off<1) poliv();//если значение влажности >kritinė vology - 50 laistymų arba jų nėra
// laiko funkcijos neturėtų būti per daug užimtos laikmačiais
jei (antra> 59)
{
antras = 0;
jei (laiko_nukrypimas> 0) laiko_išjungimas--;
}
vėlavimas (1000); // pauzė 1 sek
antras ++;
}

Visi šie metai, ačiū visiems už pagarbą! Patikrinkite savo komentarus.

Tam aš turėjau dovaną, žinojau, kad neįmanoma automatizuoti drėkinimo proceso. Dėl to aš nežinau, aš nemirsiu per Vodi santuoką.
Aš perėmiau dizainą, tarsi vietoj savęs laistyčiau laišką. Dėl to aš turiu tokio aparato ašį, kuri gali susidoroti su savo ryšiais:

Naudojant du reguliatorius, galima nustatyti laistymą vienu metu, taip pat ir drėkinimo laikotarpiu. Kam Tsikavo - Dal paskaita, Jak zrobiti toks nesugadintas. Smegenų širdyje aš įstrigo Arduino (Arduino Mega).
Norėdami sulankstyti purkštuvą, jums reikia kelių komponentų ir ne daugiau kaip 30 minučių per valandą.

„Vikoristovuvani“ komponentai:

  • Arduino Mega
  • Siurblys ir silikoninis vamzdelis (jei yra siurblys automobilių stiklams plauti - galite jį nusipirkti iš bet kokių automobilių dalių arba galite nusipirkti nedidelį panardinamąjį siurblį „ebay“)
  • Gyvenamasis kvartalas
  • Du kintami rezistoriai reguliavimui (be-yaki)
  • tranzistorius IRL3705N
  • Du rezistoriai (100 omų - 100 kOhm)
  • Diodas (panašus)
  • Vandens bakas (mano nuomone, plastikinė dėžutė iš „Ikea“)
  • išdėstymas

Viskas imama pagal šią schemą:

Pirmiau:

Ašis rasta manyje:

Su „spatku“ protesto pompa. Podamo naujai 5V. Yaksho vin zazizhchav, viskas tvarkoje, dal.

Dabar siurblys prijungtas prie „Arduino“. Norėdami valdyti siurblį iš „Arduino“, išdėstymas turi nedidelį įrišimą.

Pabandysiu pokerį su pompa iš Arduino. Skambinkite šiuo kodu

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

Yaksho vin periodiškai svaigsta, tai reiškia, aš žinau, kad viskas tvarkoje.

Dabar praradome du reguliatorius. „Pidchepity“ prie mūsų priedų keitimo rezistoriaus ir konvertuojamas į registratūrą.

Paskambinkite šiuo kodu „Arduino“

int tūrisPin = A0; void setup () (pinMode (volumePin, INPUT); Serial.begin (9600);) void loop () (Serial.println (analogRead (volumePin))); uždelsimas (100);)

Eikite į serijinį monitorių ir vėl prijunkite, o tai yra reakcija į reguliatoriaus posūkį. Kaltas pasikeitimas maždaug nuo 0 iki 1024

Dabar mane užvaldė zmusiti, kad uždirbčiau viską iš karto.

Ašis be vidurinio purkštuvo kodo:

// Pirmasis reguliatorius valdo valandą, kada vanduo tekės (nuo 4 iki 15 sekundžių) #define MAX_FLOWTIME 15 // sek #define MIN_FLOWTIME 4 // sek // Kitas reguliatorius kontroliuoja laistymo dažnumą kartą per dieną iki kartą per dieną#define MAX_PERIOD 7 // days #define MIN_PERIOD 1 // days #define MAX 1015 #define MIN 0 int volumePin = A0; // Smeigtukas, prieš bet kokį tiekimą, reguliatorius, kuris yra atsakingas už laistymą vandeniu int periodPin = A1; // Smeigtukas, kol reguliatorius bus prijungtas, o tai yra tas pats laikotarpis tarp drėkinimo int pumpPin = 5; // Smeigtukas, prieš kurį buvo perduotas siurblio valdymas int tūris; int laikotarpis; // Procedūra, įjungianti siurblį valandai, užduotys pagal apimtį tuščias vanduo () (digitalWrite (pumpPin, HIGH); // įjunkite siurblį uždelsimas (garsumas); digitalWrite (pumpPin, LOW); // vimikaєmo siurblys vėlavimas (laikotarpis); ] Tuščios sąrankos () (pinMode (pumpPin, OUTPUT); digitalWrite (pumpPin, LOW);) void loop () ( // Skaitykite reguliatorių vertę (keiskite rezistorius) tūris = žemėlapis (analogRead (volumePin), MIN, MAX, MIN_FLOWTIME, MAX_FLOWTIME) * 1000; laikotarpis = žemėlapis (analogRead (periodPin), MIN, MAX, MIN_PERIOD, MAX_PERIOD) * 1000 * 60 * 60 * 24; vanduo (); )

Ašis yra paruošta. Nasolodzhuєmosya vіdpochinkom. ir tu būsi savo ataugų bajoras valyti vandenį.

pereview

Išsaugokite „Odnoklassniki“, išsaugokite „VKontakte“