#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]] を見ること。