2011年10月1日土曜日

とうロボを機にマイコンについて考える 其ノ弐

其ノ壱を書いた勢いで其ノ弐を書いたのだが、保存したはずのテキストファイルが見つからず、アレだけの長文を書き直すとなるとモチベーションを高くしないと書けないので其ノ弐を投稿するのが長くなってしまった。

前回の話を振り返るととにかく現状ではAVRマイコンが最も使いやすいのではないかと言う結論になったがそれがどうしてなのか、「そもそもお前は何をしたのか?」といった事を書いておきたい。

まず、具体的な話になるが、今回のロボコンで自分が使ったマイコンはATMEGA168Pである。ちなみにお値段は秋月電子通商さんで1個200円であり、最近何かとよく名前を聞くArduinoのArduino Diecimilaでも使用されているマイコンで有るのでその入手性の良さや使いやすさには問題は無いはずである。
ちなみにスペック的にはFlashROM:16kバイト、RAM:1kバイトでマイコンのピン数は28ピンである。ここで其ノ壱を読んでいただいた人は「『64kバイトまでしか…』、『I/Oピンは100本くらいは…』とかお前は言っていたじゃないか」とお思いでしょう。その通りで、ポートも3ポートくらいしか無く、このままでは簡単なライントレーサくらいしか作れない(アイデア次第でもっとイロイロとできるが)。

半年くらい前にどうしようかと考えていたところ、先輩がたまたまFPGAとマイコンをシリアル通信させて動作させるという仕事をしているのを見て、その時「You,通信しちゃいナよ!!」という天の声が聞こえたとか、聞こえなかったとか。単純にマイコンの数を増やしてしまえばポート数が増えるじゃないかという安易な思いつきであるが。確実に自分の中でその瞬間「それダァッ」とは思った。

そこで実際にマイコンを通信させようとなるが、もちろんそこはシリアル通信である。(そもそもピンの数が足りないっていうのにパラレルで通信するようなヤツは居ない。)しかし簡単に通信と言ってもその手順はキッチリと規格化されているので、それに従わなければならない。今回はI2C(アイ・スクエアド・シー)という通信方法で通信してみた。なぜかといえば過去にEEPROMとマイコン間でI2Cを使って通信したことがあり、ある程度は把握していたからであるのと、1対1の通信というよりも1対多、1つのMasterに対して複数のSlaveを接続できるのでその方が多くのマイコンを同時に制御できるのではと思ったからであった。I2Cとはシリアルデータ (SDA) とシリアルクロック (SCL)という2本の線だけで通信が可能な通信方式で上記の様に2本のI2Cバス上でMasterと複数のSlaveが繋がっている。

MEGA168でプログラムを書き始めようと色々と調べてみるとI2Cに関してはマイコンに機能として含まれている事がわかった。場合によってはすべてプログラムでソフトウェア的に書かなければと身構えていたのでそこは意外とラッキーであった。実際にプログラムを書いてみると思っていたよりもすんなりと通信ができてしまった。(通信が出来なかった場合にそれをデコード、解析できるようなオシロスコープなんて持ち合わせてないので出来なかった時の方が問題ではあるが…)
プログラムに関してはエレキジャックの中尾司さん記事のソースを参考にしました。
ちなみに、I2Cがどのように通信しているかはこの連載を読んで頂いたほうが、自分が説明するよりも解りやすいと思います。
ちなみに2、エレキジャックと言えば高校時代の恩師がインドアプレーンに関して書いていたりするのでよろしくお願いします。m(_ _)m

大会ではセンサーを受けるためのSlaveとしてのマイコンとモータードライブを動かすためのSlaveとしてのマイコンそれらをまとめるためのMasterのマイコンという形にしてみました。通信内容もセンサー側のマイコンで3ポートの状態をそのまま3バイトの値として送り、モータードライブ側のマイコンの出力もそのままポートの状態を受けるというものでした。
本来であれば通信内容(データ)に意味をもたせる、あるいは仕様をを決める、例えばセンサー側ではA/D変換した値を送る、モーター側ではPWMのデューティー比を受けそれに応じた出力をするといった、Slave側にもう少し処理をさせるような、言い換えれば仕様さえ決めてしまえばあとはそれに合わせて通信するだけでイイといったような形に出来ればよかったのかと思いますが、結果として自分だけだったということ、そこまで時間が無かったといった事で出来ませんでした。

またMaster側ではありふれた処理としてwhile文で処理を行わたりさせますがその間while文の処理の中で通信処理をさせておかないと、そもそもwhile文を抜ける条件に至らない、待ってる間にモーターが暴走するといった事になり、1回完全にはまってしまったのでそれだけは気を付けなければなりません。

っと、言った感じに今回のロボコンではポートの数が足りないマイコンでその数を増やし、マイコン間で通信してしまおうという事をコンセプトにやった見ました。ある意味回路とプログラムを一人でやったので思うように出来たということかもしれませんが。

さて、また長くなってしまったので其ノ参へ続く。
どうしても長い文章は書き慣れていないので。グダグダと書いてすいません。

2011年9月24日土曜日

とうロボを機にマイコンについて考える 其ノ壱

今週のアタマに「とうロボ」がありました。とうロボと言うのは東海地区のロボコンをやっている大学で技術交流を兼ねてロボコンをやろうというもので、今年初めての開催です。
偉いことを言ってますが、たまたまお声を掛けて頂いたので、出ない理由はないと出場しました。夏休みと引換に…

結果を言えば惨敗だぜ…まー一年生主体で作ったロボットを幾ら俺でも2、3日じゃ完璧には動かせないぜ。(プログラムを詰め切れないという意味で)
ちなみに正面中央のタッチセンサが完璧に動作さえすればすべて動きはプログラムしてあったので得点はできたはずなんだけど、やっぱり接触系のセンサの方が確実だと思ったのが誤算か。

そんなこんなであったのですが、詳しい結果やロボットに関してはウェブサイトや他の人が上げてくれると思うので、今回は自分の話を。

今回、自分の目標として幾つか新機軸(?)を考えていました。その中で、ロータリーエンコーダ以外はやってみたい事は殆どできたので良かったのかと思っています。
その内の一つとしてどうやってマイコンで制御するかということがありました。そう聞くと随分大雑把な、あるいは初歩的な事かと思われますが 、個人的には画期的だと思ったけれど、大会後の交流会でも誰も気がついてくれなかったので。
自分の印象としてどうしても相手のロボットを見ても機構的なところや外見で判断しやすいところにばかり目が行きあまりプログラムや制御の話題というのはそういった場所では聞かないのでしょうがないのかと。

自分が知っている限りロボコンに使われるマイコンは基本的にH8やSH2、R8Cといったルネサス系のマイコンが多い様に思える。もちろん場合によってはARMやPICといったものを使っているかもしれないがそれほど見たことはない(自分の近くがたまたまそうなだけかもしれないが)。なぜかと言ったら入手性の良さとポート数であると思う。H8/3048F、3052Fであれば100pin近くのピンが有る。複数のセンサから入力し、複数のモータなどに出力を行う場合そのぐらいは必要となる。あるいは内蔵の機能、A/D変換、PWM出力、タイマ、パルスカウンタ、etc…といった機能が要件を満たすだけ搭載されていなければならない。最近ではいっそのことFPGA上に組んでしまえばとも言うが値段的にも技術的にも難しい。

そういった事から昨年までも自分はH8マイコンを使ってロボットを動かしていたが、ここで幾つかの問題に立ち当たった。個人的にやっている分にはコレでも全く問題ないのだが、技術を後輩に伝えていく場合には若干の問題があった。何かといえば、マイコンは買ったらプログラムをしなければ動かないが、どうやってプログラミングをするかとした時に開発環境という問題が出てくる。ここで言う開発環境とはもちろんIDEの問題である。少し前までや、マイコンの入門書などではテキストエディタで書いてコマンドプロンプト上でコンパイルというのが普通であったが、最近ではほとんのマイコンで専用のIDEが用意されており、その上でデバッカも含めた環境でプログラムするのが普通になっている。しかしそのソフトが意外に高かったり、フリー版は使用期限、容量制限がある。例えばルネサスの統合開発環境HEWなんかは評価版では60日を過ぎると64kバイトまでしかコンパイルできないなどといった制限がある。

結果として我がサークルではAVRマイコンを使用している。まず価格が安い、マイコン自体が数百円、開発環境であるAVRStudioも無償、コンパイラのWinAVRも無償、プログラムライターのAVRISPmkIIも3000円とすべての環境を揃えてもH8マイコンボードと同じ程度という最大の強みがあります。なので非常に敷居が低く始められる。自分のような定期的にマイコンを壊す人間も怖くない。という最大の特徴がある。

長くなってしまったので其ノ弐に続きます。

2011年7月30日土曜日

ちか。ぴか。きら!

iPhoneによるロボット制御 (I・O BOOKS)




















Amazonで出会ったときなんかちか。ぴか。きら!☆_☆

この本ではiPhoneをコントローラにして、シミュレータ上(Robotics Developer Studio(RDS)のロボットを操作するプログラムを作るらしい。

だがRobotics Developer Studio」(RDS)はC♯を使っているらしいからやめとこうか。

Cも駄目だし||||||_| ̄|○|||||||

なんかかっこいいよな。。。。

一応欲しいリストに追加する。


あ。。期末試験とトウロボにも頑張って下さい。

adios-char-

2011年6月23日木曜日

えさがせんべい???




ま。。。せんべいが食えるわけないけどね。。あはは

-char

2011年6月12日日曜日

部内ロボコン進行中・・・


本日、NHK大学ロボコンが行われましたが、


部内ロボコンをやるということで、各チーム作業を進めています。

2011年5月21日土曜日

園芸部、始めました!

岐阜大学ロボコンサークル支部:園芸部部長Kです。

部室の植物が増えてきたので、園芸部になりました。

新入生のとんがらしのトンちゃんと、バジルチルドレン達です。


成長したピモ


ちなみに、副部長はごっち。

活動内容はE302号室の植物への水やりと植え替えです。
なお、園芸部に入部するともれなくロボコンサークルへも入部になります。

どっかの怪しげなサイトみたいだね(;´∀`)

※岐阜大学ロボコンサークル支部:園芸部は架空の団体です

新入生講習会(ハードウェア)


いまさらですが新入生講習会です。

今回はどんな工作機械があるのかと、部室にある工作機械の使い方を教えました。

ただ、借りた部屋に入れなかったりして教える方がテンパってたからなぁ・・・。

ちゃんと教えられたかどうか心配です。