Merhaba arkadaşlar bugün sizlerle Bluetooth ile C# ve PIC18F4550 kullanılarak LM35 entegresinden ortamın sıcaklık takibini gerçekleştireceğiz .Neden bu proje ? bu soruya cevap verecek olursak arkadaşlar ortamın sıcaklığının takip edilmesine bağlı olarak röle tetiklenmesinde, Motor uygulamalarında,fan kontrolünde kablosuz iletişim kullanılan cihazların soğutucu veya ısıtıcıların kontrolünde, termometrelerin kullanıldığı alanlarda ,hobi projelerinde ve bunlara bağlı olan tüm sistemlerde kullanılması beni bu projenin yapımına götürmüştür.Bu cevaptan sonra isterseniz projeye adım adım başlayalım arkadaşlar ;.
GEREKSİNİM PROGRAMLARI
- C# programını kendi bilgisayarınızın özelliğine ve bu programa ait istediğiniz sürümü Microsoft Visual C# ifadesine tıklayarak,
- PIC18f4550 mikrodenetleyiciye ait yapılan yazılımın derlenmesi için CCS C Complier ifadesine tıklayarak,
- Elektronik devre tasarımının yapılabilmesi için Proteus ISIS ifadesine tıklayarak,
- Arayüz programı ile proteus ISIS ortamında çizilen elektronik devrenin similasyonunu gerçekleştrimek için Virtual Serial Port ifadesine tıklayarak üye olunması şartı ile deneme sürümlerini indirip programları inceleyebilir kullanabilirsiniz.
PROJENİN AMACI
Evet arkadaşlar bu projede neler öğreneceğiz sorusuna aşağıdaki maddelerle açıklayacak olursak;
- Bluetooth iletişim protokolü, LM35 , 2×16 LCD ekran kavramlarını öğrenmek.
- PIC18F4550 mikrodenetleyicisine ait gömülü yazılım kodları , açık kaynak kodu olarak kullanılarak yazılımda kullanılan komutlarının kullanım amaçlarını öğrenmek.
- PIC18F4550 mikrodenetleyicisinin PC ile nasıl haberleşeceğini göstermek ve öğrenmek.
- C# arayüz programı ile gerçek elektronik devreye gereksinim duymadan hem elektronik devrenin hemde gömülü yazılımın proteus isis ortamında nasıl test edilir sorusuna cevap vermek.
TEORİK BİLGİLER
Bluetooth :
Bluetooth kısa mesafeli veri iletiminde kullanılan özelleştirilmiş radyo frekansıdır. İletişim frekansı ise 2.45 GHz- 2.48 GHz arasındadır. Bunun yanında Bluetooth bağlantı sırasında saniyede 1600 kez frekans değişimi olur bu değişimden dolayı bluetooth , WLAN gibi aynı frekansı kullanan diğer protokollerden az etkilenir. Bunun yanında veri iletiminde kayda değer bir problem gerçekleşmez. Bluetooth iletişim protokolünde bir diğer gürültü önleme şekli ise bu iletişim protokolünde verilerin paketler halinde iletilmesidir.
HC06 Bluetooth Modül;
HC06 kablosuz bağlantı için tasarlanmıştır ve bluetooth 2.0’ı desteklemektedir. İletişim mesafesi 10 metre civarındadır. Çalışma gerilimi 1.8V-3.6 V aralığındadır. Bu modülün bir diğer iletişim biçimi ise UART iletişimdir.
LM35 Sıcaklık Sensörü :
LM35 bir sıcaklık sensörüdür. Sıcaklık değerini ise 0C olarak ölçer ve mikroişlemci / mikrodenetleyici’ye sinyali analog sinyal olarak verir. Ölçüm aralığı -55 ile 150 0C ,besleme gerilimi ise 4V-30V arasındadır.
MALZEME LİSTESİ
Proje kapsamında teorik bilgiler verildikten sonra projenin devamı için gerekli olan malzemeler aşağıdaki tabloda yer verilmiştir.
MALZEME ADI | MALZEME ADET | MALZEME ADI | MALZEME ADET |
Breadboard | 2 | Data Kabloları | N TANE |
PIC18F4550 | 1 | 2×16 LCD Ekran | 1 |
10 K Potansiyometre | N TANE | 100 Ohm | 1 |
LM35 | 1 | *** | *** |
8MHZ CRYSTAL | 1 | *** | *** |
15 pF | 1 | *** | *** |
100 nf | 1 | *** | *** |
hc06 | 1 | *** | *** |
ŞEMATİK DEVRE
Bu projenin şematik bölümü Proteus ISIS programında çizilmiştir. Şematik kısmına bakılacak olursa seri iletişim için HC-06 modülünün Rx pini PIC18f4550 ‘nin Tx pinine gene HC-06 modülünün Tx pini PIC18f4550 ‘nin Rx pinine bağlanmıştır.
KAYNAK KODLARI
Bu projenin gömülü yazılımı CCS C de derlenmiştir. Komutlara bakılacak olursa her satır yanında. ‘ // ‘ ifadelerinin yanında açıklamaları bulunmaktadır . Arkadaşlar kaynak kodlarının yanındaki açıklamaları dikkate alarak proje çalışmanıza devam etmeniz önerilir.
/* Program Adı : Bluetooth -LM35 Sıcaklık Takip Programı Donanım : PIC18F4550 Derleyici : CCS C 5.0.1 MCU : 8 MHz Yazan : Adil Teoman Kurt Adres : https://electrolog.blog */ #include //Pic18 için kütüphane kod içerisine ekleniyor// #device ADC=10 //10 bitlik veri alınıyor ve (5V/2^10) değeri belirleniyor) #include //Matematik Kütüphanesi ekleniyor// #fuses HS,CPUDIV1,NOPROTECT,NOLVP,NOBROWNOUT,NOPUT,NOWRT,NODEBUG,NOCPD // PIC18f4550 konfigürasyon ayarları yapılıyor #use delay(clock=8000000) // Harici osilatörün frekansı belirleniyor #use rs232 (baud=9600, xmit=pin_c6, rcv=pin_c7, parity=N, stop=1) //Bluetooth için seri iletişim hattı ayarlanıyor// #use fast_io(a) //Mikrodenetleyicinin A portu Kullanıma alınıyor// #use fast_io(d) //Mikrodenetleyicinin D portu Kullanıma alınıyor// // ***** LCD EKRAN PIN AYARLARI *****// #define LCD_ENABLE_PIN PIN_d6 #define LCD_RS_PIN PIN_d7 #define LCD_RW_PIN FALSE #define LCD_DATA4 PIN_d5 #define LCD_DATA5 PIN_d4 #define LCD_DATA6 PIN_d3 #define LCD_DATA7 PIN_d2 #include unsigned long int veri; // Sıcaklım değeri işaretsiz olarak ayarlandı// float gerilim,sicaklik; // Sıcaklık ve gerilim değeri ise float olarak alındı// int i=0; void main () { setup_timer_1(T1_DISABLED); // timer1 pasif ediliyor// setup_timer_2(T2_DISABLED,0,1); //timer2 pasif ediliyor// setup_CCP1(CCP_OFF); //Compare capture power 1 pasif edilior// setup_CCP2(CCP_OFF); //Compare capture power 2 pasif edilior// setup_psp(PSP_DISABLED); //PSP pasif ediliyor// set_tris_a(0x01);// A portunun 0.biti giriş diğerleri çıkış olarak ayarlanıyor// set_tris_d(0x00);// B portunun çıkış olarak ayarlanıyor// lcd_init(); // LCD ekranın pikselleri aktif ediliyor setup_adc(adc_clock_div_32); // ADC clock sinyali 32 ye bölünüyor// setup_adc_ports(AN0);// ADC 0. bite ait kapı aktif hale getiriliyor// set_adc_channel(0); // 0. bit kanal olarak set ediliyor// printf(lcd_putc,"\felectrolog.blog"); // LCD ekransilinip ilk satıra String yazdırlıyor// delay_ms(500); //Mikrodenetleyici 500 ms bekleme moduna alınıyor// printf(lcd_putc,"\nBluetooth Uyg."); // LCD ekransilinip ilk satıra String yazdırlıyor// delay_ms(2000); //Mikrodenetleyici 2000 ms bekleme moduna alınıyor// printf(lcd_putc,"\fSICAKLIK"); // Ekrana SICAKLIK yazısı yazdırılıyor delay_ms(500); //Mikrodenetleyici 500 ms bekleme moduna alınıyor// printf(lcd_putc,"\nPROGRAMI "); // LCD ekran silinip ikinci satıra String yazdırlıyor// delay_ms(2000); //Mikrodenetleyici 2000 ms bekleme moduna alınıyor// while(true) { delay_us(20); //Mikrodenetleyici 20 ms bekleme moduna alınıyor// veri=read_adc(); // Set edilen kanaldan LM35 den analog giriş alınıp digital veri kutusuna aktarılıyor// gerilim=(0.0048828125*veri)*1000; // Veri değeri gerilime hesaplanıyor// sicaklik=(gerilim/10)+2; // Gerilim değeri sıcaklığa döndürülüyor// printf("%4.1f\n",sicaklik); // Sıcaklık ifadesi Bluetooth üzerinden bilgisayara aktarılıyor// printf(lcd_putc,"\fTemp :%4.1f'C",sicaklik); //Sıcaklık değeri LCD ekrana yazdırılıyor// delay_ms(5); //Mikrodenetleyici 20 ms bekleme moduna alınıyor if(sicaklik<30) // Sıcaklık değeri 30'un altında ise { lcd_gotoxy(0,2); printf(lcd_putc,"Oda Sicakligi"); } else { lcd_gotoxy(0,2); printf(lcd_putc,"\fYuksek Sicaklik"); } } }
C# ARAYÜZ PANELİ
Bu projenin arayüz programı Microsoft Visiual Studio programında oluşturulmuştur . Programın ‘Connection settings’ bölümü ile bağlantı ayarları yapılır. ‘Connect ‘ kısmı ile PC ve PIC18f4550 ile bağlantı kurulur. ‘LOW TEMPRATURE’ yazan bölüm ise oda sıcaklığının değerine göre mesaj kısmını içerir. Grafik bölümü ise sıcaklığın dinamik olarak grafiğe aktarıldığı kısımdır. Buna ek olarak grafik üzerine gelinerek mouse sağ tuşuna basılarak grafik yakınlaştırılır veya uzaklaştırılır ve aynı zamanda jpeg olarak grafik kaydedilebilir.
PROJENİN VİDEOSU
Bu projenin hem kart modülleri hemde sıcaklık takip programının çalışmasının videosuna C# + Bluetooth + PIC18F4550 sıcaklık takip videousu ifadesine tıklayarak izleyebilirsiniz.
EK DOSYALAR
Bu bölüm ise C# arayüz panelinin .exe dosyasını ,PIC18f550 mikrodenetleyicsinin gömülü yazılımının proteus ISIS programında kullanılmasını sağlayan .hex dosyasını ve proteus devresine ait yüksek çözünürlüklü resimini içerir.
BİLGİLENDİRME
Proje hakkında merak ettiklerinizi iletişim adresinden sorabilir veya yorum kısmına yazabilirsiniz arkadaşlar projede iyi çalışmalar.
Hoşçakalın…..