Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Cortex ARM => Konuyu başlatan: micelow - 30 Aralık 2013, 10:13:49

Başlık: Android İle Bluetooth Üzerinden STM32F4 Haberleşmesi
Gönderen: micelow - 30 Aralık 2013, 10:13:49
Android uygulamamdan hc 05 bluetooth modülünü kullanarak stm32f4 karta veri göndermek istiyorum gelen veriye göre bitleri set edip reset edicem. Android uygulamamda hc 05 modül ile eşleşme sağlıyorum bunu PIN31 e bağladığım ledin saniyede iki kez yanıp sönmesiyle ve PIN32 e bağladığım ledin devamlı yanmasıyla anlıyorum fakat eşleşmeden önce veya sonra farketmeksizin Tx ve Rx e led bağladığımda ikiside sürekli yanıyor ve veri göndermek için uygulamada butona basınca ise stm32f4 de ilgili pinler set edilmiyor ancak Tx ve Rx ledleri bu sırada hala yanmaya devam ediyor. Bu sorunu nasıl çözebilirim?
Başlık: Ynt: Android İle Bluetooth Üzerinden STM32F4 Haberleşmesi
Gönderen: LukeSkywalker - 30 Aralık 2013, 10:21:21
Programinizi görmeden yorum yapamayiz.
Başlık: Ynt: Android İle Bluetooth Üzerinden STM32F4 Haberleşmesi
Gönderen: micelow - 30 Aralık 2013, 10:42:06
Hocam Androidte bu bağlanma metodum
public void onConnect() {
if (connected) {
return;
}
try {
BluetoothDevice BD = BA.getRemoteDevice("20:13:06:20:18:42");
Method m = BD.getClass().getMethod("createRfcommSocket",
new Class[] { int.class });
sock = (BluetoothSocket) m.invoke(BD, Integer.valueOf(1));
sock.connect();

} catch (Exception e) {
Toast.makeText(getApplicationContext(), e.getMessage(),
Toast.LENGTH_SHORT).show();
}
}


Bu ise veri göndermek için write metodu

public void write(char data){
try{
mmOutStream = sock.getOutputStream();
if(connected)
mmOutStream.write(data);
} catch (Exception e)
{ Toast.makeText(getApplicationContext(), e.getMessage(),
Toast.LENGTH_SHORT).show();}
}


butonların onClick metotlarında
public void i_method(View v) {
write('F');
}

şeklinde write fonsiyonuna değer gönderiyorum.
Başlık: Ynt: Android İle Bluetooth Üzerinden STM32F4 Haberleşmesi
Gönderen: LukeSkywalker - 30 Aralık 2013, 11:10:28
mikrodenetleyiciye yazdığınız kodu da görmek lazım.
Başlık: Ynt: Android İle Bluetooth Üzerinden STM32F4 Haberleşmesi
Gönderen: Erhan YILMAZ - 30 Aralık 2013, 11:23:07
Alıntı yapılan: micelow - 30 Aralık 2013, 10:42:06
Hocam Androidte bu bağlanma metodum
public void onConnect() {
if (connected) {
return;
}
try {
BluetoothDevice BD = BA.getRemoteDevice("20:13:06:20:18:42");
Method m = BD.getClass().getMethod("createRfcommSocket",
new Class[] { int.class });
sock = (BluetoothSocket) m.invoke(BD, Integer.valueOf(1));
sock.connect();

} catch (Exception e) {
Toast.makeText(getApplicationContext(), e.getMessage(),
Toast.LENGTH_SHORT).show();
}
}


Bu ise veri göndermek için write metodu

public void write(char data){
try{
mmOutStream = sock.getOutputStream();
if(connected)
mmOutStream.write(data);
} catch (Exception e)
{ Toast.makeText(getApplicationContext(), e.getMessage(),
Toast.LENGTH_SHORT).show();}
}


butonların onClick metotlarında
public void i_method(View v) {
write('F');
}

şeklinde write fonsiyonuna değer gönderiyorum.

Hocam geliştirme ortamı ne kullanıyorsunuz?
Başlık: Ynt: Android İle Bluetooth Üzerinden STM32F4 Haberleşmesi
Gönderen: micelow - 30 Aralık 2013, 12:02:16
Eclipse kullanıyorum hocam

mesaj birleştirme:: 30 Aralık 2013, 12:33:50


USART ve GPIOB için ayarlar
void init_System(uint32_t baudrate){
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStruct;
NVIC_InitTypeDef NVIC_InitStruct;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC|RCC_AHB1Periph_GPIOD|RCC_AHB1Periph_GPIOE|RCC_AHB1Periph_GPIOF,ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType= GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed= GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;
GPIO_Init(GPIOB,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_USART1);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource7, GPIO_AF_USART1);

GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_USART1);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource7, GPIO_AF_USART1);

USART_InitStruct.USART_BaudRate=baudrate;
USART_InitStruct.USART_WordLength=USART_WordLength_8b;
USART_InitStruct.USART_StopBits=USART_StopBits_1;
USART_InitStruct.USART_Parity=USART_Parity_No;
USART_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
USART_InitStruct.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;
USART_Init(USART1, &USART_InitStruct);

USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

NVIC_InitStruct.NVIC_IRQChannel=USART1_IRQn;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=0;
NVIC_InitStruct.NVIC_IRQChannelSubPriority=0;
NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(& NVIC_InitStruct);

USART_Cmd(USART1,ENABLE);
}


Gönderme fonksiyonu
void USART_send(USART_TypeDef* USARTx, volatile char *s)
{
while(*s){
while(!(USARTx->SR & 0x00000040));
USART_SendData(USARTx, *s);
*s++;
}
}

   Verinin alındığı ve işlemlerin yapıldığı blok
void USART_IRQHandler(void){
if(USART_GetITStatus(USART1, USART_IT_RXNE)){
char t=USART1->DR;
if((t!='\n')){
switch (t){
case 'F':ileri(); break;
case 'B':geri(); break;
case 'R':sag(); break;
case 'L':sol(); break;
default:USART_send(USART1, "Uygulamada Hata Olustu\r\n"); break;
}
}
}
}

ve main fonksiyonu
int main()
{
init_System(9600);
}
Başlık: Ynt: Android İle Bluetooth Üzerinden STM32F4 Haberleşmesi
Gönderen: picusta - 30 Aralık 2013, 12:46:58
Tavsiyem önce BT bilgisayarla ve hyperterminal tarzi bir programla modül ile iletime geç.
Mirkodenetleyici yerine de USB -TTL dönüstürücü koy. Ikinci hyperterminal pencerisini bunula aç. Bir tarafta yazdigini diger tarafta görmelisin. Görmezsen, veya arada bir degisik karakterler çikiyorsa BT Modülde sorun var.
HC 05 kullandigina göre mode pinine dikkat etmelisin. Icabinda AT komutlariyla client rolüne geçmelisin.

Başlık: Ynt: Android İle Bluetooth Üzerinden STM32F4 Haberleşmesi
Gönderen: engerex - 30 Aralık 2013, 13:08:48
Google playde hyper terminal tarzı uygulamalar var. Öncelikle bağlantıyı bunlarla sağlamanı öneririm.

mesaj birleştirme:: 30 Aralık 2013, 13:09:25

Başlık: Ynt: Android İle Bluetooth Üzerinden STM32F4 Haberleşmesi
Gönderen: Erhan YILMAZ - 30 Aralık 2013, 13:10:06
Alıntı yapılan: micelow - 30 Aralık 2013, 12:02:16
Eclipse kullanıyorum hocam

c# değil mi hocam bu? Derleyici ne kulalanıyorsunuz? Eclipse'te java ile bende bluetooth çalıştırdım ama sizin kodlar farklı geldi ondan sordum.
Başlık: Ynt: Android İle Bluetooth Üzerinden STM32F4 Haberleşmesi
Gönderen: micelow - 30 Aralık 2013, 14:04:10
Hocam 232Analyzer ve RealTerm programları ile bilgisayara bağladım 232Analyzer dan veri gönderip RealTerm den okuma yapıyorum fakat gönderdiğim veriyi alıamıyorum değişik karakterler çıkıyor baudrateler aynı.

Erhan hocam c# ile java birbirlerine çok zıt değiller nesne yönelimli olduğundan benzerlikleri var android için paylaştıklarım eclipsedeki java kodları:)
Başlık: Ynt: Android İle Bluetooth Üzerinden STM32F4 Haberleşmesi
Gönderen: Erhan YILMAZ - 30 Aralık 2013, 14:16:10
Alıntı yapılan: micelow - 30 Aralık 2013, 14:04:10
Hocam 232Analyzer ve RealTerm programları ile bilgisayara bağladım 232Analyzer dan veri gönderip RealTerm den okuma yapıyorum fakat gönderdiğim veriyi alıamıyorum değişik karakterler çıkıyor baudrateler aynı.

Erhan hocam c# ile java birbirlerine çok zıt değiller nesne yönelimli olduğundan benzerlikleri var android için paylaştıklarım eclipsedeki java kodları:)

Hocam sizin kod daha basit geldi yazılışı falan. Ben androidin kendir bluetooth örneği üzerinden derleme yapmıştım daha karışıktı ondan merak ettim. Yazarken bir örnekten yararlandınız mı? Yoksa kendinize ait sınıf mı yazdınız?
Başlık: Ynt: Android İle Bluetooth Üzerinden STM32F4 Haberleşmesi
Gönderen: micelow - 30 Aralık 2013, 14:30:35
Hocam BluetoothChat uygulamasını inceledim ancak çok karmaşık geldi projeyi yapıp bitirmekten ziyade yaparken öğrenmek istedim o yüzden biraz fazla araştırıp özellikle yabancı kaynaklardan yararlanarak yazdım tabi kodları direk kopyala yapıştır yaparak değilde nasıl yapıldığına bakıp kendi sınıfımda metoduma yazdım ki hem aşına olayım hemde anlayım diye. Uğraştırıcı oldu ama olsun.
Başlık: Ynt: Android İle Bluetooth Üzerinden STM32F4 Haberleşmesi
Gönderen: micelow - 30 Aralık 2013, 20:16:39
telefondan hc-05 e gönderdiğim verileri realterm den düzgün göremiyorum örneğin 'R' karakteri gönderdiğimde '+' karakteri alıyorum nedeni hakkında fikri olan var mı?
Başlık: Ynt: Android İle Bluetooth Üzerinden STM32F4 Haberleşmesi
Gönderen: Ersin - 30 Aralık 2013, 20:23:03
Haberleştiği hizdan dolayıdır , AT komutları ile BT yi 9600 e set et 115k da kalmış olabilir veya mcu tarafında farklı bir hız tanımladın.
Başlık: Ynt: Android İle Bluetooth Üzerinden STM32F4 Haberleşmesi
Gönderen: micelow - 30 Aralık 2013, 20:29:58
hocam hc-05 te 34. pini 3 volt a çektim 31. pin e bağlı led saniyede bir kez yanıp söndü AT moda geçtiğini düşünerek AT+UART=9600,1,0,\r\n gönderdim OK cevabı gelmedi AT moda geçtiği doğru mu?
Başlık: Ynt: Android İle Bluetooth Üzerinden STM32F4 Haberleşmesi
Gönderen: micelow - 30 Aralık 2013, 22:37:14
üstadlar sorun hala giderilebilmiş değil bu sorunda daha önce karşılaşan yada bir bilen yok mu
Başlık: Ynt: Android İle Bluetooth Üzerinden STM32F4 Haberleşmesi
Gönderen: engerex - 30 Aralık 2013, 23:27:01
 Benzer durumla bir kaç defa karşılaştım. Nedenlerinden biri baudrate idi. Eğer haberleşme hızlarından ise 9600, 19200, 38400 ... hepsini sıra sıra dene. Biri denk gelir.
Diğeri ise yazılımdan kaynaklıydı. Sende de bu olabilir.
Başlık: Ynt: Android İle Bluetooth Üzerinden STM32F4 Haberleşmesi
Gönderen: micelow - 30 Aralık 2013, 23:47:51
dediğiniz gibi hepsini denedim fakat sonuç yine aynı
Başlık: Ynt: Android İle Bluetooth Üzerinden STM32F4 Haberleşmesi
Gönderen: Ersin - 31 Aralık 2013, 00:11:21
Datasheet te AT komutları ile ayrıntılı bilgiler var , komutu gönderince  OK cevabı gelmeli birşey gelmediyse kabul etmemiş demektir. Şema bağlantılarını felan kontrol et datasheet e dikkatli oku.
Birincisi AT komutunu gönderince OK gelmeli ordan başla.
Başlık: Ynt: Android İle Bluetooth Üzerinden STM32F4 Haberleşmesi
Gönderen: olcay54 - 31 Aralık 2013, 08:55:26
ayrıca AT komutlarını sonunda CR ve ardından LF olmasına (/r/n) dikkat et.
Başlık: Ynt: Android İle Bluetooth Üzerinden STM32F4 Haberleşmesi
Gönderen: micelow - 31 Aralık 2013, 10:31:28
Hocam datasheet te belirttiği gibi yapıyorum fakat bir türlü başaramadım 34. pini yüksek seviyeye çekip modüle güç veriyorum led 2 sn aralıklarla yanıyor at komutlarına cevap vermiyor forumda bir konuda belirtildiği gibi 10K dirençle toprağa çekip araya buton koyarak pulldown yapıyorum butona basmadan önce vaya sonra ledin durumu değişmiyor sürekli yanıp sönüyor ve yine cevap gelmiyor. Siz nasıl yapıyorsunuz?