ロボット用リモコン作り part.3
使う部品と基本回路はできたので、リモコン本体を作っていきます。
今日の部品
ロータリースイッチ・押しボタンスイッチに加え、リモコン本体を作るために部品を集めてきました。
リモコン本体はこれにします。
・・・。
100円ショップで売ってたお弁当箱(正確にはバター入れ?)です。だって、大きさといい格納スペースといいちょうど良いんだもの。
さらに電源にはこれ。
秋葉原に立ち寄った時に見つけた「USB充電器(リチウム充電池・ソーラーパネル付き)」を使ってみます。
200円でした。これはすごい。
組み立て
電子回路を基板上に作っていきます。
とりあえずで適当に基板上の配置を考えました。が、作っていくうちにいろいろと不備があったのでちょっと変わってます。あんまり参考にならない図です。
part.1の時にスイッチの回路を書きましたが、実際の使用時にはチャタリング対策を入れておきましょう。
物理的にON/OFFするスイッチはON/OFFの切り替えの際に接触の具合によってON/OFFが高速に切り替わるような動きをすることがあります(チャタリング)。ということでコンデンサを加えて緩和させます。
上の図では右側に入ってるようなやつです。
次にスイッチです。ボタンは付け替えできるようにコネクタをつけました。基板にさし込みます。
えいやー、と組み立て。こんな感じになりました。
そして、お弁当箱に穴開けて、スイッチとか取り付けて、回路を中に詰め込みます。
こんな感じでそれっぽいリモコンが出来ました。よしよし。
とりあえず、スイッチ押したら出力部分の端子に電圧がかかってることまでは確認しました。
これで命令を送る側(リモコン)は一旦これで完成ということにして、受けて側を作って行きましょー。
今回の反省点
・電子回路的な基礎知識を結構忘れている。
・この程度の規模でも結構考慮漏れがある。
・きちんと設計図を書こう。
ロボット用リモコン作り part.2
前回の続きです。
ロータリースイッチについて
今回使ったのはこういうロータリースイッチです。6段階ほどカチカチと切り替わります。
このスイッチの裏側を見ると中央付近に端子が2本と周囲に12本の端子があります。
中央付近にある端子と12本のうちどれをつなぐか、を切り替えるという動きをします。
ただし今回は2回路6接点というタイプで、右図のように内部で2つのスイッチを持っていて、左右一緒に動くようになっています。なので全6段階となります。
6段階を伝える
ではこの6段階をマイコンに伝える方法を考えます。まぁ、こうすると一番はやいんですが。
6端子のON/OFFをそのままマイコンへ伝えます。わかりやすいのですが、6段階の情報にポートを6つ占拠するのはちょっともったいない気がします。
6つの状態を伝えるなら3ビットでいけるはず!ということでちょっと改良します。2回路だからできるやり方。
こうしてみました。これでABCの端子の出力がスイッチをひねるごとに
ABC
000
001
010
011
100
101
と変化するはず。
回路図的にはこんなふうにしました。一部切り出しなのでVとかGNDとか変なメモとかありますがお気にせず。
とりあえず自分用メモです。
もっといい方法あれば教えて下さい。
次回は基盤に実装して組み立てだー。
ロボット用リモコン作り part.1
昨年度はお試しでお魚ロボット作りなんかをしていたわけですが、今年度はお魚ロボットから進化して、実際に海に持って行って遊べるロボットを作っていきます。
コントローラー作り開始
さて、まずはロボット用のコントローラーを作ります。
コントローラーと言ってもそんなすごいものではなく、単にボタンを配置しておいて、押すとON/OFFの状態がロボット(を制御するマイコン)に送ることができるというだけのものです。
なんで本体より先にコントローラー?と思われるかもしれませんが、電気的にON/OFFがしっかり送れるものがあると電子回路確認やらちょろっとした動作確認やらに便利だからってだけです。
ということで買ってきたのは普通の押しボタンスイッチとカチカチとひねるロータリースイッチです。ロータリーの方は本体写ってないですけど。
こんなイメージでコントローラーを作っていきます。
ロータリースイッチは段階的に変えたいもの(速度とか明るさとか)の調整のためにつけます。
今回は2回路6接点のものを買ってきました。最大6段階調整できるようにします。
押しボタンスイッチは何に使うでもなくとりあえず4つぐらいつけておきます。あと+2個ぐらいは増設できるようにしておこう。
ON/OFF切り替え
まずは基本の部分。
マイコンへの接続を考えているので、ボタンによって5V/0Vを切り替えるようにしなくてはいけません。
やっちゃいけないのがこれ。
(記号がいびつなのや古いのは許してください。抵抗器とかギザギザで書いちゃいますし。自分用なので。年がバレル。)
ダメな点1:直繋ぎはマイコンへの過電流になる危険があるのでやめましょう。
ダメな点2:「どこにもつながっていない=0V」ではない。ON/OFFが不定になります。
今回はシンプルにこうしました。
いわゆるプルダウン抵抗をつけただけ。スイッチが押された時に5Vが読み取られ、押されてない時はグランドと等価=0Vになります。
今回の押しボタンスイッチ4つはもうこの回路だけでできそうですね。
次回はロータリースイッチの回路を考えます。
AVRマイコン導入 part.2
前回、AVRマイコンとライターのセットアップの記事を書いてはや約半年。
その間にパソコンがパーンして全部吹っ飛んだのでやり直します。
実質part.1スタート
準備
マイコンでいろいろ遊ぶにもいろんなソフトやライターがありますが、今回はこれらを使います。
OS:windows7 →win8だといろいろ対応してないので7がおすすめ
マイコン:AVR ATTiny2313
ライター:AVRWRT3
http://blog.digit-parts.com/archives/51728501.html
開発環境:Atmel Studio6.2
http://www.atmel.com/tools/atmelstudio.aspx
ライターの導入
まずAVRWRT3を設定します
付属のCDの
AVR関連キット/AVRWRT/AVRWRT1.x/driver/Setup.Bat
を実行。
警告が出るも、無視してインストール。
これでおk。
PCとの接続を試します
part.1の時に作っておいた画像が非常に役立った。よかった。
接続の仕方は画像の通り。
PC側ではAVRWRT付属のCD内
VR関連キット\AVRWRT\AVRWRT1.6.0.2\bin\xxbit
のAVRWRT.exeを起動します
そして検出ボタンを押して、Tiny2313が認識されればおkです。
上の写真でライターのジャンパーをつないでいる場合は電源が供給されてるので正常に認識されるとおもいます。
ジャンパー繋いでない場合はAVRに別途3~5Vの電源を供給しましょう。
AtmelStudioの導入
上記のリンク先からAtmelStudio6をダウンロード。
名前やメールアドレスの登録が必要になります。
インストールを進めて行くと.NETやらUSBドライバやらいろいろ必要になってきますがどんどんインストールしていきます。
特に何事もなくインストールできたら起動して、New Project
Tiny2313を選ぶと、ソースコード書くところに来ます。
ではシンプルソースコードを。
DDRB=・・・ //ポートの入力・出力を決めてます。
PORTB=・・・ //ポートの設定
_delay_ms() //待ち関数
PORTB ^=1 //1ビット目で排他的論理和をとって反転させる
メニューのBuildからBuild Solutionでビルドします。
で、AVR Studioと仲の良いライターなら直接AVRライターと連携して書き込みとかできるようですが、
AVRWRTとの連携がよくわからなかったので、AVRへの書き込みはAVRWRTのツールで行います。
AVRWRTを起動してFLASHの部分の参照ボタンで先ほどAtmelStudioでビルドしてできたファイルを指定します。
Atmel Studioはデフォルト設定なら
ドキュメント/Atmel Studio/6.x/[プロジェクト名]/Debug/
の中に色々出来てます。
その中の .hexファイルを書き込めばおkです。
書き込みは一瞬で終わって、さぁ動作確認だー!
光ったー!
最低限の開発環境導入、以上!
↑のLED光らせてる回路については次回。
Rで3Dグラフを作る(rglパッケージ)
※IT系はこちらへ移転
このブログでもたまに登場していますが
(データ分析でお得な物件を探したい とか)
R言語を使ったプロットを進化させてみます。
rglという3Dプロットができるパッケージを追加すると色々できるみたいなのでお試し。
(Windows上で試してみます)
導入
まず、パッケージをダウンロードします。
http://cran.r-project.org/web/packages/rgl/index.html
Windowsで動くRGuiを使っている方は楽に使えます。
パッケージー>パッケージローカルにあるzipファイルから…
を選択し、ダウンロードしたzipを読み込み。
図のようなメッセージが出ればおk。
library(rgl)
で読み込んで、使える状態にします。
3Dプロットしてみる
早速使ってみます。
サンプルで適当に乱数で作ったデータを置いておきます。コピペでお使いください。
84.4118361 67.02094633 53.30306495 1
95.19853622 19.46755224 44.81424551 1
76.99221056 21.19832946 6.679098233 2
47.11851053 44.08072688 21.83290854 3
28.17605163 70.81807808 3.038094815 3
37.79006518 17.6206705 17.85126479 3
52.70716655 3.157611848 54.80928113 2
82.17892307 52.40771784 8.826890308 1
76.72345846 45.05295159 8.254543393 2
9.100676234 28.05738328 10.33647699 3
84.80308196 57.28399693 28.78125627 1
57.77000643 14.59246153 23.5896464 2
39.83637948 10.83326358 58.19865 3
29.0778965 27.42478172 36.72898976 3
39.13353415 61.22114732 36.7095343 3
82.98384957 52.79636373 2.636465571 1
6.463960197 31.90275242 42.21141831 3
57.70714968 48.01281819 11.08404224 2
6.262877946 5.154597262 18.14285997 3
26.13265512 60.96556647 37.1863922 3
2.843575692 50.21537584 21.85217763 3
76.32971877 40.43526046 37.41980928 2
51.23026568 16.61420881 20.80880777 2
9.711487254 73.88291056 38.66993505 3
82.02349732 31.48345024 19.24464369 1
1~3列目がデータ、4列目がカテゴリか何かのつもりです。
クリップボードから読み込む機能があるので便利です。
data<-read.table("clipboard")
そしてプロット
plot3d(data[,1:3],col=data[,4])
これだけで3Dの散布図ができるすぐれもの。
そして何がすごいってプロットされてるウィンドウをマウスでドラッグすると、ぐるぐると回転させることができます。
グラフの保存
そしてここからが本領発揮。
3Dとなると人に見せる時が困りもの。いろんな方向からみた図を保存しておくのも大変なので、グリグリ動く状態をそのまま保存しておきたいもの。
最近ではそういうことが可能になってるんです。
HTML5関連で注目されてるWebGLという機能があります。ブラウザ上で3Dグラフィックをサポートする機能です。
このrglというパッケージではこのWebGLを使ってブラウザ上で3Dグラフが再現できるように保存することができます。
writeWebGL(width=700, height=700)
しかも、この1行で。
すごい。
ということで適当にweb上に置いてみました。グリグリできて楽しいです。
http://tsukemono.ohitashi.com/R/webGL/sample.html
※chromeやoperaやfirefoxの最新のなら対応してるはず。IE11でも対応してたとは思います。
slideshareすごい。
遅ればせながらスライドシェアへ参戦。
アップロードテストも兼ねて、某所で実施したデータマイニング入門講座の資料を公開してみた。
偉そうに"講座"と言ってはいますが、自分も勉強しながらです。
今年はどこぞのIT勉強会のLTででも発表できるように成果出したいもんだ。