Daftar Isi:
- Langkah 1: Bagian dan Bahan
- Langkah 2: Paket Dukungan MATLAB Arduino
- Langkah 3: Menggunakan Sensor Data yang Diperoleh Dari Perangkat Seluler
- Langkah 4: Kode dan Port Pengkabelan
Video: Mikrokontroler Terkendali MATLAB (Arduino MKR1000): 4 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:56
Tujuan dari proyek kami adalah untuk memanfaatkan MATLAB serta Arduino MKR1000 dengan kemampuan terbaik kami. Tujuan kami adalah membuat skrip yang memungkinkan fitur tertentu dari arduino untuk melakukan output tertentu berdasarkan input tertentu. Kami menggunakan banyak loop dan pernyataan kondisional yang ditampilkan dalam MATLAB yang memungkinkan hal ini. Kami juga menggunakan MATLAB mobile dengan menggunakan data yang diperoleh dari giroskop perangkat mobile untuk meningkatkan proyek sebanyak mungkin.
Langkah 1: Bagian dan Bahan
MATLAB 2018a
-MaTLAB versi 2018 adalah versi yang paling disukai, sebagian besar karena berfungsi paling baik dengan kode yang terhubung ke perangkat seluler. Namun, sebagian besar kode kami dapat ditafsirkan oleh sebagian besar versi MATLAB.
Arduino MKR1000
-Ini adalah perangkat khusus yang memungkinkan kita untuk menghubungkan sirkuit ke port digital dan analog. Sangat penting bahwa Anda juga memiliki papan tempat memotong roti untuk menyertainya.
Aksesoris
-Saat menggunakan MKR1000, kami membutuhkan suku cadang aksesori untuk menjalankan fungsi yang diperlukan.
Ini termasuk
- Servo
- Tombol (6)
- Lampu LED RBG yang dapat dipertukarkan
- Kabel Sederhana
- papan tempat memotong roti
- saklar daya mini
- sensor temperatur
- resistor 330 ohm
- Resistor 10K ohm
- Kabel USB-microUSB
- Laptop/desktop
- Perangkat seluler
Perlu juga dicatat bahwa masih banyak lagi aksesori yang dapat digunakan dengan MKR1000
Langkah 2: Paket Dukungan MATLAB Arduino
Untuk menggunakan Arduino MKR1000 melalui MATLAB dengan benar, Anda harus mengunduh Paket Dukungan MATLAB untuk Perangkat Keras Arduino. Unduhan ini memberi Anda akses ke fungsi dan perintah tertentu langsung ke papan arduino.
Anda dapat mengunduh paket di tautan di bawah ini
www.mathworks.com/matlabcentral/fileexchange/47522-matlab-support-package-for-arduino-hardware
Langkah 3: Menggunakan Sensor Data yang Diperoleh Dari Perangkat Seluler
Aplikasi MATLAB Mobile memungkinkan kita menggunakan perangkat seluler untuk mengalirkan data dengan menggunakan giroskopnya. Untuk memperoleh data melalui MATLAB, kami memperoleh data dengan mengambilnya dari matriks orientasi dari MATLAB mobile. Kami melakukan ini dengan membuat variabel untuk setiap kolom matriks orientasi (Azimuth, Pitch, dan Roll), dan mengindeks aliran nilai yang konstan dari perangkat seluler ke komputer. Hal ini memungkinkan kita untuk membuat pernyataan kondisional yang akan membentuk sebuah output jika MATLAB mengambil input data tertentu dari perangkat mobile. Untuk melakukan ini, Anda memerlukan MATLAB mobile pada perangkat mobile Anda, dan paket dukungan perangkat mobile untuk MATLAB pada komputer Anda.
Filenya bisa di download di link di bawah ini
www.mathworks.com/matlabcentral/fileexchange/51235-matlab-support-package-for-Apple-ios-sensors
Langkah 4: Kode dan Port Pengkabelan
Kode dimulai dengan pesan startup yang menanyakan apakah kita ingin memulai perangkat keamanan rumah kita. Jika kami menjawab ya, dan memberikan kode sandi yang benar, skrip langsung melompat ke loop sementara. Dari sana, ia mulai mengumpulkan data dari perangkat seluler. Ada kondisional yang membaca data ini. Kami dapat membuka kunci dan mengunci sistem dari perangkat seluler kami, dan kode akan mengubah servo dan berkedip lampu LED tergantung pada data yang diberikan dari perangkat seluler
startup = questdlg('Apakah Anda ingin mengaktifkan EcoTECH Smart Home Energy System?'); % Memulai urutan aktivasi ecoTECHwaitfor(startup); if startup == "Yes" % Jika "Yes" dipilih, urutan aktivasi dimulai dan memasuki loop while di akhir power = "on"; m1 = msgbox('Memulai ecoTECH…'); jeda (2); hapus (m1); m1_wait = waitbar(0, 'Mohon tunggu…'); langkah = 25; untuk i = 1:langkah jeda(.1); bilah tunggu(i/langkah); % Memperbarui penghapusan akhir bilah tunggu(m1_wait); KODE SANDI = [0 0 0 0]; % Menginisialisasi kode sandi ii = 0; % Menginisialisasi variabel yang digunakan untuk keluar dari loop m2 = msgbox('ecoTECH beroperasi penuh!'); jeda (2); hapus (m2); elseif startup == "Tidak" || startup == "Cancel" % Jika "No" atau "Cancel" dipilih maka urutan aktivasi tidak dimulai dan tidak masuk ke while loop power = "off"; m3 = msgbox('Oke! Selamat tinggal!'); jeda (2); hapus (m3); akhir
% ecoTECH di Bagian Tindakan while true while power == "on" % Bagian Mobile Key while true % Mengumpulkan data tentang orientasi Roll perangkat seluler KEY = m. Orientation(3); % Mengumpulkan data tentang tombol b2 = readDigitalPin(a, 'D2'); % Tombol 2 (Merah) b3 = readDigitalPin(a, 'D3'); % Tombol 3 (Putih) if KEY >= 35 % dalam derajat m4 = msgbox('Welcome Home!'); writeDigitalPin(a, 'D8', 1); % Menyalakan jeda lampu hijau(.5); writePosition(s, 1); % Memutar servo untuk membuka kunci jeda pintu (2); writeDigitalPin(a, 'D8', 0); % Mematikan lampu hijau hapus(m4); elseif KEY <= -35 % dalam derajat m5 = msgbox('Pintu Terkunci!'); writeDigitalPin(a, 'D7', 1); % Menyalakan jeda lampu merah(.5); writePosition(s, 0); % Memutar servo untuk mengunci jeda pintu (2); writeDigitalPin(a, 'D7', 0); % Mematikan lampu merah hapus(m5); ii = 1; break % Keluar while loop yang berisi kunci ponsel jika pintu dikunci menggunakan perangkat seluler elseif b2 == 0 && b3 == 0 % Keluar while loop yang berisi kunci ponsel untuk masuk ke bagian kode sandi break end end
Setelah ini, ia dapat memasuki loop while lainnya. Perulangan while ini mengontrol hasil berdasarkan masukan dari tombol. Jika loop while pertama diabaikan, atau penguncian manual diperlukan, loop while akan memasuki loop while lain di mana kata sandi tertentu diperlukan. Jika kata sandi salah, itu akan memulai ulang loop
while true if ii == 1 % Keluar while loop berisi kode sandi jika pintu dibuka dengan perangkat seluler break end % Mengumpulkan data tentang tombol b5 = readDigitalPin(a, 'D5'); % Tombol 5 (Biru) b1 = readDigitalPin(a, 'D1'); % Tombol 1 (Hitam) b4 = readDigitalPin(a, 'D4'); % Tombol 4 (Putih) if b5 == 0 % Mulai memasukkan kode sandi bagian untuk b = 1:5 m6 = msgbox('Silakan Tekan Dan Tahan Tombol A'); jeda (2); hapus (m6); % Mengumpulkan data tentang tombol b1 = readDigitalPin(a, 'D1'); % Tombol 1 (Hitam) b2 = readDigitalPin(a, 'D2'); % Tombol 2 (Merah) b3 = readDigitalPin(a, 'D3'); % Tombol 3 (Putih) b4 = readDigitalPin(a, 'D4'); % Tombol 4 (Kuning) b5 = readDigitalPin(a, 'D5'); % Tombol 5 (Biru) % Mengganti nilai dalam kode sandi awal satu per satu jika b1 == 0 KODE SANDI(0+b) = 1; elseif b2 == 0 KODE SANDI(0+b) = 2; elseif b3 == 0 KODE SANDI(0+b) = 3; elseif b4 == 0 KODE SANDI(0+b) = 4; elseif b5 == 0 KODE SANDI = sprintf('%.0f%.0f%.0f%.0f', KODE SANDI(1), KODE SANDI(2), KODE SANDI(3), KODE SANDI(4)); % Mengubah urutan tombol yang ditekan menjadi angka kemudian mengubahnya menjadi string end end % End of for loop untuk memasukkan angka untuk kode sandi jika KODE SANDI == "2314" % Jika kode sandi yang dimasukkan cocok maka pintu terbuka selama beberapa detik kemudian terkunci m7 = msgbox('Selamat Datang di Rumah!'); writeDigitalPin(a, 'D8', 1); % Menyalakan jeda lampu hijau(.5); writePosition(s, 1); % Memutar servo untuk membuka kunci jeda pintu (5); writeDigitalPin(a, 'D8', 0); % Mematikan jeda lampu hijau(.1); writeDigitalPin(a, 'D7', 1); % Menyalakan lampu merah jeda(.5); writePosition(s, 0); % Memutar servo untuk mengunci pintu jeda(1); writeDigitalPin(a, 'D7', 0); % Mematikan lampu merah hapus(m7); ii = 1; break % Keluar while loop yang berisi kode sandi setelah memasukkan kode sandi yang benar elseif PASSCODE ~= "2314" writeDigitalPin(a, 'D7', 1); % Menyalakan lampu merah m8 = msgbox('Kode Sandi Salah! Coba Lagi!'); waitfor(m8) writeDigitalPin(a, 'D7', 0); % Mematikan lampu merah lanjutkan % Memungkinkan Anda memasukkan kembali kode sandi end elseif b1 == 0 && b4 == 0 % Keluar saat loop berisi bagian kode sandi jika Anda tidak ingin memasukkan kode sandi ii = 1; ujung putus
Jika benar, ia akan segera memasuki loop sementara yang mengontrol sensor suhu. Jika sakelar aktif, loop akan terus berlanjut dan memplot plot suhu vs. waktu, memungkinkan seseorang untuk melihat tren. Jika tombol yang terhubung ke sensor suhu ditekan, itu juga akan mengirim email yang memberi tahu Anda berapa suhu di "rumah" Anda. Jika sakelar dimatikan, itu akan segera mengakhiri kode
t = 0; % Waktu awal = 0 detik jeda(5) % Memberikan waktu bagi pengguna untuk menghidupkan sakelar suhu SWITCH = readDigitalPin(a, 'D11'); % Mengumpulkan data tentang sakelar di pin D11 sementara SWITCH == 0 SWITCH = readDigitalPin(a, 'D11'); % Mengumpulkan data tentang sakelar di pin D11 voltage = readVoltage(a, 'A1'); % Membaca tegangan dari sensor suhu temp_C = (tegangan.*1000 - 500)./10; % Mengubah tegangan menjadi suhu dalam °C temp_F = (9/5).*temp_C + 32; % Mengkonversi dari plot °C ke °F(t, temp_C, 'b.') hold on title('Suhu Ruangan'); xlabel('Waktu dalam Detik'); ylabel('Suhu'); sumbu([0, 180, 0, 100]); plot(t, temp_F, 'r.') legend('Suhu dalam °C', 'Suhu dalam °F') pause(1); t = t + 1; % Penghitung waktu dalam detik % Bagian Email b_temp = readDigitalPin(a, 'D0'); % Mengumpulkan data tombol suhu (biru) di pin D0 if b_temp == 0 setpref('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref('Internet', 'E_mail', '[email protected]'); % Sender setpref('Internet', 'SMTP_Username', '[email protected]'); % Nama pengguna pengirim setpref('Internet', 'SMTP_Password', 'Integral_ecoTECH'); % Alat peraga kata sandi pengirim = java.lang. System.getProperties; props.setProperty('mail.smtp.auth', 'benar'); props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty('mail.smtp.socketFactory.port', '465'); sendmail('[email protected]', 'ecoTECH Room Temperature', sprintf('Suhu ruangan saat ini adalah %.1f °C atau %.1f °F.', temp_C, temp_F)); % Mengirim e-mail ke penerima yang memberikan data tentang suhu ruangan saat ini fprintf('Email berhasil dikirim!\n') end if temp_F >= 75 % Jika suhu ruangan meningkat menjadi 75 °F… temp_AC = 65; % Mengubah suhu pada termostat menjadi 65 °F jika tidak temp_F <= 65 % Jika suhu ruangan turun menjadi 60 °F… temp_AC = 80; % Mengubah suhu pada termostat menjadi 80 °F akhir akhir % Akhir "SWITCH == 0" sementara loop jika daya == "mati" || ii == 1 % Keluar dari "power == on" saat loop break end end % Akhir dari "power == on" while loop jika power == "off" || ii == 1% Keluar keseluruhan saat loop break end
Ini hanya gambaran singkat tentang kode dan fungsinya. Kami telah melampirkan kode lengkap sebagai pdf jika diperlukan
Berikut adalah daftar port yang digunakan setiap perangkat
1. LED RGB: Pin Digital (7, 8, 9)
2. Servo: Pin Digital 6
3. Tombol: Pin Digital (1, 2, 3, 4, 5)
4. Tombol Biru untuk email: Pin Digital 0
5. Sensor Suhu: Pin Analog 1
6. Beralih: Pin Digital 11
Direkomendasikan:
Motor Stepper Terkendali Motor Stepper Tanpa Mikrokontroler!: 6 Langkah
Motor Stepper Terkendali Motor Stepper Tanpa Mikrokontroler!: Dalam Instruksi singkat ini, kita akan membuat pengontrol motor stepper sederhana menggunakan motor stepper. Proyek ini tidak memerlukan sirkuit kompleks atau mikrokontroler. Jadi tanpa basa-basi lagi, mari kita mulai
Programmer Kecil untuk Mikrokontroler ATTINY Dengan Arduino UNO: 7 Langkah
Pemrogram Kecil untuk Mikrokontroler ATTINY Dengan Arduino UNO: Saat ini menarik untuk menggunakan mikrokontroler seri ATTINY karena keserbagunaannya, harganya yang murah tetapi juga fakta bahwa mereka dapat dengan mudah diprogram di lingkungan seperti Arduino IDE. Program yang dirancang untuk modul Arduino dapat dengan mudah mentransfer
Dispenser Pembersih Tangan Non Kontak DIY Tanpa Arduino atau Mikrokontroler: 17 Langkah (dengan Gambar)
Dispenser Pembersih Tangan Non Kontak DIY Tanpa Arduino atau Mikrokontroler: Seperti yang kita semua tahu, wabah COVID-19 melanda dunia dan mengubah gaya hidup kita. Dalam kondisi ini, Alkohol dan hand sanitizer merupakan cairan vital, namun harus digunakan dengan benar. Menyentuh wadah alkohol atau pembersih tangan dengan tangan yang terinfeksi c
Konfigurasi Bit Fuse Mikrokontroler AVR. Membuat dan Mengunggah di Memori Flash Mikrokontroler Program Berkedip LED.: 5 Langkah
Konfigurasi Bit Fuse Mikrokontroler AVR. Membuat dan Mengupload di Flash Memory Mikrokontroler Program LED Blinking.: Dalam hal ini kita akan membuat program sederhana dalam kode C dan membakarnya ke dalam memori mikrokontroler. Kami akan menulis program kami sendiri dan mengkompilasi file hex, menggunakan Atmel Studio sebagai platform pengembangan terintegrasi. Kami akan mengkonfigurasi fuse bi
Cara Membuat Robot Terkendali Seluler - Berbasis DTMF - Tanpa Mikrokontroler & Pemrograman - Kontrol Dari Mana Saja di Dunia - RoboGeeks: 15 Langkah
Cara Membuat Robot Terkendali Seluler | Berbasis DTMF | Tanpa Mikrokontroler & Pemrograman | Kontrol Dari Mana Saja di Dunia | RoboGeeks: Ingin membuat robot yang bisa dikendalikan dari mana saja di dunia, Ayo Lakukan