Bluetooth modulune veri gönderemiyorum[Çözüldü]

Başlatan baran123, 11 Ağustos 2014, 20:44:43

baran123

Merhaba, hc06 modulunu aldım bugun 18f2550 kullanıyorum
modulun + ve - sı devreye baglı +5 volta
rt tx pıce baglı ters sekılde
lm1117 ye pıcın rx ucunu pull up yaptım 10 k ile

enerjı gelınce modulun ledı sureklı yanıyor.Telefondan baglanınca led duruyor yanık vazıyette,blueterm programından 1 yazıp gonderdıgımız zaman hıc bır sey olmuyor kodlar assgıda yardımcı olursanız sevınırım (PIC sağlam)

#include <18F2550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48M)
#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1)

char gelen;

#int_rda
void modul_kesmesi()
{
   disable_interrupts(int_rda);
   gelen=getch();
   
   if(gelen=='1')
   {
      output_high(pin_b6);
   }
   
   if(gelen=='0')
   {
      output_low(pin_b6);
   }
}

void main(void)
{
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   set_tris_b(0x00);
   output_b(0x00);
   
   output_high(pin_b7);
   
   enable_interrupts(GLOBAL);
   
   while(TRUE)
   {
      enable_interrupts(int_rda);
   }
}

MrDarK

Seviye uygunlaştırıcı yoksa haberleşemezsin. Chip ile pic 3.3V seviyesinde olmalı, yada direnç ile gerilim bölücü yap.

Ayrıca Pic'in schimit trigger pinine bağlıdır usart. Haliyle 3.3V logic 1 seviyesi olarak görülmüyor olabilir. Ona göre chip'in beslemesine seri diyot atarak çözümleyebilirsin. En kolayı aynı voltaj ile beslemek.
Picproje Eğitim Gönüllüleri ~ MrDarK

baran123

Suan butun devreyı 3.3 ile besliyorum baglantı var ama haberlesmede sorun var gıbı gerılım bolucude yok rx ve tx ler ters baglı baska neden olabılır ?

MrDarK

Nacizhane Tavsiyemdir ;

Bluetooth modülü önce USB to Usart modüller ile bilgisayara bağlayıp o şekilde deneyin. Modüle ait AT komutları mevcut onları kullanın. Burada düzgün haberleşme sağladıktan sonra mcu üzerinde çalışmalara başlayın.

Tahminlerle yorum yapmaya devam edersem ; modülün BAUD ayarlarında farklılık olabilir. Yani modül 9600 da siz 300 baud'da olabilirsiniz veya türetin işte.

Reset pin voltajını kontrol edin 1.8 V görüyor musunuz ?

Yazılımı da şu şekilde değiştirin.

#include <18F2550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48M)
#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1)

char gelen;

#int_rda
void modul_kesmesi()
{
   disable_interrupts(int_rda);
   gelen=getch();
   
   if(gelen=='1')
   {
      output_high(pin_b6);
   }
   
   if(gelen=='0')
   {
      output_low(pin_b6);
   }
}

void main(void)
{
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   set_tris_b(0x00);
   set_tris_c(0x80);    // RX pinini giriş seçmelisin...
   output_b(0x00);
   
   output_high(pin_b7);
    enable_interrupts(int_rda);
   enable_interrupts(GLOBAL);
   
   while(TRUE)
   {
     
   }
}
Picproje Eğitim Gönüllüleri ~ MrDarK

baran123

Kodları dediğiniz gibi değiştirdim.Şu an elimde ttl dönüştürücü yok maaelesef.Bir de reset pininden kastınız nedir modulun reset pini mi ? bosta sadece state ve key pınlerı var.Baud ayarlarını değiştirerek de deneyeceğim

mesaj birleştirme:: 11 Ağustos 2014, 22:12:19

Ekleme : AT komutlarını başka nasıl gönderebilirim ?

MrDarK

Alıntı yapılan: baranekrem9 - 11 Ağustos 2014, 22:11:50
Kodları dediğiniz gibi değiştirdim.Şu an elimde ttl dönüştürücü yok maaelesef.Bir de reset pininden kastınız nedir modulun reset pini mi ? bosta sadece state ve key pınlerı var.Baud ayarlarını değiştirerek de deneyeceğim

mesaj birleştirme:: 11 Ağustos, 2014, 22:12:19

Ekleme : AT komutlarını başka nasıl gönderebilirim ?

Eğer şu linkteki ürünse;
http://img02.taobaocdn.com/imgextra/i2/12774208/T2gb4kXfJOXXXXXXXX_!!12774208.jpg

Reset pini önemli değil sorun yoktur. TTL dönüştürücü alıp dene tabi, başka türlü MCU'dan da yollayabilirsin fakat debug modunda gelen giden verileri izlemen gerekir.Bir an önce TTL dönüştürücü al derim.
Picproje Eğitim Gönüllüleri ~ MrDarK

baran123

#6
Evet linkde ki ürünü kullanıyorum suan 5 volt da calısıyor gerilim bölücü yaptım.

bu bağlantıyı yaptım :
http://www.plastibots.com/wordpress/wp-content/uploads/2013/03/BluetoothHookupWeb.png

ama aynı, TTL alana kadar bir şeyler daha deneyeceğim.Android arayüzden olabilir mi diyeceğim ama bağlantı yapıyor veri göndermede sorun, neyse bütün baudları deniycem

mesaj birleştirme:: 11 Ağustos 2014, 23:11:36

Ekleme : Peki ttl dönüştürücüyü aldığım zaman nasıl bir bağlantı yapmam lazım ?

MrDarK

TTL ile Modülün TX çıkışını TTL'in RX pinine ,
Modülün RX çıkışını ise TTL'in TX pinine yani dediğin gibi çaprazlama takacaksın.

Sonra herhangi bir bluetooth bağlantısı kurmadan önce Bilgisayarından

AT yaz OK cevabı almaya çalış. Öncelikli hedefin bu olsun.

Ondan sonra Modül ismini ve şifresini değiştir. Bunları yaptıktan sonra cep telefonundan bağlan ve data gönder bilgisayarda bu dataları gör. Ondan sonra MCU ile çalışmaya başlarsın.
Picproje Eğitim Gönüllüleri ~ MrDarK

baran123

Hangi bilgisayar arayüzünü kullanmalıyım ? birde modülün VCC ve GND side tll e bağlı olacak mı ?

MrDarK

Evet aynı şekilde bağlayabilirsin. GND dönüştürücünün GND'si ile aynı olsun 5V'u da usb'den alırsın akımı yeterli gelecektir diye düşünüyorum.

Program olarakta ; Hercules veya HyperTerminal gibi programları kullanabilirsin. Veya varsa bilgin Visual Studio dillerinden biriyle yazabilirsin ama pek gerek yok bu programlar işini görür.
Picproje Eğitim Gönüllüleri ~ MrDarK

baran123

@MrDark 16f628a ile denedim fıstıklar gibi çalışıyor demek ki 2550 de açık olan bir özellik veya başka bir şey var anlamadım ama onuda çözeceğim inşallah, çok teşekkür ederim sağlıcakla kalın :)

Not : çalışan kod aşşağıda ledleri bağlayın RX,TX ters bağlayın tamamdır gerilim bölücüye gerek yok ama ben devreyi 3.3v da çalıştırdım LM1117 regülatörü ile

#include <16F628A.h>
#FUSES XT,NOWDT,NOPUT,NOPROTECT,NOBROWNOUT,MCLR,NOLVP,NOCPD
#use delay(clock=4M)
#use rs232 (baud=9600, xmit=pin_B2, rcv=pin_B1, parity=N, stop=1)

char gelen;

#int_rda
void modul_kesmesi()
{
   disable_interrupts(int_rda);
   gelen=getch();
   
   if(gelen=='1')
   {
      output_high(pin_a1);
   }
   
   if(gelen=='0')
   {
      output_low(pin_a1);
   }
}

void main(void)
{
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   
   set_tris_a(0x00);
   output_a(0x00);
   set_tris_b(0x02);
   
   output_high(pin_a0);
   
   enable_interrupts(GLOBAL);
   
   while(TRUE)
   {
     enable_interrupts(int_rda);
   }
}

MrDarK

O zaman haydi geçmiş olsun :)

Sizede afiyet olsun :) Yeni bir tarifte görüşmek üzere (:
Picproje Eğitim Gönüllüleri ~ MrDarK