ტენიანობის სენსორებზე მორწყვის აუცილებლობის შესახებ შეტყობინება. სიმძიმის სისტემების მორწყვის ქრონომეტრი. სარწყავი ავტომატური განრიგის კონტროლის ეკრანი

ამ სტატიაში ჩვენ გაჩვენებთ, თუ როგორ უნდა შეიკრიბოთ ავტომატური სარწყავი მოწყობილობა ნიადაგის ტენიანობის კონტროლით - სარწყავი... მორწყვის საჭიროება განისაზღვრება ნიადაგის ტენიანობის სენსორის კითხვებით. რამდენიმე მცენარის მორწყვა შესაძლებელია ერთდროულად.

რას მოითხოვს ეს?

როგორ შეაგროვოს იგი?

კალიბრაცია

ტენიანობის სენსორის მაჩვენებლები ძალიან არის დამოკიდებული ნიადაგის მჟავიანობაზე. ამიტომ, ირიგატორის გამოყენებამდე საჭიროა მარტივი დაკალიბრების პროცედურა.

    ჩაწერეთ ჩვენებები ეკრანზე მშრალ ქვაბში ჩარჩენილი სენსორით. ეს არის მინიმალური ტენიანობა.

    მორწყეთ ყვავილი და დაელოდეთ სანამ წყალი მთლიანად შეიწოვება მიწაში და სენსორის მაჩვენებლები ერთ დონეზეა. ჩამოწერეთ ისინი. ეს არის მაქსიმალური ტენიანობა.

    ესკიზში შეასწორეთ მუდმივი HUMIDY_MIN მნიშვნელობები მინიმალური ტენიანობის მნიშვნელობამდე და HUMIDY_MAX მაქსიმალური ტენიანობის მნიშვნელობამდე. ხელახლა გაუშვით Arduino Uno.

ხსნარის სკალირება

ჩვენ აღვწერეთ ხსნარი ერთი მცენარისთვის. თუმცა, როგორც წესი, აუცილებელია რამდენიმე მცენარის მორწყვა. გარდა აშკარა გადაწყვეტისა - რამდენიმე ტუმბოს და ტენიანობის სენსორის არდუინოსთან დაკავშირება - არსებობს უფრო მარტივი და იაფი გამოსავალი. საკმარისია გააკეთოთ ხვრელები მილში, რომელსაც მოყვება ტუმბო ჩიპთან ერთად, დაახლოებით 30 სმ მანძილზე და ჩავდოთ ღეროების ნაჭრები ჩვეულებრივი ბურთულიანი კალმებიდან ამ ხვრელებში. ასე გამოიყურება:

სახლის ყვავილების ქოთნები ხშირად ზედიზედ განლაგებულია ფანჯრის რაფაზე. თქვენ უბრალოდ უნდა დააწყოთ მილები ქოთნებზე ისე, რომ მასში არსებული ხვრელები თითო ქვაბზე დაეცემა. ახლა ჩვენს მოწყობილობას შეუძლია ერთდროულად რამდენიმე ქოთნის მორწყვა. თუმცა, ამ შემთხვევაში, შესაძლებელია გადაწყვეტილების მიღება ერთდროულად მხოლოდ ერთი ქოთნის მორწყვის აუცილებლობის შესახებ. თუმცა, ქოთნები, როგორც წესი, დაახლოებით ერთნაირი ზომისაა და ამიტომ ხმება დაახლოებით იგივე სიჩქარით. თქვენ ასევე შეგიძლიათ დააკავშიროთ ორი ხსნარი, გაყავით ყველა ქოთანი დაახლოებით თანაბარი ზომის ჯგუფებად.

წყარო

ესკიზის მუშაობისთვის, თქვენ უნდა გადმოწეროთ და დააინსტალიროთ ბიბლიოთეკა QuadDisplay2 ეკრანზე მუშაობისთვის

სარწყავი.ინო // ჩვენ ვაკავშირებთ ბიბლიოთეკას ეკრანთან მუშაობისთვის#მოიცავს "QuadDisplay2.h" // მიეცით გონივრული პინი, რომელსაც ტუმბო უკავშირდება#განსაზღვრეთ POMP_PIN 4 // მიეცით გონივრული მნიშვნელობა ქინძისთავისთვის, რომელსაც უკავშირდება ნიადაგის ტენიანობის სენსორი#განსაზღვრეთ HUMIDITY_PIN A0 // ნიადაგის ტენიანობის მინიმალური ბარიერი#განსაზღვრეთ HUMIDITY_MIN 200 // ნიადაგის ტენიანობის მაქსიმალური ბარიერი#განსაზღვრეთ HUMIDITY_MAX 700 // ინტერვალი მცენარის მორწყვის შემოწმებას შორის#განსაზღვრეთ INTERVAL 60000 * 3 // ცვლადი ნიადაგის ტენიანობის კითხვის შესანახადხელმოუწერელი ტენიანობა = 0; // სტატიკური ცვლადი დროის შესანახადხელმოუწერელი გრძელი ლოდინის დრო = 0; // QuadDisplay კლასის ობიექტის შექმნა და CS პინის ნომრის გადაცემა QuadDisplay qd (9); void setup (void) ( // დაიწყეთ ჩვენებით qd. იწყება (); // ტუმბოს პინი გასასვლელი რეჟიმიდან pinMode (POMP_PIN, OUTPUT); // ჩვენება 0 qd.displayInt (0); ბათილი მარყუჟი (ბათილი) ( // წაიკითხეთ ნიადაგის ტენიანობის სენსორის მიმდინარე კითხვები int ტენიანობა ახლა = analogRead (HUMIDITY_PIN); // თუ ნიადაგის ამჟამინდელი ტენიანობის კითხვა // არ უტოლდება წინა მოთხოვნასთუ (ტენიანობა ახლა! = ტენიანობა) ( // შეინახეთ მიმდინარე ტენიანობის კითხვატენიანობა = ტენიანობა ახლა; // და აჩვენეთ ტენიანობის მაჩვენებლები ეკრანზე qd.displayInt (ტენიანობა ახლა); ) // თუ მითითებული დროის ინტერვალი გავიდა // და ტენიანობის სენსორის მნიშვნელობები დასაშვებ ზღვარზე ნაკლებია if ((waitTime == 0 || მილი () - waitTime> INTERVAL) && ტენიანობა< HUMIDITY_MIN ) { // ჩართეთ ტუმბო digitalWrite (POMP_PIN, HIGH); // დაელოდეთ 2 წამი დაგვიანებით (2000); // გამორთეთ ტუმბო digitalWrite (POMP_PIN, LOW); // უტოლდება waitTime ცვლადს // მიმდინარე დროის მნიშვნელობა პლუს 3 წუთი waitTime = მილი (); ))

მოწყობილობის მუშაობის დემონსტრირება

სხვა რისი გაკეთება შეგიძლია?

    მოოქროვილი მიუხედავად, ტენიანობის სენსორის კონტაქტები დროთა განმავლობაში კოროზირდება. კოროზია ყველაზე სწრაფად ხდება ელექტროენერგიის მიერთებისას. სენსორის სიცოცხლე შეიძლება მნიშვნელოვნად გაიზარდოს დენის გადამრთველის საშუალებით მასზე ენერგიის შეერთებით. როდესაც გჭირდებათ მონაცემების მიღება - ჩართეთ სენსორის სიმძლავრე, აიღეთ კითხვა და დაუყოვნებლივ გამორთეთ დენი.

    ჩვენი ირიგატორის უყურადღებოდ დატოვება დიდი ხნის განმავლობაში შეიძლება გამოიწვიოს ავზში წყლის ამოწურვა. წყლის გარეშე მუშაობისას ტუმბო სწრაფად იშლება. პრობლემის გადაწყვეტა შეიძლება იყოს ავზის დაცლის ავტომატური გამოვლენა. სენსორი შეირჩევა ავზის ტიპის მიხედვით. თუ ის არ არის ღრმა, მაშინ ტენიანობის სხვა სენსორი გააკეთებს. როდესაც მისი სიმაღლე არ არის საკმარისი, შეგიძლიათ გამოიყენოთ იგი, გააკეთოთ მცურავი ან უბრალოდ ჩამოწიოთ ორი მავთული ბოლოში.

    ბატარეაზე მომუშავე მოწყობილობა ბევრად უფრო უსაფრთხო იქნება ვიდრე მაგისტრალური მოწყობილობა. იდეალური ვარიანტი იქნება ირიგატორის კვების ელემენტები ბატარეებიდან. მაგრამ Arduino Uno, როგორც მოგეხსენებათ, ძილის რეჟიმშიც კი, მოიხმარს 10 mA- ზე მეტს. გამომავალი შეიძლება იყოს Arduino Mini– ს გამოყენება, რომელსაც შეუძლია შეამციროს მიმდინარე მოხმარება ასობით μA– მდე ძილის რეჟიმში.

    ოთახის მცენარეების მორწყვის მრავალი წესი არსებობს, როგორიცაა: ზამთარში საღამოს არ მორწყათ. თქვენ შეგიძლიათ დაამატოთ სინათლის სენსორები ან რეალურ დროში საათი და დაარეგულიროთ პროგრამა ისე, რომ ის ცდილობს მორწყვას საჭირო დროს.

ცნობილი ანდაზა "არაფერია ახალი მთვარის ქვეშ" მცენარეთა ავტომატური მორწყვის შემთხვევაში მუშაობს ასი პროცენტით. რატომ არ არის ავტომატური გაზის კაბელი, რომელიც განუწყვეტლივ "რწყავს" მცენარეს, თუ ერთი ბოლო წყლის ქილაშია და მეორე მიწაშია ჩაფლული? ან მთლიანად სუპერ მორწყვა სისტემის გამოყენებით კარგი ელექტრონული შევსებით ასევე ნებით შეასრულებს მცენარეების ავტომატურ მორწყვას - მას შეუძლია ყველაფერი, ყველაფერი, მაგრამ ... არა, კრიტიკოსები არიან - აღკაზმულობა არაეფექტურია, ელექტრონიკა ნაკბენ ფასად - ეს ძვირია და ელექტრონული ერთეულის კონფიგურაცია შეუძლებელია - ყოველ ახალ აპლიკაციას სჭირდება საკუთარი. და აქ რაღაც სასურველია ...


რისგან შედგება წყლის ავტომატური ასხურებელი?


ეს არის ის, რაც ჩვენ შევეცდებით გავაკეთოთ. ეს იქნება იაფი, მარტივი კონფიგურაცია და ეფექტური - სხვაგან არსად. მისი მუშაობის ლოგიკა (ისინი ამბობენ, ალგორითმი) ასეთია: თუ მიწა მშრალია, მანქანა მორწყავს, თუ ნიადაგი დატენიანებულია, მორწყვა წყდება ნიადაგის გაშრობამდე. რამდენ ხანს უნდა დაელოდო? დიახ, კითხვა არც კი ღირს. სწორი კრიტერიუმია ნიადაგის "გაშრობა". როგორც კი გაშრება, ვრწყავთ მას - დღის ან ღამის ნებისმიერ დროს ...
და ახლა მოდით განვსაზღვროთ თაროებზე მცენარეების ჩვენი ავტომატური მორწყვა "ჭკვიანი" სპრინკლერის შემქმნელის თვალსაზრისით:

  • გარემო - ბინის პირობები, ყვავილებით სავსე ქოთანი ნიადაგით, რომელსაც მორწყვა სჭირდება;
  • საკონტროლო განყოფილება - მიკროკონტროლის დაფა, რომელიც ითვლება ყველაზე მისაღებ არდუინოს კავშირში;
  • საკონტროლო ობიექტი არის წყლის ქილა, გამტარებელი არის ტუმბო წყლის სატუმბი;
  • ავტომატური სარწყავი სისტემის დამატებითი ელემენტები:
    • მისი "თვალები" არის სენსორები ნიადაგის საშრობი და წყლის დონე ბანკში;
    • "ხელები" - ტუმბო, რომელიც ამოტუმბავს წყალს სარწყავი ზონაში;
    • სუფთა ტექნოლოგია - კომუტაციის გასაღები, ფაქტობრივად ტუმბოს გადამრთველი და ორი LED, მწვანე და წითელი, რომ მიუთითოს "წყალი ხელმისაწვდომია" და "ცოტა წყალი".
ეს არის მთელი სისტემა, რომელსაც ეწოდება მცენარეების ავტომატური მორწყვა, რომელსაც შეუძლია გაათავისუფლოს ყოველდღიური საზრუნავის რუტინისგან.
როგორც ჩანს, წყლის ქილა ნაცვლად, თქვენ უბრალოდ უნდა დაუკავშირდეთ წყლის მილს, მაგრამ ბინის გარშემო არსებული მილაკები ოთახს დიდად არ ამშვენებს, ამიტომ მცენარეების ავტომატური მორწყვის ამოცანა წყდება ავტონომიური კონტეინერის გამოყენებით, რომელიც უნდა იყოს „შევსებული“ კალმით წყლით. და ისე, რომ წყლის ქილა არ გააღიზიანოს ესთეტიკური გემოვნება, ის შეიძლება ნიღბიანი იყოს დეკორატიული ნიმუშით, ისე, რომ როგორც ჩანს, ასეც უნდა იყოს.


ავტომატური სარწყავი ტუმბო


წყლის ტუმბო

წყლის სატუმბი ტუმბო შეძენილია. მისი აღება შესაძლებელია საქარე მინის სარეცხი მანქანიდან, პრინტერიდან ან აკვარიუმიდან. ნებისმიერ მათგანს შეუძლია ადვილად გაუმკლავდეს დავალებას, მაგრამ უფრო ადვილია მისი გამოყენება მანქანიდან. ყველაფერი მარტივია - მე მოვედი, ვნახე, ვიყიდე, მაგრამ სანამ გამოიყენებ, ექსპერიმენტულად უნდა შეარჩიო მიწოდების ძაბვა ისე, რომ მისი გამანადგურებელი ნაკლებად წააგავდეს სახლში დამზადებულ სახლის გეიზერს. წყნარი წყლის ჭავლი იწარმოება ძაბვის დროს 8 ვ და 9 ვ.
უფრო რთული საკითხია ტუმბოს ძრავის მუშაობის მიმდინარეობა. სხვადასხვა ნიმუშისთვის, ეს შეიძლება იყოს 2-3 ან მეტი ამპერი, ხოლო კონტროლერის გამომავალზე დასაშვები მიმდინარე დატვირთვა გაცილებით ნაკლებია - 10 - 20 mA. აქედან გამომდინარე, აუცილებელია საკონტროლო განყოფილების გადართვის შესაძლებლობების გაზრდა. ამისათვის მძლავრი ტრანზისტორი უკავშირდება მის გამომავალს, რაც არდუინოს კავშირის წყალობით საშუალებას აძლევს ტუმბოს ჩართვას. მოდით გამოვიყენოთ uln2003 ტრანზისტორების შეკრება (იხ. დიაგრამა), რომელთაგან თითოეულს შეუძლია შეცვალოს დენი 0.5 ა. თუ შესასვლელი და გამოსავალი პარალელურად არის შერწყმული, მაშინ დასაშვები დატვირთვის დენი ტოლი იქნება მთლიანი, ე.ი. 0.5 * N. ასე რომ, ჩვენ ამას გავაკეთებთ.


Arduino კავშირი - საკონტროლო განყოფილება


მოწყობილობის სქემატური დიაგრამა მცენარეების ავტომატური მორწყვისთვის

საკონტროლო განყოფილება არის ერთი დაფის მიკროპროცესორული კონტროლერი Arduino, რომელიც შექმნილია ასეთი მარტივი ამოცანებისთვის. მასთან მუშაობის ტექნიკა მარტივია - ისინი პროგრამის გამართვას აწყობენ კომპიუტერზე და არდუინოს შეერთების შემდეგ „გადასცემენ“ პროცესორს. თუ რამე უნდა შეიცვალოს, მაშინ პროგრამა ხელახლა ხდება კომპიუტერზე და ხელახლა დაინსტალირდება კონტროლერში. და ამავე დროს არაფრის გადახარშვა, შეცვლა არ არის საჭირო. ეს არის ის, რასაც ჰქვია "ხელახალი კონფიგურაცია".
არდუინოს მოწყობილობასთან დაკავშირების შემდეგი ნაბიჯი, რომელიც უშუალოდ ასრულებს მცენარეების ავტომატური მორწყვის ფუნქციებს, არის სენსორების მავთულის და ტუმბოს კვების ბლოკის დაკავშირება თავად კონტროლერთან. ამ შემთხვევაში, უმჯობესია გამოვიყენოთ ბატარეა კვების ბლოკისთვის - მორწყვა მუშაობს ძალიან მოკლე დროში - ფაქტიურად რამდენიმე წამი, ხოლო კვების ბლოკის მუდმივი "ყურება" არაპრაქტიკულია.


სენსორები - აპარატის "თვალები"


ფრჩხილის ტენიანობის სენსორი

ტენიანობის სენსორი საუკეთესოდ არის დამზადებული მასალისგან, რომელიც არ იჟანგება, მაგალითად გრაფიტის წნელები. რომ არა ფილოსოფია, მაშინ რამდენიმე ფრჩხილი ჩამწკრივებული საიზოლაციო ფირფიტაში რამდენიმე წამში გადაიქცევა სწორედ ასეთ სენსორად (იხ. ფიგურა), რომელიც იყენებს არდუინოს კავშირს მცენარეების ავტომატური მორწყვის სისტემის შესამჩნევად და ინსტალაციისთვის. გრაფიტის ღეროების გადადება შესაძლებელია იმ პერიოდის განმავლობაში, როდესაც ჩვენი სპრინკლერი მუდმივ ექსპლუატაციაშია.

მცურავი წყლის დონის სენსორი

წყლის დონის სენსორი მარტივად შეიძლება განხორციელდეს იმავე "stud" ტიპით, როგორც ზემოთ, მაგრამ ჩვენ გავაკეთებთ კიდევ ერთს - მცურავს (იხ. სურათი). ადვილია მისი აწყობა მილი 4 -დან, რომელიც ფიქსირდება ნაპირზე, და ჯოხი 3 ადვილად მოძრაობს მის გასწვრივ. ფლოტი 2 მიმაგრებულია ღეროს ქვედა ნაწილზე, ხოლო ჯუმპერი მდებარეობს მის ზედა ნაწილში. მილის ზედა ბოლოს არის დიელექტრიკული ფირფიტა ორი კონტაქტით 5, საიდანაც მავთულები მიდის არდუინოს კავშირზე.
სენსორის პრინციპი ისეთივე მარტივია, როგორც სამყარო: თუ ბევრი წყალია, float 2 მაღლა ასწევს როდს 3, დახურვის ფირფიტა მაღლა იწევს და კონტაქტები 5 იხსნება. როდესაც წყლის დონე ეცემა ნიშნულზე და ქვემოთ, ათწილადი ეცემა და ფირფიტა 6 ხურავს კონტაქტებს 5.


მოწყობილობის კონტროლის ალგორითმი


კონტროლის ალგორითმი

მიკროპროცესორებზე საკონტროლო ერთეულების შემუშავებისას ყველაზე მნიშვნელოვანი არის ოპერაციის ალგორითმის სწორად შედგენა. ყოველივე ამის შემდეგ, სამუშაოს დეტალური აღწერა ყველა კვანძის პროგრამების სპეციალურ ენაზე, რომლებსაც აქვთ დაკავშირებული არდუინო, განსაზღვრავს შეყვანის სიგნალების გამოკითხვისა და ანალიზის წესს. გარდა ამისა, დეველოპერის მიერ განსაზღვრული გარკვეული ქმედებების შესასრულებლად (და ეს მხოლოდ ჩვენ ვართ), კონტროლერმა უნდა გაითვალისწინოს გამტარებლების დროის ინტერვალი. და ეს არის ის, რაც მივიღეთ (იხ. სურათი). მოდით შევხედოთ ნაბიჯებს.
არდუინოს სამუშაოსთან დაკავშირების შემდეგ, ის კითხულობს წყლის დონის სენსორის მდგომარეობას და ასახავს მას LED- ებით - ეს არის განგაში ჩვენთვის. შემდეგი სენსორი - ტენიანობა - შეიძლება ითქვას "მაგრამ ნიადაგი სველია" და შემდეგ საკონტროლო განყოფილება უნდა დაბრუნდეს დასაწყისში - დასრულდა მისი მუშაობის ციკლი და ასე შემდეგ - დაუღალავად ციკლში. როგორც კი ნიადაგი გაშრება, კონტროლერი, სენსორის წყალობით, შეიტყობს ამის შესახებ და იწყებს თავისი უშუალო ამოცანის შემუშავებას - მორწყვას.
ტუმბო პირველ რიგში ჩაირთვება, მაგალითად 2 წამის განმავლობაში. რატომ არა სამი-ოთხი-ხუთი? დიახ, რადგან ჩვენ განვსაზღვრეთ ეს 2 წამი ექსპერიმენტულად (და შეიძლება სხვა რიცხვიც ყოფილიყო - ეს ყველაფერი დამოკიდებულია ტუმბოზე). კრიტერიუმი არის ამოტუმბული წყლის რაოდენობა. ეს საკმარისი უნდა იყოს მორწყვისთვის გარკვეული პერიოდის განმავლობაში - ერთი ან ორი საათი, შესაძლოა დღეში. მორწყვის შემდეგ (თქვენი გემოვნებით) ნიადაგის დასველებას 30 წამი სჭირდება. მხოლოდ ამ პერიოდის შემუშავების შემდეგ, კონტროლერი გააგრძელებს შემდგომ მუშაობას, ე.ი. დაიწყება ახალი ციკლი.
ახალი ციკლი კვლავ კითხულობს სენსორს არდუინოს კავშირის საშუალებით, აანალიზებს ინფორმაციას და ა.
მუშაობის ალგორითმი შეიძლება გართულდეს. მაგალითად, თქვენ დაგჭირდებათ ერთზე მეტი ქოთნის მორწყვა, მაგრამ რამდენიმე - თითოეულზე არ დააყენოთ ერთი და იგივე კონტროლერი. ამისათვის თქვენ უნდა გამოვიყენოთ მისი თავისუფალი შეყვანის / გამოყვანის ადგილები და დააკავშიროთ სენსორები და ტუმბოები თითოეული ქოთნიდან და უზრუნველყოთ დამატებითი ბლოკები მათი ალგორითმში დაკითხვისთვის.
მოწყობილობის მუშაობის ალგორითმის შემუშავების შემდეგ, პროგრამა იწერება მის საფუძველზე და პროგრამის მოქმედება იმიტირებულია კომპიუტერზე სპეციალური დებაგერების გამოყენებით, რომლებიც ყოველთვის ხელმისაწვდომია კონკრეტული კონტროლერისთვის - ჩვენს შემთხვევაში, ეს არის არდუინო გამართული პროგრამა ჩაწერილია arduino პროცესორში, ამისათვის ყველაფერი უკვე არსებობს, თქვენ უბრალოდ უნდა ჩართოთ კომპიუტერიდან შესაბამისი გამართვის ბლოკი.
ასეთი პროგრამის ვარიანტი მოცემულია ქვემოთ (შეგიძლიათ ჩამოტვირთოთ პროგრამის ტექსტი სტატიის ბოლოში, მოწყობილობის ნახატებთან ერთად).


პროგრამის კოდი:


// მუდმივები
const int dw = 12; // 12 პინიანი წყლის დონის სენსორი
const int dg = 11; // 11 პინის ნიადაგის ტენიანობის სენსორი
const int nasos = 2; // 2 პინიანი ტუმბოს კონტროლი
const int ledG = 3; // 3 პინიანი მწვანე LED
const int ledR = 4; // 4 პინიანი წითელი LED
// ცვლადები
int dwS = 0; // წყლის დონის სენსორის მდგომარეობა
int dgS = 0; // ნიადაგის ტენიანობის დონის სენსორის მდგომარეობა
// setup void setup () (
// გამოაქვეყნეთ LED- ების და ტუმბოს ქინძისთავები, როგორც შედეგები: pinMode (nasos, OUTPUT); pinMode (ledG, OUTPUT); pinMode (ledR, OUTPUT);
// გამოაცხადოს სენსორების და ტუმბოს ქინძისთავები შეყვანის სახით: pinMode (dw, INPUT); pinMode (dg, INPUT);
}
// სამუშაო ციკლი void 1oop () (
// თხევადი დონის სენსორის მდგომარეობის წაკითხვა dwS = digitalRead (dw);
// თუ ბევრი წყალია, ჩართეთ მწვანე, სხვაგვარად წითელი თუ (dwS == LOW) (digitalWrite (ledG, HIGH); digitalWrite (ledR, LOW);
}
სხვა (
digitalWrite (ledG, LOW); digitalWrite (ledR, HIGH);
}
// წაიკითხეთ ნიადაგის ტენიანობის სენსორის მდგომარეობა dgS = digitalRead (dg);
// თუ ნიადაგი მშრალია, ჩართეთ მორწყვა თუ (dgS == LOW) (digitalWrite (nasos, HIGH); დაგვიანებით (2000);
digitalWrite (nasos, LOW); დაგვიანება (30000);
}
სხვა (
digitalWrite (nasos, LOW);
}
}


სარწყავი აპარატის დიზაინი


ახლა დავიწყოთ ჩვენი აპარატის კვანძების განთავსება. ტენიანობის სენსორი მდებარეობს ქოთნის ნიადაგში 2-5 სმ დეპრესიაზე (ექსპერიმენტულად შერჩეული). წყალმომარაგების მილი მდებარეობს მისი ერთ -ერთი ელექტროდის გვერდით. კონტეინერის უმარტივესი ვერსია არის მინის ქილა, ხოლო ტუმბოს წყლის სენსორი დამონტაჟებულია მის პლასტმასის სახურავზე, ხოლო ტუმბო შეიძლება მოთავსდეს ქილაში.
ჩვენ ვმალავთ ელექტრონიკას, რომელიც ავტომატურად რწყავს მცენარეებს - კონტროლერს, ელექტრომომარაგებას, uln2003 გასაღების მიკროცირკულატორს და რეზისტორებს სტანდარტულ შემთხვევაში, რომლის გაყიდვაც ახლა უკვე შესაძლებელია - ყველა გემოვნებით. წინა პანელზე, ჩვენ ვამონტაჟებთ LED- ებს და კონექტორს, რომლის მეშვეობითაც arduino უკავშირდება ტუმბოს და სენსორებს.
ასე შეიძლება გამოჩნდეს კიდევ ერთი ჭკვიანი თანაშემწე ჩვენს სახლში, რომელიც ასრულებს მცენარეების ავტომატურ მორწყვას, რომელიც თვალყურს ადევნებს ჩვენი ყვავილების ნიადაგის ტენიანობას და არ იტყვის „დიახ, თქვენ იცით, როგორ შემოვიდა ბრუნვაში, დამავიწყდა “. და თუ ეს ყველაფერი მოხდა, მაშინ ნამდვილი "ხელნაკეთი" დაათვალიერებს ირგვლივ, თითქოსდა კითხვას, "სხვა რა უნდა გააკეთოს ეს და ეს?"

პროექტის განსახორციელებლად, ჩვენ გვჭირდება ბიბლიოთეკის დაყენება:

  • Iarduino_4LED ბიბლიოთეკა (ოთხნიშნა LED ინდიკატორთან მუშაობისთვის).

თქვენ შეგიძლიათ გაეცნოთ როგორ დააინსტალიროთ ბიბლიოთეკები ვიკის გვერდზე - ბიბლიოთეკების დაყენება Arduino IDE– ში.

ვიდეო:

კავშირის დიაგრამა:

ამ გაკვეთილზე, LED ინდიკატორი უკავშირდება ციფრულ ქინძისთავებს 2 და 3, ღილაკები უკავშირდება ციფრულ ქინძისთავებს 11 და 12, დენის გადართვა ციფრულ პინზე 10 (PWM– ით), ნიადაგის ტენიანობის სენსორი ანალოგურ შეყვანას A0.

მუშაობის ალგორითმი:

  • როდესაც ძალა გამოიყენება, მოწყობილობა არ არის აქტიური (ნიადაგის ტენიანობის ამჟამინდელი მნიშვნელობა ინდიკატორზე ციმციმებს).
    • თუ ერთდროულად დააჭერთ ორივე ღილაკს "A" და "B", ნიადაგის ტენიანობის ამჟამინდელი მდგომარეობა შეინახება როგორც ბარიერი (რომლის დროსაც საჭიროა მორწყვის დაწყება) და მოწყობილობა გადადის სამუშაო რეჟიმში. ნიადაგის ტენიანობის ბარიერი შეიძლება შეიცვალოს ღირებულების შესვლის რეჟიმში.
    • თუ დააჭერთ და დააჭერთ ორივე ღილაკს "A" და "B" 2 წამზე მეტხანს, მოწყობილობა შევა მნიშვნელობის შეყვანის რეჟიმში.
  • სამუშაო რეჟიმშიმოწყობილობა აჩვენებს მაჩვენებლებს ინდიკატორზე: ნიადაგის ამჟამინდელი ტენიანობა, ნიადაგის ბარიერი ტენიანობა და ბოლო მორწყვიდან გასული დრო. (ბარიერი ნიადაგის ტენიანობა უფრო დაბალზეა ნაჩვენები, ვიდრე სხვა კითხვებს). თუ მოწყობილობა არის მუშაობის რეჟიმში და ნიადაგის ტენიანობის ამჟამინდელი ღირებულება ეცემა ნიადაგის ტენიანობის ზღურბლს ქვემოთ, მოწყობილობა გადადის მორწყვის რეჟიმში.
  • მორწყვის რეჟიმშიმოწყობილობა აჩვენებს მორწყვის დასრულებამდე წამების რაოდენობას ინდიკატორზე და აციმციმებს წერტილებით, ასევე აძლევს PWM სიგნალს დენის გადამრთველზე, რომელიც ჩართავს ტუმბოს. PWM მნიშვნელობა (ტუმბოს ძრავის სიჩქარე) მითითებულია ესკიზში. მორწყვის დრო დადგენილია ღირებულების შესვლის რეჟიმში. მორწყვის ბოლოს, მოწყობილობა გადადის ლოდინის რეჟიმში.
  • ლოდინის რეჟიმშიმოწყობილობა აჩვენებს STOP მაჩვენებელს და აციმციმებს წერტილებს. ეს რეჟიმი უზრუნველყოფილია ისე, რომ ტენიანობა თანაბრად გადანაწილდეს მიწაზე, სანამ მოწყობილობა გადადის სამუშაო რეჟიმში. ლოდინის რეჟიმში გატარებული დრო მითითებულია ესკიზში. ლოდინის დროის გასვლის შემდეგ, მოწყობილობა გადადის ოპერაციულ რეჟიმში.
  • შესვლის რეჟიმის დასაფასებლადთქვენ შეგიძლიათ გადახვიდეთ ნებისმიერი რეჟიმიდან ორივე ღილაკზე "A" და "B" 2 წამზე მეტხანს. ეს რეჟიმი ორი წერტილისგან შედგება: ნიადაგის ტენიანობის ზღურბლის დადგენა (რომლის დროსაც თქვენ უნდა დაიწყოთ მორწყვა) და თავად მორწყვის ხანგრძლივობის დადგენა. თავდაპირველად, ნაჩვენებია ტენიანობის ბარიერი, რომლის შეცვლა შესაძლებელია ღილაკზე "A" (შემცირება) ან "B" (გაზრდა) დაჭერით ან დაჭერით. თუ დააჭერთ ორივე ღილაკს "A" და "B" ერთხელ, მნიშვნელობა შეიცვლება ნიადაგის ამჟამინდელ ტენიანობაზე. ზღურბლის ტენიანობის დადგენის შემდეგ, თქვენ უნდა დააჭიროთ და დააჭიროთ 2 წამზე მეტ ხანს ორივე ღილაკს "A" და "B", ეკრანზე გამოჩნდება მორწყვის ხანგრძლივობა, რომელიც შეიძლება შეიცვალოს ღილაკზე "A" დაჭერით ან დაჭერით (შემცირება), ან ღილაკი "B" (გაზრდა). მორწყვის ხანგრძლივობის დადგენის შემდეგ, თქვენ უნდა დააჭიროთ და დააჭიროთ 2 წამზე მეტ ხანს ორივე ღილაკს "A" და "B", მოწყობილობა შევა ოპერაციულ რეჟიმში.
  • თუ მორწყვისას რომელიმე ღილაკს დააჭერთ, მოწყობილობა წყვეტს მორწყვას და გადადის ლოდინის რეჟიმში.
  • თუ რომელიმე ღილაკს დააწკაპუნებთ ლოდინის რეჟიმში, მოწყობილობა შედის ოპერაციულ რეჟიმში.

პროგრამის კოდი:

#ჩართეთ // ბიბლიოთეკის დაკავშირება ოთხნიშნა LED ინდიკატორთან მუშაობისთვის iarduino_4LED dispLED (2,3); // გამოაცხადოს ობიექტი iarduino_4LED ბიბლიოთეკის ფუნქციებთან მუშაობისთვის, მიუთითოს ინდიკატორის ქინძისთავები (CLK, DIO) const uint8_t pinSensor = A0; // გამოაცხადეთ მუდმივი, რომელიც მიუთითებს იმ ანალოგური შეყვანის რაოდენობას, რომელთანაც დაკავშირებულია ნიადაგის ტენიანობის სენსორი const uint8_t pinButtonA = 12; // გამოაცხადეთ მუდმივი, რომელიც მიუთითებს იმ პინის რაოდენობას, რომელსაც ღილაკი A უკავშირდება const uint8_t pinButtonB = 11; // გამოაცხადეთ მუდმივი, რომელიც მიუთითებს იმ პინის რაოდენობას, რომელთანაც დაკავშირებულია B ღილაკი const uint8_t pinPump = 10; / * გამომავალი PWM * / // გამოაცხადეთ მუდმივი, რომელიც მიუთითებს გამომავალი რიცხვის რაოდენობას, რომელთანაც დაკავშირებულია დენის გადამრთველი uint8_t btnState; // გამოაცხადეთ ცვლადი ღილაკების მდგომარეობის შესანახად: 0-დაჭერილი, 1-დაჭერილი A, 2-დაჭერილი B, 3-დაჭერილი A და B, 4-გამართული A, 5-გამართული B, 6-გამართული A და B uint16_t arr ტენიანობა; // გამოცხადდეს მასივი ნიადაგის ტენიანობის ბოლო 10 მნიშვნელობის შესანახად uint32_t valMoisture; // ცვლადის გამოცხადება ნიადაგის საშუალო ტენიანობის მნიშვნელობის გამოსათვლელად uint32_t timWatering; // ცვლადი გამოაცხადოს ბოლო მორწყვის დაწყების დროის შესანახად (მილიწამებში) uint32_t timSketch; // გამოაცხადეთ ცვლადი, რომ შეინახოთ ესკიზის დაწყებიდან გასული დრო (მილიწამებში) const uint8_t timWaiting = 60; // გამოაცხადე მუდმივი მორწყვის შემდეგ ლოდინის დროის შესანახად (წამში) 0 -დან 99 const uint8_t pwmPump = 100; // გამოაცხადოს მუდმივი ტუმბოს ძრავის ბრუნვის სიჩქარის (კოეფიციენტის) შესანახად 0 -დან 255 -მდე uint16_t timDuration = 5; / * ნაგულისხმევად * / // გამოაცხადეთ ცვლადი მორწყვის ხანგრძლივობის შესანახად (წამში) 0 -დან 99 -მდე uint16_t limMoisture = 0; / * ნაგულისხმევად * / // გამოაცხადეთ ცვლადი ნიადაგის ტენიანობის შესანახად (ტუმბოსთვის) 0 -დან 999 -მდე uint8_t modState = 0; / * დასაწყისში * / // გამოაცხადეთ ცვლადი მოწყობილობის მდგომარეობის შესანახად: 0-არააქტიური, 1-მოლოდინი, 2-აქტიური, 3-მორწყვა, 4-ბარიერი ტენიანობის დადგენა, 5-მორწყვის დროის დაყენება ბათილად () (გაფანტულია. იწყება (); // იწყებს pinMode LED ინდიკატორს (pinButtonA, INPUT); // ჩადეთ pinButtonA pinMode- ში (pinButtonB, INPUT); // ჩადეთ pinButtonB pinMode- ში (pinPump, OUTPUT); // ჩადეთ pin pinPump გამომავალ რეჟიმში digitalWrite (pinPump, LOW); // ტუმბოს გამორთვა timWatering = 0; // გადატვირთეთ ბოლო მორწყვის დაწყების დრო) void loop () (// ******* მონაცემების კითხვა:* ******btnState = Func_buttons_control (); // წაიკითხეთ ღილაკების მდგომარეობა, მაგრამ არა უმეტეს 2 წამისა timSketch = millis (); // წაიკითხეთ მიმდინარე დრო ესკიზის დაწყებიდან, თუ (timWatering> timSketch ) (timWatering = 0;) // გადატვირთეთ დაწყების დრო ბოლო მორწყვის შემთხვევაში თუ გადინება მოხდა millis () valMoisture = 0; for (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--;) დაგვიანებით (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--;) დაგვიანებით (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 ("----");) // თუ ორივე ღილაკი 2 წამზე მეტ ხანს ინახება, ეკრანზე გამოსახულია ტირეები, რაც მიუთითებს, რომ დროა გაათავისუფლოთ, თუ (a> 20 && b == 0) (დაბრუნება 4;) // თუ ღილაკი A 2 წამზე მეტხანს ინახება, დააბრუნეთ 4 თუ (a == 0 && b> 20) (დაბრუნება 5;) // თუ ღილაკი B უფრო ხანგრძლივია 2 წამზე მეტი, დააბრუნე 3 დაყოვნება (100); // დააყოვნეთ 0.1 წამი ჩხუბის ჩასახშობად) თუ (a> 20 && b> 20) (დაბრუნება 6;) // თუ ორივე ღილაკი 2 წამზე მეტხანს იყო გამართული, დააბრუნეთ 6 თუ (a> 0 && b> 0) (დაბრუნება 3;) სხვაგვარად // თუ ორივე ღილაკი 2 წამზე ნაკლებ დროზე იყო დაჭერილი, დააბრუნეთ 5 თუ (a> 0 && b == 0) (დაბრუნება 1;) სხვას // თუ ღილაკი A 2 წამზე ნაკლები იყო გამართული , დაბრუნება 2 თუ (a == 0 && b> 0) (დაბრუნება 2;) სხვაგვარად // თუ ღილაკი B 2 წამზე ნაკლები დარჩა, დაბრუნება 1 (დაბრუნება 0;) // თუ არცერთი ღილაკი არ იყო დაჭერილი, დაბრუნება 0)

მას შემდეგ, რაც კიდევ ერთი ყვავილი გაშრა, მივხვდი, რომ კარგი იქნებოდა როგორმე ავტომატიზირებულიყო მორწყვის პროცესი. რადგან დარწმუნებული ვარ, რომ ის წყლის უქონლობის გამო გარდაიცვალა.
გადავწყვიტე შემეგროვებინა სტრუქტურა, რომელიც ყვავილს მორწყავდა ჩემთვის. შედეგად, მე მივიღე ისეთი მოწყობილობა, რომელიც საკმაოდ კარგად ასრულებს თავის მოვალეობებს:

ორი მარეგულირებლის დახმარებით თქვენ შეგიძლიათ მორგოთ წყლის მორწყვა ერთდროულად, ასევე მორწყვას შორის პერიოდი. ვინ ზრუნავს - შემდგომი დეტალური ინსტრუქცია, თუ როგორ უნდა გააკეთოთ ასეთი მოწყობილობა. მე გამოვიყენე არდუინო მეგა ტვინის ფუძისთვის.
Sprinkler– ის ასაწყობად გჭირდებათ გარკვეული რაოდენობის კომპონენტი და არა უმეტეს 30 წუთის თავისუფალი დრო.

გამოყენებული კომპონენტები:

  • არდუინო მეგა (ის ხელთ იყო, მაგრამ ნებისმიერი სხვა გააკეთებს)
  • ტუმბო და სილიკონის მილი (მანქანის საქარე გამრეცხი ტუმბო ამას გააკეთებს - შეგიძლიათ შეიძინოთ იგი ნებისმიერი ავტო ნაწილებიდან, ან იყიდოთ პატარა წყალქვეშა ტუმბო იბეიზე)
  • Ენერგიის წყარო
  • ორი ცვლადი რეზისტორი მორგებისთვის (ნებისმიერი)
  • IRL3705N ბიპოლარული ტრანზისტორი
  • ორი რეზისტორი (100 ოჰმი და 100 კომი)
  • დიოდი (ნებისმიერი)
  • წყლის ავზი (ჩემს შემთხვევაში, პლასტიკური ყუთი იკეასგან)
  • განლაგება

ჩვენ ვაგროვებთ ყველაფერს შემდეგი სქემის მიხედვით:

ან უფრო ნათლად:

აი რა მივიღე:

ჯერ ტუმბო გამოვცადოთ. მოდით მივაწოდოთ მას 5V. თუ ის ხმაურობდა, ყველაფერი რიგზეა, გააგრძელე.

ახლა მოდით დავუკავშიროთ ტუმბო არდუინოს. მოდით გავაკეთოთ პატარა აღკაზმულობა პურის დაფაზე, რომ გავაკონტროლოთ ტუმბო არდუინოთი.

შევეცადოთ გავაკონტროლოთ ტუმბო არდუინოთი. შეავსეთ ასეთი კოდი

int pumpPin = 5; void setup () (pinMode (pumpPin, OUTPUT); digitalWrite (pumpPin, LOW);) void loop () (digitalWrite (pumpPin, HIGH); დაგვიანებით (1000); digitalWrite (pumpPin, LOW); დაგვიანებით (1000);)

თუ ის პერიოდულად ზუზუნებს, მაშინ ყველაფერი ისევ რიგზეა.

ახლა ჩვენ უბრალოდ უნდა დავამატოთ ორი კონტროლი. მოდით შევუერთოთ ცვლადი რეზისტორები ჩვენს მოწყობილობას და შევამოწმოთ მათი შესრულება.

შეავსეთ ასეთი კოდი არდუინოზე

int volumePin = A0; void setup () (pinMode (volumePin, INPUT); Serial.begin (9600);) void loop () (Serial.println (analogRead (volumePin)); დაგვიანებით (100);)

მოდით გადავიდეთ სერიულ მონიტორზე და დავრწმუნდეთ, რომ არსებობს რეაქცია ღილაკის ბრუნვაზე. ის უნდა შეიცვალოს 0 -დან 1024 -მდე

ახლა რჩება, რომ ეს ყველაფერი ერთად იმუშაოს.

აქ არის სპრინკლერის კოდი:

// პირველი რეგულატორი აკონტროლებს წყლის გადინების დროს (4 -დან 15 წამამდე) #განსაზღვრეთ MAX_FLOWTIME 15 // წამი #განსაზღვრეთ MIN_FLOWTIME 4 // წამი // მეორე რეგულატორი აკონტროლებს მორწყვის სიხშირეს დღეში ერთხელ კვირაში ერთხელ#განსაზღვრეთ MAX_PERIOD 7 // დღე #განსაზღვრეთ MIN_PERIOD 1 // დღე #განსაზღვრეთ MAX 1015 #განსაზღვრეთ MIN 0 int მოცულობაPin = A0; // პინი, რომელთანაც დაკავშირებულია მარეგულირებელი, რომელიც პასუხისმგებელია სარწყავი წყლის მოცულობაზე int პერიოდი Pin = A1; // პინი, რომელთანაც დაკავშირებულია მარეგულირებელი, რომელიც პასუხისმგებელია მორწყვებს შორის პერიოდზე int pumpPin = 5; // პინი, რომელსაც უკავშირდება ტუმბოს კონტროლი int ტომი; int პერიოდი; // პროცედურა, რომელიც ჩართავს ტუმბოს მოცულობით განსაზღვრული დროის განმავლობაშიბათილი წყალი () (digitalWrite (pumpPin, HIGH); // ჩართეთ ტუმბოშეფერხება (მოცულობა); digitalWrite (pumpPin, LOW); // გამორთეთ ტუმბოდაგვიანება (პერიოდი); ) void setup () (pinMode (pumpPin, OUTPUT); digitalWrite (pumpPin, LOW);) void loop () ( // წაიკითხეთ რეგულატორების (ცვლადი რეზისტორების) მნიშვნელობები და მიიყვანეთ ისინი მითითებულ ლიმიტებამდემოცულობა = რუკა (ანალოგიით წაკითხვა (მოცულობის პინი), MIN, MAX, MIN_FLOWTIME, MAX_FLOWTIME) * 1000; პერიოდი = რუკა (analogRead (periodPin), MIN, MAX, MIN_PERIOD, MAX_PERIOD) * 1000 * 60 * 60 * 24; წყალი (); )

Ყველაფერი მზადაა. ჩვენ ვტკბებით ჩვენი დასვენებით. და თქვენ ყოველთვის იცით, რომ თქვენი მცენარეები იღებენ წყალს.

შესახებ ჭკვიანი სახლებიალბათ გსმენიათ ამ მიმართულებით ბევრი იდეა არის ძალიან ფუტურისტული, მაგრამ ეს არ უნდა შეწყდეს.

ზოგი 20-25 წლის წინ სამეცნიერო ფანტასტიკას ჰგავდა, მაგრამ ახლა ისინი ყველგან გამოიყენება. უახლოეს მომავალში, ყველა სახლი "გახდება გონიერი" ან სულ მცირე "ჭკვიანდება". ეს მიმართულება არა მხოლოდ პერსპექტიულია, არამედ საინტერესოა, ასე რომ გვერდით არ დადგეთ.

საერთოდ, ჭკვიანი სახლიარის სენსორების, მექანიკური და ელექტრონული კომპონენტების ძალიან რთული სისტემა, რომელიც კონტროლდება დადგენილი პროგრამის მიხედვით. ეს სისტემა აკონტროლებს წყლის, გაზის, ელექტროენერგიის მოხმარებას (და გაჟონვას). აკონტროლებს განათებას. მოყვება ხანძარსაწინააღმდეგო ელემენტები. უზრუნველყოფს სხვადასხვა მოწყობილობების დისტანციურ კონტროლს ტელეფონით ან SMS- ით. მოიცავს ქურდობისა და უნებართვო წვდომისგან დაცვის ელემენტებს. შეიცავს უწყვეტი კვების ბლოკს, რომელიც აუცილებელია მთელი სისტემისთვის.

ასეთი სისტემების მთავარი ამოცანაა ადამიანების ცხოვრება გაუადვილოს, ზოგიერთი შეშფოთების ავტომატიზაციაზე გადატანით. ჩვენ ვიმუშავებთ ამ პრინციპის შესაბამისად, საშინაო დავალების ნაწილს მივანდობთ მიკროკონტროლერს. დავიწყოთ, როგორც ყოველთვის, მარტივით.

არსებობს მრავალი სარწყავი მოწყობილობა, პრიმიტიულიდან, როგორიცაა გაზი, ერთი ბოლო ქოთანში მცენარეებით დაკრძალული, მეორე კი წყლის კონტეინერში ჩაძირული, მაღალტექნოლოგიური ელექტრონული სარწყავი სისტემებით დამთავრებული. პირველისთვის სარწყავი ხარისხი და ეფექტურობა დაბალია, მეორესთვის ფასი მაღალია, მაგრამ ისინი მუშაობენ საკუთარი ალგორითმის მიხედვით, რომლის შეცვლა შეუძლებელია.

ჩვენ განვავითარებთ მოწყობილობას, რომელიც არის უნივერსალური, ფუნქციური გაფართოების შესაძლებლობით, მაგრამ ამავე დროს ის არის იაფი და ეფექტური.

მუშაობის ალგორითმი ქარხნის ავტომატური სარწყავი მანქანამარტივია: ქოთანში ნიადაგი გაშრა - მორწყეთ, მორწყეთ - დაელოდეთ სანამ არ გაშრება. როგორც ჩანს, ყველაფერი ერთი შეხედვით მარტივია. ჩვენ ვქმნით საჭირო კომპონენტების ჩამონათვალს: მიკროკონტროლის დაფა, ტუმბო, დენის გადამრთველი ტუმბოს ძრავის გასაკონტროლებლად, ნიადაგის ტენიანობის სენსორი, კონტეინერი წყლით (სინამდვილეში, კარგი იქნებოდა წყალმომარაგებასთან დაკავშირება, მაგრამ უკეთესია არა :-) იმისათვის, რომ სისტემა იყოს სრულად ავტონომიური, აუცილებელია მისი აღჭურვა მოწყობილობის წყლის მოხმარების სიგნალებით, მაგალითად, მწვანე LED - არის საკმარისი წყალი, წითელი - არ არის საკმარისი წყალი , თქვენ უნდა შეავსოთ. ეს ნიშნავს, რომ ჩვენ ასევე გვჭირდება წყლის დონის სენსორი.

მცენარეთა ავტომატური სარწყავი ტუმბო

ჩვენ ყველაფერს გავაკეთებთ ზემოაღნიშნულიდან, ტუმბოს გარდა, ჩვენით. ნებისმიერი დაბალი სიმძლავრის ტუმბო გააკეთებს. თქვენ შეგიძლიათ მოძებნოთ ძველი და გატეხილი ჭავლური პრინტერები ან შეიძინოთ საქარე მინის სარეცხი ტუმბო ავტო ნაწილებში, უმარტივესი, რომელიც ვიპოვე 90 რუბლად.

მნიშვნელოვანია: სანამ ტუმბოს მზა მოწყობილობას დაუკავშირდებით, შეამოწმეთ იგი მუშაობაში. მანქანის ტუმბოს შეუძლია რამდენიმე მეტრის სიგრძის შადრევნის წარმოება; სახლში, ასეთი "მორწყვა" შეიძლება არ იყოს გაგებული და აკრძალული კვირტში. ექსპერიმენტულად იპოვეთ ოპტიმალური დაძაბულობა. ავტო ტუმბო შექმნილია იმისთვის, რომ იკვებოს 12 ვ ბორტ ქსელიდან, ჩემს ასლზე, ​​საკმარისი წნევა უკვე ჩნდება 8 ... 9 ვ ძაბვისას. პრინტერის ტუმბო არ მისცემს წნევას რამდენიმე მეტრზე, მაგრამ არის კიდევ ერთი პრობლემა: ის ასხამს მელანს პრინტერში და ისინი ძალიან რთულად ირეცხება და ასეთი ტუმბოს საჭიროებს გარეცხვას ყველაზე ზუსტად.

სენსორების შესახებ

ნიადაგის ტენიანობის სენსორი საუკეთესოდ არის დამზადებული გრაფიტით, ლითონი მგრძნობიარეა ელექტროლიზისა და კოროზიის მიმართ და, შესაბამისად, მისი თვისებები დროთა განმავლობაში უარესდება. მიუხედავად იმისა, რომ ჩვენს ექსპერიმენტულ პარამეტრებში, ლურსმნები და სპილენძის მავთულის სენსორები კარგად მუშაობს.

ფრჩხილის ლიანდაგი არის უმარტივესი დიზაინი. მის დასამზადებლად დაგჭირდებათ პლასტმასის ან რეზინის ნაჭერი, ორი ლურსმანი, მავთულები და კამბრიკი (ელექტრო ლენტი).

თხევადი დონის სენსორი შეიძლება გაკეთდეს ისე, როგორც ნიადაგის ტენიანობის სენსორი, ან თქვენ შეგიძლიათ ამუშავოთ float ტიპის დიზაინი. მეორე ვარიანტი სასურველია. სურათი 3 გვიჩვენებს ასეთი სენსორის ვარიანტს, სადაც 1 არის კონტეინერი წყლით მორწყვისთვის და მინიმალური ნიშანი, 4 არის მილი ნებისმიერი მასალისგან დამზადებული მილი და ჯოხი 3, რომელიც თავისუფლად დადის მილში. მილის და შევსების აღება შესაძლებელია ძველი ბურთულიანი კალამიდან. ბოლოში, float 2 (ნაჭერი ქაფი) ერთვის როდს. ზედა, წყლის ზემოთ, მილის სტრუქტურის ნაწილი, ჩვენ პლასტმასის ფირფიტაზე ვდებთ კონტაქტებს 5, ეს იქნება სენსორული კონტაქტები. ჯოხის თავზე ჩვენ ვამაგრებთ გამტარ ფირფიტას 6. მილის ღეროს დარტყმა არის 1 ... 2 სმ. მე -5 ქინძისთავებზე ჩვენ ვამაგრებთ მავთულს არდუინოსთან დასაკავშირებლად. მილი 4 ფიქსირდება კონტეინერის შიგნით.

სენსორის მუშაობის პრინციპი ასეთია. როდესაც ბევრი წყალია, float 2 უბიძგებს როდს 3 გაჩერებამდე, ხოლო ფირფიტა 6 არ ეხება კონტაქტებს 5. როდესაც წყლის დონე ეცემა MIN ნიშნის ქვემოთ, მცურავი იკლებს წყლის დონესთან ერთად და ამცირებს როდს ფირფიტთან ერთად b, რომელიც, თავის მხრივ, ეხება კონტაქტებს 5 და ხურავს მათ ერთად. კონტროლერმა მხოლოდ უნდა წაიკითხოს კონტაქტების მდგომარეობა 5. თუ თქვენ ზარმაცი ხართ, რომ შეძლოთ არევა, შეგიძლიათ შეიძინოთ მსგავსი ნაწილები ავტო ნაწილებში, ისინი იქ იყიდება როგორც გამაგრილებლის დონის სენსორები, უმარტივესის ფასი 100 - 150 რუბლია.

Arduino Trust Management

ეს მისთვის უმნიშვნელო ამოცანაა. ჩვენ ვუკავშირდებით სენსორებს ერთი კონტაქტით არდუინოს პინთან და მაღალი წინააღმდეგობის მქონე რეზისტორის საშუალებით ჩვენ მათ ვწევთ "მიწაზე", მეორე კონტაქტით არდუინოს დენის წყაროს +5 ვ. ტუმბოს შეერთების მეთოდის ასარჩევად, ჩვენ უნდა ვიცოდეთ ის დენი, რომელსაც ის მოიხმარს საოპერაციო რეჟიმში და სავალდებულოა წყლის ამოტუმბვისას; უმოქმედო დენი შეიძლება იყოს ნაკლები. თუ დენი 3.5 A– ზე ნაკლებია, მაშინ ტუმბოს დასაკავშირებლად შეიძლება გამოყენებულ იქნას uln2003 ტრანზისტორის ასამბლეა.

თითოეულ uln2003 გამომავალს შეუძლია ატვირთოს 0.5 ა. მე პარალელურად დავუკავშირე შვიდივე შეყვანა და გამოსავალი დატვირთვის დენის გასაზრდელად: 7 × 0.5 = 3.5 A. თუ ტუმბოს დენი 3.5 A- ზე მეტია, მაშინ შეგიძლიათ განათავსოთ ველი ეფექტის ტრანზისტორი, მაგალითად irf630 (მაგრამ მას სჭირდება დამატებითი ელემენტები). ამ ტრანზისტორს შეუძლია გაუძლოს დინებას 9 ა-მდე, თუ თქვენი ტუმბო მოითხოვს უფრო მეტ დენს, შეცვალეთ ტუმბო, წინააღმდეგ შემთხვევაში ჩვენ არ გვექნება სპრინკერი, არამედ ცეცხლის შლანგი :-)

Საჭმლისთვის ქარხნის ავტომატური სარწყავი მანქანაშეგიძლიათ გამოიყენოთ ბატარეები რადიო კონტროლირებადი სათამაშოებიდან ან AC ადაპტერიდან. არჩეული ელექტრომომარაგება უნდა შეფასდეს ტუმბოების მოთხოვნილ დენზე. ბატარეის ენერგიაზე გავამახვილებ ყურადღებას, ტუმბოები ხშირად და მოკლე დროში არ ირთვება, ამიტომ არ არის საჭირო ქსელში ჩართული კვების ბლოკი. გარდა ამისა, დროთა განმავლობაში, თქვენ შეგიძლიათ დაამატოთ ბატარეის დატენვის მონიტორინგი და მიუთითოთ პროგრამაში დატენვის აუცილებლობა.

საკონტროლო ალგორითმის ბლოკ -დიაგრამა ნაჩვენებია ქვემოთ მოცემულ ფიგურაში. მოწყობილობის დაწყების შემდეგ, სენსორები იკითხება უწყვეტი სამუშაო ციკლში და თითოეული სენსორის მდგომარეობიდან გამომდინარე, მოქმედებები ხორციელდება. წყლის დონის სენსორი აკონტროლებს LED- ებს. ნიადაგის ტენიანობის სენსორი აკონტროლებს ტუმბოს.

პროგრამა მარტივია, მაგრამ მოითხოვს კორექტირებას თითოეულ კონკრეტულ შემთხვევაში. განსაკუთრებული ყურადღება უნდა მიექცეს ტუმბოს ჩართვასა და გამორთვას შორის პაუზას: რაც უფრო პატარაა ქოთანი და რაც უფრო დიდია ტუმბოს ტევადობა, მით უფრო მოკლე უნდა იყოს პაუზა. ასევე, ტუმბოს გამორთვის შემდეგ პაუზა დამოკიდებულია ქოთნის ზომაზე. მორწყვის შემდეგ, მიწა უნდა იყოს გაჯერებული, წინააღმდეგ შემთხვევაში, თუ ტენიანობა არ აღწევს სენსორს, სისტემა კვლავ ჩართავს მორწყვას. საუკეთესო ვარიანტია მოათავსოთ წყალმომარაგების მილი სენსორის გვერდით ისე, რომ სენსორის არეში მიწა დაუყოვნებლივ გაჟღენთილი იყოს. აქვე აღვნიშნავ: მორწყვის ჩართვისათვის ტენიანობის დონე შეიძლება დარეგულირდეს თავად სენსორის მიერ, მისი სხვადასხვა სიღრმეზე ჩაძირვის გზით.

პროგრამის კოდი

// მუდმივები
const int dw = 12; // 12 პინიანი წყლის დონის სენსორი
const int dg = 11; // 11 პინის ნიადაგის ტენიანობის სენსორი
const int nasos = 2; // 2 პინიანი ტუმბოს კონტროლი
const int ledG = 3; // 3 პინიანი მწვანე LED
const int ledR = 4; // 4 პინიანი წითელი LED
// ცვლადები
int dwS = 0; // წყლის დონის სენსორის მდგომარეობა
int dgS = 0; // ნიადაგის ტენიანობის დონის სენსორის მდგომარეობა
// პარამეტრები
void setup () (
// გამოაცხადეთ LED- ების და ტუმბოს ქინძისთავები გამომავლებად:
pinMode (nasos, OUTPUT);
pinMode (ledG, OUTPUT);
pinMode (ledR, OUTPUT);
// გამოაცხადეთ სენსორების და ტუმბოს ქინძისთავები შეყვანის სახით:
pinMode (dw, INPUT);
pinMode (dg, INPUT);
}
// სამუშაო ციკლი
სიცარიელე 1oop () (
// თხევადი დონის სენსორის სტატუსის წაკითხვა
dwS = digitalRead (dw);
// თუ ბევრი წყალია, ჩართეთ მწვანე, წინააღმდეგ შემთხვევაში წითელი
თუ (dwS == LOW) (
digitalWrite (ledG, HIGH);
digitalWrite (ledR, LOW);
}
სხვა (
digitalWrite (ledG, LOW);
digitalWrite (ledR, HIGH);
}
// წაიკითხეთ ნიადაგის ტენიანობის სენსორის მდგომარეობა
dgS = digitalRead (dg);
// თუ ნიადაგი მშრალია, ჩართეთ მორწყვა
თუ (dgS == LOW) (
digitalWrite (nasos, HIGH);
დაგვიანება (2000);
digitalWrite (nasos, LOW);
დაგვიანება (30000);
}
სხვა (
digitalWrite (nasos, LOW);
}
}

რაც შეეხება კოდს, მინდა ვთქვა შემდეგი. გასამარტივებლად, მე დავაყენე შეფერხების ბრძანებები, რომლებზეც მე პირადად დავიფიცე. შეფერხების გამო, ერთ მომენტში ჩვენი მოწყობილობა იყინება 30 წამის განმავლობაში (ან იქნებ მეტი მოგვიწევს). მაგრამ ეს არ არის კრიტიკული ამ მოწყობილობაში. თუ საბოლოოდ მოწყობილობა მორწყავს 10 მცენარეს და არის დამთხვევა, რომ ყველაფერს ერთდროულად სჭირდება მორწყვა, მე ვფიქრობ, რომ 300 წამი, რომელსაც ბოლო მცენარე მოუწევს ლოდინი, არც ისე მნიშვნელოვანია.

მაგრამ ენერგიის წყაროსთვის, ასეთი გამოსავალი დადებით როლს შეასრულებს: ის არ დაუშვებს მოწყობილობას ჩართოს 10 ტუმბო ერთდროულად. პირველი შეფერხება (2000 წ.) ტუმბოს ჩართავს 2 წამი, თუ თქვენ გაქვთ დიდი ქარხანა დიდ ქოთანში, მაშინ დრო უნდა გაიზარდოს, თუ ტუმბო ძალიან ეფექტურია, მაშინ პირიქით, შემცირდება. მეორე შეფერხება (30000) აძლევს ნიადაგს 30 წამი წყალში გაჟღენთვის, ამის შესახებ ადრე დავწერე. ალბათ ეს დროც უნდა დარეგულირდეს.

სტრუქტურულად, მოწყობილობა შედგება ორი ნაწილისგან - ელექტრონული და მექანიკური. მიზანშეწონილია მოათავსოთ ელექტრონული ნაწილი და ბატარეები იმ შემთხვევაში, რომ შემთხვევითი შესხურება არ დაზიანდეს ელექტრონიკა. თქვენ შეგიძლიათ გამოიყენოთ არა მთლიანი არდუინო, არამედ მიკროკონტროლი, კვარცი კონდენსატორებით და 5 ვ სიმძლავრის სტაბილიზატორი. იმავე შემთხვევაში ჩვენ ვდებთ uln2003 მიკროცირკულატორს, რეზისტორებს, ვანახებთ LED- ებს წინა პანელზე და ვამონტაჟებთ კონექტორს სენსორებისა და ა. ტუმბო. თუ ტუმბო ძლიერია და გათბება, მაშინ ჩვენ ვბურღავთ ხვრელებს ვენტილაციისთვის. არ არის საჭირო მოწყობილობის ჩართვის დამატებითი ინდიკატორის დაყენება, წყლის დონის ერთ -ერთი LED ყოველთვის ჩართულია და ის შეასრულებს ამ ფუნქციას.

ელექტრონული ნაწილის კორპუსი შეიძლება გაკეთდეს ნებისმიერი მასალისგან ან შეიძლება შეირჩეს მზადაა. კონტეინერისთვის შეგიძლიათ გამოიყენოთ პლასტმასის ბოთლი ან შესაფერისი ზომის შუშის ქილა, ან შეგიძლიათ წებოთ პლასტმასისგან. ჩვენ ვაფიქსირებთ თხევადი დონის სენსორს და ვამონტაჟებთ ტუმბოს. თუ ტუმბო უნდა ჩაძირულიყო ბოლოში (და არის რამდენიმე), მაშინ ჩვენ ძალიან ფრთხილად ვასხამთ მის ყველა მიმდინარე მავთულხლართებს. ჩვენ ვხატავთ შესაფერისი დიამეტრის მილს ტუმბოდან ქოთანში მცენარეთან ერთად. თქვენ შეგიძლიათ შეიძინოთ ავტომობილის ნაწილების მაღაზიაში ტუმბოსთან ერთად ან აიღოთ შესაფერისი რეზინის ან სილიკონის. ქოთნის რგოლზე, ჩვენ მივდივართ მილის შესაკრავად, ისე რომ წყლის მიწოდებისას არ იყოს გაფრქვევა. ჩვენ ვაყენებთ ტენიანობის სენსორს მილთან ახლოს. ისე, რომ მცენარის გვერდით მდგარი მინის ან პლასტმასის ჭურჭელი სხვებს არ აშინებდეს თავისი გარეგნობით, თქვენ შეგიძლიათ მისცეთ მას ავტორის დიზაინის სტილი აკრილის ვიტრაჟების საღებავების გამოყენებით.

შემდგომი ტესტები. ნუ დაგავიწყდებათ: მცენარის კეთილდღეობა დამოკიდებულია მოწყობილობის მუშაობაზე. სანამ პრაქტიკულ გამოცდებს ჩაატარებდეთ, ჩაატარეთ სკამური ტესტები მოწყობილობის ქოთნით მცენარის გარეშე რამდენიმე დღის განმავლობაში. მასში მიწა არ უნდა დატბორილი ან მშრალი იყოს. საჭიროების შემთხვევაში, გაღრმავეთ ტენიანობის სენსორი ან პირიქით, აწიეთ იგი უფრო მაღლა. დაარეგულირეთ ტუმბოს მუშაობის დრო პროგრამაში. მან არ უნდა გამოუშვას წვეთი ყოველ ხუთ წუთში, მაგრამ არ უნდა დატბოროს დედამიწა კვირაში ერთხელ. აკონტროლეთ ელექტრონული კომპონენტების ტემპერატურა ექსპერიმენტის განმავლობაში.

არ გაცხელდე!

როდესაც ყველაფერი გამოსწორებულია, გადადით პრაქტიკულ ტესტებზე, აიღეთ ყველაზე არაპრესიული მცენარე. ყურადღებით დააკვირდით მცენარის მდგომარეობას, თუ რამე არასწორია, შეწყვიტეთ ექსპერიმენტი, სანამ არ გაარკვევთ მიზეზებს. თუ ყველაფერი კარგადაა, დაუკავშირეთ სხვა სენსორი და ტუმბო არდუინოს, დაამატეთ კოდი და ავტომატიზირეთ სხვა ქარხნის მორწყვა. პორტის დამატებითი გაფართოების გარეშე, Arduino– ს შეუძლია ათეულობით ქარხნის დამუშავება.

განაცხადი. კოდი კომენტარების გარეშე:
const int dw = 12;
const int dg = 11;
const int nasos = 2;
const int ledG = 3;
const int ledR = 4;
int dwS = 0;
int dgS = 0;
void setup () (pinMode (nasos, OUTPUT);
pinMode (ledG, OUTPUT);
pinMode (ledR, OUTPUT);
pinMode (dw, INPUT);
pinMode (dg, INPUT); )
void loop () (dwS = digitalRead (dw);
if (dwS == LOW) (digitalWrite (ledG, HIGH);
digitalWrite (ledR, LOW); )
სხვა (digitalWrite (ledG, LOW);
digitalWrite (ledR, HIGH); )
dgS = digitalRead (dg);
if (dgS == LOW) (digitalWrite (nasos, HIGH);
დაგვიანება (2000);
digitalWrite (nasos, LOW);
დაგვიანება (30000); )
სხვა (digitalWrite (nasos, LOW);))

წინა სტატია: შემდეგი სტატია: