Bluetooth(2) mbedとRN42XVPで、
              モジュールとSPP通信


 mbedのUartに接続したRn42xvpとパソコンをBluetoothで通信しました。

 

●構成

 mbedのUartにRN42XVPを接続し、パソコンWindowsXpにモジュールを接続した構成で、SPP通信をしました。
 mbedは、押しボタンスイッチを押下すると一連のメッセージをRn42xvp経由で、パソコン側のBluetoothアダプタに送信します。
 パソコン側は、受信メッセージをハイパーターミナルで表示します。










●受信側のパソコンWindowsXPとモジュールの設定と結果

 受信側のパソコンWindowsXPにモジュールを接続して、Bluetoothデバイスの追加をすると、COM40が使える様になります。
 COM40が扱えるハイパーターミナルを115200bps,8bitに設定して実行すると、mbedとRN42XVP側からのシリアルデータが表示されます。

 下の画像は、ハイパーターミナルに受信メッセージを表示したものです。
 メッセージは、初期設定時の「Hello Pc! I7m mbed」と、押しボタンスイッチ押下時に発生する「Hey Pc! Pb0 Pushed」の2種類です。











●送信側のmbedとRN42XVPの設定とプログラム結果

 RN42XVPは、工場出荷時の設定もままです。

 下記のmbedのプログラムは、弊HP「mbed(6) LPC1768で、押しボタンスイッチの押下を検出」のプログラムを基にBluetooth関連を追加しました。液晶表示関連は、使って無いがそのまま残っています。


+++++ プログラムを次に示します

// ***** Rn42SwtxRxlcd_LPC1768
#include "mbed.h"
#include "TextLCD.h"

TextLCD lcd(p30, p29, p25, p26, p27, p28); // rs, e, d4-d7
Serial uartRn42(p9, p10);// mbed USB

Ticker SwEdgeDet;
DigitalIn Pb1(p15);
DigitalIn Sw2(p16);
DigitalIn Sw1(p17);
DigitalOut led1(LED1);
DigitalOut led2(LED2);

unsigned char gPb1InDat;
unsigned char gPb1OnFlag;

void IntEdgeDet() {
unsigned char ucTemp;

// ***** Pb1 ShiftIn
gPb1InDat = gPb1InDat << 1;
if(Pb1){
gPb1InDat = gPb1InDat + 1;
}
// ***** Pb1 On Detect
ucTemp = gPb1InDat & 0x0F;
if(ucTemp == 0x08){
gPb1OnFlag = 0x01;
}
}

int main() {
// ***** unsigned char ucSwCounter = 0;

Pb1.mode(PullUp);
Sw2.mode(PullUp);
Sw1.mode(PullUp);
gPb1InDat = 0;
gPb1OnFlag = 0;
led1 = 1;

uartRn42.baud(115200);

lcd.cls();
lcd.locate(0,0);
lcd.printf("Hey SwCountUpLcd\n");
lcd.locate(0,1);
lcd.printf("Count: 0\n");

SwEdgeDet.attach_us(&IntEdgeDet, 20000.0); // SwEdgeDet ha warikomi

uartRn42.printf("Hello Pc! I'm mbed\n"); // toPc message

// ***** main loop
while(1) {

// ***** Pb1 OnFlag Detect
if(gPb1OnFlag == 1){ // Pb1 On
gPb1OnFlag = 0x00; // Pb1 OnFlag reset
uartRn42.printf("Hey Pc! Pb0 pushed\n"); // toPc message
led1 = !led1;
}
led2 = Sw2;
}
}




ホームへ戻る