二足歩行ロボットの足だけをつくってみる
設計を初めてから3ヶ月ぐらいかかってようやく完成。
まあロボットつくろうと思った時から数えると5年ぐらいかな、ようやく一段落付いた感じ
メカ。エレキ。ソフト。全部の知識が必要で手間と時間とお金がかかる。でも楽しいから別にいいんだけどね
デザインとかは無視して作ることだけを考えて作ったのであまりカッコよくないですが。初めて作った割にはまあいい方なんじゃないかなと思ってる。
メカ
本体はどちらが扱いやすいかの評価も兼ねてアルミとアクリルを使っている。
アクリルは曲げ加工の時溶けるので寸法が狂ってしまってあまり精度が出ないのが欠点。自分の加工技術が足りないだけかもしれないけど。
アルミは弓鋸で切断したが正直しんどい・・・
サーボはネットで手に入れた1個¥700の安物。もう2個壊してストックが無く、さらに型番不明で入手もできないので、このメカの開発は終了になるかな
エレキ
コントローラは秋月で入手したR8C29を使ったシンプルな物。特に特徴はない。
サーボに送るパルスの周期は早い方がトルクが上がるとネットに書いてあったので周期を4msにした。するとサーボがプルプル発振してうまく動いてくれなかった。普通サーボに送るパルスの周期は10ms〜15msだ。4msでは早すぎたらしい。10msに設定してサーボの発振はほぼ無くなった
ソフト
R8Cのソフトは、SISOさんのTiny Servo Controller 16をベースに自分なりに手を加えた物。SISOさんに感謝
PCのソフトはほぼ1から作成したちょっと変わった物。webからでも操作できるようになっている。まだまだUIの出来が悪いのでここは何とかしたいなあ。
通信はwebsocketサーバーを立ててサーバー経由でR8Cとシリアル通信をしている。
webブラウザ <-> websocketサーバー <-> シリアルポート <-> R8C
websocketサーバー自体はem-websocketを使ってrubyで書かれています。
かなりやっつけな部分もあるけどロボの形が出来て、動くところまでいったので一応満足。
ちゃんとした二足歩行ロボットををつくるかはまだ決めてない。もっとサーボモータを買わないといけないし。設計もやり直しになっちゃう。あと時間も必要。
さて、これからどうしようかな
mbedとRJ45ジャックをつなぐ
スイッチサイエンスさんで買ったイーサネット用RJ45ジャック(トランス入り)とRJ45ピッチ変換基板を使ってmbedでethernet通信をしようとしていた。
RJ45ジャックのピンアサインがわからない?
スイッチサイエンスさんのRJ-45ジャックは秋月で売っているRJ-45ジャックとは少し違う物のようで、型番も分からずピンアサインも分からなかった。
で、いろいろ調べたらmbedのサイトにピンアサインが書いてあった
このページの一番下の図がスイッチサイエンスさんで取り扱っているRJ45ジャックのようです
これでRJ45ジャックのピンアサインがわかりました
mbedとつなぐ
+-----------+ | | | mbed | | | | RD-*--------+ | RD+*------+ | | TD-*----+ | | | TD+*--+ | | | | | | | | | ~~~~省略~~~~~ | | | | | | | | +-----------+ | | | | | TD+*--+ | | | | TD-*----+ | | | RJ-45 *-NC | | | *-NC | | | *-NC | | | *-NC | | | RD+*------+ | | RD-*--------+ +-----------+
mbedとRJ45変換基板とはこのように接続
あとはmbedのサイトにあるhttpサーバーのサンプルを書きこむだけでmbedがhttpサーバーになっちゃいました。ホント簡単ですねmbed
mbedを使ってみた
何かと話題のmbedをいまさらながら買ってみた
これひとつでI2C,SPI,USB,Ethernet,A/D,D/A,PWMやらが使えるすごいやつ
早速サインアップしてHelloWorld_LPC1768.binをダウンロード。mbedドライブにコピー後
mbedのリセットスイッチを押せばmbedのLEDが点滅する。簡単!
早速wiiヌンチャクと接続してみる
wiiヌンチャクのデータを読めるライブラリ*1があったのでこれでwiiヌンチャクのデータをPCに表示するコードを書いてみた。
こんな感じでmbedと接続して
コード書いて
#include "mbed.h" #include "WiiNunchuck.h" Serial pc(USBTX, USBRX); // tx, rx WiiNunchuck wii(p9, p10); int main() { pc.printf("WiiNunchuck Test\n"); while(1) { char jx = wii.joyx(); char jy = wii.joyy(); int ax = wii.accx(); int ay = wii.accy(); int az = wii.accz(); printf("joy(%d,%d) accel(%d,%d,%d)", jx, jy, ax, ay, az); if( wii.buttonc() ) { printf(" C:true"); }else{ printf(" C:false"); } if( wii.buttonz() ) { printf(" Z:true\n"); }else{ printf(" Z:false\n"); } wait_ms(50); } }
するとコンソールにヌンチャクの状態が表示される
joy(135,123) accel(677,523,513) C:false Z:false
初mbedプログラミングなのでエラーでるだろうなと思っていたら一発で動いてびっくり。mbed恐るべし
mbedドライブについて
mbedはバイナリの書き込み方法がちょっと特殊。そしていろいろ操作してたらtouchコマンドでバイナリの切り替えが出来ることを発見しtwitterでつぶやく。
@_strobo: mbedドライブにいくつかバイナリを保存しといて、実行したいバイナリに対してtouchしてやればリセット後実行するバイナリの切り替えができるみたいだ
とつぶやいたら結構RTされてたので。意外と知られていないことなのかなと思い一応メモ
*1:http://mbed.org/users/knaka/libraries/WiiNunchuck/ljkynp/docs/
HIDaspxを作ってみた
HIDaspxを作ってFRISKケースに入れてみました。これでAVRの書き換えがもっと楽になるぞー
中はこんなかんじです。はんだゴテで少しケースを溶かしてしまった・・・ それとUSBコネクタが外れてしまわないかちょっと心配。まあ今のところ大丈夫。
さて、これで何を作ろうかな
javascriptで作った将棋を載せてみる
この動画に影響されてjavascriptで何か作ってみたくなった
同じオセロを作るのでは面白くないから思い切って将棋にしてみたら予想以上に難しくて、ずるずると長いコードになってしまった。
まあ一通りの処理が実装できたので普通にプレイすることはできるはず。まだ半完成なのでいろいろおかしいところがあると思いますがとりあえず公開してみます。
javascript将棋
うまいことオブジェクト指向を使いこなせてないなぁ
あとツッコミはtwitterかコメントで