Სარჩევი:
- ნაბიჯი 1: ნაწილები და მასალები
- ნაბიჯი 2: MATLAB Arduino მხარდაჭერის პაკეტი
- ნაბიჯი 3: მობილური მოწყობილობიდან შეძენილი მონაცემთა სენსორების გამოყენება
- ნაბიჯი 4: კოდი და გაყვანილობის პორტები
ვიდეო: MATLAB კონტროლირებადი მიკროკონტროლი (Arduino MKR1000): 4 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:18
ჩვენი პროექტის მიზანი იყო მაქსიმალურად გამოვიყენოთ MATLAB, ასევე Arduino MKR1000. ჩვენი მიზანი იყო შევქმნათ სკრიპტი, რომელიც არდუინოს გარკვეულ მახასიათებლებს საშუალებას მისცემდა შეასრულოს გარკვეული გამომუშავება კონკრეტული შეყვანის საფუძველზე. ჩვენ გამოვიყენეთ მრავალი მარყუჟი და პირობითი განცხადება, რომელიც მოცემულია MATLAB– ში, რამაც ეს შესაძლებელი გახადა. ჩვენ ასევე გამოვიყენეთ MATLAB მობილური, მობილური მოწყობილობის გიროსკოპიდან მიღებული მონაცემების გამოყენებით, პროექტის მაქსიმალურად გასაუმჯობესებლად.
ნაბიჯი 1: ნაწილები და მასალები
MATLAB 2018 ა
-MATLAB- ის 2018 წლის ვერსია არის ყველაზე სასურველი ვერსია, ძირითადად იმიტომ, რომ ის საუკეთესოდ მუშაობს კოდთან, რომელიც უკავშირდება მობილურ მოწყობილობას. თუმცა, ჩვენი კოდის უმეტესობის ინტერპრეტაცია შესაძლებელია MATLAB ვერსიების უმრავლესობით.
Arduino MKR1000
-ეს არის კონკრეტული მოწყობილობა, რომელიც საშუალებას გვაძლევს შევაერთოთ სქემები ციფრულ და ანალოგიურ პორტებამდე. სასიცოცხლოდ მნიშვნელოვანია, რომ თქვენ ასევე გქონდეთ პურის დაფა მასთან ერთად წასასვლელად.
აქსესუარები
MKR1000– ის გამოყენებისას ჩვენ გვჭირდებოდა აქსესუარების ნაწილები საჭირო ფუნქციების შესასრულებლად.
Ეს მოიცავს
- სერვო
- ღილაკი (6)
- ცვალებადი RBG LED ნათურა
- მარტივი მავთულები
- პურის დაფა (ები)
- მინი დენის გადამრთველი
- ტემპერატურის სენსორი
- 330 ohm რეზისტორი
- 10K ohm რეზისტორი
- USB-microUSB კაბელი
- ლეპტოპი/დესკტოპი
- Მობილური მოწყობილობა
ისიც უნდა აღინიშნოს, რომ არსებობს ბევრი, ბევრი სხვა აქსესუარი, რომლის გამოყენებაც MKR1000– ით არის შესაძლებელი
ნაბიჯი 2: MATLAB Arduino მხარდაჭერის პაკეტი
იმისათვის, რომ სწორად გამოიყენოთ Arduino MKR1000 MATLAB– ით, თქვენ უნდა გადმოწეროთ MATLAB მხარდაჭერის პაკეტი Arduino აპარატურისთვის. ეს გადმოწერა გაძლევთ წვდომას გარკვეულ ფუნქციებზე და ბრძანებებზე პირდაპირ არდუინოს დაფაზე.
შეგიძლიათ ჩამოტვირთოთ პაკეტი ქვემოთ მოცემულ ბმულზე
www.mathworks.com/matlabcentral/fileexchange/47522-matlab-support-package-for-arduino-hardware
ნაბიჯი 3: მობილური მოწყობილობიდან შეძენილი მონაცემთა სენსორების გამოყენება
MATLAB Mobile აპლიკაცია საშუალებას გვაძლევს გამოვიყენოთ მობილური მოწყობილობა მონაცემების გადასაცემად მისი გიროსკოპის გამოყენებით. მონაცემების მოსაპოვებლად MATLAB- ის საშუალებით, ჩვენ ვიღებთ მონაცემებს MATLAB მობილურიდან ორიენტაციის მატრიციდან ამოღებით. ჩვენ ამას ვაკეთებთ ცვლადის შესაქმნელად ორიენტაციის მატრიცის თითოეული სვეტისთვის (აზიმუტი, ნაბიჯი და როლი) და ინდექსირდება ღირებულებების მუდმივი ნაკადი მობილური მოწყობილობიდან კომპიუტერამდე. ეს გვაძლევს საშუალებას შევქმნათ პირობითი განცხადებები, რომლებიც შექმნიან გამომავალს, თუ MATLAB აიღებს მობილური მოწყობილობიდან მონაცემების კონკრეტულ შეყვანას. ამისათვის თქვენ დაგჭირდებათ MATLAB მობილური თქვენს მობილურ მოწყობილობაზე და მობილური მოწყობილობის დამხმარე პაკეტი თქვენს კომპიუტერში MATLAB– ისთვის.
თქვენ შეგიძლიათ ჩამოტვირთოთ ფაილი ქვემოთ მოცემულ ბმულზე
www.mathworks.com/matlabcentral/fileexchange/51235-matlab-support-package-for-apple-ios-sensors
ნაბიჯი 4: კოდი და გაყვანილობის პორტები
კოდი იწყება გაშვების შეტყობინებით, რომელიც გვეკითხება გვინდა თუ არა ჩვენი სახლის უსაფრთხოების მოწყობილობის გაშვება. თუ ჩვენ ვპასუხობთ დიახ, და მივცემთ სწორ კოდს, სკრიპტი მაშინვე გადადის ცოტახანიან მარყუჟში. იქიდან იწყება მობილური მოწყობილობიდან მონაცემების შეგროვება. არსებობს პირობები, რომლებიც კითხულობენ ამ მონაცემებს. ჩვენ შეგვიძლია განბლოკოთ და ჩავკეტოთ სისტემა ჩვენი მობილური მოწყობილობიდან, ხოლო კოდი გადააქვს სერვოზე და აანთებს LED ნათურას მობილური მოწყობილობიდან მოცემული მონაცემების მიხედვით
startup = questdlg ('გსურთ გააქტიუროთ ecoTECH Smart Home ენერგიის სისტემა?'); იწყება ecoTECHwaitfor გააქტიურების თანმიმდევრობა (გაშვებისთვის); თუ ჩატვირთვისას == "დიახ" % თუ "დიახ" არის არჩეული აქტივაციის თანმიმდევრობა იწყება და შედის while მარყუჟში ბოლოს სიმძლავრე = "ჩართული"; m1 = msgbox ("დაწყების ecoTECH …"); პაუზა (2); წაშლა (m1); m1_wait = waitbar (0, 'გთხოვთ დაელოდოთ …'); ნაბიჯები = 25; for i = 1: ნაბიჯების პაუზა (.1); waitbar (i/ნაბიჯები); % განაახლებს ლოდინის ბოლოს წაშლას (m1_wait); PASSCODE = [0 0 0 0]; % ინიციალიზებს პაროლს ii = 0; % ინიციალიზებს ცვლადს, რომელიც გამოიყენება მარყუჟებიდან m2 = msgbox ('ecoTECH სრულად ფუნქციონირებს!'); პაუზა (2); წაშლა (მ 2); elseif გაშვება == "არა" || გაშვება == "გაუქმება" % თუ "არა" ან "გაუქმება" არჩეულია, მაშინ აქტივაციის თანმიმდევრობა არ იწყება და არ შედის while loop power = "off"; m3 = msgbox ('კარგი! მშვიდობით!'); პაუზა (2); წაშლა (მ 3); დასასრული
% ecoTECH in Action Section while true while power == "on" % Mobile Key Section while true % აგროვებს მონაცემებს მობილური მოწყობილობის Roll ორიენტაციის შესახებ KEY = m. ორიენტაცია (3); % აგროვებს მონაცემებს ღილაკების შესახებ b2 = readDigitalPin (a, 'D2'); % ღილაკი 2 (წითელი) b3 = readDigitalPin (a, 'D3'); % ღილაკი 3 (თეთრი) თუ KEY> = 35 % გრადუსში m4 = msgbox ('მოგესალმებით სახლში!'); writeDigitalPin (a, 'D8', 1); ჩართავს მწვანე შუქის პაუზას (.5); writePosition (s, 1); აქცევს სერვოს კარის პაუზის განსაბლოკად (2); writeDigitalPin (a, 'D8', 0); % გამორთავს მწვანე შუქის წაშლას (m4); elseif KEY <= -35 % გრადუსში m5 = msgbox ("კარი დაკეტილია!"); writeDigitalPin (a, 'D7', 1); % ჩართავს წითელი შუქის პაუზას (.5); writePosition (s, 0); გადააქვს სერვო, რომ ჩაკეტოს კარის პაუზა (2); writeDigitalPin (a, 'D7', 0); % გამორთავს წითელი შუქის წაშლას (m5); ii = 1; შესვენება % გამოდის მარყუჟის შემცველი მობილური გასაღებით, თუ კარი დაკეტილია მობილური მოწყობილობის გამოყენებით სხვა თუ სხვა
ამის შემდეგ, მას შეუძლია შეიყვანოს მეორე ხოლო მარყუჟი. ეს ხოლო მარყუჟი აკონტროლებს შედეგებს ღილაკების შეყვანის საფუძველზე. თუ პირველი მარყუჟი უმნიშვნელოა, ან ხელით ჩაკეტვაა საჭირო, ის შეიყვანს მეორე მარყუჟს, სადაც საჭიროა კონკრეტული პაროლი. თუ პაროლი არასწორია, ის გადატვირთავს მარყუჟს
მართალია, თუ ii == 1 % გამოდის მარყუჟის პაროლის შემცველი მარყუჟის შემთხვევაში, თუ კარი გახსნილია მობილური მოწყობილობის შესვენების ბოლოს % აგროვებს მონაცემებს ღილაკების შესახებ b5 = readDigitalPin (a, 'D5'); % ღილაკი 5 (ლურჯი) b1 = readDigitalPin (a, 'D1'); % ღილაკი 1 (შავი) b4 = readDigitalPin (a, 'D4'); % ღილაკი 4 (თეთრი) თუ b5 == 0 % იწყებს პაროლის კოდის შეყვანას b = 1: 5 m6 = msgbox ('გთხოვთ დააჭიროთ და გამართავს ღილაკს'); პაუზა (2); წაშლა (m6); % აგროვებს მონაცემებს ღილაკების შესახებ b1 = readDigitalPin (a, 'D1'); % ღილაკი 1 (შავი) b2 = readDigitalPin (a, 'D2'); % ღილაკი 2 (წითელი) b3 = readDigitalPin (a, 'D3'); % ღილაკი 3 (თეთრი) b4 = readDigitalPin (a, 'D4'); % ღილაკი 4 (ყვითელი) b5 = readDigitalPin (a, 'D5'); % ღილაკი 5 (ლურჯი) % ცვლის მნიშვნელობებს საწყის კოდში ერთდროულად, თუ b1 == 0 PASSCODE (0+b) = 1; elseif b2 == 0 PASSCODE (0+b) = 2; elseif b3 == 0 PASSCODE (0+b) = 3; elseif b4 == 0 PASSCODE (0+b) = 4; elseif b5 == 0 PASSCODE = sprintf ('%. 0f%.0f%.0f%.0f', PASSCODE (1), PASSCODE (2), PASSCODE (3), PASSCODE (4)); % აქცევს რიცხვებში დაჭერილი ღილაკების თანმიმდევრობას და გადააქცევს მას სტრიქონის ბოლომდე % მარყუჟის ბოლოს ციფრების შესაყვანად პაროლის კოდისთვის PASSCODE == "2314" % თუ პაროლ კოდი შეყვანილია ემთხვევა მაშინ კარი იბლოკება რამოდენიმე წამით შემდეგ იკეტება m7 = msgbox ('მოგესალმებით სახლში!'); writeDigitalPin (a, 'D8', 1); ჩართავს მწვანე შუქის პაუზას (.5); writePosition (s, 1); გადააქვს სერვო, რომ გახსნას კარის პაუზა (5); writeDigitalPin (a, 'D8', 0); % გამორთავს მწვანე შუქის პაუზას (.1); writeDigitalPin (a, 'D7', 1); % ჩართავს წითელი შუქის პაუზას (.5); writePosition (s, 0); სერვერს უხვევს კარის პაუზის ჩაკეტვას (1); writeDigitalPin (a, 'D7', 0); % გამორთავს წითელი შუქის წაშლას (m7); ii = 1; შესვენება % გამოდის ხოლო მარყუჟი შეიცავს პაროლის კოდს სწორი კოდის შეყვანის შემდეგ elseif PASSCODE = "2314" writeDigitalPin (a, 'D7', 1); % ანათებს წითელ შუქს m8 = msgbox ('არასწორი პაროლი! სცადე ხელახლა!'); დაელოდეთ (m8) ჩაწერეთDigitalPin (a, 'D7', 0); % გამორთავს წითელ შუქს გააგრძელებს % გაძლევთ საშუალებას ხელახლა შეიყვანოთ კოდის ბოლო სხვაგან b1 == 0 && b4 == 0 % გამოდის პაროლი, რომელიც შეიცავს პაროლის კოდის ნაწილს, თუ არ გსურთ შეიყვანოთ პაროლი ii = 1; შესვენება დასასრული დასასრული
თუ ის სწორია, ის დაუყოვნებლივ შევა ცოტა ხნის მარყუჟში, რომელიც აკონტროლებს ტემპერატურის სენსორს. თუ გადამრთველი ჩართულია, მარყუჟი გაგრძელდება და ასახავს ტემპერატურას დროის ნაკვეთის წინააღმდეგ, რაც საშუალებას მისცემს მას დაინახოს ტენდენცია. თუ დააჭირეთ ტემპერატურის სენსორთან დაკავშირებულ ღილაკს, ის ასევე გამოგიგზავნით ელ.წერილს, რომელიც გეტყვით რა ტემპერატურაა თქვენს "სახლში". თუ გადამრთველი გამორთულია, მაშინვე დასრულდება კოდი
t = 0; % საწყისი დრო = 0 წამი პაუზა (5) % აძლევს მომხმარებელს დროს ტემპერატურის გადამრთველის ჩართვისათვის SWITCH = readDigitalPin (a, 'D11'); % აგროვებს მონაცემებს გადართვის შესახებ pin D11- ში, ხოლო SWITCH == 0 SWITCH = readDigitalPin (a, 'D11'); % აგროვებს მონაცემებს გადართვის შესახებ pin D11 ძაბვაში = readVoltage (a, 'A1'); % კითხულობს ძაბვას ტემპერატურის სენსორიდან temp_C = (ძაბვა.*1000 - 500)./ 10; % გარდაქმნის ძაბვას ტემპერატურაში ° C temp_F = (9/5).*Temp_C + 32; % გადააქცევს ° C- დან ° F- ს (t, temp_C, 'b.') სათაურზე ('ოთახის ტემპერატურა'); xlabel ("დრო წამებში"); ილაბელი ("ტემპერატურა"); ღერძი ([0, 180, 0, 100]); ნაკვეთი (t, temp_F, 'r.') ლეგენდა ('ტემპერატურა ° C', 'ტემპერატურა ° F') პაუზა (1); t = t + 1; % დროის მრიცხველი წამებში % ელ.ფოსტის განყოფილება b_temp = readDigitalPin (a, 'D0'); % აგროვებს მონაცემებს (ლურჯი) ტემპერატურის ღილაკზე pin D0- ში, თუ b_temp == 0 setpref ('ინტერნეტი', 'SMTP_Server', 'smtp.gmail.com'); setpref ("ინტერნეტი", "E_mail", "[email protected]"); % გამგზავნის setpref ("ინტერნეტი", "SMTP_Username", "[email protected]"); % გამგზავნის მომხმარებლის სახელი setpref ("ინტერნეტი", "SMTP_Password", "Integral_ecoTECH"); % გამგზავნის პაროლი: = java.lang. System.getProperties; props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.port', '465'); sendmail ('[email protected] ',' ecoTECH ოთახის ტემპერატურა ', sprintf (' ოთახის ამჟამინდელი ტემპერატურა არის %.1f ° C ან %.1f ° F. ', temp_C, temp_F)); % აგზავნის ელ.წერილს მიმღებს, რომელიც აწვდის მონაცემებს ოთახის ამჟამინდელ ტემპერატურაზე fprintf ('ელფოსტა წარმატებით გაიგზავნა! / N') დასრულდება თუ temp_F> = 75 % თუ ოთახის ტემპერატურა 75 ° F- მდე იზრდება … temp_AC = 65; % ცვლის ტემპერატურას თერმოსტატზე 65 ° F- მდე სხვაგან temp_F <= 65 % თუ ოთახის ტემპერატურა მცირდება 60 ° F… temp_AC = 80; % ცვლის ტემპერატურას თერმოსტატზე 80 ° F დასასრულის ბოლომდე % ბოლოს "SWITCH == 0" ხოლო loop if power == "off" || ii == 1 % გამოდის "ენერგია == ჩართული" ხოლო მარყუჟის შესვენების დასასრული დასასრული % დასასრული "ენერგია == ჩართული" ხოლო მარყუჟი თუ სიმძლავრე == "გამორთული" || ii == 1 % გამოდის მთლიანი სანამ მარყუჟის შესვენება დასრულდება
ეს იყო მხოლოდ მოკლე მიმოხილვა კოდისა და მისი ფუნქციონირების შესახებ. საჭიროების შემთხვევაში ჩვენ დავამატეთ სრული კოდი როგორც pdf
აქ არის ჩამონათვალი, თუ რომელ პორტშია შეყვანილი თითოეული მოწყობილობა
1. RGB LED: ციფრული ქინძისთავები (7, 8, 9)
2. სერვისი: ციფრული პინ 6
3. ღილაკები: ციფრული ქინძისთავები (1, 2, 3, 4, 5)
4. ლურჯი ღილაკი ელ.ფოსტისთვის: ციფრული პინ 0
5. ტემპერატურის სენსორი: ანალოგური პინი 1
6. გადამრთველი: ციფრული პინი 11
გირჩევთ:
IoT ჰელოუინის გოგრა - აკონტროლეთ LED- ები Arduino MKR1000 და Blynk აპლიკაციით ???: 4 ნაბიჯი (სურათებით)
IoT ჰელოუინის გოგრა | აკონტროლეთ LED- ები Arduino MKR1000 და Blynk აპლიკაციით ???: გამარჯობა ყველას, რამდენიმე კვირის წინ იყო ჰელოუინი და ტრადიციის დაცვით მე გამოვძერხე ლამაზი გოგრა ჩემი აივნით. გოგრის გარეთ ყოფნისას მივხვდი, რომ შემაშფოთებელი იყო ყოველ საღამოს გარეთ გამოსვლა სანთლის ანთების მიზნით. Და მე
MATLAB კონტროლირებადი Roomba: 5 ნაბიჯი
MATLAB კონტროლირებადი Roomba: ამ პროექტის მიზანია გამოიყენოს MATLAB, ასევე შეცვლილი iRobot პროგრამირებადი რობოტი. ჩვენმა ჯგუფმა გააერთიანა ჩვენი კოდირების უნარი, რათა შეიქმნას MATLAB სკრიპტი, რომელიც იყენებს iRobot– ის მრავალ ფუნქციას, მათ შორის კლდის სენსორებს, ბამპერის შეგრძნებას
ინტერფეისი 8051 მიკროკონტროლი 7 სეგმენტის ჩვენებით: 5 ნაბიჯი (სურათებით)
ინტერფეისი 8051 მიკროკონტროლერი 7 სეგმენტის ჩვენებით: ამ პროექტში ჩვენ გეტყვით, თუ როგორ შეგვიძლია დავაკავშიროთ 7 სეგმენტის ჩვენება 8051 მიკროკონტროლერთან
ინტერფეისი 8051 მიკროკონტროლი 16*2 LCD პროტეუს სიმულაციაში: 5 ნაბიჯი (სურათებით)
ინტერფეისი 8051 მიკროკონტროლერთან ერთად 16*2 ლკდ პროტეუს სიმულაციაში: ეს არის 8051 წლის ძალიან ძირითადი პროექტი. ამ პროექტში ჩვენ ვაპირებთ გითხრათ, თუ როგორ შეგვიძლია 16*2 LCD ეკრანის 8051 მიკროკონტროლერთან დაკავშირება. ასე რომ, ჩვენ ვიყენებთ სრულ 8 ბიტიან რეჟიმს. მომდევნო გაკვეთილში ჩვენ ასევე გეტყვით 4 ბიტიანი რეჟიმის შესახებ
პაწაწინა AVR მიკროკონტროლი მუშაობს ხილის ბატარეაზე: 9 ნაბიჯი (სურათებით)
პაწაწინა AVR მიკროკონტროლი მუშაობს ხილის ბატარეაზე: ზოგიერთი ხილი და ბოსტნეული, რომელსაც ჩვენ ვჭამთ, შეიძლება გამოყენებულ იქნას ელექტროენერგიის შესაქმნელად. ბევრ ხილისა და ბოსტნეულის ელექტროლიტები, სხვადასხვა ლითონისგან დამზადებულ ელექტროდებთან ერთად, შეიძლება გამოყენებულ იქნას პირველადი უჯრედების დასამზადებლად. ერთ -ერთი ყველაზე ადვილად ხელმისაწვდომი ბოსტნეული