2013年2月 5日 (火)

チャリよ、おまえはどこにおるのじゃ?その後

皆の者、大儀じゃ。
またブランクがあいてしまったが、以前作ったチャリンコ検索システムが壊れてしまったので必要にかられ作り直してみた。
ダイソーで売ってた4連LED(もちろん100円)を改造したんだが、買ってから気づいたんだがこの筐体の裏側は簡単にとれる。
それに8ピンマイコンを詰め込むスペースもあるので改造は非常に簡単であった。
LEDのひとつを基盤ごと切り落として、そのスペースに赤外線受光素子をつっこんでみた。
使用したPICとプログラムは前回と同じものだが、LEDを3個つけるのでトランジスタをドライブする必要がある。
ブレッドボードで確認後、半田付けしてルンルン気分で動かしてみると。。。
赤外線リモコンの発光に同期して動かない。。。
2時間ぐらい調べあきらめかけたところで、最後の神頼みのパスコンを赤外線受光素子のVDD-GND間に入れてあげるとまともに動き出したわい。
またもや、パスコン様様。
最初からいれろや!言う武将達よ、許してたもれ。
例によってどのリモコンも受け入れる心の広いお方だが、今度は自前の超コンパクトな赤外線送信機を作ってみよう思う。

2013012421520000 2013012421560000 2013020517200000

2013020519290000_2 

2012年5月17日 (木)

猿でもわかる無線システム その3

皆の者大儀。
3連投じゃ許せ。
さて、昨日の回路図で受信モジュールのピン数おかしくねぇ?と思った武将達よ。
するどい。
その1でお勧めしたモジュールなんだが、
・送信モジュール(315MHz)[RF315-9912] 販売価格: 350円 (税込)
・低電圧受信モジュール(315MHz)[RF315-9931A]  販売価格: 480円 (税込)
実は受信モジュールにこの子を使うと、たった1m離れると通信できないことがわかった。
本システム依頼主omo殿が、たまたま買っておいた違うタイプの受信モジュールでお試しになられたところ数十m離れて通信できると早馬報告があり。
その受信モジュールがこれだ
・受信モジュール(315MHz)[RF315-RXB12]  販売価格: 680円 (税込)
なお送信モジュールはRF315-9912をそのまま使ってみた。
やってみると。。。ほんとだわ
\200割り増しだがここは目をつぶって
見た目、コイルとクリスタルの違いがあるが、これが起因しておるのか。。。
皆のもの~!無線モジュールを買う時には選定に注意すべし!

さて、無線通信は315Mhz帯の微弱電流で行うわけだが、送受信ともアンテナつけないと距離はかせげない。
omo殿にレクチャーされたんだが、
1/4λ(ラムダー)という法則があるらしい。
以下計算式:
300 / Mhz = 波長 = λ
従って315 Mhz帯では、
300 / 315 = 0.9523(m)
1/4 λ = 0.9523 / 4 = 23.8cm
つまり24cmぐらいにしろということらしい。
モノポールアンテナというらしい。
いろいろ勉強になる。

Xbeeでいいんじゃねぇという武将達よ。
信頼性を高めるならそのとうりだが、まだ少し価格が高いな。
安いもので一個2000円前後、x2だからな。
それにこういう報告もあるから導入には気をつけるべし。

2012年5月16日 (水)

猿でもわかる無線システム その2

皆の者大儀。
さてブランク空きすぎのこの企画w。またレポートを開始したい。
赤外線通信から無線通信への対応として、不可欠でキーポイントとなるのは言わずと知れた無線送受信モジュールだ。
このモジュールとマイコンとの間の信号やり取りが重要となるわけだが、以下に実験過程でポイントとなった項目を列記したい。

ポイント1.
買ってきた送受信モジュールについてサイトの説明を見ると、
"送信モジュールの電源(Vcc, GND)を接続し、dataピンにHi/Lo のデジタル出力信号を与えます。受信モジュールの電源(Vcc, GND)を接続し、dataピンよりロジックレベルでHi/Lo のデジタル出力信号が出力されます。"
とあるがこれをこのまま信用するとえらいことになる。
まず、送信モジュールに入力する信号は周波数変調をかけないといけないようだ。
以下2チャンでの説明を抜粋しよう。
"その手のモジュールは、例えば、送りたいデータでFSK変調した信号を入力して使うとかする。つまり、送信側では、送りたいデータがHの時は○○Hz、Lの時××Hzでトグルする信号を送信モジュールに入力し、受信側では、受信モジュールの出力信号を周波数で弁別し、送信データがHかLかを判定する。"
なおFSK変調とは...(Wiki)
デジタル値をアナログ信号に変換する変調方式の一つで、周波数に値を割り当てる方式。異なる周波数の波を組み合わせ、それぞれの周波数に値を対応させて情報を表現する。
2値の場合は0のとき低周波数、1のとき高周波数といったように割り当てる。回路が比較的単純で済み、振幅変動の影響を受けにくい。アナログ回線で使われるモデムや、一部の携帯電話方式に利用される。

そうなんです。
単に送信モジュールにHIGH/LOWを入力するだけじゃ受信側で判断できんのです。
その辺の実験が、ここにも詳しく書いてあるので参考にされたし。
http://bikesalon.com/kousaku/pic/radio.html
そしてこの周波数はなんぼにするんやと突き詰めようかと思ったが、結果的に赤外線パルス周波数と同じ38Khzで動くようじゃw
だからこの周波数を採用することにした。
実はもっと効率いい周波数があるのかな?

ポイント2.
受信側だが、ポイント1を対応して信号は出てくるんだが、シリアル信号に対して論理が逆ででてくる。受信側ソフトは前回説明したようにシリアル受信しているだけなので、トランジスタで反転してからマイコンへ入力させる。

ポイント3.
受信信頼性を高めるため、受信データのうち固定値データのチェックを行う。本来はサムチェックを入れた方が良いがやってない。

ポイント4.
知り合いの武将の説によれば送信側の送り始めで息が切れると(送信から送信の間の時間があくと)、立ち上がりが悪い(コイルの充電?)のでデータにノイズがのる。
なので送信間隔が若干大きくなる最初だけ同じデータを二度送りする。連続で送り続けるシステムにおいてはこの処置は必要なし。

とりあえず今回はここまで!
ソフトと回路図はこれ。
「thermo_meter_lm74Ver9.c」をダウンロード

Prj12_2

※ソフト使用上の注意
ソフトは例によってMikroC Free版DemoLimitのため、送信プログラムと受信プログラムはコンパイルで切り替えること。ソース上にdefine定義。
それとコンパイル最適化レベル1以上でないと動きがおかしい(すまんなんでか知らんw)。
当たり前だけどまねするひとは生命維持装置とかにつかっちゃだめだよ

2012年5月15日 (火)

奇妙なLCDの発掘

皆の者大儀。
無線モジュール改造過程で数々の脱線はありながらも最新Verも運用上問題なさそうだ。
その後の進捗報告が遅れ申し訳ない。
"猿でもわかるシリーズ"、皆のものには忘れ去られとるであろう。
そして今回だが無線関係はまとめる時間がほしいしもうちょい待っちくれw

今日は無線改造の合間にやった、へんてこLCDについての体験レポートじゃ。
このLCDの名称はHT1603B、ご存知aitendoさんで売ってたもの。
見てのとうり表示内容がいかにも怪しい。
もとはあきらかに中国製品。。。
でも電池マークやアンテナマークがいいんじゃねぇ。
値段も150円。
破壊覚悟で買ってみる。
さっそくサンプルコードを元に、MikroCで作り直してみた。
7セグ部は、サンプルコードどうりであっさり表示できる。
これで任意の数値表現ができるわけだ。
さーて、期待のアイコン部をあっさりと表示してみっか。
と思ってから、ここでさっぱり進まなくなった。
英語のデータシートPCF8576を目を凝らして読み続けてもどうもIF仕様がはっきりせん。
ここで取り上げたのも、もし同じ問題を抱えておる武将がいたら何かの参考にしてほしいからじゃ。
なぜならネット上でこのLCDを使っている武将はいても7セグ部の制御のみだったからじゃ。
今日までの実験結果から理解したことは、マヤカシのLCDマッピングじゃと勘考致す。
どこに何がでるかはお楽しみみたいな

1.まずサンプルコードにある、write(0x48); がデータシート23ページ目の"MODE SET"コマンドを意味しているのは間違いないと思う(LOAD DATA POINTERコマンドはbit6がOFFだし、DEVICE SELECT/BANK SELECT/BLINKコマンドではbit4がONだから消去法で)。
つまり、M0=M1=0でMUX(4BP)モードとなる。
この4BPの4は、40x4bit RAMの4をあらわし、表示上は4ブロック目(7セグブロック)を意味すると当初理解した。

2.モードを変えてFFデータを送り続けて全アイコン全てをどうにかだせるようにはなったが、アイコン部分表示がどうもうまくいかない。

3.ここでネットの賢者武将へアドバイスを申し出たところ、モノもないのに見解を述べてくれた。この信長この場を借りてお礼申す。
さて賢者の諫言内容だが、40x4bit RAMということは20byteで、16セグ部で16byte使用しているから、残りのbitでアイコン部を制御しているのでは?
というもので、
この制御方法を元に写真1のような表示を得ることができたわけだ。
電池とアンテナマークがほしいわしとしては、これで十分なわけだが、左側のアイコンはMUX(4BP)モードでは"1"データを送っても出力できないようだ。

4.そこで、"MODE SET"コマンドのパラメータを変えて、出力データは同じものにした結果が次の写真である。
出力データは以下。
0xd7(数字0),0x03(数字1),0xb6(数字2),0xa7(数字3),0x63(数字4),0xe5(数字5),0xf5(数字6),0x07(数字7),0xf7(数字8),0x67(数字9),0x67(数字9),0xff(数字8+DP),0xff(数字8+DP),0xff(数字8+DP),0xff(数字8+DP),0xff(数字8+DP),0xff,0xff,0xff,0xff
どうじゃ。
全く同じデータ出力でありながらモードを変えるだけでこの有様じゃ。
しかもアイコン部だけ変更できるならまだしも、MUX(4BP)モード以外は互いにコモンになるようで影響しあうのはどうにかならぬか。

5.さらにわかったことだが、MUX(4BP)モードで7セグ部のDP部を点灯する時、物理的に存在しないDP(実は3桁目と13桁目のセグメントにしか存在しない)に対して"1"を書くと、設定値0x48の絵のアンテナと電池マークの下にある中国語アイコンがぞろぞろでてくる。

そんなこんなで全てを把握したわけではないが、体験レポートの終わりと致す。
中途半端で許せ。
上の写真の時のソースコードはこれじゃ。「HT1603B_LCD.c」をダウンロード

Ts3s0235

Modesetcmd

2012年2月29日 (水)

猿でもわかる無線システム その1

皆の者、大儀である。
ここのところ、omo殿依頼の無線通信システム(温度測定)を遊びで設計しておった。
備忘録兼ねて実験結果を報告しよう。
電波による通信は電波法の関係から微弱電流を扱う送受信モジュールを使うのが一番安く簡単なようだ。
送信モジュール
受信モジュール
物は例のaitendoさんで扱っている。送受信モジュール合わせて\830なり。
ちまたでうわさのXBeeよりはるかに低コスト。マイコンやその他もろもろ入れても1000円ちょいだな。
微弱電流とはいえ仕様では100m飛ぶと歌ってあり、赤外線と違って用途は広がりそうだ。
ここで気をつけてほしいのは、いろいろなモジュールがあるがCH対応のもの(エンコーダ付のもの)は今回の対象ではない。
なぜかと言うとCH押下情報ではなく測定したデータの情報伝達が必要だからだ。
温室内の温度を測定し、外を隔てて20m離れた場所の室内からモニタリングしようと言うわけだ。試行錯誤はありながら完成した。

まず、電波無線を始める前に赤外線データ通信を試みてみる。
まったく関係ないように思えるが実はこれが電波通信を行った時、多大なる意味を持つことになる。
ここでも何度か述べてるように赤外LEDが38Khzのキャリア波を飛ばすと、赤外受光素子はLOWを出力する。逆に38Khzのキャリア波でなければHIGHを出力する。
家電リモコンは、各メーカーのデータフォーマットが決まっていて、このHIGHとLOWの時間比率を変えることで、デジタルデータ "1"と"0"を表現している。
従って、信号の切り替わり時間を意識しなければならずソフトはそれなりにめんどい。
しかし送信機も自作ということを考慮に入れると、このサイトのPIC ■赤外線データ通信(USART)にあるように、38Khzのキャリア波有り時間とキャリア波無し時間を共にシリアル通信のスピードにあわせてあげると、受信側はあたかもシリアルデータとして扱えることがわかる。
実にかしこいやり方だ。
温度データについても同サイトのPIC ■簡易湿度計(LM74)で使っている温度センサーモジュールを使えばオペアンプなどの増幅も考えなくていいし精度もいい。
このサイトはハードウェア/ソフトウェア共に勉強になるわい。
できるだけ楽にシンプルに言うコンセプトがいい。
最近更新されてないみたいだから、皆の者もアクセスできるうちにファイルに落としておいた方が良いかもしれぬ。
HWもSOFTももろぱくりだが(汗)プログラム「thermo_meter_lm74Ver2.c」をダウンロード と回路図も公開致す。
なお、このシステムをぱくる場合は以下の点に気をつけてほしいわけだ。
・プログラムはMikroC Proでのみコンパイル可
・温度センサーを使用しない場合、#define DMYDATA 値を1にしてbuildする(テストデータの通信)
・温度センサーを計測するプログラムを有効にするとサイズが47%になり、DemoLimit寸前
  浮動少数演算と符号付演算があるのが大きい
・受信側でシリアル関数を使用するとRB5が汎用ピンで使用できない
・通信データ量が少ないことが前提、1200bpsを早めた場合の検証は未
Prj12

2012年2月24日 (金)

二足歩行の恐怖 兄弟仁義編

皆の者、大儀である。
何の因果かこの世に生を受けし次郎丸(仮名)だが、実は腹違いの兄貴がおり候。
知り合いの武将の設計品である。 
名は太郎丸(仮名、かってに銘々)と申す。
Ts3s0204_3
この兄貴分、実によくできた子じゃ。動画
見た目のスマートさもさることながら、アイコンタクトをおとりになり女子どもを狂わす。
あなどりがたし。
そのHW構成は絵を見てもわかるように、接点切り替えでLED制御を行う賢さ。
次郎丸よ、つめのあかをせんじて飲むべしw

Ts3s0202 Ts3s0203_2 

2011年11月25日 (金)

二足歩行の恐怖 その2

ボタン電池とコイン電池の記述がすべて逆になっていたので訂正。
許してたもれ。11/11/26
皆の者、大儀。
前回着手したCAM-10の制御がとりあえず完了したので報告しておこう。完成の動画はこれだ。
マイコンリセットの問題だが、TA7291P/マイコン/赤外線受光素子/LED/モータ負荷の消費電流合計と、おおもとの電源パワーとに因果関係があるようだ。
通常、TA7291Pを使う武将達は、ロジック電源とモータ電源は分離方式でやっとる。
モータのノイズをマイコン側に影響させたくないからであるな。
しかしながら、今回電源を2系統にすると追加電池重量分だけCAM-10の歩行バランスが難しくなるのが目に見えている。
このトレードオフが難しかったが、知り合いの武将omo殿のテストでどうにか解決したわい。
以下は、電源1系統の場合のテスト結果
・ボタン電池x3個(4.5V) ⇒ ○
・ボタン電池x2個(3V) ⇒ × 最初に数秒動いたがすぐに止まる
・コイン電池x1個(3V) ⇒ × 全く動作せず
・単5電池(アルカリ)x2個(3V) ⇒ ○
・単5電池(アルカリ)x3個(4.5V) ⇒ × マイコンリセットや暴走

よって重量バランスを考慮し、ボタン電池x3個を採用する。
ボタン電池はモータなどの大容量負荷に適さないのはわかっているんだが、所詮遊びなので電池の消耗交換は考えないようにする。
もし、長時間動かしたいということなら、いらなくなった携帯電話などのACアダプタで電源供給させ、軽めのケーブルを引きずりながら動かすのがいいだろう。
そうすっと、次に述べる電池ボックスなんて面倒なことを考えなくていいしな。

秋葉原などで、ボタン電池固定用の電池ボックスがあるようだがこれが結構高価なのだ。
しかし、この問題もomo殿の案で無事解決。
omo殿の方式は、
1.単5電池ボックスを1個用意、加工を考えるとx1がいい
2.ニッパで横切りにして半分半分にする
3.電池を直列にした状態で、ばねで少し押されるような位置を決め、接着剤で固定
できあがり!背中の写真を見てもらうと言いたいことがわかるであろう。この方法は簡単だが実に素晴らしい!

なお、背中の下に秘密のシールが張ってあるが、実はこの下には穴があいている
モータからの線だしは、もともと腹の中の単5電池の接点から取れるんだが、改造過程で線をちぎってしまったw
しかたないので、後ろから穴をあけ、おおもとのモータから線を取り出すことができたわけだ。余計な仕事を作ってしまったわい。
もし、やってみたい武将や姫がいたら、間違ってもモータ接点の線だけは切らないようにするべし。

最後にソフトの話をしよう「PRJ11_2.C」をダウンロード
実装する機能として、赤外線リモコン押下のたびに以下をサイクリックに繰り返す。
ちなみにomo殿のコロンビア(懐かしい)のリモコンでは動作しなかったとか。。。
まぁほとんどのリモコンで大丈夫じゃなかろうかのぅ。
mode1:前進モード(青LED点滅、モータフル回転)
mode2:ブレーキモード(赤LED点滅)
mode3:後退モード(逆転制御を追加、フル回転で後退するとバランスが悪いのでPMW駆動でスピードを下げながら)
mode4:ブレーキモード(赤LED点滅)
mode5:武者震いモード(貧乏ゆすり?)
mode6:スリープモード(モータ停止とLED消灯、マイコンはスリープ。。。ではない!)

また今後のソフト機能追加として、
学習機能を追加予定
上記モードの状態と各モードの経過時間をEEPに保存しておく。
電源投入時に赤外線を受信したと判断したら、記録した状態遷移を経過時間分再生させてゆく。
これだけ、ものが小さいともうHWも追加できないだろうから、これを対応したらこのプロジェクトは完了だな。

今回はスーパー武将omo殿の協力無しには、達成できなかったであろう。
執着至極。

Ts3s0138_4 Ts3s0142 Ts3s0141

2011年11月11日 (金)

二足歩行の恐怖

皆の者、大儀。
コンピュータ制御に興味あるものが一度は手にかけたくなる代物、ロボット制御。
その大きな誘惑のもとは二足歩行ではなかろうか。
一般的なロボットシステムは金がかかりすぎて道楽でやるレベルでない。
数千円で遊べるものとして、タミアのロボットクラフトシリーズなんかどうだろう。
メカダチョウなんかはわりかし二足歩行っぽい。
わしは、このCAM-10にマイコンPIC12F675を実装し改造してみた。
ネットで見ても、意外に誰もやってなさそうだ。
そんな暇人はおらんなw
ならば、わしがやろう。
こやつ役にはたたんが、酒で酔っ払ったようにふらつきながら歩く姿は中々哀愁をそそる。
モータ一個、内部カムで左右の足・腕・首を動かしているのだから驚きである。
よくできた代物だ。
既に改造完成まじかなので、報告しておこう。
動作仕様は、定番の家電リモコンで受信するたびに、前進(緑点灯)・停止(赤点灯)・後進(オレンジ点灯)の繰り返しで、人工知能は。。。
ない!
PWM制御を使えば、速度調整は可能だがそこまでやる予定も。。。
ない!
ソフトウェアやHW構成はわかっているのだが懸念はある。
1.基盤のコンパクト化(CAM-10の単5電池が入るお腹の中に回路を実装したい)
2.電源のコンパクト化(電池を後ろに背負わせたいが重いとひっくり返ってしまう)

1.は写真を見てもわかるようにどうにかクリアできそうだ。
マイコンとTA7291Pの空中配線、違いのわかる大人の配線だ。
2.については単5電池2個(3V)で、モータ駆動電圧・ロジック電圧をまかなおうと魂胆だったが暴走する。
モータを前進・後進させると、マイコンがCPUリセットされるような感じだ。
いわゆる過電流による電圧降下が問題なのか?
ロジック系とモータ駆動電源を分離すると正常に動作する。
なんか、いつも同じ問題で止まってる気がするわい。
知り合いの武将omo殿の諫言では、モータ駆動電源とロジック電源が同じでも問題なく動くとな。
果てして真相はいかに。
Cam10_1_1_4  Pr11_6  

2011年11月 7日 (月)

缶ビールの中の缶ビール

皆の者、大儀。
今年もだらだらと滞ってしまったブログ更新。
やけ酒ついでにこんなものを作り候。
ビールの中では比較的好きなスーパードライ。
動画もアップしておいた。
まぁ見事に使い勝手のないガジェット品だ。
家電リモコン(得意のほぼなんでも、どのボタンでも)に反応し、液晶の中に缶ビールが現れ、しばらく表示して消える。
この繰り返し。
もう一ひねりほしいが。。。
強いて言えば、PIC16F88で動かしているところとLCDのバックライトの制御を入れたこと。
使ったLCDは、この記事のaitendoさんで買ったNokia3300Lcd。
開店記念、脅威の99円。
大概の武将は、24F系のPICでやっとる。
プログラム領域がばかでかいから、4096色のデータを取り込めるわけだ。
千利休(もとい青海苔殿)から了解もなくもらったソフトを使って16F88用に改造。「Nokia3300LcdVer2.c」をダウンロード
青海苔殿、この場を借りて、厚くお礼申す。
使ったBuilderはHitecC。
4096色表示したいとこだが、当然16F88にそんなデータを格納できる領域は。。。
ない!
画像データをモノクロ2階調に変換し、128x128dotの画像データを取り込む。
アサヒよ、CM代、くれくれ

右端のおまけ。
モノクロ2階調にしてみて、意外とかっこいいデータになったタイガー。
今年は散々だったが、来年はぶっちぎりで優勝してほしいわいw
話が変わるがYouTubeの動画編集で設定した画像回転とバックの音楽がデフォルトで有効にならんがなんでや?
FullScreenボタンとか押してると設定がいつの間にか有効になるんだが???

1 Tiger Tiger_mono

2011年9月22日 (木)

久々の液晶物語

皆の者、大儀。
ちょっとエアコン物語から外れるが、秋葉に行った時にGLCDを買ったのでこれで遊んでみたわい。
秋月には128x64dotのGLCDがたくさんあるが、気をつけるべき点はピンピッチが2.54mmと2mmがある。
ブレッドボードやユニバーサル基盤では2.54mmの方が使いやすい。
参考にしたサイトはここのPIC、簡易オシロV2(LCD:128×64)。
簡単なアナログ波形が見えてなかなか面白い。
ただサンプリングしているわけでなく、リアルタイムにアナログデータを読んですぐ表示するだけ。
数msぐらいなら十分捕らえられるか。
マイコン出力のパルス波形を入力すると、HIGH←→LOWの切り替わりで線がちぎれるw
まぁ問題なく動作したが、せっかくのGLCDなので絵でもだしたくなるのが人情。
MikroCのGLCDライブラリを使うとDemoLimitになるので、自分でプログラムコードを作ってみる。
MikroCを使っている武将は、プログラムサイズ2Kwordの境界で頭を抱える。
128x64dotつまり1024byteコード領域を使用するわけだから、表示画像も1画面分しか入らない。
いいかげん正規版を買えってかw
まぁFree版MicroChip純正のC言語Builderを使えばよろしがな。
確かMplab C30?
しばらくやってないと忘れる
使い方は。。。
忘れたw
このGLCDとマイコンの接続だが、例のaitendoさんで見つけた10芯ケーブルが100円やと!
それと文字をbitmap化する簡単な方法を発見
1.windows ソフトのメモ帳などで文字を書く、フォントサイズを調整する
2.画面をハードコピー(Alt+PrtScreen)
3.windows ソフトのペイントに貼り付け
4.キャンパスの色とサイズ変更、幅128、高さ64、ピクセル、そして白黒設定
5.できあがったファイルをここに書いてあるグラフィック画面変換ツールでtxt化する
6.できあがったファイルをプログラムコード上に貼り付ける
Ts3s0110 Pap_0007 Ts3s0112

より以前の記事一覧