2011年10月16日

アンドロイド センサーの値を取得 エンコーダー

enctest01.jpg

ロータリーエンコーダの動作確認ができました。
写真がぼやけていますが、
29517
というのが、エンコーダの値です。

初期値を30000にして、
マイナス方向にパルスが発生しているという
ことになります。

実際には、マイコンがタブレットに、データ送信するごとに
エンコーダの値を、30000にして、次に送信するまでの
変化量で、タブレット側には、表示させようと思います。

こうすることで、マイコン側の桁あふれなどに対応できると
思います。

本番は、1回転で1000パルスのロータリーエンコーダで、
位相係数モードというので使うと、1回転で4000パルスに
なります。
例えば1秒ごとにデータを取得する場合。

1秒間に7回転くらいまでなら、桁あふれが起きないだろうなと

以前のデータで、1回転で、227.6mmの移動量として
計算した場合、1593.2mm 

1秒で約1.5mの移動量。

もしそれでもオーバーフローするようなら、
初期値を30000ではなく20000に
すれば、プラス方向への桁あふれに余裕が持てることになるので
そのようにするつもりです。値の範囲は0〜65535かな。
(16ビット 2の16乗)
posted by kitt at 23:26| Comment(0) | 日記

2011年10月15日

アンドロイド センサーの値を取得 電圧の変化

電圧が0Vから5Vまでの変化を
0V=0
5V=1023
とみなして、ボリウムで、電圧を変化させて
その値を連続的に読み取る。

2箇所同時に読み取る。

テスト完了です。

もう1つ、エンコーダといって、パルス数を取得して
例えば、移動距離がわかる。というようなセンサーが
あるのですが、次は、エンコーダの値を取得する部分を
テストする予定です。

adread01.jpg
posted by kitt at 18:49| Comment(0) | 日記

2011年10月14日

アンドロイド 定期的にデータ送信

定期的にタブレットからマイコンに対して、データ要求のコードを
送信する。という仕組みが作れました。

今現在、スレッドを使って、socket通信を行っていますが
単に、スレッドの中で、インターバルをおくだけで
いいのかどうかを、今日中には試したいと思います。
(試せました)

スレッド自体は、ループしていて、

>Thread.sleep(REPEAT_INTERVAL);

このあたりがキーワードになるかなと思っています。
REPEAT_INTERVALの値は前もって、このように定義すると
//繰り返し間隔(ミリ秒)
private final int REPEAT_INTERVAL = 3000;

3秒間処理が停止されます。

スレッドというのは、ちょっとニュアンス違うかもしれませんが

会社の中にAさんとBさんがいて、AさんとBさんは別々の仕事を
している。会社としてみた場合は、2つの仕事が同時に進んでいて
連携もできるし、通常は別々の動きをしている。
というような例え方ができるかもしれません。

プログラムとしては1つでも、処理が通常は同時並行的に処理できる。

スレッドの処理が止まっても別処理は普通に動作している。
ので、スレッドで、3秒のタイマーを用意して、3秒ごとに
マイコンにデータ要求をする。というのが動作確認できました。

本番は1秒ごとくらいにデータ要求ができればいいなと思っています。

次は、アンドロイド側からのデータ要求に応じて、
センサーの値を返す仕組みを作ります。

擬似的にセンサーの役割をするボリウム(ボリューム 可変抵抗器)を
調達してきます。
posted by kitt at 14:04| Comment(0) | 日記

アンドロイド 画面非表示の必要なし

gmnkasanaritest01.jpg

アンドロイドのbluetooth通信で、
最初のsocketのconnectに時間がかかったと
いうことで、通信自体は、最初から最後まで
基本的につなぎっぱなしにしようと思い、

最初の画面で通信を確立して、その画面は
閉じない。という方法を取ろうと思います。

画面が切り替わったとき、もしかして
一瞬でも、後ろの画面(最初の画面)が
表示されるのかなと思い、図のように、
3画面で、順に遷移するプログラムでテスト
した結果、最初の画面は開いたままで、
2画面目、3画面目に切り替えたとき、

後ろの画面が表示されないことを確認しました。

>// インテントへのインスタンス生成
>Intent intent = new Intent(this, BtEcho03ThirdActivity.class);

>// インテントに値をセット
>//intent.putExtra("KuiNo", wtextV.getText().toString());
>// サブ画面の呼び出し

>startActivity(intent);
>finish(); //自画面終了

アクティビティをスタートさせてから
自分の画面を閉じるという順番です。

最初思っていた、画面を非表示にする必要はなさそうです。
posted by kitt at 04:34| Comment(0) | 日記

2011年10月13日

アンドロイド 画面を非表示にできるのか?

タブレットと、マイコンが無線でデータ通信できだしたので、

次は、マイコン側は、センサーの情報を、送信する仕組み

タブレット側は、マイコンから送られてきた情報を編集および
保存する仕組みを作っていきます。

タブレット側で、通信開始の際に、コネクトといって、
相手側と繋ぐ命令のところで数秒かかるので、やはり
一度繋いだら、プログラム終了までは、つなぎっぱなしに
したほうが良いだろうなと思います

アンドロイドのプログラムでは、画面のことをアクティビティと
呼んだりしますが、今の自分の考えでは、1画面だけは、閉じずに
ずっと開きっぱなしで、できれば、別画面が表示されるときは
非表示(隠す)ということができないかな? と思っています。
posted by kitt at 08:21| Comment(0) | 日記

2011年10月12日

アンドロイド bluetooth通信の悩みごと解決

アンドロイドのbluetoothでソケット通信で
一度closeしたあと、次にconnectするときに
エラーとなってしまっていた件はなんとか
メドが立ちました。

今回使用したbluetoothモジュールは、
初回起動、connect、closeのときに
bluetoothモジュール自体がメッセージを
出力します。

マイコン側のプログラムで、
受信したコードをそのまま送信するように
テストプログラムを作成していたのですが、

アンドロイド側が、closeしたときに、
当然bluetoothモジュールがメッセージを出力
するので、それを、マイコンが受信して、
そのコードを、アンドロイド側に送信しようと
しても、もう、closeされている。

という感じで、エラーの原因になっていたのだと思います。

テストで、マイコン側は、受信だけして、アンドロイド側に
送信しないようなプログラムに変更して、

マイコンは、動きっぱなしで、アンドロイド側のプログラムを
何回も起動、終了を繰り返したところ、
毎回正常に接続できました。


実際のプログラムでは、bluetoothモジュールの
メッセージに出てこないコードを使用して、
ハンドシェイクの、通信を行うようにしようと思います。
posted by kitt at 19:28| Comment(0) | 日記

2011年10月11日

全体の進捗を進めることも大切

今、通信のところで、少し手間取っていますが
ここでモタモタすると、よくないので

質問を投げかけたカタチで、

全体を仕上げていく方向にチカラをいれます。

本当の意味での工作作業。

穴を開けたり、箱に組み付けたり。
といったことも進めておけば、前には進みます。


今まで、いろいろ失敗した中で、わからない部分に
ずっと注目しすぎて、全体が止まる。ということが
ありました。

気にはなっていますが、できるところは前に進めて
全体の進捗を進めることも大事なことだと思っています。
posted by kitt at 21:07| Comment(0) | 日記

2011年10月10日

アンドロイドでの質問がしたいのですが...

アンドロイドのプログラムで、自分でも難しいこと
やっているかなと思いながら。。。
誰かに質問したいけど、誰に質問すればいいのかが
わからないです。

それとも、難しく考えすぎているのかな?

画面が切り替わっても、通信はずっと動いていないと
いけないな?とか。

そうなれば、後ろで動いている通信のデータを
リアルタイムで、表の画面に表示できたりするんだろうかなど。


いろんなサンプルは、1つの画面の中で完結しているのですが、
実際には、いろいろ画面が切り替わるので、その都度
通信が切れたら、再接続に時間がかかりすぎるような感じに
なるので、やはり、プログラムが動いているときは、ずっと
通信は、動きっぱなしのほうがいいかな?
posted by kitt at 20:32| Comment(0) | 日記

問題ありだけど、アンドロイドとマイコンが無線でつながりました。

アンドロイド端末と、マイコンが、Bluetoothの無線でつながり
双方向通信ができるようになりました。

ただし、まだ問題があります。

1画面だけで、完結するプログラムではないので、
通信を切ったときの再接続がうまくいきません。

最初、接続するのに、どうしても時間がかかるので
たぶん、画面とは別で、通信を、ずっと動かす。
という方式にするだろうと思いますが、

たぶん、画面間での、リアルタイムの情報通信も
可能じゃないのかなと思いながら、サンプルを
探すようになると思います。
posted by kitt at 18:16| Comment(0) | 日記

マイコン側、テストのための前準備

マイコンに有線で、"A"が送信されたら、
マイコン側のLEDを点灯させる。という
プログラムを作成して、マイコンに送られて
くるコードを識別していることと、
マイコン側に、コード(データ)が到達していると
いう確認ができるように。

この2点を確認できました。
posted by kitt at 09:15| Comment(0) | 日記

2011年10月09日

苦手意識を克服したいんだけどなあ

時期的なものもあるのかも知れませんが、
自分が「まずいなあ」と思えるときというのは

やらないといけないことが、徐々にたまってきて
どうしようと思っている間に、もっとたまってくる。

このパターンなのかなと思えます。

気持ちを切り替えるのって、
ときどき難しいなと思えます。
posted by kitt at 19:07| Comment(0) | 日記

2011年10月08日

まず、マイコン側通信のプログラム確認完了

有線(RS−232C)での
パソコンとマイコンの間に通信は
できることを確認しました。

マイコン側、プログラムで、一番基本の
データ受信、データ送信のプログラムの
テストが完了。

次は、マイコン側にブルートゥースモジュールを
つけて、無線で通信ができることを、確認することに
なります。
posted by kitt at 16:15| Comment(0) | 日記

2011年10月07日

間接的にお客様のチカラも借りる

まだ、自分では持っていないんですが
複数のお客様のところで、Windows7を
少しずつ使わせてもらう機会があり、
操作にもだいぶなれてきましたし、

ある意味で、プログラムのWin7での動作確認も
させてもらえています。

間接的にお客様のチカラも借りることが
後々、助けになってくるだろうなと思っています。
posted by kitt at 20:41| Comment(0) | 日記

2011年10月06日

マイコン側の開発環境確認

かなりてこずってしまったですが
マイコン側の開発環境の確認が
ようやくできました。

緑色のLEDが1つ点灯しているので
プログラムが作成できて、正常に
動いたという証拠になります。

まあ、これは初歩の初歩なので、これからです。

以前に作っていたサンプルで、動作しなかったので、
おかしな?と思って、それで時間がかかったんですが
要するに、使ったサンプルが、動作しない未完成のものを
使ってしまったというだけのようで、もう少し別のサンプルを
試すべきでした。

まあ、開発環境のインストール、およびプログラムの作成
コンパイル方法、プログラムの書き込み。
すべて今回セットアップしたもので、確認できたので、
OKとします。

h8kakunin01.jpg
posted by kitt at 17:05| Comment(0) | 日記

2011年10月05日

実感

ここにきて、アンドロイド、i-pad関連で
こんなことできないかな?という問い泡sが
立て続けにきました。

実作業ではなく、問い合わせでではありますが、

なんとなく、ニュースと連動して、皆さんの関心が

パソコンから、スマホ、もしくはタブレットに
移ってきているなというのを実感しています。

現時点での、自分の方向性は間違っていないなというのを
感じました。

まだ、実績がありませんが、必ず、お役に立てるものを
提供します。そう思っています。
posted by kitt at 22:13| Comment(0) | 日記

2011年10月04日

バタバタ

今日は、なんやかんやバタバタしてました。
posted by kitt at 22:40| Comment(0) | 日記

2011年10月03日

基板の配置について

3つの基板を、250×200×100の箱の中に
配置するのに、どうしようかなと思っています。

kibanhaichi02.jpg


一応、同じ面に配置しても収まるのですが、
あと、端子台が、16端子×2つつけようとしています。

箱の中に、プラ板を置き、それをベースにしようと
思っているのですが、
端子台を浮かすために、50mmほどベースを浮かす
必要があります。

面積節約を考えて、ベースの表面、裏面に両方基板を
配置しても問題ないだろうか? そんなことを考え中です。


kibanhaichi01.jpg

写真の中の、3つの基板の、左の1つが、電源基板になるんですが

基板をベースの両面に配置する場合、私としては、電源基板を、
裏面に配置して、箱のふたを開けたときに、マイコンの基板と
Bluetoothの基板がすぐ見えるようにしたいところですが、

マイコンや、Bluetoothの下に電源を持っていったら、もしかして
熱の問題が出てくるかもしれないなと思い、だとしたら、
表面に電源、裏面にマイコン基板とBluetoothの基板ということに
したほうがいいだろうか?

箱は固定するかどうかは、使う側しだいですが、写真の箱の
寸法の書いてある面に、スイッチとかLEDがつくので、
普通に考えれば、ベースの表面が上、ベースの裏面が下に
なります。

結論を近いうちに出します。
posted by kitt at 13:48| Comment(0) | 日記

2011年10月02日

テスターと、ルーペのおかげ

Bluetoothモジュールを動くように、
ハンダ付けして、テストしました。

ハンダ付けは上手ではないので時間は
かかりましたが、何とか動作確認まで
できました。

最初、TeraTermでの表示が変わっていたので
ビックリしました。バージョンが3まであがって
いました。

それでコマンドを受け付けないので、何か仕様変更
されたかなと思い、ネットからマニュアルを探して
内容を見たりしました。

結局、1箇所ハンダ付け不良があったので、
表示はするけど、コマンドを受け付けない。
ということになってしまってました。

電源を入れる前に、一通りチェックしたんですけど
見落としがありました。

テスターと、ルーペのおかげです。

本当は、ブルートゥースモジュールの小さな基板は
表裏逆なんですけど(たぶん)ここのハンダ付けが
一番苦労するところで、ハンダ不良も、ここに1箇所
ありました。

間隔が普通の基板の間隔より狭く、なおかつ、ハンダの付く
面積が少ないんです、下手なことしてると、半田付けの部分が
はがれ、はがれたら、修復がたぶんできない。

いまどき、手配線も珍しいかもしれませんが、
手配線の場合、モノがコンパクトすぎても、ちょっと困ると
言うのが正直な気持ちです。

bttestok1.jpg

bttestok2.jpg
posted by kitt at 13:46| Comment(0) | 日記

2011年10月01日

「はやぶさ」をみてきました

今日はお休みして、映画の「はやぶさ」をみてきました。

いろいろ書きたいところですが、これからみにいかれる人のため
やめておきます。

結果はわかっている。だけど良かった。

posted by kitt at 20:07| Comment(0) | 日記

2011年09月30日

タイムリミット付で使ってみる

マイコン側のプログラムをC言語で作るとき
開発の環境をどうするかということで検討中です。

秋月電子で買った中に、Cコンパイラもついていて
それを使うと、問題ないと思いますが、

いろいろと資料があるのは、HEWという統合開発環境です。

製品版は、正直今は買えません。

評価版をダウンロードすると、最初にビルドしてから60日の
使用期限があります。


通常使用のパソコンに評価版を入れるとすこしややこしい
ことがおきそうなので、普段使っていないパソコンを使用して
60日後には、プログラムと、セットアップ手順書みたいな
ものを作ったあとに、Windowsまで削除するような、考えで
いこうかなと思います。

HEWという統合開発環境は以前に使ったことはあります。
要するに、使用期限の問題で、いつも中途半端になっていた
ということなので、今回はきっちりと、セットアップ手順と
開発手順を頭に入れて、資料に残したいと思います。

統合開発環境の製品版がきっちりと入手できるようになれ。
そういう気持ちで取り組もうと思います。

ということで、普段使っていないデスクトップ機を
準備することにします。
posted by kitt at 16:31| Comment(0) | 日記