2006-09-28

PIC:メトロノームを作成しました 

久しぶりに電子工作らしいことをしました。



電子メトロノームをPICで作成です。
PICは16F84Aを使用して、PICの開発にはMikroBASICを使いました。
UP/DOWNのSWでスピードを変更できてスピードはLCDに表示させるようにしました。
スピードに合わせてLEDの点滅と圧電素子で音を鳴らしてみました。
LCDのルーチンが結構メモリを食ってしまうらしく、もうほとんどあまりがありません。
本当はまだ色々機能をつけたかったのですが 無理のようです。

LCDを使わないように工夫をして機能UPを考えています。
電子メトロノーム第2弾考案中!!


とりあえず今回の回路図は MTRO.gif 。

ソース は以下の通りです。
-----------------------------------------

-----------------------------------------

2006-09-16

汎用USB-IOをブレッドボードで試す! 

汎用USB-IOのテストが手軽に出来るようにブレッドボードに接続できるように考えてみました。
上の写真はテクノキットの汎用USB-IO用です。
テクノキットのHPのUSB-IO関連基盤で紹介されているコネクタBを直接取り付けています。
足が短いので、足を押し付けて確実に差し込めるようにしています。


下の写真はKm2Netの汎用USB-IO用です。
こちらは2列のコネクターがついているので1列になるようにしています。
そのままの順番ではピンの順番が123456・・・とならず、
214365・・・ となり使いにくいので正し順番になるように2本ごとにクロスさせています。
写真をクリックすると少し大きくなるので確認してみてください。

このブレッドボードを使って説明をして行きたいと思っています。 Posted by Picasa

2006-09-12

本:手作りUSB機器 

本拠地で公開している 汎用USB-IOをVB、AB、Excelなどで簡単にコントロールできるようにするDll(vbausbio.dll)を使った記事が載っている本です。

アマゾンの書評をみると結構きびしいことがかかれてありました。
-- アマゾンの書評から抜粋 --
本の中で何回もvbausbio.dllというネットにある個人が作ったファイルから関数を引き出して使います。その度に筆者はその関数を説明してくれるのですが、他にどういった関数があるのだとか教えてくれない。つまりこの本だけだと応用しようにもできないのです。
-----------------------------
自分のHPでも解説を入れないといけませんね。
サンプルも何本かあるのですが、記事を付け足しで更新しているので読みづらくなっていると思います。
ちょっと、見直しをして更新をしたいと思います。

また
-- アマゾンの書評から抜粋 --
無理にオリジナルを作らずに、たとえばUSB-IO販売会社のひとつであるテクノキットの出しているボードについて解説、応用などにしてもらったほうが親切だったと思う。
-----------------------------
こんな書評もありました。
テクノキットさんから汎用USB-IO関係の新製品も出る予定なので、取り寄せて試用レポートを書けるといいですね、こちらもこれからのHP更新ねたにしたいと思っています。

2006-08-11

安物買いの銭失い! 

トラックのウインカーを流す」で実車で試したらすぐ壊れてしまいました。

その原因がほぼわかりました。
回路設計は大丈夫でしたが、部品の選択が悪かったようです。
リレーをいつも安いものを購入していたのですが、やっぱり安いものはそれなりですぐだめになるようです。
車は思っているより悪条件なので性能に余裕が必要な気がします。

HPには載せていないのですが、自分が乗っているMOVEは集中ドアロックのアンサーバックがハザードではなくルームランプになっていて使いにくいのでハザードがつくように改造をしました。
その時も同じリレーを使ったのですが、1年程度で壊れてしまいました。
今は、リレーを使わすパワーMOS-FETを使っています。

FETを使うと回路設計は大変ですけど、耐久性はよくなりますね。

トラックのウインカーを流すもFETで見直しが必要ですね。ですが、
先日運ちゃんの友達に聞くとウインカーはもういいのでLEDをいっぱいつけたいといっていました。

そろそろ新しい話題で作りたいと思っていたので、よく聞いてチャレンジの予定です。

2006-06-29

Linuxで汎用USB-IO 

HPを更新してUSB-IOをFC5(Linux)で使用するを公開しているのですが、Linuxを使ってUSB-IOを使おうとされている方が増えているのを実感しました。

自分のHP内のアクセスランキングでは第3位までUPし、メールや掲示板での問い合わせが増えてきました。

今回、公開しているサンプルソースはFC5だけではなく他のディストリビューションでも動作するようです。

Vine Linux 3.2でも動作ができたと報告や、
NAS製品のDebian GNU/Linuxでも動作させようと頑張られている話も聞きました。
NAS製品は気になっており、自分でもいつかはトライしたいと思っています。

サンプルソースももう少し充実させねばと思っています。

今は時間が取れていないのですが、時間を作ってやりたいと思っています。

2006-05-20

Linux、始めてのXプログラミング 


USB-IOを使うことができたのですが、コマンドライン端末でprintfの出力ではプログラムを作った気分にならなかったのでGUIな画面に挑戦してみました。
Gladeで簡単Xプログラミングを参考にさせていただきました。

数分でGUIなプログラムができてしまいました。
こんなに簡単にできてしまうとは思っていなかったので感動しました。
と言ってもウインドウが表示されただけですけどね。

本来の中身を記述するにはGTKと言うものを勉強しないといけないようです。
Windows上のC++と雰囲気がにていて、画面を作っていく過程はJAVAのようでもあるしなんだかいけそう。
Linuxは難しいと思い込んでいたので、先が明るくなった気分です。

クライアントプログラムができたら、今度はサーバープログラムに挑戦しないといけませんね。
Linuxはどちらかと言うと、サーバーの方が得意な気がしますので。

2006-05-17

Linux(FC5)で汎用USB-IOを使うための環境 

汎用USB-IOをFC5で使うためには開発環境を作成し公開しているソースを自分なりに修正してコンパイルする必要があります。

コンパイルするためには開発ツールとlibusb用の開発ファイルが必要です。
そのため、インストール時に開発ツールを選択しておきます。
インストールができたらlibusbを使うための設定をします。
GNOMEを使っている場合はアプリケーションの「Add/Remove Softwear」を選択しパッケージマネージャを起動します。
Listを選択するなどして一覧を表示させます。
その中でlibusb-devel - 0.1.11-2.i386 - Libusb用の開発ファイルにチェックをつけて適用させます。
環境やUPDATEの状態でバージョンは変わるかも知れません。
これで開発環境は出来ました。

自分の場合はインストール時にLibusb用の開発ファイルも指定しましたが、後でも先でも大丈夫だと思います。
しかし、バージョンが違うとコンパイルが出来ても動かせないので良く確認しましょう。
パッケージマネージャのListで確認するとlibusbとlibusb-develがあると思います。
libusbのバージョンとlibusb-develのバージョンが同じになるようにします。

次はコンパイルの手順です。
コマンドライン端末を起動し、ソースのあるフォルダーに移動します。
ソースをコンパイルします。
cc -o usbio_test usbio_test.c -lusb
と入力すればコンパイルできるはずです。
(ソースファイル名、オブジェクトファイル名は読み替えてください)
インクルードファイルやライブラリの場所が違う場合は
usb.hなどを検索しフォルダーを確認します。
フォルダーを指定してコンパイルしてみてください。
cc -o usbio_test usbio_test.c -I/usr/include/ -L/usr/lib/ -lusb

次は実行です。
./usbio_test
最初の./はカレントフォルダーを示します、これが無いと実行ファイルがあるフォルダーで起動をかけても動きません、この辺はWindowと違うところですね。
もし、root権限がないユーザーで上手く動かない場合はsuでルート権限にして実行してください。

ルート権限が無いと動かせないのは現在調査中です、すみません。

カーネルの再構築とかは必要ないので比較的簡単に出来るのではと思います。
特殊なことはしていないのでおそらくバージョンが変わってもコンパイルしなおせば動くのではと思います。

色々教えていただいたくまさんのおかげでFC5で汎用USB-IO、USB-Anが使えるようになりました。
いまだに詳しいことはほとんど分かっていません、くまさんのHP「熊の巣」でFC4,FC5でUSB-Anを使っている記事があります、いろんな事が詳しく説明されてありますので参考になると思います。

最後に、ここで公開しているソース等は自由に使っていただいて結構ですが、自己責任でお願いします。

Linux(FC5)でUSB-Anを使う 

FC5で今度はUSB-Anを使うサンプルです。
開発環境は別で載せます(libusbの開発モジュールが必要)

ヘッダーファイルは先の書き込みの musbiobase.hを使います。

10bitAD変換で4ポート取得する例を作成しました。
usban.c

Linux(FC5)で汎用USB-IOを使う 

開発環境の作成に苦労しましたが、最新のFC5で汎用USB-IO及びUSB-Anを動作させることができたのでお知らせします。

まだroot権限が無いと動かないのは調査中ですが、動いているサンプルソースを載せておきます。

開発環境とUSB-Anのサンプルは別で載せます。

汎用USB-IOを動作させるための基本的な関数が入っているヘッダーファイルとそれを使ったサンプルソースになります。

まず、ヘッダーファイル msubiobase.h の内容です。
musbiobase.h


次にサンプルソースです、これは簡単な出力と入力を行っています。
usbio_test.c

2006-05-08

Linuxで汎用USB-IOその2 

良く探して見たら、Linux標準のHIDを使用してUSB-IOをコントロールしている例がありました。
こちらの内容はWindowsでVBによりコントロールしているパターンと良く似ています。
まだ、試していないのでなんともいえないのですが、標準のHIDを使用しているので
最新のFC5にも対応可能なのではと思っています。

以下のブログを参照してください。
USB-IO その3
USB-IOその4

時間を作って試して見たいと思っています。

2006-05-01

Linuxで汎用USB-IO 

Linux(FC4)用のドライバーは今まで伊藤さんのサイトでダウンロードできていたのですが、現在はリンク切れになっているようです。

困ったなと思っていたら、
ブログ(g26a345の日記)のUSB-IO その2にFC4の汎用USB-IOのドライバーの事が書かれてありました。
どうも、カーネルの再構築(パッチをあてる)はしなくてもコンパイルしたmorphy-usbio.koってのを、パッチとは別に作成し、それをinsmodすればそのままで動くようです。
ただし、rio500に取られているらしい。
echo 010101010101 >/dev/usb/rio500
とかやったら動いた。
とあります。
面倒なことをしなくても、rio500で動くようです。

これから試される方はこの方法でも可能なのではと思っています。
ただし、UPDATEはしないほうがいいのではと思います。

2006-04-27

本:光で遊ぼう!LED電飾&蛍光灯 

先日本屋で買ってきて、現在は読んで見ているところです。

自分が電子工作でやっている事とかなり内容がいっしょだったので「トランジスタ技術」の本を買いに行った時に思わず買ってしまった本です。
これから電子工作をはじめよう!、まずLEDを使って何かをしたい。というような人にはとても参考になるのではと思います。
図や写真を上手に使い分かりやすい内容になっています。
LED、抵抗、CRDなどの事も詳しく書かれています。
CRDは不明な点が多かったのですが、これで安心して使うことが出来ます。

電子工作のためのR8C/Tinyスタートアップ 

『電子工作のためのR8C/Tinyスタートアップ 』という本を先ほど注文してきました。
PICマイコンもマスターできていないのにまた新しいマイコンに手をつけようとしています。

R8C/Tinyはどんなマイコンなのでしょう、試用レポートを書いて行きたいと思っています。



2006-02-21

フリーのPIC用BASIC 

mikroElektronikaでダウンロードできるPIC用のBASIC、mikroBasicを使ってみています。
各PIC毎に色んなサンプルもいっしょにインストールされます。
HELPは英文(日本語版が無いので英語版を使用しています)のため、ちょっと大変ですが、しっかり書かれていてサンプルが無い命令なども大丈夫そうです。
全ての命令が使えるのですが、作成できるプログラムのサイズに制限があって、2Kを超えるHEX出力が出来ないようです。(自分にはこれで十分かなと思います)

試しに昔の定番のPIC16F84Aで作成してみました。
LEDのON/OFF、LCDへの表示、SW入力、ここまでは簡単に出来ました。

PICと他の機器(XPort、PC、他のPIC)をつなげる練習のために UART (シリアル通信)から文字を受け取ってその文字をLCDに表示させてみました。
本来PIC16F84AはUARTをサポートしていないのですが、mikroBasicの命令にSoftware UART があり全く苦労をせずに実現できました。
ただし、基本的な事ではまって3日もかかってしまいました。
通信以外の処理をしている時は受信出来ないという当たり前の事に気づかず苦労しました。
最初は、スピードの誤差とかノイズとか疑っていましたが、原因がわかって直すときれいに受信できています。(すばらしい)

1つ難点を見つけました。
色んな関数を使えば使うほどメモリーを使用してしまい、シリアルからLCDを表示させるプログラムでメモリー(RAM)がぎりぎりの状態です。(使い方が悪いのかな?)

PCとPICの接続テストは出来たので次は本来の目的のXPortや他のPICとつなげてみたいと思います。(アナログ入力も合わせてテストの予定です)

今回使用したテストプログラムや回路は時間をみてHPにUPする予定です。

2005-12-08

USB-An(アナログ入力)テストPG 

現在試用中のUSB-Anの動作確認をした時に実際にコーディングした内容を載せておきます。
言語はActiveBasicで
vbausbio.dll(本拠地で公開している汎用USB-IOをコントロールするためのもの)を使用しています。
USB-Anに対しては入力ができるように初期値を設定し、
入力するアナログポートを指定後、
データを取得といった手順になります。
取得後値を換算して温度表示させています。
ログ出力を含めてもこの程度のコーディングでOKです。

'---------------------------------------------------------
' ここから下は、イベントプロシージャを記述するための領域になります。

'--------------------------------------
' Main画面が閉じられた時の処理
'--------------------------------------
Sub MainWnd_Destroy()
USBANTEST_DestroyObjects()
PostQuitMessage(0)
End Sub

'--------------------------------------
' ボタンが押された時の処理
'--------------------------------------
Sub MainWnd_CommandButton1_Click()


'USB-An初期処理
AnInit()

'1分毎のインターバルタイマーを起動する
SetTimer(hMainWnd,1,60000,0)

'Logタイトルを出力する
LogTitle()

'データ収集
AnGet()

End Sub

'--------------------------------------
' タイマー割り込みが発生した時の処理
'--------------------------------------
Sub MainWnd_Timer(TimerID As DWord)

'データ収集
AnGet()

End Sub

'--------------------------------------------------------
' ここから下は、ユーザー定義関数を記述するための領域になります。

'======================================
' Anポート初期処理
'======================================
Sub AnInit()

Dim lngRet As Long

'ポート0 READ設定(読み込みが可能なようにOFFを出力)
'全ピンread
lngRet =uio_out(0,&HFF,0)

'ポート1 
'An3入力 (上位2ビット:Anポート 下位2ビット:下位2ビット入力値)
'3(0011):An0 7(0111):An1 11(1011):Pin2-An2 15(1111):An-3
lngRet =uio_out(1,&H0F,0)

'AD変換が落ち着くまで待つ
Sleep(500)

End Sub

'======================================
' データ収集処理
'======================================
Sub AnGet()

Dim lngRet As Long

Dim lAnPinNo As Long
Dim byRData As Byte
Dim sglData As Single
Dim strData as String

'An入力ピン切替
lAnPinNo = 0
lngRet =uio_out(1, lAnPinNo * &H4 + &H3, 0)

'8Bit入力
lngRet =uio_inp(byRData,0,0)

'8Bit(0-255)の値を温度(0-50)に変換する
sglData = byRData*50/255
'EditBoxに値を表示
SetWindowText(GetDlgItem(hMainWnd,EditBox1),Str$(sglData))

'ログファイルに出力する
LogWrite(sglData)
End Sub

'======================================
' ログ初期処理(タイトル出力)
'======================================
Sub LogTitle()

Open "log.csv" As #1
'最初(ファイルが空)の時にタイトルを出力
If Eof(1) Then
Print #1, "日付,時間,温度"
End If
Close #1

End Sub

'======================================
' ログ出力処理
'======================================
Sub LogWrite(sglData as Single)

Dim strData As String

strData = Date$()+","+Time$()+","+Str$(sglData)
Open "log.csv" For Append as #1
Print #1, strData
Close #1

End Sub

2005-12-06

USB-An(汎用USBでアナログ入力) 

Km2Netから新たに販売されているUSB-Anを現在試用中です。

これは汎用USB-IOにアナログ入力が可能なPICを組み合わせたもので送料込みで3000円(Km2Netで確認してください)販売されているものです。

汎用USB-IOはネーミング通りでデジタルのIO(入出力)ができるものですがアナログを扱うためにはAD変換ICやPICなどで別に回路を組まないといけなかったのですが、USB-Anの基板のみで(汎用USB-IOと同じ命令で)アナログデータが扱えます。

また、ジャンパー設定でアナログ入力1とデジタルIO4のパターンからアナログ5とデジタル無しのパターンまで6通りのパターンで入力ができます。

写真ではLM35(温度IC)とレベル変換用のLM358で0~50℃を0V~5Vの電圧になるように回路を組み温度計として機能するようにしています。(基板の右下にたくさん穴が空いている場所がフリースペースで自由に回路が組めるようになっています、その場所に組み込んでいます)
回路はLM35(実験)を参考にしています。

プログラムも回路も簡単にできました。LM35(実験)の回路通りで部品も4点、プログラムも4行程度
です、もちろん実際のプログラムでは表示したりファイルに書いたりする処理を追加したのでそれなりに行数が増えました。

あとは精度がどれくらいあるのか気になります、コンピュータ(USBの5V)から電源を取っているのでどれくらいコンピュータの5Vが安定化されているかにより精度が決まるのではないかと思っています。
2.5V程度の定電圧を発生させて同時にアナログ入力させて補正をしようかと思っています。
5Vが変動してもアナログ値が取得できるようになるのではと思っています。

色々試して、結果をホームページに載せる予定です。 Posted by Picasa

2005-11-27

チョロQにLED、充電中 

5Vの電源を用意して充電をしているところです。
スイッチを省いたので充電中でもひかります。

電源はUSBから取るようにしたのでコンピュータの電源が入っている時はずっとついていて、コンピュータの電源を消してもしばらくの間はついていて、徐々にきえていくという感じです。 Posted by Picasa

チョロQにLED、組み立て中 

組み立てている途中の写真です。
こんな感じで上部の配線と下部の配線をつないで組み立てます。 Posted by Picasa

チョロQにLED、内部配線の充電端子側 

作業しやすいように上側と下側(充電端子側)は完全に配線を分けました。
組み立てるときに線をはせるようにしています。 Posted by Picasa

チョロQにLED、内部配線 

内部の様子です、固定は全部ホットボンドでしています。
バッテリーの位置はこの位置しか入りそうに無いようでした。
ちょっと後ろよりに取り付けています。 Posted by Picasa