- Gereksinimler:
- Bluetooth İletişimi için PIC Mikrodenetleyiciyi Programlama:
- Devre Şeması ve Donanım Kurulumu:
- Bluetooth Mobil Uygulamasını kullanarak LED'i kontrol etme:
Bu eğitimde, bir Bluetooth Modülüne (HC-06) arabirim oluşturarak PIC projelerinin kablosuz olarak nasıl yapılacağını öğreneceğiz . Önceki eğitimimizde, PIC Mikroişlemcimizde USART modülünün nasıl kullanılacağını öğrendik ve PIC ile Bilgisayar arasında iletişim kurduk. Mutlak bir başlangıç seviyesindeyseniz, MPLAB ve XC8 öğrenmek, LED, LCD, Zamanlayıcılar, ADC, PWM vb. Kullanmak gibi sıfırdan başladığımız tüm PIC Eğitimlerimiz için buraya bakın.
Burada popüler Bluetooth modülü HC-06'yı kullandık. Bu modülü kullanarak, bilgileri PIC MCU'muzdan bir mobil uygulamaya veya bir bilgisayara kablosuz olarak alıp gönderebiliriz. PIC ile HC-06 arasındaki iletişim, PIC Mikrodenetleyicide bulunan USART modülü kullanılarak kurulur. Ayrıca HC-05'i de kullanabilirsiniz. Yine aynı Eşzamansız 8 bit modunda çalışıyoruz, ancak bu sefer kodumuzu Bluetooth modülüyle çalışacak şekilde biraz değiştireceğiz. Bu nedenle önceden UART öğreticisini öğrenmek, bu proje için ek bir avantajdır.
Bu eğitimde, Akıllı telefonumuzdan açıp kapama komutu göndererek bir LED'i değiştireceğiz. Bluetooth üzerinden veri gönderip alabilen Bluetooth Terminal adlı bir Android uygulaması kullanacağız. Uygulamadan bir karakter '1' gönderirsek, ışık PIC panosunda AÇIK hale gelir ve telefona ışığın açıldığına dair bir onay alırız. Benzer şekilde kapatmak için telefondan '0' gönderebiliriz. Bu şekilde, PIC kartımızdaki LED ışığını UART öğreticisine benzer şekilde, ancak şimdi kablosuz olarak kontrol edebiliriz. Tam Program ve Ayrıntılı Video bu eğitimin sonunda verilmiştir.
Kurulum için temel blok şeması aşağıda gösterilmiştir.
Gereksinimler:
Donanım:
- PIC16F877A Performans Kurulu
- HC-05 veya HC-06 Bluetooth Modülü
- Bilgisayar (programlama için)
- Cep telefonu
- PICkit 3 Programcısı
Yazılım:
- MPLABX
- Bluetooth Terminali (Mobil Uygulama)
Bluetooth Modülü HC-06:
Bluetooth aşağıdaki iki modda çalışabilir:
- Komut Modu
- Çalışma modu
In Command Mode biz Bluetooth sinyalinin adı gibi Bluetooth özelliklerini yapılandırmak mümkün olacak, vb onun şifre, işletim baud hızı Çalışma Modu biz göndermek mümkün ve PIC Mikrodenetleyici arasındaki verileri alacaktır hangi biridir ve Bluetooth modülü. Bu nedenle bu eğitimde sadece Çalışma Modu ile oynayacağız. Komut modu varsayılan ayarlara bırakılacaktır. Cihaz adı HC-05 (HC-06 kullanıyorum) ve şifre 0000 veya 1234 olacak ve en önemlisi tüm Bluetooth modülleri için varsayılan baud hızı 9600 olacaktır.
Modül 5V besleme ile çalışır ve sinyal pinleri 3.3V ile çalışır, dolayısıyla modülün içinde 3.3V regülatör mevcuttur. Dolayısıyla endişelenmemize gerek yok. Çalışma modunda altı pinin sadece dördü kullanılacaktır. Pim bağlantı tablosu aşağıda gösterilmiştir
S.No |
HC-05 / HC-06 panosundaki Pin |
MCU'daki pin adı |
PIC'deki pin numarası |
1 |
Vcc |
Vdd |
31 st pimi |
2 |
Vcc |
Gnd |
32 nd pin |
3 |
Tx |
RC6 / Tx / CK |
25 inci iğne |
4 |
Rx |
RC7 / Rx / DT |
26 inci pim |
5 |
Durum |
NC |
NC |
6 |
EN (Etkinleştir) |
NC |
NC |
Diğer mikro denetleyicilerle Bluetooth modülü HC-05 hakkında daha fazla bilgi edinmek için diğer projelerimize bakın:
- Arduino ile Bluetooth Kontrollü Oyuncak Araba
- 8051 kullanan Bluetooth Kontrollü Ev Otomasyon Sistemi
- Raspberry Pi kullanarak Ses Kontrollü Işıklar
- Arduino ve İşleme Kullanan Akıllı Telefon Kontrollü FM Radyo
- G-Sensor ve Arduino kullanan Cep Telefonu Kontrollü Robot Araba
Bluetooth İletişimi için PIC Mikrodenetleyiciyi Programlama:
Tüm modüller gibi (ADC, Timer, PWM) Bluetooth modülümüzü de başlatmalıyız. Başlatma, UART başlatmaya benzer olacaktır, ancak Bluetooth'un PIC16F877A MCU'muz ile kusursuz çalışması için bazı değişiklikler yapmamız gerekiyor. Yapılandırma bitlerini tanımlayalım ve Bluetooth başlatma işlevi ile başlayalım.
Bluetooth'u Başlatma:
Piyasadaki neredeyse tüm Bluetooth modülleri 9600 baud hızında çalışır, baud hızınızı Bluetooth modülleri çalışan baud hızıyla aynı şekilde ayarlamak çok önemlidir, burada 20Mhz saat frekansında çalıştığımız için SPBRG = 129'u ayarladık. 9600 baud hızı olarak. Dolayısıyla, yukarıdaki başlatma yalnızca 9600 baud hızında çalışan Bluetooth modülleri için çalışacaktır. Ayrıca yüksek hızlı baud hızı biti BRGH'nin etkinleştirilmiş olması da zorunludur. Bu, doğru bir baud hızının ayarlanmasına yardımcı olacaktır.
// ****** USART ******** kullanarak Bluetooth'u başlatın // void Initialize_Bluetooth () {// RX ve TX'in pinlerini ayarlayın // TRISC6 = 1; TRISC7 = 1; // Veri sayfasındaki (pg114) arama tablosunu kullanarak baud hızını ayarlayın // BRGH = 1; // Bluetooth ile her zaman yüksek hızlı baud hızı kullanın, aksi takdirde çalışmaz SPBRG = 129; // Asyc'i açın. Seri Bağlantı Noktası // SYNC = 0; SPEN = 1; // 8 bit alım ve iletimi ayarla RX9 = 0; TX9 = 0; // İletimi ve almayı etkinleştir // TXEN = 1; CREN = 1; // Global ve ph'yi etkinleştirin. keser // GIE = 1; PEIE = 1; // Tx için kesintileri etkinleştirin. ve Rx.// RCIE = 1; TXIE = 1; } // ___________ BT başlatıldı _____________ //
Farklı bir baud hızında çalışan bir BT modülünüz varsa, SPBRG için değerinizi öğrenmek için aşağıdaki arama tablosuna bakabilirsiniz.
Bluetooth'a veri yükleme:
İşlev başlatıldığında, programımızda Bluetooth'tan veri gönderip almak için üç işlevimiz vardır. UART'ın aksine, verileri iletmeden veya almadan önce burada dikkate almamız gereken birkaç şey var. Bluetooth modülünün içinde bir Gönderme ve Alma tamponu vardır, ona gönderilen veriler Tx arabelleğinde saklanacaktır. Modüle bir satırbaşı gönderilmedikçe bu veriler yayınlanmayacaktır (canlı olarak gönderilmeyecektir). Bu nedenle, verileri iletmek için BT'nin Rx tamponunu yüklememiz ve ardından bunu satırbaşı kullanarak yayınlamamız gerekir.
Yukarıdaki çalışma, aşağıdaki işlevler kullanılarak kolayca gerçekleştirilebilir. Aşağıdaki fonksiyon , Rx tamponuna yalnızca bir karakter yüklememiz gerektiğinde kullanılabilir. Verileri TXREG yazmacına yükleriz ve while döngülerini kullanarak TXIF ve TRMT bayrağını kontrol ederek işlenmesini bekleriz.
// Bluetooth Rx'i yükleme işlevi. tek karakterli tampon.// void BT_load_char (karakter bayt) {TXREG = bayt; while (! TXIF); while (! TRMT); } // Fonksiyonun sonu //
Bluetooth modülünün Rx arabelleğine bir dizi yüklemek için aşağıdaki işlev kullanılır. Dize karakterlere bölünür ve her karakter BT_load_char () işlevine gönderilir.
// Bluetooth Rx Yükleme Fonksiyonu. string // void BT_load_string (char * string) {while (* string) BT_load_char (* string ++) ile tampon; } // İşlev sonu /
Bluetooth üzerinden veri yayınlama:
Şimdiye kadar bilgiyi HC-05 modülünün Rx tamponuna aktardık. Şimdi, bu işlevi kullanarak verileri havadan yayınlaması talimatını vermeliyiz.
// RX'ten veri yayınlama işlevi. arabellek // void broadcast_BT () {TXREG = 13; __delay_ms (500); } // Fonksiyonun sonu //
Bu işlevde TXREG kaydına bir 13 değeri gönderiyoruz. Bu 13 değeri, taşıma için ondalık eşdeğerden başka bir şey değildir (ASCII çizelgesine bakın). Ardından yayıncının başlaması için küçük bir gecikme oluşturulur.
Bluetooth'tan veri okuma:
UART'a benzer şekilde, aşağıdaki işlev Bluetooth'dan veri okumak için kullanılır.
// BT'nin Rx.buffer'ından bir karakter alma işlevi // char BT_get_char (void) {if (OERR) // aşırı çalıştırma hatasını kontrol edin {CREN = 0; CREN = 1; // CREN'i sıfırla} if (RCIF == 1) // eğer kullanıcı bir karakter gönderdiyse, karakteri döndür (ASCII değeri) {while (! RCIF); RCREG iadesi; } else // eğer kullanıcı mesaj göndermediyse 0 return 0; } // İşlev sonu /
Kullanıcı bir veri göndermişse, bu işlev bir değişkene kaydedilebilen ve işlenebilen belirli verileri döndürür. Kullanıcı hiçbir şey göndermediyse, işlev sıfır döndürür.
Ana işlev:
Yukarıda açıklanan tüm fonksiyonları içinde veya ana fonksiyonda kullandık. Bir tanıtım mesajı gönderiyoruz ve ardından kullanıcının Perf kartımızdaki RB3 pinine bağlı KIRMIZI led ışığı değiştirdiğimiz bazı değerler göndermesini bekliyoruz.
void main (void) {// Kapsam değişkeni bildirimleri // int get_value; // Değişken bildiriminin sonu // // G / Ç Bildirimleri // TRISB3 = 0; // G / Ç bildiriminin sonu // Initialize_Bluetooth (); // bluetooth'umuzu eyleme hazır hale getirelim // açılışta bir kez tanıtıcı mesajlar gösterin // BT_load_string ("Bluetooth Başlatıldı ve Hazır"); yayın_BT (); BT_load_string ("LED'i AÇMAK için 1'e basın"); yayın_BT (); BT_load_string ("LED'i KAPATMAK için 0'a basın"); yayın_BT (); // Mesajın sonu // while (1) // Sonsuz lop {get_value = BT_get_char (); // karakteri okuyun. BT ile alındı // Bir '0' alırsak // if (get_value == '0') {RB3 = 0; BT_load_string ("LED KAPALI"); yayın_BT (); } // Bir '1' alırsak // if (get_value == '1') {RB3 = 1; BT_load_string ("LED AÇIK"); yayın_BT ();}}}
Aşağıdaki Kod Bölümünde Tam Programı kontrol edin.
Devre Şeması ve Donanım Kurulumu:
Bu proje için Devre bağlantıları çok basit, biz sadece Bluetooth modülü yukarı güce sahip ve 26 Tx bağlamak inci 25'e PIC ve Rx pim inci Aşağıdaki devre şemasında gösterildiği gibi PIC pimi:
Şimdi donanıma geçelim. Bağlantı kurulduğunda böyle bir şeye benzemelidir.
Bluetooth Mobil Uygulamasını kullanarak LED'i kontrol etme:
Şimdi Android uygulamamızı hazırlayalım. Bluetooth Terminal adlı uygulamayı App store'dan indirin veya bu bağlantıyı kullanın. Uygulama indirilip yüklendikten sonra, en başından beri kullandığımız PIC performans panonuzu açın. Bluetooth Modülünüzdeki küçük LED ışık, gücün açık olduğunu ve bağlantı kurmak için aktif olarak bir telefon aradığını belirtmek için yanıp sönmelidir.
Şimdi telefonunuzun Bluetooth Ayarlarına girin ve yeni Bluetooth cihazı arayın, modülünüze bağlı olarak HC-05 veya HC-06 adını görebilmelisiniz. HC-06 kullanıyorum, bu nedenle telefonum aşağıdaki ekranı gösteriyor. Daha sonra onunla eşleştirmeyi deneyin ve bir şifre soracaktır. Şifreyi 1234 olarak girin (bazıları için 0000 olabilir) ve aşağıda gösterildiği gibi Tamam'ı tıklayın.
Eşleştirme başarılı olduktan sonra, yeni kurduğumuz Bluetooth Terminal uygulamasını açın. Ayarlar seçeneğine girin ve aşağıda gösterildiği gibi "Bir cihaz bağla - Güvenli" seçeneğini seçin. Bu, tüm eşleştirilmiş cihazlarımızın aşağıda gösterildiği gibi listeleneceği bir açılır kutu açacaktır. HC-05 veya HC-06 modülünü seçin.
Bağlantı kurulduktan sonra, şu ana kadar yanıp sönen Bluetooth modülündeki ışık, cep telefonunuza başarıyla bağlandığını göstermek için sabit olmalıdır. Ve aşağıda gösterildiği gibi Programımızdan giriş mesajını almalıyız.
Şimdi LED ışığını açmak için '1'e ve ışığı kapatmak için' 0'a basın. Tam çalışma gösterilecektir video. Mobil ekranınız aşağıda gösterildiği gibi görünecektir.
İşte bu kadar arkadaşlar, Bluetooth modülünü PIC mikro denetleyicimize nasıl bağlayacağımızı öğrendik, şimdi bunun yardımıyla kablosuz projeleri deneyebiliriz. Bluetooth kullanan birçok proje var, bunları deneyebilir veya kendi Fikrinizi oluşturabilir ve yorum bölümünde paylaşabilirsiniz. Ayrıca Bluetooth terminal uygulaması ve HC-05 benzeri Akıllı Telefon Kontrollü Ev Otomasyonu ve Arduino ile Akıllı Telefon Kontrollü Dijital Kod Kilidi ile önceki projemize bakın.
Umarım bu eğitim size yardımcı olmuştur! Bir yerde takılırsanız, lütfen yorum bölümünü kullanın.