« 第33回全日本マイクロマウス大会 | トップページ | Scilabによるデータの可視化 »

Bluetoothによるシリアル通信のワイヤレス化

前回書いた内容の詳細です。

ロボットに載せたマイコンのプログラムをデバッグするときは、RS232-Cによるシリアル通信で、PC上のハイパーターミナルに文字を表示させる事が多いと思います。

ロボトレース(ライントレーサー)におけるこの方式の問題点は、ケーブルがつながっていて邪魔だということです。そのため基本的に走行中はPC側へ情報を送ることができません。

しかしBluetoothシリアルモジュールのRBT-001を使うと簡単に、シリアル通信をワイヤレス化できます。METEORAにもこのBluetoothシリアルモジュールを載せています。
ワイヤレス化のメリットは
  • ロボットの走行状態をリアルタイムに可視化可能
  • ログ保存用のRAM領域が不要
  • 液晶画面不要
です。逆にデメリットは
  • Bluetootu通信モジュール分だけ重量が増加
  • PCとロボットが10m以上離れると通信不可
  • (無線特有なのか)ポートの開閉に時間が掛かる
という点では無いでしょうか。
さて、参考までにMETEORAのBluetooth部分の回路図を載せます。

0cf5a7e0221da88c288375c0bb0bbf7c

上部のIC1PORTA_Hは、STM32F103のポートAの上位8bitの端子を表しています。
右下のIC8と書かれたコネクタは、RBT-001につながるピンソケットです。ピンソケットは特殊な2mm間隔の品で、私はサトー電気で購入しました。

電源は5Vから、RBT-001に供給する3.0VをリニアレギュレータTC1185で生成しています。
RBT-001の仕様上の絶対最大定格は3.3Vらしいですが、3.3Vや5V系回路に直結するとモジュールが破損すると説明書に明記されています。そのため3.3V動作のSTM32F103では、配慮が必要です。

STM32F103側とRBT-001側の接続は以下のようになっています。

■STM32F103側                 - ■RBT-001側
USART_TX(68番ピン、PA9)   - RX
USART_RX(69番ピン、PA10) - TX

回路図にR27のプルアップ抵抗が追加されていることに注意してください。
STM32F103側では、USART_TXピンの出力モードをデフォルトのプッシュプル出力ではなく、オープンコレクタ出力に設定し、RBT-001に加わる信号電圧が0V~3.0Vの範囲に収まるようにしています。

USART_RXピンに関しては、マイコン内蔵のプルアップ抵抗を接続有りの入力として設定します。
これはRBT-001モジュールを取り外した時に、USART_RXピンがハイインピーダンス状態になって誘導ノイズを拾うのを防ぐためです。
これら上記の設定を実現する出力モード設定のソースコードを以下に示します。


/**
* @brief  Configure the USART1.
* @param  None
* @retval : None
*/
void USART1_Configuration(void)
{
  RCC_APB2PeriphClockCmd(USART1_GPIO_RCC, ENABLE);

  /* Supply APB2 clock */
  RCC_APB2PeriphClockCmd(USART1_RCC , ENABLE);

  GPIO_InitTypeDef GPIO_InitStructure;

  /* Configure USART1 Tx as alternate function push-pull */
  GPIO_InitStructure.GPIO_Pin = USART1_TX_PIN;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;//オープンドレイン出力に設定
  GPIO_Init(USART1_PORT, &GPIO_InitStructure);

  /* Configure USART1 Rx as input floating */
  GPIO_InitStructure.GPIO_Pin = USART1_RX_PIN;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//プルアップ抵抗を追加
  GPIO_Init(USART1_PORT, &GPIO_InitStructure);

  /* USART1 configuration ---------------------*/
  /* USART1 configured as follow:
          - BaudRate = 9600 baud
          - Word Length = 8 Bits
          - One Stop Bit
          - No parity
          - Hardware flow control disables
          - Receive and transmit enabled
   */
  USART_InitTypeDef USART_InitStructure;
  USART_InitStructure.USART_BaudRate = 9600;
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  USART_InitStructure.USART_StopBits = USART_StopBits_1;
  USART_InitStructure.USART_Parity = USART_Parity_No ;
  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  USART_Init(USART1, &USART_InitStructure);
  //Enable USART1 RX empty interrupt
  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
  /* Enable the USART1 */
  USART_Cmd(USART1, ENABLE);
}

※ほとんどを"STM32マイコン徹底入門"のソースコードから引用させていただきました。赤字のところに注目してください。

以上の構成により、RBT-001が利用可能です。

ちなみにRBT-001のデフォルトボーレートは9600bpsですが、設定で921.6kbpsまで利用できるようです。私は115.2kbpsとしています。

|

« 第33回全日本マイクロマウス大会 | トップページ | Scilabによるデータの可視化 »

コメント

Hi,
I've successfully connected with RBT 001 then I transfer package SET_EVENT_FILTER

0x02, 0x52 , 0x4E, 0x01, 0x00, 0xA1, 0x03, 0x03

EventFilter: Configures the level of events reported to the host.
0x00: No filter, all events reported
0x01: ACL events filtered, only API events reported
0x02: All events filtered, only UART breaks indicated
0x03: All events filtered, including UART break

I've put the value 0x03 for SET_EVENT_FILTER then it works in transparent mode. I use Uart break (TX go GND) tried to go back Command Mode but can not. How do I get back Command Mode?

Thanks in advance !

投稿: | 2015年11月18日 (水) 12時07分

Hi. Did you set RBT 001 up by Bluetooth serial communication?
I think a configuration of RBT 001 must be done by wired communication. Could you use RS-232C adapter cable to set it up.

投稿: さとぅ | 2015年11月29日 (日) 23時31分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1213530/48086893

この記事へのトラックバック一覧です: Bluetoothによるシリアル通信のワイヤレス化:

« 第33回全日本マイクロマウス大会 | トップページ | Scilabによるデータの可視化 »