オッサンとバイエル、ピアノ等コンテンツへスキップオッサンとバイエル、ピアノ等オッサンは生きている。Piでやれば、WiFi経由でストリーミング映像リアルタイム・ディストリビューション、なども可能であるな。......しんどいからやらないけど。......けど、やりたいなあ。Piに入れとけば、自宅のテレビでDLNA経由で見る、とかも一気に可能だわ。問題は、3.3Vロジックだったりするのが扱いづらいんだよなー......。昨日みたいに超音波センサなんか付けようとすると、途端にひと苦労するもんな。5Vの3端子レギュレータを別建て、センサの入力も結構一苦労して読まなくちゃならん。あと、アナログ入れるのが難しい。金をかければ、プラグインみたいなものはいくらでもあるだろうとは思うんだけど......。JST唐突だが、虫瞰(ちゅうかん)動画を撮りたいっ、などと思ったのである。それはTwitterのだいぶ前からのお知り合いで、クリエイターの齋藤美紀さんという方が、このところArduinoでのロボット製作を試しておられ、それに刺激を受けたということも大きい。私のほうがArduinoに関しては少しばかり先達なのだが、モーターで動くものについては齋藤さんのほうが熱心に取り組んでおられるので、まあ、インスパイアされたわけである。モーターで動く小さい台車にデジカメを乗せ、走り回らせて動画を撮りたい。虫の視点で動画を撮るわけだ。人の視点では思いもよらない、家の中のいろいろなものが写り込んで、面白いのではないだろうか。Arduinoで制御し、手持ちの超音波センサで障害物を避けるようにしたい。できるだけシンプルに作るため、操向装置を工夫する。普通ならサーボなどを用いて操向輪の向きを操作するのだろうが、ここを単純にしたい。3輪の台車にし、後輪をキャスターのようなものにする。前進時はまっすぐに向くが、後退させるとモーメントがかかって後輪が傾き、左右どちらかに振れるようにする。すると、前進・後退の制御のみであちらこちらに台車を走行させることができるだろう。直進していって、ある程度まで壁などの障害物に近づくと、後退させる。後退させると、左右どちらかに向きが振れるので、超音波センサで測距しつつ後退させ、ある程度障害物が離れたらまた前進させる。Arduinoでモーターを回すには、FETやトランジスタを用いる方法もあるが、前進・後退をさせるためには逆転ができた方がよい。それをFETなどを使ってスクラッチでやるのは面倒くさい。そこで、「モータードライバIC」を購入して、手っ取り早く済ませよう。検索すると、よく売れていて入手しやすく、かつ他人の作例も多そうなものには東芝のTA7291Pというのがある。メーカーのサイトには生産終了予定と出ているものの、秋葉原へ行けば多分千石電商あたりに置かれているだろう。180円とか300円とか、そんな値段なので、どうってことはない。このモータードライバに合うような模型用のモーターを選ぶ。スペックシートによるとTA7291Pは1A流せる。乾電池で台車を動かすとして、Arduinoには5Vがいるから、単3×4本の6Vとして、良さげなものをマブチのページで見繕う。6Vだと電流が途端に2.9Aくらいにハネ上がり、モータードライバに合わない。急に1000円近くするので、趣味の工作にはちょっとどうかと思う。それで、電圧は3端子レギュレータを一つ買って落とすとして、3Vのものを見繕うと、「FA-130RA」というのに結局落ち着きそうだ。このモーターはよく使われているようで、他の方の作例にも良く出てくる。電圧は3Vまで、500mAだから、TA7291Pで動かすにはぴったりだ。このモーターをタミヤあたりのギアボックスにうまく取り付ければいいだろう。ギヤボックスを探すと、モーター込みのものも多くあるようだ。見ていると、このFA-130RA込みのギヤボックスがある。「タミヤ・3速クランクギヤーボックス」というやつだ。モーター込みで600円かそこらは安い。最後に、ゴムの車輪を三つ、だな。これは何か、いいものがあるだろう。休みなので、さっそく秋葉原へ行き、いろいろと買い込んでくる。秋葉原にはないものを、帰りに北千住の東急ハンズで買う。買い込んできたブツいろいろまず、タミヤの「ミニモーター標準ギヤボックス」というのを買ってみた。モーター付きだが810円。安いかと言うと微妙なところだが、自力でギヤをいろいろやるとこれが結構大変なので、まあ、値段はこんなところだろう。ミニモーター標準ギヤボックスそれから、走行させるためのゴムタイヤを買う。向きをうまく変えるための「キャスター」は東急ハンズで買う。タイヤとキャスタータイヤはさておき、この「キャスター」が、今回の私の工夫だ。前進・後退のみ、モーター1個の制御で、操向もしてしまおう、という工夫だ。このキャスターの変向角度を一定に制限し、後退する時だけランダムに向きが変わるようにするのだ。それから東芝のモータードライバ「TA7291P」と、モーター用に電圧を落とす3端子レギュレータ。3端子レギュレータは3.3Vのものを探したが、なかったので、2.5Vのものを買った。これでだめなら、抵抗分圧で電圧を落とそう。ギヤボックスは組み立てるとこうなる。これを、いつもの100円ショップ「ダイソー」にあるアクリルの枠にねじ止めし、タイヤを取り付け、例のキャスターも取り付ける。このキャスターの根元に、適当な金具を共締めし、変向角度を制限してやる。これが、「モーター1個だけで向きも変える工夫」である。ためしに、2.5Vで動かしたがどうも力がなくていけない。そこで、ギア比をうんと落とし、9Vを直接モータにくれてやることにした。電流を測ると、200mAくらいなので、Arduinoに直接流さなければ許容範囲である。機械のほうはこれくらいのぞんざい適当、次に電子回路のほうに取り掛かる。次のように考え、この通りブレッドボードを作る。モータドライバ及び超音波センサ結線要図モータ付きの台車に取り付けると、次のとおりである。スケッチは次のように書く。これを走り回らせると、次のようになる。これにカメラを積み込み......で、動画を撮影するわけだ。這いまわっている感じが出て、いいと思う。JST以前、Arduinoのアナログ入力にサーミスタをつなぎ、温度計にして遊んだ。最近はLCDディスプレイに温度を表示してみたり、なかなか面白い。PiはWebによくなじむ。ApacheもPHPも走る。サイトで公開しておられるADCアクセスのためのソースコードを拝借して遊んだが、これを使ってWeb温度計にしてみた。ブレッドボードにAD変換ICのMCP3208と、サーミスタ、分圧用の抵抗1kΩを置き、適切に配線する。Kit」に入っていたMF11-503Kというサーミスタをそのまま使う。それから、C++でこんなプログラムを書く。Bではそのままでは動かない。一部の型キャストなどを変更する必要がある。それについては先週のエントリで記してある。その間から分圧をとって温度を測る。ウェブ公開しておられるソースコードを拝借した。K);}これは単に、サーミスタで計った現在の温度を標準出力に書くだけだ。これを「popen();」で開けば、PHPで読める。$temp?>°C</td&t;</tr></table></tr></table></td></tr></tr></table></center></body></html>テーブルの幅を温度計のアルコール柱に見立てて、赤い帯で表すようにしてみた。Arduinoでも同じようなことはできるが、Arduinoで難しいのは、こういうふうに、無駄に画像を配置したり、少し分量の多いHTMLを書いたりすることだ。Piには造作もなくできてしまう。Piで同じことをしようとすると、アナログ入力にAD変換ICを準備し、これとの通信にもいろいろと研究の上で取り組む必要がある。簡単で刺激的な目的のために少しプロトタイピングをしてみようと考えている多くのクリエイターがなしうるところではない。Piをはじめよう」にもそうしたことが少し書かれてある。Piは要するにLinuxマシンなので、ウェブサーバも選り取り見取りだ。2でサービスするのは難しく、不可能ではないにもせよ、ウェブ・コンテンツに写真を置くなどというのはほとんど無理であった。Piはコンピュータ・パワーが大きいから、大きなウェブ・コンテンツも本体内に飲み込んでしまえる。Piで遊ぶのに、なにも世間の教科書通りにPythonやRubyの作例を打ち込むだけが能ではない。CだってC++だって、PerlだってPHPだって動くはずである。SMTPもPOPもNTPも、なんだって動く。MySQLだのPostgreSQLだのも動くだろう。Apacheをインストールして動かしてみよう。それから、PHPでGPIOを突っついてみよう。これは、PHPでハードウェアを動かすことにつながる。無駄に贅沢なWebインターフェイスでLチカ、というのも面白い。Apacheのインストールに先立ち、今動いているサービスを確かめようまず、今起動しているモノを確認してみよう。Piに入っているのは「Raspbian」だ。RaspbianはDebian系のディストリビューションなので、chkconfigはない。私はUNIX育ちのオッサンで、SVR4.2の管理人を長年やっきた。Coreを使ってきたので、Debianは良く知らないのである。ま、これも機会だから、ちょっと体験してみようではないの。ネット情報によると「insserv」「update-rc.d」「sysv-rc-conf」「rcconf」「upstart」などがあるという。5:sudoS:16:S:raspi-configS:10:S:udev-mtabS:06:S:checkroot-bootclean.shS:16:S:bootmisc.shS:06:S:kmodS:16:S:plymouth-logS:07:S:checkfs.shS:06:S:mtab.shS:10:S:procpsほほー、なるほど、コレは多分、左から現状(StartかKillか)、起動順、起動すべきRun-Levelのリスト、サービス名、だろうなあ。はて、S、Kじゃないほうの、Run-Levelの「S」は、なんだろ、と調べると、「起動順で一番はじめ、かつ、どのRun-Levelでも共通で起動」ということのようである。'(pache)|(ttp)'#なんてことをやっても、全然何も出ないから、デフォルトのRaspbianではhttpらしきものやApacheらしきものは何も動いていない。