Სარჩევი:

ჭკვიანი სახლის თერმოსტატი: 4 ნაბიჯი
ჭკვიანი სახლის თერმოსტატი: 4 ნაბიჯი

ვიდეო: ჭკვიანი სახლის თერმოსტატი: 4 ნაბიჯი

ვიდეო: ჭკვიანი სახლის თერმოსტატი: 4 ნაბიჯი
ვიდეო: კახი კალაძე დატროლეს 😀🤣🤣 2024, ივლისი
Anonim
ჭკვიანი სახლის თერმოსტატი
ჭკვიანი სახლის თერმოსტატი

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

ნაბიჯი 1: მიმოხილვა

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

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

ნაბიჯი 2: ნაწილები და მასალები

(15) ჯუმბერის მავთულები

(4) 220 Ohm რეზისტორები

(1) 10K Ohm რეზისტორი

(1) ტემპერატურის სენსორი

(1) ფოტო რეზისტორი

(1) DAGU მინი DC გადაცემათა კოლოფი

(1) დიოდი

(1) ტრანზისტორი

(1) ფოტორეზისტორი

(1) პურის დაფა

(1) არდუინო MKR

ნაბიჯი 3: წრე

წრე
წრე
წრე
წრე
წრე
წრე
წრე
წრე

სურათი 1 = დიდი მარცხენა სურათი

ფიგურა 2 = ზედა მარჯვენა

სურათი 3 = შუა მარჯვენა

სურათი 4 = ქვედა მარჯვენა

ფიგურა 1

დიაგრამის გამოყენებით, ჩვენ გავამაგრეთ თითოეული სამი LED. ჩვენ თითოეულ LED- ს ვშორებდით მას შემდეგ, რაც ვმუშაობდით დიდი პურის დაფაზე. მცირე ზომის პურის დაფებისთვის, შეიძლება საჭირო გახდეს LED- ების ერთმანეთთან დაახლოება. ასევე, ზედმეტია პურის დაფის ჩართვა, ვინაიდან LED- ები იმდენად მცირე ენერგიას იზიდავს. ჩვენ არ გამოვიყენეთ 5V კავშირი პურის დაფაზე LED- ებისთვის. თითოეული კავშირი LED- ებიდან ჩვენს არდუინოსთან მოხდა ისე, როგორც ზემოთ არის მწვანე მავთული. ჩვენი წითელი, ლურჯი და მწვანე LED- ები უკავშირდება ციფრულ პინს 8, 9 და 10 შესაბამისად, რომელიც მითითებულია წითელი, ლურჯი და მწვანე მავთულით ჩვენს სურათზე.

სურათი 2

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

სურათი 3

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

სურათი 4

ზემოთ მოცემული სურათი გამოყენებული იყო DAGU Mini DC გადაცემათა კოლოფის დასაკავშირებლად. გადაცემათა კოლოფზე მიმაგრებული მწვანე მავთული სინამდვილეში არის წითელი მავთული, რომელიც მას უკავშირდება ჩვენს სურათზე. გადაცემათა კოლოფი უკავშირდება ციფრულ პინ 11 -ს ჩვენს მოდელში ნარინჯისფერი მავთულით. დარწმუნდით, რომ არ შეცდეთ აქ გამოყენებული ტრანზისტორი ტემპერატურის სენსორთან. ისინი თითქმის იდენტურად გამოიყურებიან. ტემპერატურის სენსორს სავარაუდოდ აქვს TMP ან სხვა სკრიპტი დაწერილი სენსორის ბრტყელ მხარეს. აქ უნდა გამოიყენოთ ტრანზისტორი და არა ტემპერატურის სენსორი.

ნაბიჯი 4: Arduino კოდი

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

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

ტემპერატურის სენსორის და LED- ის დაყენება:

tempPin = 'A0';%განსაზღვრავს ანონიმურ ფუნქციას, რომელიც ძაბვას გარდაქმნის ტემპერატურაზე tempCfromVolts = @(ვოლტი) (ვოლტ -0.5)*100; samplingDuration = 5; %წამი. რამდენ ხანს გვინდა სინჯის აღება samplingInterval = 1; %რამდენი წამია ტემპერატურის მაჩვენებლებს შორის %აიღებს შერჩევის დროის ვექტორი samplingTimes = 0: samplingInterval: samplingDuration; %გამოთვალეთ ნიმუშების რაოდენობა ხანგრძლივობისა და ინტერვალის საფუძველზე numSamples = სიგრძე (samplingTimes); %წინასწარი გამოყოფის temp ცვლადები და ცვლადი კითხვების რაოდენობისათვის იგი ინახავს tempC = ნულს (numSamples, 1); tempF = tempC; ამჯერად ჩვენ გამოვიყენებთ for loop– ს, რომ მივიღოთ წინასწარ განსაზღვრული რაოდენობის %ტემპერატურის მაჩვენებლები

მარყუჟისათვის:

ინდექსისთვის = 1: numSamples %წაიკითხავს ძაბვას tempPin- ზე და შეინახავს ცვლადი ვოლტებში = readVoltage (a, tempPin); tempC (ინდექსი) = -1*tempCfromVolts (ვოლტი+0.3); tempF (ინდექსი) = tempC (ინდექსი)*(9/5) +32; %ფორმატირებული გამომავალი, რომელიც აცნობს მიმდინარე ტემპერატურის კითხვას fprintf ('ტემპერატურა %d წამში არის %5.2f C ან %5.2f F. / n',… samplingTimes (ინდექსი), tempC (ინდექსი), tempF (ინდექსი)); შენიშვნა ეს ჩვენება მხოლოდ ერთდროულად გახდება ხილული მას შემდეგ რაც კოდი შესრულდება %თუ კოდი არ დააკოპირეთ/ჩასვით უბრალო სკრიპტის ფაილზე. პაუზა (შერჩევის ინტერვალი) %დაგვიანებით მომდევნო ნიმუშის დასრულებამდე

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

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

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

მენიუს დაყენება:

არჩევანი = {'ავტომატური', 'სახელმძღვანელო'}; imode = მენიუ ('რეჟიმი', არჩევანი) თუ imode> 0 h = msgbox (['თქვენ აირჩიეთ' არჩევანი {imode}]); else h = warndlg ("თქვენ დახურეთ მენიუ არჩევანის გაკეთების გარეშე") დაელოდეთ (თ);

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

მექანიკური რეჟიმი დაიწყება:

if imode == 2 dlg_prompts = {'რა ტემპერატურა გირჩევნია?'}; dlg_title = 'ტემპერატურა'; dlg_defaults = {'68'}; opts. Resize = 'ჩართული'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty (dlg_ans) h = warndlg ('თქვენ გააუქმეთ inputdlg ბრძანება'); else temp_manual = str2double (dlg_ans {1}) %[ტემპერატურის რეგულირების დაყენების სლაიდის დამატება ქვემოთ] დასასრული

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

ტემპერატურის რეგულირების პარამეტრები:

ხოლო temp_manual <tempF writeDigitalPin (a, 'D9', 1) writeDigitalPin (a, 'D11', 1); დასრულდება, სანამ temp_manual> tempF writeDigitalPin (a, 'D8', 1) writeDigitalPin (a, 'D11', 1); დასასრული

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

დააყენეთ ავტომატური რეჟიმი:

elseif imode == 1 dlg_prompts = {'ნორმალური', 'მოშორებით'}; dlg_title = 'ტემპერატურის პარამეტრები'; dlg_defaults = {'68', '64'}; opts. Resize = 'ჩართული'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty (dlg_ans) h = warndlg ('თქვენ გააუქმეთ inputdlg ბრძანება'); სხვაგვარად temp_normal = str2double (dlg_ans {1}) temp_away = str2double (dlg_ans {2}) end waitfor (h); %[დაამატეთ მოძრაობის დეტექტორის ნაბიჯი ქვემოთ]

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

Run_Motion_Detector (a, inf) while lightStr == 0 temp = temp_away while temp tempF writeDigitalPin (a, 'D6', 1) რასაც pin წითელი შუქი აქვს ასევე საავტომობილო გულშემატკივართა ჩაწერისთვის DigitPin (a, 'D9', 1); დასასრულის დასრულება სანამ lightStr == 1 temp = temp_normal writeDigitalPin (a, 'D6', 1) %შეცვალეთ რა პინშიც არის ნორმალური შუქი, ხოლო temp tempF ჩაწერეთ DigitalPin (a, 'D6', 1) რა pin წითელი შუქიც არის ძრავა გულშემატკივართა ჩაწერისთვისDigitalPin (a, 'D9', 1); დასასრული დასასრული

სრული კოდი შეგიძლიათ იხილოთ აქ.

გირჩევთ: