Mundarija:
- 1 -qadam: ehtiyot qismlar va materiallar
- 2 -qadam: MATLAB Arduino qo'llab -quvvatlash to'plami
- 3 -qadam: Mobil qurilmadan olingan ma'lumotlar sensorlaridan foydalanish
- 4 -qadam: Kod va kabel portlari
Video: MATLAB boshqariladigan mikrokontroller (Arduino MKR1000): 4 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
Loyihamizning maqsadi MATLAB va Arduino MKR1000 -ni imkon qadar ishlatish edi. Bizning maqsadimiz - arduino -ning ba'zi xususiyatlariga ma'lum bir kirishga asoslangan holda ma'lum bir chiqishni amalga oshirishga imkon beradigan skript yaratish edi. Biz buni amalga oshirishga imkon beradigan MATLAB -da ko'rsatilgan ko'plab ko'chadan va shartli bayonlardan foydalanganmiz. Loyihani iloji boricha yaxshilash uchun mobil qurilmaning giroskopidan olingan ma'lumotlarni ishlatib, MATLAB mobile -dan ham foydalanganmiz.
1 -qadam: ehtiyot qismlar va materiallar
MATLAB 2018a
-MATLAB -ning 2018 -yilgi versiyasi eng ko'p afzal qilingan versiya, chunki u mobil qurilmaga ulanadigan kod bilan yaxshi ishlaydi. Biroq, bizning kodimizning ko'p qismini MATLAB versiyalarining ko'pchiligi talqin qilishi mumkin.
Arduino MKR 1000
-Bu bizga raqamli va o'xshash portlarga zanjirlarni ulash imkonini beradigan maxsus qurilma. Siz bilan birga non paneli bo'lishi juda muhimdir.
Aksessuarlar
-MKR1000 -dan foydalanilganda, kerakli funktsiyalarni bajarish uchun bizga qo'shimcha qismlar kerak edi.
Bu o'z ichiga oladi
- Servo
- Tugma (6)
- O'zaro almashtiriladigan RBG LED chirog'i
- Oddiy simlar
- non taxtasi
- mini quvvat kaliti
- harorat sensori
- 330 ohmli qarshilik
- 10K ohmli qarshilik
- USB-microUSB kabeli
- Laptop/ish stoli
- Mobil qurilma
Shuni ham ta'kidlash joizki, MKR1000 bilan ishlatilishi mumkin bo'lgan ko'plab qo'shimcha aksessuarlar mavjud
2 -qadam: MATLAB Arduino qo'llab -quvvatlash to'plami
Arduino MKR1000 -ni MATLAB orqali to'g'ri ishlatish uchun siz Arduino uskunalari uchun MATLAB qo'llab -quvvatlash paketini yuklab olishingiz kerak. Ushbu yuklab olish sizga ba'zi funktsiyalar va buyruqlarga to'g'ridan -to'g'ri arduino kartasiga kirish imkonini beradi.
Paketni quyidagi havola orqali yuklab olishingiz mumkin
www.mathworks.com/matlabcentral/fileexchange/47522-matlab-support-package-for-arduino-hardware
3 -qadam: Mobil qurilmadan olingan ma'lumotlar sensorlaridan foydalanish
MATLAB Mobile ilovasi bizga gyroskop yordamida ma'lumotlarni uzatish uchun mobil qurilmadan foydalanish imkonini beradi. Ma'lumotni MATLAB orqali olish uchun biz uni MATLAB mobile -dan yo'nalish matritsasidan olish orqali olamiz. Biz buni yo'nalish matritsasining har bir ustuni uchun o'zgaruvchini yaratish (Azimut, Pitch va Roll) va mobil qurilmadan kompyuterga doimiy qiymatlar oqimini indekslash orqali amalga oshiramiz. Bu, agar MATLAB mobil qurilmadan ma'lum ma'lumotlarni kiritsa, chiqishni oldindan tuzadigan shartli bayonotlar tuzishga imkon beradi. Buning uchun sizga mobil qurilmangizda MATLAB mobil va kompyuteringizda MATLAB uchun mobil qurilmalarni qo'llab -quvvatlash to'plami kerak bo'ladi.
Faylni quyidagi havola orqali yuklab olishingiz mumkin
www.mathworks.com/matlabcentral/fileexchange/51235-matlab-support-package-for-apple-ios- sensorlar
4 -qadam: Kod va kabel portlari
Kod uy xavfsizlik qurilmasini ishga tushirishni xohlayotganimizni so'raydigan ishga tushirish xabari bilan boshlanadi. Agar biz "ha" deb javob bersak va to'g'ri parolni bersak, skript darhol vaqt oralig'iga o'tadi. U erdan u mobil qurilmadan ma'lumotlarni yig'ishni boshlaydi. Bu ma'lumotlarni o'qiydigan shartli shartlar mavjud. Biz tizimni mobil qurilmamizdan qulfdan chiqarishimiz va qulflashimiz mumkin, va kod mobil qurilmadan berilgan ma'lumotlarga bog'liq holda servoni aylantiradi va LED chiroqni yonadi
startup = questdlg ('ecoTECH aqlli uy energiya tizimini yoqmoqchimisiz?'); % EcoTECHwaitfor (ishga tushirish) faollashtirish ketma -ketligini boshlaydi; agar ishga tushirish == "Ha" % Agar "Ha" tanlansa, faollashtirish ketma -ketligi boshlanadi va oxiridagi vaqt tsikliga kiradi = "on"; m1 = msgbox ('ecoTECH ishga tushirilmoqda…'); pauza (2); o'chirish (m1); m1_wait = kutish paneli (0, 'Iltimos, kuting…'); qadamlar = 25; i = 1 uchun: pauza pauza (.1); kutish paneli (i/qadamlar); % Kutish paneli o'chirilishini o'chirib tashlaydi (m1_wait); PASCODE = [0 0 0 0]; % Ii = 0 parolini ishga tushiradi; % Ko'chadan chiqib ketish uchun ishlatiladigan o'zgaruvchini ishga tushiradi m2 = msgbox ('ecoTECH to'liq ishlayapti!'); pauza (2); o'chirish (m2); elseif ishga tushirish == "Yo'q" || ishga tushirish == "Bekor qilish" % Agar "Yo'q" yoki "Bekor qilish" tanlansa, faollashtirish ketma -ketligi boshlanmaydi va vaqt kuchiga kirmaydi = "o'chirilgan"; m3 = msgbox ('Yaxshi! Xayr!'); pauza (2); o'chirish (m3); oxiri
Harakatlar bo'limida % ecoTECH haqiqiy bo'lsa, kuch == "yoqilgan" % Mobil kalit bo'limi haqiqiy % mobil qurilmaning Roll yo'nalishi haqida ma'lumot to'playdi KEY = m. Orientation (3); % Tugmalar haqida ma'lumot to'playdi b2 = readDigitalPin (a, 'D2'); % 2 tugmasi (qizil) b3 = readDigitalPin (a, 'D3'); % Tugma 3 (Oq) agar KEY> = 35 % m4 = msgbox ('Uyga xush kelibsiz!'); writeDigitalPin (a, 'D8', 1); % Yashil chiroq pauzasini yoqadi (.5); yozish pozitsiyasi (lar, 1); % Eshik pauzasini ochish uchun servoni aylantiradi (2); writeDigitalPin (a, 'D8', 0); % Yashil chiroq o'chirilishini o'chiradi (m4); elseif KEY <= -35 % gradusda m5 = msgbox ('Eshik qulflangan!'); writeDigitalPin (a, 'D7', 1); % Qizil chiroq pauzasini yoqadi (.5); yozish pozitsiyasi (lar, 0); % Servo eshikni qulflash uchun buradi (2); writeDigitalPin (a, 'D7', 0); % Qizil chiroq o'chirilishini o'chiradi (m5); ii = 1; break %, agar mobil qurilma yordamida eshik qulflangan bo'lsa, mobil kalitni o'z ichiga olgan pastadirdan chiqsa, b2 == 0 && b3 == 0 % agar parol tugmachasini kesib o'tish tugmachasini kiritish uchun mobil kalitli tsikldan chiqsa.
Shundan so'ng, u boshqa while tsiklini kiritishi mumkin. Bu loop esa tugmalarni kiritishiga qarab natijalarni nazorat qiladi. Agar birinchi tsikl ahamiyatsiz bo'lsa yoki qo'lda blokirovka qilish zarur bo'lsa, u ma'lum bir parol kerak bo'lgan boshqa vaqt tsiklini kiritadi. Agar parol noto'g'ri bo'lsa, u qaytadan boshlanadi
while true if ii == 1 % Eshik mobil qurilmaning qulfi bilan qulfdan chiqarilgan bo'lsa, parolni o'z ichiga olgan pastadirdan chiqadi % b5 = readDigitalPin (a, 'D5') tugmalari haqida ma'lumot to'playdi; % 5 tugmasi (Moviy) b1 = readDigitalPin (a, 'D1'); % Tugma 1 (qora) b4 = readDigitalPin (a, 'D4'); % Button 4 (Oq) agar b5 == 0 % b = 1: 5 uchun parolni kiritish bo'limini boshlaydi m6 = msgbox ('Iltimos, tugmani bosib ushlab turing'); pauza (2); o'chirish (m6); % Tugmalar haqida ma'lumot to'playdi b1 = readDigitalPin (a, 'D1'); % Tugma 1 (qora) b2 = readDigitalPin (a, 'D2'); % 2 tugmasi (qizil) b3 = readDigitalPin (a, 'D3'); % 3 tugmasi (oq) b4 = readDigitalPin (a, 'D4'); % 4 tugmasi (sariq) b5 = readDigitalPin (a, 'D5'); % 5 tugmasi (Moviy) % b1 == 0 PASSCODE (0+b) = 1 bo'lsa, boshlang'ich koddagi qiymatlarni birma -bir almashtiradi; elseif b2 == 0 PASKOD (0+b) = 2; elseif b3 == 0 PASKOD (0+b) = 3; elseif b4 == 0 PASKOD (0+b) = 4; elseif b5 == 0 PASSCODE = sprintf ('%. 0f%.0f%.0f%.0f', PASSCODE (1), PASSCODE (2), PASSCODE (3), PASSCODE (4)); % Tugmalar ketma -ketligini raqamlarga aylantiradi va keyin uni mag'lubiyat oxirigacha o'zgartiradi % PASSCODE == "2314" % bo'lsa parolni kiritish uchun tsiklning oxiri % Agar kirilgan kod mos bo'lsa, eshik bir necha soniya davomida qulflanadi va qulflanadi. m7 = msgbox ('Uyga xush kelibsiz!'); writeDigitalPin (a, 'D8', 1); % Yashil chiroq pauzasini yoqadi (.5); yozish pozitsiyasi (lar, 1); % Eshik pauzasini ochish uchun servoni aylantiradi (5); writeDigitalPin (a, 'D8', 0); % Yashil chiroq pauzasini o'chiradi (.1); writeDigitalPin (a, 'D7', 1); % Qizil chiroq pauzasini yoqadi (.5); yozish pozitsiyasi (lar, 0); % Servo eshikni pauzani qulflash uchun aylantiradi (1); writeDigitalPin (a, 'D7', 0); % Qizil chiroq o'chirilishini o'chiradi (m7); ii = 1; break % PASSCODE ~ = "2314" writeDigitalPin (a, 'D7', 1), to'g'ri parolni kiritgandan so'ng, parolni o'z ichiga olgan ko'chadan chiqadi; % Qizil chiroq yonadi m8 = msgbox ('Noto'g'ri parol! Yana urinib ko'ring!'); waitfor (m8) writeDigitalPin (a, 'D7', 0); % Qizil chiroqni o'chiradi davom etish % Agar parolni kirgizishni xohlamasangiz, parolni oxirigacha qayta kiritish imkonini beradi, agar b1 == 0 && b4 == 0 % Parolni o'z ichiga olgan tsikldan chiqib ketadi; oxiri oxirini sindirish
Agar to'g'ri bo'lsa, u darhol harorat sensori boshqaradigan vaqt oralig'iga kiradi. Agar kalit yoqilgan bo'lsa, tsikl davom etadi va harorat va vaqtni taqqoslab, tendentsiyani ko'rish imkonini beradi. Agar harorat sensori bilan bog'langan tugma bosilsa, u sizga "uyingizda" harorat nima ekanligini elektron pochta orqali yuboradi. Agar kalit o'chirilgan bo'lsa, u darhol kodni tugatadi
t = 0; % Dastlabki vaqt = 0 soniya pauza (5) % Foydalanuvchiga SWITCH = readDigitalPin (a, 'D11') harorat tugmachasini yoqish uchun vaqt beradi; % D11 pinidagi kalit haqida ma'lumot to'playdi, SWITCH == 0 SWITCH = readDigitalPin (a, 'D11'); % D11 pinli kuchlanish = readVoltage (a, 'A1') pinidagi kalit haqida ma'lumot to'playdi; % Harorat sezgichidan kuchlanishni o'qiydi temp_C = (kuchlanish.*1000 - 500)./ 10; % Voltani haroratga aylantiradi ° C temp_F = (9/5).*Temp_C + 32; % ° C dan ° F ga o'zgaradi (t, temp_C, 'b.') Sarlavhada ushlab turish ('Xona harorati'); xlabel ('Vaqt soniyalarda'); ylabel ("Harorat"); o'q ([0, 180, 0, 100]); syujet (t, temp_F, 'r.') afsonasi ('Harorat ° C', 'Harorat ° F') pauza (1); t = t + 1; % Vaqt hisoblagichi soniyada % Elektron pochta bo'limi b_temp = readDigitalPin (a, 'D0'); % B_temp == 0 setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com') bo'lsa, D0 pinidagi (ko'k) harorat tugmasi ma'lumotlarini yig'adi; setpref ('Internet', 'E_mail', '[email protected]'); % Yuboruvchi setpref ('Internet', 'SMTP_Username', '[email protected]'); % Yuboruvchining foydalanuvchi nomi setpref ('Internet', 'SMTP_Password', 'Integral_ecoTECH'); % Yuboruvchining paroli rekvizitlari = java.lang. System.getProperties; props.setProperty ('mail.smtp.auth', 'rost'); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.port', '465'); sendmail ('[email protected] ',' ecoTECH xona harorati ', sprintf (' Hozirgi xona harorati %.1f ° C yoki %.1f ° F. ', temp_C, temp_F)); % Qabul qiluvchiga xona harorati haqida ma'lumot beradigan elektron pochta yuboradi fprintf ('E-mail muvaffaqiyatli yuborildi! / N') end if temp_F> = 75 % Agar xona harorati 75 ° F ga ko'tarilsa… temp_AC = 65; % Termostatdagi haroratni 65 ° F ga o'zgartiradi, agar temp_F <= 65 % Agar xona harorati 60 ° F ga tushsa… temp_AC = 80; % Termostatdagi haroratni 80 ° F oxirigacha o'zgartiradi % "SWITCH == 0" ning oxiri, agar quvvat == "o'chirilgan" bo'lsa || ii == 1 % "kuch == yoqilgan" dan chiqadi, halqa uzilishining oxiri % "quvvat == yoqilgan" ning oxiri, agar quvvat == "o'chirilgan" bo'lsa || ii == 1 % halqa uzilishining oxirigacha to'liq chiqadi
Bu kod va uning funksionalligi haqida qisqacha ma'lumot. Agar kerak bo'lsa, biz to'liq kodni pdf sifatida biriktirdik
Bu erda har bir qurilma qaysi portga ulanganligi ko'rsatilgan
1. RGB LED: raqamli pinlar (7, 8, 9)
2. Servo: raqamli pin 6
3. Tugmalar: Raqamli pinlar (1, 2, 3, 4, 5)
4. Elektron pochta uchun ko'k tugma: Raqamli pin 0
5. Harorat sensori: analog pin 1
6. Kalit: raqamli pin 11
Tavsiya:
To'g'ridan-to'g'ri raqamli sintez (DDS) chipli MIDI tomonidan boshqariladigan qadam dvigateli: 3 qadam
To'g'ridan-to'g'ri raqamli sintez (DDS) chipli MIDI tomonidan boshqariladigan qadamli dvigatel: Siz hech qachon mini-loyihaga aylanishingiz kerak degan yomon fikrga keldingizmi? Xo'sh, men AD9833 to'g'ridan -to'g'ri raqamli sintez (DDS) moduli yordamida musiqa yaratishga qaratilgan Arduino Due uchun chizgan eskiz bilan o'ynab yurardim … va bir paytlar men o'yladim
Masofadan boshqariladigan USB Gamepad orqali boshqariladigan 4WD robot: 6 qadam
Uzoq USB Gamepad orqali boshqariladigan 4WD robot: Keyingi robototexnika loyiham uchun, men kutilmagan vaziyatlar tufayli o'z robot platformamni me'morchilik qilishga/loyihalashga majbur bo'ldim. Maqsad - avtonom bo'lish, lekin birinchi navbatda uning asosiy haydashini sinab ko'rishim kerak edi. qobiliyati, shuning uchun men bu qiziqarli tarafdor bo'ladi deb o'yladim
Mikrokontroller va qadam dvigateli: 4 qadam
Mikrokontroller va qadamli motor: Mikrokontroller - bu chipdagi kichik kompyuterlar. Ular boshqa qurilmalarni boshqarish dasturlarini bajaradilar. Bosqichli motorlar - bu alohida -alohida qadam bosadigan motorlar, ular printerlarda, soatlarda va boshqa qurilmalarda ishlatiladi. Bu sxemada mikrokontro ishlatiladi
MATLAB tomonidan boshqariladigan Roomba: 5 qadam
MATLAB tomonidan boshqariladigan Roomba: Ushbu loyihaning maqsadi MATLAB -dan, shuningdek o'zgartirilgan dasturlashtirilgan iRobot robotidan foydalanishdir. Bizning guruhimiz iRobot -ning ko'p funktsiyalari, shu jumladan jarlik sensorlar, bamper sensorlaridan foydalanadigan MATLAB skriptini yaratish uchun kodlash ko'nikmalarimizni birlashtirdi
Mobil boshqariladigan robotni qanday yasash mumkin - DTMF asosidagi - Mikrokontroller va dasturlashsiz - Dunyoning istalgan joyidan nazorat - RoboGeeks: 15 qadam
Mobil boshqariladigan robotni qanday yasash mumkin | DTMF asosidagi | Mikrokontroller va dasturlashsiz | Dunyoning istalgan joyidan nazorat | RoboGeeks: Dunyoning istalgan nuqtasidan boshqariladigan robot yasamoqchimisiz, buni qilaylik