2018年10月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

カテゴリー

ブログパーツ

無料ブログはココログ

« 2010年9月 | トップページ | 2010年11月 »

2010年10月

2010年10月31日 (日)

簡単にできる!インターネットリモコンロボの製作(4)

○STEP3 iPhoneアプリのビルドとテスト
必要なもの:iOS3.1.3のビルド環境 あまり電話やメールの来ないiPhone  ダウンロードしたプロジェクト

まずは↓このファイルをダウンロードしてください。
「RoboTa_V01.zip」をダウンロード
「RoboTa.build.zip」をダウンロード

ココログのアップロード制限から二つに分けてあります。解凍したらRoboTa_V01フォルダの中のbuildフォルダの中にRoboTa.buildを入れてください。これでXcodeプロジェクトファイルの完成です。

なお、当方の開発環境は下記の通りです。
MacOS10.5.8 Xcode3.1.4 iOS3.1.3 iPhone3GS

-------------------------------------------------------------------------------------------------
2011/2/10日更新! iOS4のSDKに対応したバージョン(0.5)はこちら
アップロード制限のないサーバに置いてますので、解凍すればそのままプロジェクトフォルダになります。

「RoboTa_V05.zip」をダウンロード
------------------------------------------------------------------------------------------------

重要です!ビルドの前にserverConfig.hにサーバの情報を書き込んでください。

当方では最終的にRoboTaViewController.mでワーニングが一つ出ています。FSKあたりでなぜかワーニングが出ることもありますが、気にしなくても大丈夫なようです。

アプリを起動するとこの画面が出ます。

Img_0183


早速テストしてみましょう。その前に、ブラウザでConsoleとVisionを開いておいてください。

STARTをタップすると「ピロロ」という音がして、赤帯が青に変わりRUNNINGと表示されます。これでwebサーバへのアクセスを開始します。

Consoleに「f300」と半角で入力してSendをクリックします。

iPhoneから「ピロロ」という音が出て約3秒後にもう一度「ピロロ」という音がします。その後すぐにカメラが起動し、写真を自動撮影して終了します。

しばらくしてVisionに今撮影した写真が表示されればテストは成功です。

アプリのSTOPボタンをタップするとアクセスを終了します。(実行中にアプリを終了させてしまっても問題ありません。)

うまくいかない場合は、サーバ情報を確認してみてください。エラーハンドリングはやっていないので、アクセスエラーがあってもアプリはなにも言いません。

次回はアプリの説明をします。

2010年10月30日 (土)

簡単にできる!インターネットリモコンロボの製作(3)

○STEP2 webページの設置
必要なもの:このページからダウンロードしたファイル一式

前回用意したサーバに必要なファイルをコピーし、webページを設置します。
ファイルは↓これです。
「cgi.zip」をダウンロード
解凍すると次のファイルが入っています。
 ConsoleMain.php 
 ConsoleSub.php
 data.txt
 command.txt
 Vision.html
 test.jpg
サーバにディレクトリを作り、以上のファイルをすべてコピーします。これで完成、簡単でしょ。下の写真のように「コンソール」(左)と「ビジョン」(右)の2画面を開いて使います。

Photo

それぞれの画面をテストしてみましょう。下の例ではサーバの直下に作ったディレクトリにファイルをコピーした場合を想定してURLを記述しています。

■コンソール
ブラウザで http://サーバ名/ディレクトリ名/ConsoleMain.php にアクセスするとコンソールが開きます。入力フォームに何か(なんでもいいです)打ち込んでSendをクリックすると、画面下のヒストリにその文字が追加されます。この時にこの文字にタイムスタンプを付けたものを、ロボタへのコマンドとしてcommand.txtに入れます。
iPhoneのアプリはcommand.txtを定期的に読むことで、入力したコマンドを取り込むわけですね。
Clear Historyをクリックするとヒストリを消去できます。

■ビジョン
新しいウィンドウを開いて http://サーバ名/ディレクトリ名/Vision.html にアクセスします。写真のように猫が表示されればOKです。ここではtest.jpgをjavaScriptで2秒ごとにリロードしています。iPhoneアプリは撮影した写真をリサイズし、FTPでtest.jpgに上書きします。
このjavaScriptは10年近く前に海外のHPからダウンロードしたもので、ブックマークが残っていないので出典を明確に出来ません。スミマセン。

これでサーバ側の準備はOKです。次回はiPhoneにアプリをインストールして通信テストをします。

2010年10月29日 (金)

簡単にできる!インターネットリモコンロボの製作(2)

花岡ちゃんのウィークエンド

タイトルに「簡単にできる」としたのは、子供の頃読んでいた「模型とラジオ」へのオマージュです。「簡単にできる」「誰でも作れる」とか「簡易型」なんてよくタイトルについてました。でも中身は結構難しくて、結局完成できない苦い思い出がある方も多いと思います。

このロボタもそうです。サーバからロボ本体まで手がけなければならないので、本来はとても「ウィークエンド」で収まるものではありません。
今回、サーバ側のcgiとiPhoneのアプリはiRoverのテスト用に試作済みのものを改造し転用します。実際にイチから製作するのは、ロボット本体のハードと、モーターコントロールのソフトの部分だけです。

もちろんこのブログでは、試作機のソースコードをすべて公開する予定なので、追試をされる方はもっと簡単です。

ただし、こういった製作記事の常ですが、オリジナルでは動くものの、追試した機械ではどうも具合が悪いということがあるかもしれません。このへんはご理解願いたいと思います。

○STEP1 サーバの準備
必要なもの:phpの使えるwebサーバ、「ホームページの作り方」の知識

まず、コマンドを入力したり、ロボタから送られてくる画像を表示したりするwebページを製作します。
自前でHPの置けるwebサーバを持っている人はそれほどいないでしょうから、レンタルサーバを借りる必要があります。僕はロリポップを借りました。ロリポプランで入会金含めて半年で3K円ちょっとです。名前やHPのデザインはあまり信頼が置けない感じですが‥ 中身は意外と硬派です。「東京流れ者」ですね。(多分意味不明では)

それから、「ホームページの作り方」の知識が必要です。HTMLを手打ちしてFTPでサーバに上げる程度の知識は必須です。レンタルサーバの試用期間にマスターしておきましょう。

そうそう、FTPクライアントもいろいろあるので悩ましいところでしょう。参考までに、僕が使っているのはMacではCyberduck、WindowsではFFFTPです。いずれもロリポップに快適にアクセスできます。

次回はサーバにファイルを設置してwebページのテストをします。

2010年10月21日 (木)

簡単にできる!インターネットリモコンロボの製作(1)

花岡ちゃんのウィークエンド

新しいカテゴリです。
ちょっと試してみたい技術やアイデアを、土日で完成できる程度の、簡単な作品にまとめてみようという企画です。基本的に回路図やソースコードを公開し、追試が出来るようにしたいと思います。

今回は「リモートブレインの夏休み」のスピンアウトで、iPhoneとのFSK通信を使った、インターネットリモコンロボを作ってみました。前に書いたように、FSKモデムの性能評価の意味合いもあります。

これが完成したロボットです。

Dscn1127  Dscn1131

ベースになっているキャタピラ車はこれです。キャタピラはツルツルのプラ製で、踏破力はいまいちですが、付属のギアードモーターは見かけによらず高性能です。100mAくらいの電流で十分なトルクが出ますし、静かです。
これにiPhone用のFSKインターフェイスを改造し、モータードライブの機能などを追加した回路を載せました。このブレットボードを2つ使っています。
iPhoneのホルダーは2mmのプラ板で製作し、両面テープでシャーシに固定しました。手動で角度を変えられるような構造になっています。その下には測距センサGP2Y0A21YKを取付け、進行方向の障害物を検出できるようになっています。

Robot+TankなのでRoboTa(ロボタ)と命名しました。

コントロールシステムはこのようになっています。(このブログの写真はクリックで拡大します)

Photo

簡単に言えば、専用のHPにアクセスし、入力フォームにコマンドを打ち込むと、ロボタが動き、動き終わったところで写真をアップロードすると言うわけです。静止画ですが、ロボタからの画像を見ながら操縦できます。

ネットワークはiPhoneの3G回線を使うので、(圏内なら)どこでも使え、ルーターへの接続などの面倒がありません。オーディオケーブルを接続し、アプリを起動するだけです。ネットタンサーなどの無線LANロボットに比べると、セットアップがとても簡単です。
また、ロボット側は単なるwebクライアントですから、サーバ型のネットロボットのように、グローバルIPアドレスは必要ありません。マンションやオフィスビルの共同型インターネット接続サービスのような、グローバルIPの取得できない環境でも問題なく働きます。

詳しい説明は今後の投稿にて。まずは動画をごらんください。

障害物のところがちょっとわかり難いですね。ロボタは前進中障害物を見つけると、自動停止し、画面上部に赤帯でSENSORという表示を出します。画像をよーく見るとわかると思います。

2010年10月19日 (火)

softModemの試験運用は謎のマシーンで!

リモートブレインの夏休み:iPhoneロボット

iRoverは大型で騒音も大きいので、室内でのテストには向きません。目の前に立派な庭園でもないと、これでFSKインターフェイスの試験運用は大変です。

そこで、先週末、インターフェィスのソフトを手直しして、こんなマシーンを製作しました。

Dscn1031

むむむ、月面のモノリス運搬マシーンでしょうか。傍らにたたずんでいるのは、アストロノーツかはたまた宇宙ロボットか? 

この謎のマシーンについては、近日中に投稿するとして… ともあれ、このマシーンのおかげでソフトの単純なミスを発見することが出来、iPhoneからの受信の安定度がよくなりました。
このページのソースコードは改訂版(v11)に訂正してあります。

2010年10月12日 (火)

Modem版への改造終了です

リモートブレインの夏休み:iPhoneロボット

製作したiPhone用モデムをiRoverに組込み、アプリとの通信を光カプラからオーディオFSKに変更しました。改造後の写真がこれです。よく見ると頭部のiPhoneのオーディオポートに、プラグが差し込んであるのがわかると思います。

Dscn0998

モデムの基板は裏返してアビオニクスボックス内に取り付けました。左の写真で配線面が見えている細長い基板がそれです。サイズの関係で、モニタ用のLEDは切り離してしまいました。右の写真はオーディオケーブルの様子です。これは2芯シールド線で引き出しています。入出力ともインピーダンスを低く設計しているので、モーターノイズの影響は全くありません。

Dscn0990  Dscn0991

iPhoneアプリとボディ側のcoronのソフトも、とりあえず通信部分だけを変更しました。が、いままでのテストの結果から、抜本的変更の必要性も強く感じています。

特にツィッターの使い方については、考え直さないといけません。

とにかく、スタートしたときには「チャットみたいなもの」という認識だったのですが、これは大分間違いだということがわかってきました。新聞などでは「ミニブログ」という言い方がされるように、ある程度まとまった発言をするためのツールなんだな、ということです。

だから現在のような、リアルタイム性の高い使い方ではいけない、ロボット側に「人格」とは言いませんが、もっと高度な自律性を持たせて、
「草むらに入り込んでしまったけど、このまま進んでいいのかな?」
なんて感じのツィートをさせないと、座りの悪い感じです。
ネットタンサー流の「テキストによるリモコン」は、ツィッターのシステムには向いていないようです。

幸い、iPhoneとボディの通信が密になったので、可能性はあります。

2010年10月 5日 (火)

SoftModem用インターフェイスのまとめ

リモートブレインの夏休み:iPhoneロボット

いつのまにかロボットネタからずいぶん離れてしまいましたが、今回で終わりにしたいです。

まずは、前回で出来上がったモデムを、coronとインターフェィスするにあたって、問題になったもろもろのこと。


■coronでは315bpsは使えない
このプロジェクトでは、昔の電話用モデムのようにPICマイコンは変調・復調機能のみ、という方針でした。そのためには315bipでモデムと通信する必要があります。

coronではシリアルポートのボーレートをconf.hのUART_BAUDRATEの値を書き換えることで設定できますが、残念ながら600bpsより遅いボーレートの設定は出来ないようです。エラーにはなりませんが、通信速度がおかしなことになります。モチロン、各種レジスタを適正にセットすれば遅い方も大丈夫なんでしょうが、ちょっと大変そうです。

そこで、PICのUARTを使ってcoronとの通信はデフォルトの9600bpsで行い、iPhoneとの通信はPICが自力で行うようにしました。
通信速度に差があるので、PIC側に100バイトほどの送信データ用FIFOバッファを設けました。


■iPhoneとのFSK通信は負論理!
SoftModem TerminalからPICに送られるFSK信号は、リーダーとしてスペース(3150Hz)が送られ、スタートビットのマーク(1575Hz)に続いてデータ、最後にストップビットのスペースから構成されています。
最初はそのままマーク1、スペース0として受信したところ文字化けで受信できませんでした。コードを調べると反転しています。つまり、負論理で送られてきているわけですね。もちろん、送る方も負論理です。

モデムってそうだったけ、と改めて思いました。
インターフェイスを自作する人は気をつけないといけません。なお、今回製作したインターフェイスではソフトで対応済みなので、普通にシリアルで送受信できます。


■ボーレートは控えめに
この回路で1225bpsでの通信実験も行いましたが、多少エラーが出ます。マイコンから同じ文字を画面いっぱいになるまで(600字くらい?)送信すると、1〜2回の文字化けが出ることがあります。波形をチェックしましたが原因は不明です。みたところきれいな波形でした。原因追及には手間ひまかかりそうです。

まあ、これまた懐かしいXmodemとかのプロトコルを実装すればこれでも使い物になりそうですが、アマチュアのソフト工作向きではないですね。315bpsなら、普通に通信している限り文字化けは確認できませんでした。あとあとのことを考えるとボーレートは欲張らない方がいいみたいです。


回路図とPIC16F886用のCCSCのソースコードとオブジェクトです。
この回路は3Vから5Vの電源電圧で動作します。uCPUシリアルにMAX232などのレベルコンバータをつなげば、9600bpsのRS232CでPCと接続することも出来ます。僕も開発中はTeraTermでやってました。

「modem_mono.pdf」をダウンロード(回路図)
 2010/10/18更新・安定度向上のためプログラム修正しました。↓
「fsk_V11.zip」をダウンロード(CCSCのソースコードとオブジェクトファイル)

動作の様子はこんな感じです。
iRoverのcoronからSoftModem Terminalに'A'を連続送信している様子です。100mS周期で送信しています。100バイトほどのバッファをもっているので、それ以内ならいっぺんに送っても大丈夫ですが、FSKでは1バイト送るのに30msかかるので、送りすぎには要注意です。

2010年10月 4日 (月)

iPhoneとのオーディオインターフェイスを再検討

リモートブレインの夏休み:iPhoneロボ

PICで作ったモデムからiPhoneへのオーディオインターフェイスを再設計します。
はじめはちゃんと考えて作ったのですが、なぜかうまくいかなくて、いじっているうちにコンデンサ1個になってしまいました。

これではダメでしょう。理不尽な回路です。もう一度、最初に設計した回路を試してみたいと思います。

まず、iPhoneの入力回路の模式図はこうなっていると思われます。

Modem

コンデンサマイクを接続するので、図のようにRで電圧を掛けています。開放電圧は2.7V、これが2.2Kの抵抗をマイク端子に入れると1.3Vほどに下がるので、抵抗Rは約2Kということになります。
さらに音声信号(交流)について言えば、ECを通してRはGNDに接続になるので、(アンプの入力インピーダンスは、おそらくこれに比べて十分に大きいので)これが入力抵抗になります。

これを踏まえて、設計した回路がこれです。FSK OUT側の回路です。

Modem

FSK OUTからはマイコンで作ったFSK信号(3KHz-1.5KHz)が入ってきます。10uFのコンデンサは交流的にはきわめて低い抵抗になりますから、iPhoneをつなげないときには、R6とR7で分圧された信号がマイク入力に入ると考えて良いでしょう。本来のマイク出力が数十mVPPくらいなので、iPhoneを接続して100mVPPくらいになるようにします。この値だとiPhoneを接続しない状態で147mVPPになります。

この回路がiPhoneにつながると、iPhone内部の2KとR7の2.2Kで分圧され、入力部の直流電圧オフセットは1.3Vほどになります。これに150mVPPほどの交流信号を重畳することになります。

ただし、先に書いたように、交流に対するiPhoneの入力抵抗が2Kあるので、iPhone接続時のFSK信号の分圧比は
 R6 : R7とiPhone内部のRの合成抵抗
になるはずです。
R7とRは同じくらいにしたので、iPhoneへの入力信号レベルは半分の約73mVPPになります。

こんな風な考え方で、回路を設計、作ってみたらダメだったのですが… 今回は何の問題も無く動きました。どうも前回の試作ではなにか間違っていたみたいです。オーディオFSKは大変、というアタマがあったので、深く追求しないでボツにしていたようです。

ともあれ、これでOKです。オシロでの測定結果も70mVPPほどで、まあまあ計算通りです。こちらも受信同様、電源電圧の影響をあまりうけません。マイコンが3.3Vでも5Vでも無調整でいけるのは有難いところです。
あーすっきりしました。

この回路はきわめて安定で、部品の値をかなり変えても動作します。コンデンサは1uFから47uFくらいまで変えても問題ありません。ジャンク箱の部品を活用できます。

2010年10月 1日 (金)

SoftModemへ信号を送る…のですが

リモートブレインの夏休み:iPhoneロボット

今回のような可聴帯域のFSKの身近な応用には、ファクスがありますね。会社勤めをしている人なら、ピーヒョロヒョロヒョロ… という音に聞き覚えがあるでしょう。あれは音声用の電話線を使って、デジタル化した画像をFSKで送っている音です。

でも、僕にとってもっと身近だったのは、前に書いたようにカセットテープへのプログラムの記録でした。80年代のパソコンには、最も安価な外部記憶媒体として、ラジカセが使えるよう、FSKのオーディオインターフェイスが付いていました。懐かしい人も多いと思います。

僕はもう少し前の70年代後半に、ようやく出回り始めた8080で作ったコンピュータで、オーディオ記録を使いました。もっともFSKでは無く、単一周波数のトーンバーストでボーレートはテレタイプと同じ110bps、256バイトのセーブになんと25秒もかかりました。

その時の経験から言うと、再生より録音のレベル合わせがたいへんです。
なぜなら、再生はイヤホンなりヘッドホンなりを接続するので、どのテレコでも出力電圧やインピーダンスは似たようなものです。ですから、前回のようなレベルを固定した回路で、テレコの音量調整だけであわせ込みが出来ました。デジタル側にLEDを入れて、点滅具合を見て調整したのを覚えています。それくらい「だいたい」でよかったのですね。

しかし、録音の方はそうはいきません。当時のテレコは音の大小に関わらずうまく録音できるように、録音時に自動レベル調整が働くようになっていました。ところがこの特性がわからないので、ものすごく小さな音で録音されてしまったり、途中で音量が変わったりすることが「なんとなく」発生しました。このためちょうどいい信号レベルの設定がシビアで、回路設計や調整で苦労した人も多かったと思います。
そんなわけで、80年代に販売された「パソコン専用テレコ」には、録音レベルの手動調整が出来るものもありました。

SoftModemでは外部→iPhoneの関係がこの「録音」に相当します。iPhoneのマイク入力には当然、そういった自動レベル調整機能があるのでは?

ということで、アッテネータでマイクレベル(数十mVPP)に落としてみたりしたんですが、結果これでした。

Modem

下半分は前回の受信回路です。送信回路の部品は、なんとC1だけです。C1を挟んでiPhoneのマイク入力とPICの出力ポートが接続されているというわけです。この定数がデリケートで、5Vのときは1uF、3.3Vの時は0.1uFでないとうまく行きません。
しかも、波形を見てもうまく行く時と、ダメな時の違いがわからないときてます。だから、他の人がこの定数で作って、無調整で再現できるかどうかも不明です。困ったもんです。

あとで、もっとしっかり実験をしてみないといけません。

ともかく、ここまでの情報でPIC16F886を使ってモデムをこしらえました。マイコンはオーバースペックですが、190円ですからよしとしましょう。電源はcoronにあわせて3.3V(実験は電池2本)にしてあります。
例によって、マイコンで「HANAOKA 」という文字列を連続的に送り出しています。315bpsだとこのくらいのスピードです。

暫定の回路とPICのソースコード(ccsc)は近いうちに公開します。

« 2010年9月 | トップページ | 2010年11月 »