สารบัญ:
- ขั้นตอนที่ 1: ชิ้นส่วนและวัสดุ
- ขั้นตอนที่ 2: แพ็คเกจสนับสนุน MATLAB Arduino
- ขั้นตอนที่ 3: การใช้เซ็นเซอร์ข้อมูลที่ได้รับจากอุปกรณ์พกพา
- ขั้นตอนที่ 4: รหัสและพอร์ตสายไฟ
วีดีโอ: ไมโครคอนโทรลเลอร์ควบคุม MATLAB (Arduino MKR1000): 4 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
เป้าหมายของโครงการของเราคือการใช้ MATLAB และ Arduino MKR1000 อย่างสุดความสามารถ เป้าหมายของเราคือการสร้างสคริปต์ที่อนุญาตให้คุณลักษณะบางอย่างของ Arduino ดำเนินการเอาต์พุตบางอย่างตามอินพุตเฉพาะ เราใช้ลูปและข้อความสั่งตามเงื่อนไขจำนวนมากใน MATLAB ซึ่งทำให้สิ่งนี้เป็นไปได้ เรายังใช้ MATLAB mobile โดยใช้ข้อมูลที่ได้รับจากไจโรสโคปของอุปกรณ์มือถือเพื่อปรับปรุงโครงการให้มากที่สุด
ขั้นตอนที่ 1: ชิ้นส่วนและวัสดุ
MATLAB 2018a
- MATLAB เวอร์ชัน 2018 เป็นเวอร์ชันที่ต้องการมากที่สุด ส่วนใหญ่เป็นเพราะใช้งานได้ดีที่สุดกับโค้ดที่เชื่อมต่อกับอุปกรณ์มือถือ อย่างไรก็ตาม โค้ดส่วนใหญ่ของเราสามารถตีความได้โดยเวอร์ชัน MATLAB ส่วนใหญ่
Arduino MKR1000
-เป็นอุปกรณ์เฉพาะที่ช่วยให้เราสามารถต่อวงจรได้ถึงพอร์ตดิจิตอลและอนาล็อก สิ่งสำคัญคือคุณต้องมีเขียงหั่นขนมเพื่อใช้งานด้วย
เครื่องประดับ
- เมื่อใช้ MKR1000 เราจำเป็นต้องมีชิ้นส่วนเสริมเพื่อทำหน้าที่ที่จำเป็น
ซึ่งรวมถึง
- เซอร์โว
- ปุ่ม (6)
- ไฟ LED RBG แบบเปลี่ยนได้
- สายธรรมดา
- เขียงหั่นขนม
- สวิตช์ไฟขนาดเล็ก
- เซ็นเซอร์อุณหภูมิ
- ตัวต้านทาน 330 โอห์ม
- ตัวต้านทาน 10K โอห์ม
- สาย USB-microUSB
- แล็ปท็อป/เดสก์ท็อป
- อุปกรณ์โทรศัพท์
นอกจากนี้ ยังมีอุปกรณ์เสริมอีกมากมายที่สามารถใช้กับ MKR1000. ได้
ขั้นตอนที่ 2: แพ็คเกจสนับสนุน MATLAB Arduino
ในการใช้ Arduino MKR1000 ผ่าน MATLAB อย่างถูกต้อง คุณต้องดาวน์โหลด MATLAB Support Package สำหรับ Arduino Hardware การดาวน์โหลดนี้ให้คุณเข้าถึงฟังก์ชันและคำสั่งบางอย่างได้โดยตรงไปยังบอร์ด Arduino
สามารถดาวน์โหลดแพ็คเกจได้ที่ลิงค์ด้านล่าง
www.mathworks.com/matlabcentral/fileexchange/47522-matlab-support-package-for-arduino-hardware
ขั้นตอนที่ 3: การใช้เซ็นเซอร์ข้อมูลที่ได้รับจากอุปกรณ์พกพา
แอพ MATLAB Mobile ช่วยให้เราใช้อุปกรณ์มือถือเพื่อสตรีมข้อมูลโดยใช้ไจโรสโคป ในการรับข้อมูลผ่าน MATLAB เราได้รับข้อมูลโดยการดึงข้อมูลจากเมทริกซ์การวางแนวจาก MATLAB มือถือ เราทำสิ่งนี้โดยการสร้างตัวแปรสำหรับแต่ละคอลัมน์ของเมทริกซ์การวางแนว (Azimuth, Pitch และ Roll) และจัดทำดัชนีกระแสค่าคงที่จากอุปกรณ์มือถือไปยังคอมพิวเตอร์ ซึ่งช่วยให้เราสร้างข้อความสั่งแบบมีเงื่อนไขซึ่งจะสร้างผลลัพธ์ล่วงหน้าหาก MATLAB รับข้อมูลเฉพาะที่ป้อนข้อมูลจากอุปกรณ์เคลื่อนที่ ในการดำเนินการนี้ คุณจะต้องใช้ MATLAB mobile บนอุปกรณ์พกพา และแพ็คเกจรองรับอุปกรณ์พกพาสำหรับ MATLAB บนคอมพิวเตอร์ของคุณ
สามารถดาวน์โหลดไฟล์ได้ที่ลิงค์ด้านล่าง
www.mathworks.com/matlabcentral/fileexchange/51235-matlab-support-package-for-apple-ios-sensors
ขั้นตอนที่ 4: รหัสและพอร์ตสายไฟ
รหัสเริ่มต้นด้วยข้อความเริ่มต้นที่ถามว่าเราต้องการเริ่มต้นอุปกรณ์รักษาความปลอดภัยภายในบ้านของเราหรือไม่ หากเราตอบว่าใช่ และให้รหัสผ่านที่ถูกต้อง สคริปต์จะข้ามไปวนซ้ำในทันที จากนั้นจะเริ่มรวบรวมข้อมูลจากอุปกรณ์มือถือ มีเงื่อนไขที่อ่านข้อมูลนี้ เราสามารถปลดล็อคและล็อคระบบจากอุปกรณ์มือถือของเรา และรหัสจะเปลี่ยนเซอร์โวและไฟ LED กะพริบขึ้นอยู่กับข้อมูลที่ได้รับจากอุปกรณ์มือถือ
startup = questdlg('คุณต้องการเปิดใช้งาน ecoTECH Smart Home Energy System หรือไม่'); % เริ่มลำดับการเปิดใช้งานของ ecoTECHwaitfor (เริ่มต้น); ถ้าเริ่มต้น == "ใช่" % หากเลือก "ใช่" ลำดับการเปิดใช้งานจะเริ่มต้นและเข้าสู่ลูป while ที่ไฟสิ้นสุด = "เปิด"; m1 = msgbox('กำลังเริ่มใช้งาน ecoTECH…'); หยุดชั่วคราว(2); ลบ(m1); m1_wait = waitbar(0, 'กรุณารอสักครู่…'); ขั้นตอน = 25; สำหรับฉัน = 1: หยุดชั่วคราว (.1); waitbar(i/ขั้นตอน); % อัปเดตการลบสิ้นสุด waitbar (m1_wait); รหัสผ่าน = [0 0 0 0]; % เริ่มต้นรหัสผ่าน ii = 0; % เริ่มต้นตัวแปรที่ใช้ในการแยกลูป m2 = msgbox('ecoTECH Fully operation!'); หยุดชั่วคราว(2); ลบ(m2); elseif การเริ่มต้น == "ไม่" || start == "Cancel" % หากเลือก "No" หรือ "Cancel" ลำดับการเปิดใช้งานจะไม่เริ่มทำงานและจะไม่เข้าสู่ while loop power = "off"; m3 = msgbox('โอเค ลาก่อน!'); หยุดชั่วคราว(2); ลบ(m3); จบ
% ecoTECH ในส่วนการดำเนินการขณะเปิดเครื่อง == "เปิด" % ส่วนคีย์มือถือในขณะที่จริง % รวบรวมข้อมูลเกี่ยวกับการวางแนวการหมุนของอุปกรณ์เคลื่อนที่ KEY = m. Orientation(3); % รวบรวมข้อมูลเกี่ยวกับปุ่ม b2 = readDigitalPin(a, 'D2'); % ปุ่ม 2 (สีแดง) b3 = readDigitalPin (a, 'D3'); % ปุ่ม 3 (สีขาว) ถ้า KEY >= 35 % ในหน่วยองศา m4 = msgbox('Welcome Home!'); writeDigitalPin(a, 'D8', 1); % เปิดไฟเขียวหยุดชั่วคราว (.5); writePosition(s, 1); % หมุนเซอร์โวเพื่อปลดล็อกประตูหยุดชั่วคราว(2); writeDigitalPin(a, 'D8', 0); % ปิดการลบไฟสีเขียว (m4); elseif KEY <= -35% in องศา m5 = msgbox('Door Locked!'); writeDigitalPin(a, 'D7', 1); % เปิดไฟสีแดงหยุดชั่วคราว (.5); writePosition(s, 0); % หมุนเซอร์โวเพื่อล็อคประตูหยุดชั่วคราว(2); writeDigitalPin(a, 'D7', 0); % ปิดการลบไฟสีแดง (m5); ii = 1; แตก % ออกในขณะที่วนรอบที่มีกุญแจมือถือถ้าประตูถูกล็อคโดยใช้อุปกรณ์มือถือelseif b2 == 0 && b3 == 0 % ออกในขณะที่วงที่มีรหัสมือถือเพื่อเข้าสู่ส่วนรหัสผ่าน สิ้นสุดการสิ้นสุด
หลังจากนี้ก็สามารถเข้าอีก while loop ได้ ในขณะที่ลูปควบคุมผลลัพธ์ตามอินพุตจากปุ่ม หากการวนรอบแรกนั้นไม่สำคัญหรือจำเป็นต้องมีการล็อกแบบแมนนวล การวนซ้ำจะป้อนในขณะที่วนซ้ำซึ่งจำเป็นต้องใช้รหัสผ่านเฉพาะ หากรหัสผ่านไม่ถูกต้อง ระบบจะรีสตาร์ทลูป
ในขณะที่เป็นจริงถ้า 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)); % เปลี่ยนลำดับของปุ่มที่กดเป็นตัวเลขแล้วแปลงเป็นปลายสตริง % End of for loop สำหรับป้อนตัวเลขสำหรับรหัสผ่านหาก 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('รหัสผ่านไม่ถูกต้อง! ลองอีกครั้ง!'); waitfor(m8) writeDigitalPin(a, 'D7', 0); % ปิดไฟสีแดงต่อไป % อนุญาตให้คุณป้อนรหัสผ่านอีกครั้ง endelseif b1 == 0 && b4 == 0 % ออกในขณะที่ลูปมีส่วนรหัสผ่านหากคุณไม่ต้องการป้อนรหัสผ่าน ii = 1; แตกปลาย
หากถูกต้องจะเข้าสู่วงจร while ที่ควบคุมเซ็นเซอร์อุณหภูมิทันที หากสวิตช์เปิดอยู่ การวนซ้ำจะดำเนินต่อไปและพล็อตกราฟอุณหภูมิเทียบกับเวลา ซึ่งช่วยให้สามารถดูแนวโน้มได้ หากกดปุ่มที่เชื่อมต่อกับเซ็นเซอร์อุณหภูมิ ระบบจะส่งอีเมลแจ้งให้คุณทราบว่าอุณหภูมิใน "บ้าน" ของคุณอยู่ที่เท่าใด หากปิดสวิตช์ ระบบจะปิดรหัสทันที
เสื้อ = 0; % เวลาเริ่มต้น = 0 วินาทีหยุดชั่วคราว (5) % ให้เวลาสำหรับผู้ใช้ในการเปิดสวิตช์อุณหภูมิ SWITCH = readDigitalPin(a, 'D11'); % รวบรวมข้อมูลเกี่ยวกับสวิตช์ในพิน D11 ในขณะที่ SWITCH == 0 SWITCH = readDigitalPin(a, 'D11'); % รวบรวมข้อมูลเกี่ยวกับสวิตช์ในพิน D11 แรงดัน = readVoltage (a, 'A1'); % อ่านแรงดันไฟฟ้าจากเซ็นเซอร์อุณหภูมิ temp_C = (voltage.*1000 - 500)./10; % แปลงแรงดันไฟฟ้าเป็นอุณหภูมิในหน่วย °C temp_F = (9/5).*temp_C + 32; % แปลงจากพล็อต °C เป็น °F (t, temp_C, 'b.') ที่ชื่อ ('อุณหภูมิห้อง'); xlabel('เวลาเป็นวินาที'); ylabel('อุณหภูมิ'); แกน([0, 180, 0, 100]); plot(t, temp_F, 'r.') legend('Temperature in °C', 'Temperature in °F') หยุดชั่วคราว(1); เสื้อ = เสื้อ + 1; % ตัวนับเวลาเป็นวินาที % ส่วนอีเมล b_temp = readDigitalPin(a, 'D0'); % รวบรวมข้อมูลของปุ่มอุณหภูมิ (สีน้ำเงิน) ในพิน D0 ถ้า b_temp == 0 setpref('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref('อินเทอร์เน็ต', 'อีเมล', '[email protected]'); % ผู้ส่ง setpref ('อินเทอร์เน็ต', 'SMTP_Username', '[email protected]'); % ชื่อผู้ใช้ของผู้ส่ง setpref('Internet', '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" ขณะวนซ้ำหากเปิดเครื่อง == "ปิด" || ii == 1 % ออกจาก "power == on" ในขณะที่ loop break end end % สิ้นสุดของ "power == on" ในขณะที่ loop if power == "off" || ii == 1% ออกจากทั้งหมดในขณะที่สิ้นสุดการวนซ้ำ
นี่เป็นเพียงภาพรวมคร่าวๆ ของโค้ดและความสามารถในการทำงาน เราได้แนบโค้ดฉบับเต็มเป็น pdf หากจำเป็น
นี่คือรายการพอร์ตที่แต่ละอุปกรณ์เชื่อมต่ออยู่
1. RGB LED: พินดิจิตอล (7, 8, 9)
2. เซอร์โว: พินดิจิตอล 6
3. ปุ่ม: หมุดดิจิตอล (1, 2, 3, 4, 5)
4. ปุ่มสีน้ำเงินสำหรับอีเมล: Digital Pin 0
5. เซนเซอร์จับอุณหภูมิ: ขาอนาล็อก 1
6. สวิตช์: Digital Pin 11
แนะนำ:
ฟักทองฮาโลวีน IoT - ควบคุม LED ด้วยแอพ Arduino MKR1000 และ Blynk ???: 4 ขั้นตอน (พร้อมรูปภาพ)
ฟักทองฮาโลวีน IoT | ควบคุมไฟ LED ด้วย Arduino MKR1000 และแอพ Blynk ???: สวัสดีทุกคน เมื่อไม่กี่สัปดาห์ก่อนเป็นวันฮาโลวีน และตามประเพณี ฉันแกะสลักฟักทองสวยๆ สำหรับระเบียงของฉัน แต่เมื่อฟักทองอยู่กลางแจ้ง ฉันตระหนักว่ามันค่อนข้างน่ารำคาญที่ต้องออกไปจุดเทียนทุกเย็น และฉัน
บ้านอัจฉริยะด้วย Arduino MKR1000 และ M.I.T. แอพ Android: 4 ขั้นตอน
บ้านอัจฉริยะด้วย Arduino MKR1000 และ M.I.T. แอพ Android: ในบทช่วยสอนนี้ ฉันจะอธิบายวิธีปรับปรุงบ้านอัจฉริยะของคุณด้วยส่วนประกอบเพียงไม่กี่อย่าง หัวใจของการออกแบบบ้านอัจฉริยะนี้คือบอร์ด Arduino MKR1000 ซึ่งควบคุมด้วยแอพที่ออกแบบบนเว็บไซต์การพัฒนาของ M.I.T. (สถาบันแมสซาชูเซตส์
การใช้ MATLAB App Designer กับ Arduino: 5 ขั้นตอน
การใช้ MATLAB App Designer กับ Arduino: MATLAB App Designer เป็นเครื่องมือที่ทรงพลังที่ช่วยให้คุณออกแบบ Graphical User Interfaces (GUI) ด้วยฟังก์ชัน MATLAB ทั้งหมด ในบทช่วยสอนนี้ เราจะสร้าง GUI เพื่อควบคุมความสว่างของ LED ผ่าน ขั้นตอนง่ายๆ N
MKR1000 IoT การสื่อสารไคลเอ็นต์/เซิร์ฟเวอร์: 4 ขั้นตอน
MKR1000 IoT Client/server Communications: โปรเจ็กต์นี้อธิบายวิธีตั้งค่าอุปกรณ์ Arduino/Genuino MKR1000 สองเครื่องเป็นเซิร์ฟเวอร์และไคลเอนต์ ไคลเอ็นต์ MKR1000 จะเชื่อมต่อกับ wifi ในพื้นที่ของคุณและฟังอินพุตสองอินพุตที่เชื่อมต่อกับไคลเอ็นต์ อันหนึ่งจากปุ่มและอีกอันจาก vib
การตรวจสอบคุณภาพน้ำโดยใช้ MKR1000 และ ARTIK Cloud: 13 ขั้นตอน (พร้อมรูปภาพ)
การตรวจสอบคุณภาพน้ำโดยใช้ MKR1000 และ ARTIK Cloud: บทนำวัตถุประสงค์หลักของโครงการนี้คือการใช้ MKR1000 และ Samsung ARTIK Cloud เพื่อตรวจสอบค่า pH และระดับอุณหภูมิของสระว่ายน้ำ เราจะใช้ Temperature Sensor และ pH หรือ Power of Hydrogen Sensor ในการวัด ความเป็นด่าง a