#author("2018-05-23T11:22:24+09:00","default:qua","qua")
* 音声認識 SR-MOD100C [#oc608618]
#ref(http://www.ist.aichi-pu.ac.jp/lab/qua/~qua/pbl/img/srmod100c.png,140x250)
** ピン配置 [#e88541b0]
J1, J2の部分にピンがつけられている。
,J1,==,J2,==
,名称,説明,名称,説明
,,,XM,ファームウェア更新用
,RST,リセット,DE,
,,,TX,シリアル送信
,,,RX,シリアル受信
,,,, 
,,,, 
,3V3,3.3V,5V,5V電源
,GND,電源Ground(0V),GND,電源Ground(0V)
#author("2019-04-21T23:45:19+09:00","default:qua","qua")


** 接続 [#n3f42026]
|ピン名称|接続|
|RX|ArduinoのTxに接続。下記の例を使うのであれば、11番ピンへ。|
|TX|ArduinoのRxに接続。下記の例を使うのであれば、10番ピンへ。|
|5V|Arduinoの5Vに接続|
|GND|ArduinoのGNDに接続|

** プログラミング [#r5a6d37c]
不特定話者の数字を認識して、シリアルモニタに表示するプログラム例

 #include <SoftwareSerial.h>
 SoftwareSerial mySerial(10, 11); // RX, TX
 
 #define DELAY() delay( 20 );
 
 #define CMD_BREAK()     cmd0( 'b' ) 
 #define CMD_SLEEP(x)    cmd1( 's', (x)+0x41 )
 #define CMD_LANGUAGE(x) cmd1( 'l', (x)+0x41 )
 #define CMD_TIMEOUT(x)  cmd1( 'o', (x)+0x41 )
 #define CMD_BAUDRATE(x) cmd1( 'a', (x)+0x41 )
 #define CMD_RESETALL()  cmd1( 'r', 'R' )
 #define CMD_RECOG_SI(x) cmd1r1( 'i', (x)+0x41, '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
 #define PHRASE_action 1
 #define PHRASE_direction 2
 #define PHRASE_number 3
 
 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-0x41;
 }
 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( PHRASE_number );
   switch( x ){
   case 't':
     Serial.println( "Time out" );
     break;
   case 'e':
     Serial.println( "Cannot regognize" );
     break;
   default:
     Serial.println( x );
   }
 }

詳しくは、
[[SR-MOD100C:http://www.ist.aichi-pu.ac.jp/lab/qua/~qua/pbl/pdf/srmod100c_man.pdf]]
を見ること。


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS