目次

マルチプロセッサ化

 前章までのシステムで一応走行できるようになりましたが、
 何か心に引っかかるものがあり、釈然としない日々が続きました。

 電車での帰宅途中に、釈然としないモヤモヤの原因がわかりました。
 「既存の技術だけで仕上げて、新しいことへの挑戦がない。」と頭の
 どこかにあるのです。

 高校生や大学生であれば、既存技術の習得に意味はあります。
 しかし、自分は何のために、時間を割いてMCRに挑戦しているのかを自問
 すると、新しい挑戦をしたいからです。

 ひとつとして、新しいことへの挑戦がないため、大会へ参加する
 マシン用ファームウエアを作っても、達成感が得られないのです。

 そこで、自分にできる挑戦には、どんなことがあるかを考え、紙に
 書き出してみました。

 上記の5項目程度を満足するために、3個のプロセッサを
 利用したマルチプロセッサ化が有効と判断。

 マルチプロセッサ化するとしても、漠然としているので3ブロック
 に分割してみます。




 3ブロックに分けたのは、カメラ処理とその他に分けるよりも
 役割がより明確になるように思えたからです。

 マルチプロセッサ化するにあたり、各ブロックのプロセッサを
 選定しなければなりません。ACTUATOR→SENSOR→BRAINの順で
 検討します。


ACTUATOR

 ACTUATORは、BRAINからの指示で、DCモータの回転、サーボモータ  の角度、LEDの点灯を制御すれば充分です。  PWMの波形生成を担当すればよいので、ATTiny2313を採用します。  ATTiny2313は、1個\100ですし、PWMの波形生成に必要なタイマー  割込み、シリアルあるいはSPIのインタフェースをもっています。  BRAINからの指示で、PWMのDUTY比を変えられるようにします。  BRAINからの指示は、シリアル、SPIを利用できますが、今回は  シリアルとします。  BRAINの代わりにPCを使い、ACTUATORのハードウエア、ファームウエア  のテスト、デバッグができます。  回路図は、以下となります。  ATTiny2313は、内蔵でクロックをもつので、外付けの発振子をなくせます。  ユニバーサル基板に部品を実装する場合、部品点数を減らせます。  ファームウエアを考えます。  BRAINからの指示を、シリアルで受取り、指定されたチャネルのDUTY比を  変更します。  通信が必要になるので、プロトコルを以下にしました。  物理レベルを決めたので、コマンドを規定します。  コマンドの最後は、改行とします。  DUTY比は、10進数2けたで指定し、チャネルは0〜3の整数  とします。  (例) 左DCモータのDUTY比を45%にする場合       D451'\r''\n'  サーボモータのDUTY比だけは、10〜20の整数とします。  DUTY比は、サーボモータの仕様に合わせ、タイマー割込みで20ms  毎に変更します。タイマー割込みは、100μsごとに発生させます。  ファームウエアの大まかな処理は、以下です。  ファームウエアの詳細は、次の章で説明します。

SENSOR

 SENSORは、BRAINからの指示で、カメラ(c328)からコース状態を取得し  センサーデータに変換します。  変換したセンサーデータは、BRAINからの指示でポートに出力します。  SENSOR自体のシステム構成は、以下です。  SENSORに利用するプロセッサに要求される性能は、カメラとシリアルで  通信でき、内蔵SRAMが2048バイトほどです。  この条件を満たすプロセッサで、手持ちのものは、ATmega328だったので  採用しました。  ATmega328の値段は、1個¥250(2010年8月現在)です。  内蔵SRAMを利用して、4800バイトの画像データを4800ビットに  2値化し、さらに60バイトのセンサーデータに変換します。これまで  に説明した画像処理のアルゴリズムを利用すると、2048バイトで充分  でした。  BRAINからの指示は、SPIインタフェースを利用します。  SENSORの動作状態がわかるように、LCDを接続します。  実際の走行では、このLCDは接続しません。  テスト、デバッグで利用します。  BRAINに8ビットのセンサーデータを渡します。  28ピンのATmega328ではピン数が不足になったので、8ビットの  センサーデータラッチを付加し、BRAINにデータを渡します。  このように考え、回路は以下とします。  8ビットのセンサーデータラッチとして、ATTiny2313を利用します。  8ビットのデータラッチには、74HC175を2個利用するとよいのですが  部品点数削減で、基板の実装面積を稼ぎます。  ATTiny2313を利用すると、74HC175を2個よりコストは低くなります。  2個のプロセッサを使うので、2つのファームウエアを作成します。  ATTiny2313をmsendrvとします。  このmsendrvでは、次のようにファームウエアを構成します。  msendrvの上位であるATmega328のファームウエアは、次の構成とします。  2つのファームウエアの詳細は、次の章で説明します。

BRAIN

 BRAINは、SENSORからセンサーデータを入力し、移動方法を決定します。  確定した移動方法から、DRIVEに与えるパラメータを算出します。  SENSOR、DRIVEのインタフェースでBRAINの動作を考えると以下の接続になります。  MCRの画像処理部門では、プロセッサをH8に限定していないので  好みのプロセッサを採用できます。  今回は、STマイクロエレクトロニクスのSTM8S-Discoveryを採用します。  1枚のボードが\750で販売されていたので、予備を含めて2枚購入して  いたので、これを活用します。  BRAIN、SENSOR、ACTUATORで4個のプロセッサを利用します。  プロセッサの値段は、合計で\1200となり、H8ボード1枚の金額と  比べ、1/4となりました。  マルチプロセッサ化で、MCRマシンに掛ける金額が跳ね上がることも  なく、消費電力を低減できます。  H8のファームウエア開発環境はHEWですが、デバッガと連動しない  ので、作成しては修正し、フラッシュROMの内容を更新する作業を  延々と繰り返さなければなりません。  STM8S-Discoveryは、USBインタフェースをもち、SWIMと呼ぶデバッガ  インタフェースを利用できるので、リアルタイムでファームウエアの  動作を確認できるため、開発が非常に楽になりました。  電源電圧は、5Vあるいは3.3Vを選択できます。今回は、低消費電力を  狙って3.3Vを採用します。  MCRのレギュレーションでは、SUM3の電池を最大8本まで利用できます。  3本をマルチプロセッサ+カメラに、残りの5本をモータに振り向けると  駆動系にはパワフルな動作を期待できます。  STM8S-DiscoveryでBRAINを実現する場合、ファームウエアの概要は次の  ようにします。  BRAINとSENSOR、ACTUATORのインタフェース接続は、下記とします。  チャネル1   CH1_1 NRST   CH1_2 OSCIN   CH1_3 OSCOUT   CH1_4 Vssio_1 0V   CH1_5 Vss 0V   CH1_6 Vcap   CH1_7 Vdd 3.3V   CH1_8 Vddio_1 3.3V   CH1_9 PA3   CH1_10 PA4   CH1_11 PA5   CH1_12 PA6  チャネル1   CH2_1 PE5 nSS(SPI)   CH2_2 PC1/TS1 start-trigger(default usage)   CH2_3 PC2/TS1_load start-trigger(default usage)   CH2_4 PC3 start-trigger(default usage)   CH2_5 PC4   CH2_6 PC5 SCLK(SPI)   CH2_7 Vssio_2 0V   CH2_8 Vddio_2 3.3V   CH2_9 PC6 MOSI(SPI)   CH2_10 PC7 MISO(SPI)   CH2_11 PG0   CH2_12 PG1  チャネル3   CH3_1 Vdda 3.3V   CH3_2 Vssa 0V   CH3_3 PB7 sen7(sensor data bit7)   CH3_4 PB6 sen6(sensor data bit6)   CH3_5 PB5 sen5(sensor data bit5)   CH3_6 PB4 sen4(sensor data bit4)   CH3_7 PB3 sen3(sensor data bit3)   CH3_8 PB2 sen2(sensor data bit2)   CH3_9 PB1 sen1(sensor data bit1)   CH3_10 PB0 sen0(sensor data bit0)   CH3_11 PE7 FLAG(sensor data enable)   CH3_12 PE6  チャネル4   CH4_1 PE3   CH4_2 PE2   CH4_3 PE1   CH4_4 PE0   CH4_5 PD0/LED mode_monitor(default usage)   CH4_6 PD1/SWIM debugger(default usage)   CH4_7 PD2   CH4_8 PD3   CH4_9 PD4   CH4_10 PD5 TxD   CH4_11 PD6 RxD   CH4_12 PD7

新規準備

 SENSOR、ACTUATORには、AVRマイコンを利用しているので、USBに接続  できるライターとテストボードを用意しました。  HIDインタフェースのAVRライター  20ピンATTiny2313テストボード  28ピンATMega328テストボード  USB接続5V電源アダプタ  これらのハードウエアがあれば、パーソナルコンピュータのUSBを  2つ利用して、AVRライターとボードの電源を賄えます。
目次

inserted by FC2 system