「ロボット・電子工作・マイコン」カテゴリーアーカイブ

SH-2Aマイコンボード

Interface誌2010年6月号の付録のSH-2Aボードを試してみました。

とりあえず、本に書いてある通りの手順でLEDピカピカまで動かしました。

初期状態では、デバッグ実行時に、止めてないのにAbortとなって止まってしまう現象がありましたが、モニタプログラム(SH-2Aマイコン基板実装SPIシリアル接続フラッシュROM)を2010年5月17日版にアップデートしたところ直ったようです。

f:id:studio_k:20100815173214j:image:w400

まだ、コネクタなど何もつけておらず、素のままです。

このSH-2Aはクロック:144MHzでRAM:1MBとのことで、過去の付録基盤でも最高レベルのスペックです。画像認識でも余裕でこなせそうです。OpenCVのようなライブラリがあると楽ですが。

SH-2AはフラッシュROMを内蔵しておらず、このボードではSPI接続の64KBのフラッシュROMを搭載しています。半分はモニタプログラムが入っているので、このモニタを使用する場合は使えるのは32KBまでとなります。足りなくなったら大容量のフラッシュROMに差し替えることもできるようです。

開発ツールは、とりあえずメーカー純正の開発ツールのHEWを使用する方向で考えています。使用期限は60日で、期限が切れるとコンパイル後のオブジェクトのサイズが256KBまでとなる制限があるようですが、当面はそこまでのサイズのプログラムは作らないと思うので問題はなさそうです。HEWの他にGCCが使用できるようですが、256KBの制限以外のメリット・デメリットが理解できていません。

モニタプログラムを使用すると少し面倒な設定がですが、JTAGなしでトレース実行できるのでかなり便利です。

次はROMに書き込んでPCなしで実行することを試してみたいと思います。

将来的には昨日のカメラロボのCPUをこのボードに換装することを考えています。ボードの作り替えは最小限ですませたいのですが、まだどうなるか分かりません。

あと、LEDピカピカはHelloWorldに相当するものだと思いますが、本文のサンプルは割り込みタイマーを使用した少し高度なものでしたので、割り込みを使わない簡単なバージョンを作ってみました。main()周辺に以下を記入します。

#include "iodefine.h"
#include "machine.h"
void main(void)
{
volatile int i;	// 最適化しない
// PCDR0設定 PC8のLEDを消灯
PORT.PCDR0.BYTE.H |= 0x01u;
// PCIOR0設定 PC8のLEDを出力に設定
PORT.PCIOR0.WORD |= 0x0100u;
// PCCR2設定 PC8の制御設定
PORT.PCCR2.WORD &= 0xFFF0;
while(1) {
// PCDR0設定 PC8のLEDを点灯
PORT.PCDR0.BYTE.H &= 0xFEu;
// 時間待ち
for (i=0; i<2000000; i++);
// PCDR0設定 PC8のLEDを消灯
PORT.PCDR0.BYTE.H |= 0x01u;
// 時間待ち
for (i=0; i<2000000; i++);
}
}

シリアル接続HEWモニタを使用する場合は本文のサンプルと同じく、↓の設定が必要です。詳しくは本文を参照してください。

  • resetprg.c のSR_Init を 0x000000F0から0x000000E0に変更
  • スタックポインタの設定
  • セクションの設定
  • デバッグの設定

カメラ付きロボット

1年半程前に作っていたロボットを掘り起こしてみました。

f:id:studio_k:20100814222605j:image:w480

PCと無線で通信してPCからロボットをコントロールできます。また、ロボットに搭載したカメラの画像をPC側で見ることができます。

ロボットのスペックは以下のとおりです。

CPU:Interface 2007年5月号の付録のV850

カメラ:定番のTREVA (昔のPHS用外付けカメラ)

PCとの通信:XBee (38,400bps)

センサー:PSD距離センサー×3

モータードライバ:MP4212

モーター:ダイセンモータ(60:1)

タイヤ:タミヤ スポーツタイヤ

PC側のコントロールソフトはC#で作成。

f:id:studio_k:20100814223508j:image:w480

写っているのはロボカップジュニアサッカーのボールです。カメラで画像認識して、ボールを追いかけ…..ません。そんな機能はなく、今のところ深い意味はありません。

ちなみにロボットのサイズは直径22cm弱ですが、これも深い意味はありません。(オヤジリーグ参加?)

カメラの画像を見ながら、ロボットをコントロールしたり、自動運転でカメラの画像を眺めるということを想定していましたが、Trevaの解像度(わずか96×72)でも38,400bpsのスピードでは5秒ぐらいかかって使い物になりません。※計算してみれば分かることでしたが、XBeeのスピードがどのぐらい行くかも分かっていなかったので。

また、距離が4~5メートル以上離れると、通信が不安定になってしまいます。

というわけで1.5年間、放置状態でした。

フロー制御を入れることで、通信スピードと距離の問題が改善されるのではないかと思い、引っ張り出してきました。

うまく行くかはまた後日。

自作Sanguino

ArduinoDuemilanove328 (ATmega328)ではピン数やメモリーが足りなくなった場合、ArduinoMega(ATmega1280)という選択肢があります。

ArduinoMegaは以下のようにDuemilanove328に比べて大幅に拡張されています。

Duemilanove328 Mega
デジタル入出力ピン 14本 53本
アナログ入力ピン 6本 16本
flash memory 32KB 128KB
RAM 2KB 8KB

しかし、値段が、Duemilanove328が約¥3,200なのに対し、Megaは約¥7,000と値段もメガです。

また、MegaのATmega1280は今のところ入手が簡単でないのと、表面実装パッケージ(TQFP64)なので、自作のハードルは高いです。

SanguinoはATmega644Pを使用したArduino互換機(拡張機)で、以下のスペックとなります。Duemilanove328とMegaの中間といったところでしょうか。

Duemilanove328 Sanguino Mega
デジタル入出力ピン 14本 24本 53本
アナログ入力ピン 6本 8本 16本
flash memory 32KB 64KB 128KB
RAM 2KB 4KB 8KB

また、ATmega644PはDIPパッケージなので、ブレッドボードで簡単に使えます。

日本ではSanguino互換のマイクロファン製REDUINO-GHOST644Uが入手しやすいと思います。ただし、完成品ではなくキットです。約¥3,780で販売されています。

Sanguinoについて、詳しくは↓を参照してください。

http://www.microfan.jp/sanguino

ということで、Sanguinoを作ってみました。

ATmega644Pは秋月で¥500で購入しました。

f:id:studio_k:20100807000948j:image:w320

■以下は導入メモ。

回路は↓を参考に。

http://sanguino.cc/hardware

自作arduinoの時は内蔵オシレータを使用して8MHzで動作させましたが、Sanguinoは8MHzのブートローダが用意されていないので(自分でコンパイルすれば可能なようですが)、クリスタルを使用して16MHzで動くようにしました。セラロックの方が回路は簡単になりますが、ATmega644Pではセラロックは安定しないというような情報がありましたので、とりあえず今回はクリスタルを使用しました。

arduino-0018がインストール済みとします。

http://code.google.com/p/sanguino/downloads/list からSanguino-0018r2_1_4.zipをダウンロードし、

Sanguino-0018r2_1_4.txtに従い、解凍後のSanguinoをarduino-0018\hardware\の下にコピーします。(arduino-0018\hardware\Sanguinoになる)

ブートローダは以下を使用します。

D:\Sanguino-0018r2_1_4\Sanguino\bootloaders\atmega644p\ATmegaBOOT_644P.hex

ブートローダーの書き込みとFuseBitの書き込みは↓を参考に。

http://www1.parkcity.ne.jp/kama/Arduino.htm

http://pc.watch.impress.co.jp/docs/column/musashino_proto/20090806_307235.html

Arduino IDEから”Tools”-“Board”で”Sanguino”を選択

後はArduinoと同じように使えます。

※8/13 文章全体を見直しました。

シンガポール、行ってきました!!!!

シンガポールはとても綺麗な街で驚きました。

シンガポールでは電車で切符を弾いたらダメという規則があるのですが、ふと気がつくと弾いている自分がいました。(笑)

f:id:studio_k:20100620120646j:image:w320

会場の照明は明るすぎず調度良かったと思います。

しかし、うちのチームは相変わらず、調整がうまくいっていませんでした。

ロボットの構造に問題があるのでしょうね。

しかし、会場はとにかく寒かった。というか、この国は室内がどこも寒かった。外は暑いので、気温の差に体調を崩しそうでした。

会場では他のリーグも近くで実施されており、見学ができてよかったです。

しかし、選手達は試合と調整で忙しく、とても見学に行く暇はなかったと思われます。

あまりに忙しく、朝食・昼食も会場内でとっていました。

その間、付き添いの我々は美味しい物をいっぱい食べました。

また、監視が厳しく(笑)、選手達とは話すこともできなかったので、応援もせずに観光やショッピングに繰り出していました。

バージョンBのロボットはとにかくすごかった。

ジャパンオープンでスペインチームのロボットはすごいと思いましたが、あのクラスがごろごろいてびっくりしました。

TN-STARSはギリギリでしたが決勝リーグまで進めたのでよかったです。(バージョンAでよかった~)

最終日はゆったりと観光しましたが、歩きすぎて帰国後1週間は足が筋肉痛でした。

今回、子供達は英語の重要さを痛感したようで、帰ってからは英語の勉強を頑張っています。

来年、活用できたら良いのですが。(笑)

f:id:studio_k:20100607194926j:image:w240

大会バージョンのロボット

以上、6/27の記事ですが、7/13に書きました。だいぶ追いついたぞ!

ロボカップ世界大会へ参加できることになりました!!!

TN-STARSは7位でしたが、プライマリの年齢区分では3位でした。

世界大会へ行けるのは2チームまででしたが、上位のチームで世界大会を辞退されたとのことで、TN-STARSが参加できることになりました。

本日打診があったのですが、本日中に返事をする必要があったので、本人達に聞く暇もなく、参加の返事をしてしまいました。(笑)

f:id:studio_k:20100428215455j:image:w240

ジャパンオープンバージョンのロボット

以上、5/11の記事ですが、7/12に書きました。ふぅ。