MATLAB Kullanarak Ev Aletleri Nasıl Kontrol Edilir?

Ev otomasyon ağ teknolojisi 90'ların sonunda geliştirildi ve o dönemde kullanılan iletişim protokolü X10. O zamandan beri otomasyon kavramı popülerlik kazanıyor ve elektronik cihazlar arasındaki iletişimden sorumlu en son protokoller icat edildi. Otomasyon kavramını göz önünde bulundurarak, neden tüm ev aletlerini MATLAB olarak bilinen en ünlü yazılımı kullanarak kontrol etmeyeceğimi düşündüm. Bu projede bir Otomasyon sistemi tasarlayıp ardından Seri komut vererek kontrol edeceğiz. Bu sistemi çalıştırmak için kullanacağımız yazılım MATLAB olarak adlandırılır ve bu projeyi tamamladıktan sonra elektrikli aletlerimizi sadece kanepede oturarak veya yatağa uzanarak kontrol edebileceğiz.

MATLAB GUI kullanarak Ev Aletlerinizi Nasıl Otomatikleştirebilirsiniz?

Şimdi bileşenleri bir araya getirmeye, bir devre yapmak için bir araya getirmeye, bir MATLAB Grafik Kullanıcı Arayüzü (GUI) yapmaya ve ev aletlerinizi otomatikleştirmek için MATLAB'da kodu yazmaya doğru ilerleyelim.

Adım 1: Gerekli Bileşenler (Donanım)

Projenin ortasında herhangi bir rahatsızlık olmaması için projeye başlamadan önce bileşenleri detaylı olarak bilmek her zaman daha iyidir. Kullanacağımız bileşenlerin listesi aşağıdadır:

Burada 8 röle modülü kullanıyoruz çünkü sadece sekiz cihazı kontrol edeceğiz. Sahip olduğunuz bir dizi cihazı otomatikleştirmek istiyorsanız, farklı bir röle modülü kullanabilirsiniz. Piyasada tekli, 8 röleli, 12 röleli vb. Birçok röle modülü bulunmaktadır.

Adım 2: Gerekli Bileşenler (Yazılım)

Donanım bileşenlerini düzenledikten sonra projede kullanılacak yazılımı arayacağız. MATLAB'ın en son sürümünü, üzerinde çalıştığımız dizüstü bilgisayarımıza veya PC'mize kuracağız. MATLAB 2019 en yeni yazılımdır, bu nedenle MATLAB 2019'u indirmek daha iyidir. Mathworks'ün resmi web sitesine bağlantı yazılımı indirmek için aşağıda mevcuttur. Donanım Desteği paketleri MATLAB 2019'da 32 bit, 64 bit Windows ve 64 bit Linux için mevcuttur.

Proteus 8 Professional'ı indirdikten sonra, üzerindeki devreyi tasarlayın. Yeni başlayanların devreyi tasarlaması ve donanım üzerinde uygun bağlantıları yapması için yazılım simülasyonlarını buraya ekledim.

3. Adım: Bileşenlerin İncelenmesi

Şimdi, bu projede kullanacağımız tüm bileşenlerin bir listesini çıkardık. Bir adım daha ileri gidelim ve tüm ana donanım bileşenlerini kısa bir incelemeye alalım.

Arduino UNO: Arduino UNO bir mikroçip ATMega 328P'den oluşan ve Arduino.cc tarafından geliştirilmiş bir mikrodenetleyici kartıdır. Bu kart, diğer genişleme kartları veya devreleri ile arayüzlenebilen bir dizi dijital ve analog veri pinine sahiptir. Bu kartta 14 Dijital pin, 6 Analog pin bulunur ve B tipi USB kablosu aracılığıyla Arduino IDE (Entegre Geliştirme Ortamı) ile programlanabilir. Güç için 5V gerektirir AÇIK ve bir C Koduçalıştırmak için.

12V Röle Modülü:Röle Modülü bir anahtarlama cihazıdır. Bir sinyal alır ve herhangi bir elektronik cihazı veya cihazı giriş sinyaline göre değiştirir. İki modda çalışır, Normalde Açık (NO) ve Normalde Kapalı (NC).Normalde Açık modda, röleye giriş sinyali DÜŞÜK olduğunda devre başlangıçta kesilir. Normalde Kapalı modunda, giriş sinyali DÜŞÜK olduğunda devre başlangıçta tamamlanır.

RS232'den TTL'ye Seri Port Dönüştürücü Modülüne: Bu modül seri iletişim için kullanılır. Arduino UNO kartımızın UART veya USART olarak adlandırılan bir seri iletişim portu vardır. Arduino kartında TX ve RX seri iletişiminden sorumlu olan iki pin vardır (Pin 0 ve pin 1). Bu iki pin, RS232 modülünde de mevcuttur. Bu modül 5V Arduino ile güçlendirilmiştir ve 12V ile çalışan farklı cihazları çalıştırmak için 5V'u 12V'a çevirir. Bu modülü elektronik cihazlar 5V ile çalışmadığı için kullanıyoruz.

Adım 4: Çalışma Prensibini Anlamak

Bu projeyi tamamladıktan sonra seri olarak komut vererek cihazları uzaktan kontrol edebileceğiz. Arduino kartı, RS232 ile seri iletişim için kullanılır. Cihazlar Relay modülüne bağlanır ve RS232, Arduino'nun TX ve RX pinlerine bağlanır ve MATLAB üzerinde butona basıldığında seri komut üretilir ve dönüşlerde RS232'nin seri portuna gönderilir. Cihazı AÇIN veya KAPATIN. Öncelikle MATLAB, Arduino kartı ile arayüzlenir ve ardından devre donanım üzerinde uygulanır. MATLAB'ın Arduino ile arayüzlenmesiyle ilgili bir sorunu olan varsa, adlı makaleme başvurabilir. ARDUINO'U MATLAB İLE NASIL ARABİRİRİM? ve sonra bu projeyi donanım üzerinde uygulayabilecektir. Bu projeyi tamamladıktan sonra uygun bir yere kurun, tercih edilen yer cihazların kablolarının yerleştirildiği sokete yakın olduğundan Röle modülünün oraya kolayca kurulmasını sağlayın.

Adım 5: Devre Şeması

Projenin proteus devre şeması şöyle görünecektir. Donanım bileşenlerini daha sonra bu devreye göre bağlayın.

Adım 6: MATLAB'a Başlarken

Devreyi Proteus Open MATLAB üzerinde tasarladıktan sonra "kılavuz"Komut penceresinde. Bir iletişim kutusu açılacak ve bu kutudan Boş GUI'yi seçecektir. Solda bir bileşen paleti görünecek ve GUI'nize yerleştirmek istediğiniz bileşenleri listeleyecektir.

Basmalı düğmeyi seçin ve panele 16 basma düğmesi yerleştirin. İlk olarak, ON düğmesini yerleştirin ve ardından OFF düğmesini buna paralel olarak yerleştirin. Düğmelerin renkleri ve adları, basma düğmelerine çift tıklanarak değiştirilebilir. Basma düğmelerine tıkladıktan sonra denetçi penceresi açılır ve düğmenin bazı özellikleri burada değiştirilebilir. Düğmenin adını değiştirmek için şunu arayın: dizi seçeneği içinde AÇIK yaz.

Düğme adını değiştirdikten sonra arka plan rengini değiştirin. (Not: Bu adım isteğe bağlıdır ve arka plan rengini değiştirmek istemezseniz atlayabilirsiniz)

16 basma düğmesi yerleştirin ve denetçi penceresinde yukarıdaki değişiklikleri yapın. Röleleri adlandırmak için statik metin sol çubukta bulunan seçenek kullanılır. GUI'min son görünümü aşağıda gösterilmektedir:

Arka uçta oluşturulan GUI açık GUI Kodunu yaptıktan sonra aşağıdaki gibi belirtilen kodda bazı değişiklikler yapın.

Adım 7: GUI'nin MATLAB Kodu:

function varargout = final (varargin) final.fig için% FINAL MATLAB kodu% FINAL, kendi başına yeni bir SONUÇ oluşturur veya mevcut% singleton * değerini yükseltir. %% H = FINAL, tutamacı yeni bir FINAL'a veya tutamacı% mevcut tekliye * döndürür. %% FINAL ('CALLBACK', hObject, eventData, handles, ...) FINAL.M'de verilen girdi bağımsız değişkenleriyle CALLBACK adlı yerel% işlevini çağırır. %% FINAL ('Özellik', 'Değer', ...) yeni bir SONUÇ oluşturur veya mevcut tekil yüzdesini yükseltir *. Soldan başlayarak, özellik değeri çiftleri final_OpeningFcn çağrılmadan önce GUI'ye% uygulanır. % Tanınmayan özellik adı veya geçersiz değer, özellik uygulamasının% durmasına neden olur. Tüm girişler final_OpeningFcn'ye varargin aracılığıyla geçirilir. %% * GUIDE'nin Araçlar menüsünde GUI Seçeneklerine bakın. "GUI, yalnızca% bir örneğin çalıştırılmasına izin verir (tekli)" seçeneğini seçin. % % Ayrıca bakınız: GUIDE, GUIDATA, GUIHANDLES % Son düzenlemeye yardımcı olmak için yanıtı değiştirmek için yukarıdaki metni düzenleyin % GUIDE v2.5 25-Ağu-2019 13:10:11 % Başlatma kodunu başlatın - DÜZENLEMEYİN gui_Singleton = 1; gui_State = struct ('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @final_OpeningFcn, ... 'gui_OutputFcn', @final_OutputFcn, ... 'gui_LayoutFc. .. 'gui_Callback', []); nargin && ischar (varargin {1}) gui_State.gui_Callback = str2func (varargin {1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); başka gui_mainfcn (gui_State, varargin {:}); end% End başlatma kodu - DÜZENLEME% DÜZENLEME - Son görünür hale getirilmeden hemen önce yürütülür. function final_OpeningFcn (hObject, eventdata, handles, varargin)% Bu fonksiyonun hiçbir çıktı argümanı yoktur, bkz. OutputFcn. % hObject tutacağı,% olay verisi ayrıldığını gösteriyor - MATLAB'ın gelecekteki bir sürümünde tanımlanacak%, tutamaçlar ve kullanıcı verileriyle yapıyı işliyor (bkz. GUIDATA)% varargin komut satırı argümanları son (bkz. VARARGIN)% Son tutamaçlar için varsayılan komut satırı çıktısını seçin .output = hObject; Güncelleme işleyicileri yapı kılavuzları (hObject, tutamaçlar); % UIWAIT, kullanıcının yanıtı için son beklemeyi yapar (bkz. UIRESUME)% uiwait (handles.figure1); % --- Bu işlevin çıktıları komut satırına döndürülür. function varargout = final_OutputFcn (hObject, eventdata, handles) çıktı değişkenlerini döndürmek için% varargout hücre dizisi (bkz. VARARGOUT); % hObject tutacağı,% olay verisini ayırmak için - MATLAB'ın gelecekteki bir sürümünde tanımlanacak% tutamaçlar ve kullanıcı verileriyle yapıyı işler (bkz. GUIDATA)% Tutamaç yapısından varsayılan komut satırı çıktısını alın varargout {1} = handles.output; hepsini temizle; küresel a; a = arduino; % --- Puşbuton 1'de düğmeye basıldığında yürütülür. function pushbutton1_Callback (hObject, eventdata, handles)% hObject handles to pushbutton1 (GCBO'ya bakın)% eventdata ayrıldı - MATLAB'ın gelecekteki bir sürümünde tanımlanacak% tutamaçlar ve kullanıcı verileri (bkz. GUIDATA) ile yapıyı işler genel a; writeDigitalPin (a, 'D6', 0); % --- buton 2'de butona basıldığında yürütülür. function pushbutton2_Callback (hObject, eventdata, handles)% hObject handles to pushbutton2 (bkz. GCBO)% eventdata ayrıldı - MATLAB'ın gelecekteki bir sürümünde tanımlanacak% tutamaçlar ve kullanıcı verileri (bkz. GUIDATA) ile yapıyı işler genel a; writeDigitalPin (a, 'D6', 1); % --- buton 3'te butona basıldığında yürütülür. function pushbutton3_Callback (hObject, eventdata, handles)% hObject handled to pushbutton3 (GCBO'ya bakın)% eventdata ayrıldı - MATLAB'ın gelecekteki bir sürümünde tanımlanacak% tutamaçlar ve kullanıcı verileri (bkz. GUIDATA) ile yapıyı işler genel a; writeDigitalPin (a, 'D7', 0); % --- Puşbutonda düğmeye basıldığında yürütülür4. function pushbutton4_Callback (hObject, eventdata, handles)% hObject handles to pushbutton4 (GCBO'ya bakın)% eventdata ayrılmış - MATLAB'ın gelecekteki bir sürümünde tanımlanacak% tutamaçlar ve kullanıcı verileri (bkz. GUIDATA) ile yapıyı işler genel a; writeDigitalPin (a, 'D7', 1); \% --- düğmedeki düğmeye basıldığında çalıştırır5. function pushbutton5_Callback (hObject, eventdata, handles)% hObject handles to pushbutton5 (GCBO'ya bakın)% eventdata ayrıldı - MATLAB'ın gelecekteki bir sürümünde tanımlanacak% tutamaçlar ve kullanıcı verileri ile yapıyı işler (bkz. GUIDATA) global a; writeDigitalPin (a, 'D8', 0); % --- Basma düğmesindeki düğmeye basıldığında yürütülür6. function pushbutton6_Callback (hObject, eventdata, handles)% hObject handles to pushbutton6 (GCBO'ya bakın)% eventdata ayrıldı - MATLAB'ın gelecekteki bir sürümünde tanımlanacak% tutamaçlar ve kullanıcı verileri (bkz. GUIDATA) ile yapıyı işler genel a; writeDigitalPin (a, 'D8', 1); % --- Puşbutonda düğmeye basıldığında yürütülür7. function pushbutton7_Callback (hObject, eventdata, handles)% hObject handles to pushbutton7 (GCBO'ya bakın)% eventdata ayrıldı - MATLAB'ın gelecekteki bir sürümünde tanımlanacak% tutamaçlar ve kullanıcı verileri (bkz. GUIDATA) ile yapıyı işler genel a; writeDigitalPin (a, 'D9', 0); % --- Puşbutonda düğmeye basıldığında yürütülür8. function pushbutton8_Callback(hObject, eventdata, tanıtıcılar) % hObject tanıtıcı - pushbutton8 (bkz. GCBO) % olay verisi ayrılmış - MATLAB'ın gelecekteki bir sürümünde tanımlanacak % tanıtıcılar ve kullanıcı verileriyle yapı (bkz. GUIDATA) global a; writeDigitalPin (a, 'D9', 1); % --- Puşbutonda düğmeye basıldığında yürütülür9. function pushbutton9_Callback (hObject, eventdata, handles)% hObject handled to pushbutton9 (GCBO'ya bakın)% eventdata ayrıldı - MATLAB'ın gelecekteki bir sürümünde tanımlanacak% tutamaçlar ve kullanıcı verileri (bkz. GUIDATA) ile yapıyı işler genel a; writeDigitalPin (a, 'D10', 0); % --- Puşbutonda düğmeye basıldığında çalışır10. function pushbutton10_Callback (hObject, eventdata, handles)% hObject handles to pushbutton10 (GCBO'ya bakın)% eventdata ayrıldı - MATLAB'ın gelecekteki bir sürümünde tanımlanacak% tutamaçlar ve kullanıcı verileri (bkz. GUIDATA) ile yapıyı işler genel a; writeDigitalPin (a, 'D10', 1); % --- Buton11'de butona basıldığında yürütülür. function pushbutton11_Callback (hObject, eventdata, handles)% hObject handled to pushbutton11 (bkz. GCBO)% eventdata ayrıldı - MATLAB'ın gelecekteki bir sürümünde tanımlanacak% tutamaçlar ve kullanıcı verileri (bkz. GUIDATA) ile yapıyı işler genel a; writeDigitalPin (a, 'D11', 0); % --- buton 12'de butona basıldığında çalışır. function pushbutton12_Callback (hObject, eventdata, handles)% hObject handles to pushbutton12 (GCBO'ya bakın)% eventdata ayrıldı - MATLAB'ın gelecekteki bir sürümünde tanımlanacak% tutamaçlar ve kullanıcı verileri (GUIDATA'ya bakın) ile yapıyı işler genel a; writeDigitalPin (a, 'D11', 1); % --- Puşbutonda düğmeye basıldığında yürütülür13. function pushbutton13_Callback (hObject, eventdata, handles)% hObject handles to pushbutton13 (GCBO'ya bakın)% eventdata ayrıldı - MATLAB'ın gelecekteki bir sürümünde tanımlanacak% tutamaçlar ve kullanıcı verileri ile yapıyı işler (bkz. GUIDATA) global a; writeDigitalPin (a, 'D12', 0); % --- Basma düğmesindeki düğmeye basıldığında yürütülür14. function pushbutton14_Callback (hObject, eventdata, handles)% hObject handles to pushbutton14 (bkz. GCBO)% eventdata ayrıldı - MATLAB'ın gelecekteki bir sürümünde tanımlanacak% tutamaçlar ve kullanıcı verileri ile yapıyı işler (bkz. GUIDATA) global a; writeDigitalPin (a, 'D12', 1); % --- Basma düğmesindeki düğmeye basıldığında yürütülür15. function pushbutton15_Callback (hObject, eventdata, handles)% hObject handles to pushbutton15 (GCBO'ya bakın)% eventdata ayrıldı - MATLAB'ın gelecekteki bir sürümünde tanımlanacak% tutamaçlar ve kullanıcı verileri ile yapıyı işler (bkz. GUIDATA) global a; writeDigitalPin (a, 'D13', 0); % --- Basma düğmesindeki düğmeye basıldığında yürütülür16. function pushbutton16_Callback (hObject, eventdata, handles)% hObject handles to pushbutton16 (bkz. GCBO)% eventdata ayrıldı - MATLAB'ın gelecekteki bir sürümünde tanımlanacak% tutamaçlar ve kullanıcı verileri (bkz. GUIDATA) ile yapıyı işler genel a; writeDigitalPin (a, 'D13', 1); 

GUI Kodu ile birlikte m-dosyası Buradan indirilebilir.

Adım 8: Kod Açıklaması

MATLAB GUI kodunu oluşturduğumuzda, arka uçta otomatik olarak oluşturulur ve sadece Kodda bazı değişiklikler yapmamız gerekir. Kodda toplam 16 işlev vardır. Sekiz kişi dönmek için AÇIK röleler ve sekizi çevirmek içindir KAPALI röleler. İlk olarak, adında global bir değişken oluşturduk "A"işlevlerin dışında bildirilir ve daha sonra her koşulda kullanılır çünkü birden çok işlev aynı verilere erişirken kullanışlıdır. Sonra yazdık a = arduinoKodda çünkü Arduino ile MATLAB arasında arayüz oluşturuyoruz. Kod'da butonlar için tasarlanan 16 fonksiyonun tamamı değiştirildi ve röleyi KAPATMAK için "0" ve bu fonksiyonlarda röleyi AÇIK duruma getirmek için "1" yazdık. Bu iki satırı her işlevin sonuna eklemeniz ve buna göre değiştirmeniz gerekecektir:

küresel bir; writeDigitalPin (a, 'D13', 1);

Adım 9: Donanımın Montajı

Kodu yazdıktan sonra, donanım bileşenlerini birleştirmeye başlayacağız. Öncelikle röle modülü bağlantısını bilmemiz gerekiyor. Cihazın pozitif telini alın ve kesin. bir ucunu HAYIR limana ve diğer ucuna COM röle modülünün portu. Aşağıdaki resme bakın ve dört cihazı gösterildiği gibi röle modülüne bağlayın. Bağlantının daha sonra kopmaması için röle modülünün vidalarını sıktığınızdan emin olun.

Sekiz röle modülünün NO ve COM pinlerini sekiz cihaza bağladıktan sonra modülün OUT pinlerini bağlayacağız. Röle modülünün OUT pinlerini bağlamak için Arduino'nun 6-13 numaralı pinleri kullanılır. Röle 1'in OUT pinini Arduino'nun pin 6'sına takın ve ardından tüm bağlantıları Kod'a göre yapın. Ortak Vcc ve Toprak bağlantılarını yapmak için devre tahtası kullanın ve ardından Röle modülünün bu iki pininin kablolarını bu bağlantılara yerleştirin. Röle bağlantılarını yaptıktan sonra RS232'nin Vcc ve Ground'unu sırasıyla Arduino'nun 5V ve Ground'a bağlayın. RS232'nin Tx pinini Arduino'nun RX pinine bağlayın ve RS232'nin Rx pinini Arduino'nun Tx pinine bağlayın. Seri DB9 erkek adaptörünü alın ve bir tarafını Seri Bağlantı Noktası dönüştürücü modülüne ve diğer tarafını kullanmakta olduğunuz dizüstü veya PC'ye bağlayın.

Bu kadar! Otomasyon projemizi tamamladık ve artık MATLAB kullanarak cihazlarımızı kontrol edebiliyoruz. Ayağa kalkıp AÇIK duruma getirmeye gerek yoktur, cihazları uzaktan AÇIP KAPATABİLİRİZ. Evlerde ve ofislerde vb. Uygulanabilir.

Facebook Twitter Google Plus Pinterest