VocalFusion スピーカー開発キット (XVF-3000) のビデオは、以下のページからも紹介しています。
https://www.xmos.com/products/voice/vfusion
- VocalFusion スピーカー開発キット (XVF-3000) :
- 4つの Digital MEMS Microphone と、USB-PHY / PDM マイク インターフェース / Voice DSP / スピーカーインターフェース (I2S) を搭載した XVF-3000 ボイス・プロセッサ による、Voice User Interface 評価ボード
- Raspberry Pi 3:
- ARMプロセッサーを搭載したシングルボード・コンピュータ
- SG90 サーボモータ
- 非常に安価なサーボモータ
XVF-3000 デバイス上では、各種音声信号処理が行われています。一方、XMOSのデバイスはマルチコアですので、未使用のCPUがあれば、音声信号処理とは独立して別の仕事もこなせます。
この例では、空いているCPUを使用して、SG90 サーボモータを、XVF3000デバイスがコントロールしています。
XVF-3000 では、音声の到来方向を検出できますので、その機能と組み合わせることで、音声の方向に、サーボモーターを向ける動作を行っています。
XVF-3000 では、音声の到来方向を検出できますので、その機能と組み合わせることで、音声の方向に、サーボモーターを向ける動作を行っています。
(1) VocalFusion スピーカー開発キット (XVF-3000) と Raspberry Pi を USB 接続しています。
(2) VocalFusion スピーカー開発キット (XVF-3000) とスピーカーが接続されています。
(3) Raspberry Pi から音楽を再生しています。VocalFusion スピーカー開発キット (XVF-3000) に接続されているスピーカーから音が出力されています。
(4) Raspberry Pi カメラモジュールの出力を HDMIモニターに出力しています。
(5) XVF3000 デバイスでは、登録されたキーワード ”Hello Blue Genie” とその方向を検出します。そして、(PWMを出力して)SG90サーボモータを制御しています。SG90サーボモータに接続しているカメラの向きを変えています。
SG90 サーボモータをコントロールする XC コードは、非常に簡単です。以下はあくまで一例です。他の記述方法でも、実現できます(select/case文)。
===============
on tile[0]: out port pPWM = XS1_PORT_1G;
#define ZERODEGREE 1450 //us
#define PLUS90DEGREE 2400 //us
#define MINUS90DEGREE 500 //us
#define PULSEWIDTH (XS1_TIMER_MHZ * 20000) //pulsewidth 20ms
#define PULSECNT 100
void SG90_PWM(int inDegree)
{
timer t;
unsigned tstart, tout1, tout0;
float targetDeg;
targetDeg = inDegree; //(0 - 359)
if (targetDeg > 180) targetDeg = 180;
//flip for demo
targetDeg = 180 - targetDeg;
unsigned PulseHigh_us = ((SG90_PLUS90DEGREE - SG90_MINUS90DEGREE) * (targetDeg/180)) + SG90_MINUS90DEGREE;
unsigned newPosition = XS1_TIMER_MHZ * PulseHigh_us; //unit: us
for(int i=0; i<SG90_PULSECNT; ++i)
{
t :> tstart;
pPWM <: 1;
tout1 = tstart + newPosition;
tout0 = tout1 + (SG90_PULSEWIDTH - newPosition);
t when timerafter(tout1) :> tout1;
pPWM <: 0;
t when timerafter(tout0) :> tout0;
}//
}
===============
(その他の投稿については、右上の「ページ」をご確認ください)
0 件のコメント:
コメントを投稿