MATLAB İle Bluetooth Kablosuz İletişim için Nasıl Kullanılır?
Bluetooth, gömülü sistemlerde kısa menzilli kablosuz iletişim için en basit ve en popüler protokoldür. Bluetooth sadece verileri bir cihazdan diğerine aktarmak için değil, aynı zamanda cihazları kablosuz olarak kontrol etmek için de kullanılır. Hemen hemen her elektronik cihazda günümüzde Bluetooth desteği var, bu nedenle gömülü uygulamanızda Bluetooth kontrol seçeneğinin olması akıllıca bir tercih. Bu eğitimde, kablosuz iletişim kurmak için Bluetooth'u MATLAB'da nasıl kullanacağımızı öğreneceğiz. Bilgisayarın dahili Bluetooth'u bir tarafta MATLAB ve diğer tarafta Arduino ile HC-05 kullanacağız. Bluetooth üzerinden MATLAB ve Arduino arasında iletişim kurmanın iki yolu var, bir tanesi komut penceresi kullanmak ve diğeri MATLAB GUI kullanıyor olmak. Her iki yöntem için de Arduino kodu aynı kalacak. MATLAB için yeni iseniz, MATLAB ile basit LED yakıp söndürme programı ile çalışmaya başlamak ve MATLAB'da kullanılan temel terminolojiyi öğrenmek tavsiye edilir. Gerekli Bileşenler MATLAB yüklü bir pc (Tercih: R2016a veya üzeri versiyonlar) Arduino UNO Bluetooth Modülü (HC-05) LED (herhangi bir renk) Direnç (330 ohm) Jumper Kabloları Devre şeması MATLAB ve Arduino arasındaki Bluetooth iletişimi için devre şeması aşağıda verilmiştir:
MATLAB komut penceresini kullanarak Bluetooth iletişimi Bu, Arduino ve MATLAB arasında Bluetooth iletişimi kurmak için basit bir yöntem:) Burada MATLAB, Arduino'ya bağlı HC-05'i bağlamak için dizüstü bilgisayarın bluetoothunu kullanmaktadır. Öncelikle, Arduino’yu MATLAB’dan gelen (serideki Bluetooth’u kullanarak) gelen seri verileri okumak için kodlamalıyız. Ardından MATLAB'dan gelen ve Bluetootha iletilen veriler Arduino'ya bağlı olan her şeyi kontrol etmek için kullanılabilir. Burada MATLAB kullanarak LAPTOP'tan kontrol edilebilen bir LED'i Arduino'ya bağladık. Önce, Arduino UNO'ya verilen Arduino kodunu yükleyin ve ardından MATLAB Komut Penceresinde kodlamaya başlayın. #include int TxD; int RxD; int data; SoftwareSerial bluetooth(TxD, RxD); void setup() { Serial.begin(9600); bluetooth.begin(9600); } void loop() { if(bluetooth.available() > 0) { data = bluetooth.read(); Serial.print(data); Serial.print("\n"); if(data == '1') { digitalWrite(11, HIGH); } else if(data == '0') { digitalWrite(11, LOW); } } } Daha sonra MATLAB ve Arduino arasındaki Bluetooth iletişimi için komut penceresinde aşağıdaki MATLAB kodunu kopyalayıp yapıştırın. instrhwinfo('Bluetooth','HC-05'); bt = Bluetooth('HC-05', 1); fopen(bt);
Aşağıdaki kodda, Arduino'ya ‘0’ göndererek LED'i kapatmak için fprintf (bt, ‘0’) komutu kullanılır. Şimdi, LED'i açmak istiyorsanız, aşağıdaki komutu kullanarak ‘0’ yerine sadece ‘1’ gönderin. fprintf(bt,'1');
Mevcut donanım hakkındaki bilgileri kontrol etmek için aşağıdaki komutu kullanın instrhwinfo('type','Name of device'); Bluetooth portunu açmak için, aşağıdaki komut kullanılır fopen(bt); Bluetooth kullanarak ARDUİNO MATLAB veri gönderme sürecini tam olarak anlamak için aşağıdaki videoyu kontrol edin. https://www.youtube.com/watch?v=yThE3KsAF8w MATLAB GUI kullanarak Bluetooth iletişimi MATLAB GUI kullanarak Bluetooth İletişimini göstermek için, Arduino'ya bağlı LED'i açmak, kapatmak ve yakıp söndürmek için MATLAB'da üç adet grafik düğme oluşturacağız. Veriler, bu grafik düğmelere tıklayarak MATLAB'den HC-05'e bluetooth ile gönderilecektir. Arduino, Bluetootha iletilen verileri MATLAB'tan HC-05'e almak ve alınan verilere göre LED'i kontrol etmek için kod içerir. Arduino kodu bir öncekiyle aynı kalacaktır, tek fark, daha önce MATLAB'ın komut penceresinden ‘1’ ve ‘0’ veri gönderiyordu ve şimdi üç grafik düğmeyi tıklatarak aynı veriler gönderilecek. GUI'yi başlatmak için komut penceresinde aşağıdaki komutu yazın guide Bir açılır pencere açılacaktır, daha sonra aşağıdaki resimde gösterildiği gibi yeni boş bir GUI seçin,
Şimdi, aşağıda gösterildiği gibi AÇIK, KAPALI ve Yanıp Sönen LED ışıklarını döndürmek için üç düğme seçin.
Düğmelerin şeklini değiştirmek için, sadece üzerine tıklayın ve düğmenin köşelerini sürükleyin. Push düğmesine çift tıklayarak, ilgili düğmenin rengini, dizesini ve etiketini değiştirebilirsiniz. Aşağıdaki resimde gösterildiği gibi üç butona sahibiz.
Düğmeleri seçiminize göre özelleştirebilirsiniz. Şimdi bunu kaydettiğinizde, MATLAB'un Editör penceresinde bir kod oluşturulacaktır. Bu kodu, Arduino'nuzun MATLAB GUI'sini kullanarak Bluetooth verilerini almada gerçekleştirmek istediğiniz göreve göre düzenleyin. Aşağıda MATLAB kodunu düzenledik. MATLAB öğreticisine başlamak için Komut penceresi, editör penceresi vb. Hakkında daha fazla bilgi edinebilirsiniz. MATLAB'dan Bluetooth ile LED'in kontrol edilmesi için MATLAB kodunun tamamı bu projenin sonunda verilmiştir. Ayrıca, düğmelerini gereksiniminize göre özelleştirebileceğiniz GUI dosyasını (.fig) ve kod dosyasını (.m) buradan indirebilirsiniz. Aşağıda Arduino'ya bağlı LED'i kontrol etmek için yaptığımız bazı düzeltmeler var. Aşağıdaki kodu kopyalayıp satır no. 74, MATLAB'ı Dizüstü Bilgisayarın Bluetooth'una kurabilir veya bağlayabilirsiniz. clear All; global bt; instrhwinfo('Bluetooth','HC-05'); bt = Bluetooth('HC-05', 1); fopen(bt);
veri iletimi için Bluetooth portunu açmak için fopen (bt) kullanılır. Şimdi, aşağı kaydırdığınızda, GUI'deki üç düğme için üç işlev bulunduğunu göreceksiniz. Şimdi kodu, tıklatarak gerçekleştirmek istediğiniz göreve göre fonksiyonlara yazın. LED ON (KAPALI) düğmesinin işleviyle, LED'i açmak için işlevin sonundan hemen önce aşağıdaki kodu kopyalayıp yapıştırın. Aşağıdaki kodda, dizüstü bilgisayarın Bluetooth'u kullanılarak MATLAB'tan HC-05'e ‘1’ göndermek için fprintf (bt, ‘1’) kullanılır. Arduino, HC-05 aracılığıyla bu verileri ‘1’ alacak ve 11inci pini HIGH yaparak LED'i yakacak. global bt; fprintf(bt,'0');
BLINK düğmeleri işlevinde, LED'i yakıp söndürmek için aşağıdaki kodu kullanın. LED için 10 kez yanıp sönen bir döngü kullanılır. global bt; for i = 1:10 fprintf(bt,'1'); pause(0.5); fprintf(bt,'0'); pause(0.5); end
MATLAB GUI kodlamasını tamamladıktan ve donanımı devre şemasına göre ayarladıktan sonra, düzenlenmiş kodu .m dosyasında çalıştırmak için RUN düğmesine tıklayın.
MATLAB cevap vermesi birkaç saniye sürebilir, MATLAB, aşağıda gösterildiği gibi ekranın sol alt köşesinde görebileceğiniz BUSY göstergesini gösterene kadar herhangi bir GUI düğmesine basmayın.
Her şey hazır olduğunda, sırasıyla AÇIK, KAPALI ve BLINK ışıklarını açmak için LED-ON, LED OFF ve BLINK butonlarına tıklayın. Bu projenin tüm kod dosyaları buradan indirilebilir veya aşağıda verilen kodu kullanabilirsiniz. MATLAB GUI kullanarak Bluetooth üzerinden MATLAB'dan Arduino'ya Veri gönderme işleminin tamamını anlamak için aşağıdaki videoyu kontrol edin. Arduino Code: #include int TxD; int RxD; int data; SoftwareSerial bluetooth(TxD, RxD); void setup() { Serial.begin(9600); bluetooth.begin(9600); } void loop() { if(bluetooth.available() > 0) { data = bluetooth.read(); if(data == '1') digitalWrite(11, HIGH); else if(data == '0') digitalWrite(11, LOW); } } Code for Bluetooth Communication using MATLAB Command Window instrhwinfo('Bluetooth','HC-05'); bt = Bluetooth('HC-05', 1); fopen(bt); fprintf(bt,'1'); fprintf(bt,'0'); Code for Bluetooth Communication using MATLAB GUI gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @bluetooth_with_MATLAB_OpeningFcn, ... 'gui_OutputFcn', @bluetooth_with_MATLAB_OutputFcn, ... 'gui_LayoutFcn', , ... 'gui_Callback', ); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end function bluetooth_with_MATLAB_OpeningFcn(hObject, eventdata, handles, varargin) function varargout = bluetooth_with_MATLAB_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; clear All; global bt; instrhwinfo('Bluetooth','HC-05'); bt = Bluetooth('HC-05', 1); fopen(bt); function led_on_Callback(hObject, eventdata, handles) global bt; fprintf(bt,'1'); function led_off_Callback(hObject, eventdata, handles) global bt; fprintf(bt,'0'); function blink_Callback(hObject, eventdata, handles) global bt; for i = 1:10 fprintf(bt,'1'); pause(0.5); fprintf(bt,'0'); pause(0.5); end https://www.youtube.com/watch?v=HfgbQSUbK-0 Read the full article









