音声認識 SR-MOD100C

srmod100c.png

ピン配置

J1, J2の部分にピンがつけられている。

J1J2
名称説明名称説明
XMファームウェア更新用
RSTリセットDE
TXシリアル送信
RXシリアル受信
 
 
3V33.3V5V5V電源
GND電源Ground(0V)GND電源Ground(0V)

接続

ピン名称接続
RXArduinoのTxに接続。下記の例を使うのであれば、11番ピンへ。
TXArduinoのRxに接続。下記の例を使うのであれば、10番ピンへ。
5VArduinoの5Vに接続
GNDArduinoのGNDに接続

プログラミング

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX

#define DELAY() delay( 100 );

#define CMD_BREAK()     cmd0( 'b' ) 
#define CMD_SLEEP(x)    cmd1( 's', (x)+0x40 )
#define CMD_LANGUAGE(x) cmd1( 'l', (x)+0x40 )
#define CMD_TIMEOUT(x)  cmd1( 'o', (x)+0x40 )
#define CMD_BAUDRATE(x) cmd1( 'a', (x)+0x40 )
#define CMD_RESETALL()  cmd1( 'r', 'R' )
#define CMD_RECOG_SI(x) cmd1r1( 'i', (x)+0x40, 's' )
#define LANG_En 0
#define LANG_It 1
#define LANG_Ja 2
#define LANG_De 3
#define LANG_Es 4
#define LANG_Fr 5

int cmd0( byte cmd ){
  int r;
  mySerial.write( cmd );
  DELAY();
  while( mySerial.available() <= 0 );
  r = mySerial.read();
  DELAY();
  return r;
}

int cmd1( byte cmd, byte arg ){
  int r;
  mySerial.write( cmd );
  DELAY();
  mySerial.write( arg );
  DELAY();
  while( mySerial.available() <= 0 );
  r = mySerial.read();
  DELAY();
  return r;
}

int cmd1r1( byte cmd, byte arg, byte succ ){
  int r;
  mySerial.write( cmd );
  DELAY();
  mySerial.write( arg );
  DELAY();
  while( mySerial.available() <= 0 );
  r = mySerial.read();
  DELAY();
  if( r != succ ) return r;
  mySerial.write( ' ' );
  DELAY();
  while( mySerial.available() <= 0 );
  r = mySerial.read();
  DELAY();
  return r-0x40;
}
void setup() {
  Serial.begin( 9600 );
  pinMode( 10, INPUT );
  pinMode( 11, OUTPUT );
  mySerial.begin( 9600 );
  while( CMD_BREAK() != 'o' );
  CMD_LANGUAGE( LANG_Ja );
}

void loop() {
  int x;
  x = CMD_RECOG_SI( 3 );
  switch( x ){
  case 't':
    Serial.println( "時間切れ" );
    break;
  case 'e':
    Serial.println( "認識失敗" );
    break;
  default:
    Serial.println( x );
  }
}

詳しくは、 SR-MOD100C を見ること。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS