2021年6月4日金曜日
磁気ラップタイマ復活
2020年10月30日金曜日
グロム スピードメーター補正 完了
数分に 1回位の頻度でスピードメータ表示が一瞬 1km/h になるので,原因を調べてみた.といってもデバッグに使用できるのは LED 1灯だけw
メーター表示が 1km/h になるということは,メーターに対して出力するパルスが盛大に抜けていることになる.まずスピードセンサー → arduino のパルスが抜けているか調べたところ,それは抜けていなかった.
そうするとメーターへのパルス出力を行っているタイマ制御で何かおかしなことになっているはず.ここからはもう現象から原因を推定するしか無いのだが,パルス出力タイマは,
1. 出力パルス 1個分の時間をタイマで計測
2. その時間に達したら割込み発生,割込みハンドラ内でパルス幅の補正計算を行う
タイマは並行して 0 に自動的にカウントが戻り,カウントアップを継続する
3. パルス幅の補正計算結果をタイマのカウント最大値として設定,タイマがその値に達したらまた 2. の処理が走る
となっている.ここで 3. でカウント最大値を設定した時,タイマのカウンタがその値をすでに超えていたら,カウンタはその値で止まらずに 0xFFFF まで回ってしまう.その時のパルス幅は時速換算で 0.3km/h なので,メーターとしては 1km/h を表示する.
と辻褄はあっているが,2. の補正計算 (32bit 乗算) は 8bit の AVR にはそんなに重い処理なんだろうか? 100km/h のパルス幅であっても 14414 サイクル@16MHz の処理時間が使えるから,余裕あると思うんだけどなぁ.
まぁ悩んでも仕方ないので以下のように変更.
・補正計算は loop() 内で実施 ( = いつでも割込み可能)
・タイマの割込みルーチンでは,補正計算値をタイマレジスタに設定するだけにする.そうすると,割込み発生からすぐにカウント最大値を設定するので,カウンタがすでに過ぎている可能性は低くなる.
でやってみたら直ったヽ(´ー`)ノ
これでソフトは fix したので,3D プリンタでケースを作った.
車体への取り付けは,バッテリー上とシート下に隙間があったので,ここに設置 (テープ止めwww)
というわけでめでたく完成ヽ(´ー`)ノ これでやっと正確なスピード表示ができる.あとつけようと思ってた USB の口もつけられたんで満足.
ていうか,デジタルメーターなんだから,裏設定かなんかでスピード補正表示とかさせてほしいんだが.スプロケットの歯数変更とか割とみんなやるでしょ.
2020年10月28日水曜日
グロム スピードメーター補正 (2)
2020年10月26日月曜日
グロム スピードメーター補正 (1)
2020年4月29日水曜日
BIOS パスワードを,ぶっ壊す!
2019年5月1日水曜日
USB 充電器改造 (2)
ちなみにこいつは本来は乾電池用で,1.5V * 4 = 6V を 5V にレギュレータで降圧してるっぽいのだが,エネループだと 1.2V * 4 = 4.8V なんで,無負荷状態でも出力 4.6V くらいになって,充電して少しでも電圧が下がるとその後充電するのが厳しい.
なので,こいつはエネループ専用と割り切って,レギュレータ取っ払って電池⇔USB ポートを直結してみた.
無負荷状態だと 5.3V とちょっと高めだが,
なにか充電してやると 4.9V (これは 100V の USB 充電器でもこんなもん) になるのでばっちり.
2015年7月2日木曜日
データロガー 2号機プロジェクト完結
←うーん,大分マシになったとはいえ,やはりノイズが取り切れていない… ノイズフィルタ回路自体は 1号機と同じはずなんだけど,2号機の IO は 3.3V なんで (1号機は 5V),スレッショルドが変わったことでノイズを拾いやすくなったのかもしれない.
オシロ持ってないし,これ以上ハードで対策するのは自分には難しいし,まぁこの頻度ならソフト処理でなんとかなるでしょ,とやってみた.
←キタ━━━━(゚∀゚)━━━━ッ!!
やっとこさキレイなデータがとれたヽ(´ー`)ノ
というわけでデータロガー 2号機プロジェクトもめでたく完結.
鈴鹿南でプチプチ切れまくった Bluetooth,今日試した限り全然接続が切れなかった.もしかしてシガーライターソケットの接触不良で電源が落ちていただけなのかもしれないと思い始めた.
なので fonera は再びお蔵入りして,Bluetooth モジュール復活.こっちのほうがコンパクトだし,この大きさなら車体の見えないところに適当に貼り付けられそう.
GPS ロガーもなかった数年前ならいざしらず,OBD-II 等も普及してきた今更こんなデータロガー作って意味あるのかと思わないでもないけど,まぁこれの一番の目的は (磁気式の) ラップカウンターだし,車両情報の取得のほうがおまけみたいなもんw
2015年6月14日日曜日
データロガー 2号機プロジェクト (3)
前回の鈴鹿南では,データロガーと Android の Bluetooth 接続がプチプチ切れて困ったのだけど,どの段階でコケているのか現場では全くわからなかった.
実はデータロガーと Android は単に車両情報を通信しているだけではなく,マイコン側で実行するプログラムを Android から送信したりしているので,接続確立・ファームウェア送信が完了するまではログを表示するようにしてみた.
また,接続が切れると今まではエラー画面を表示して停止していたので,復旧のためにはいちいちピットインしなければならなかったけど,今回はデータロガー・Android 両方にウォッチドッグ的な処理を入れて,通信がおかしくなったら自動的に再接続を行うようにしてみた.
で,データロガー⇔Android 通信中におもむろにデータロガーをリセットしてみたのが上の画面.何回か TCP/IP 接続をリトライして,無事ファームウェア送信まで行って復帰できた.
いい感じヽ(´ー`)ノ
2015年6月9日火曜日
ARM ベース基板作成
旧データロガー作成当時は PSP・Android と連携はしてなかったので,LED 表示を頑張ってて (配線も多い!),また長年に渡る増改築で RS-232C D-SUB コネクタが 2個とか意味のわからん状態になってるけど,新ロガーでは LED はバッサリと切り捨てて車両信号と UART のピンヘッダ,あとは電源関係のみ,と非常に簡素.
てか,今回の目的にこの CortexM3 基板は明らかにオーバースペックwww
で,ひとまず車速パルスだけ取り込めるようにして,とりあえず車につないでみた.
旧データロガーは FTO 時代の時に作って (もう 10年前の話...),FTO の時は車速パルスに酷いノイズが乗ってまとも計測できなかってので,ノイズフィルタ的な回路を組んでいた.
今回はめんどくさいので,そのまま信号をマイコンに突っ込んで行けるかどうか試してみる.
←その結果,ダメダメでした(;´д⊂)
あーやっぱノイズフィルタ回路組まなきゃダメか.スピードだけなら,ソフトのフィルタ処理でなんとかなる気がしないでもないけど,走行距離の計測は車速パルスの数を正確にカウントしなければならないので,うまいソフト処理が思いつかない.
何故か,まだ接続せずに浮いているタコメータ用のポートの方にクロストークでスピードパルスの信号が載って,しかもそっちの方が綺麗に車速がとれているというw 多分いい感じにノイズが減衰されてるんだろうな.
2015年6月3日水曜日
データロガー 2号機プロジェクト 復活
そして 7年の時が流れたw
が,現データロガーの G センサーが壊れて,ARM 基板には G センサーが載っているので,データロガー 2号機プロジェクト復活.とりあえず SD カードにログ記録するのは諦めて,現データロガーと同じく,ARM⇔UART⇔WiFi⇔Android という経路で通信を行うことにした.
なのでまずは UART 通信できるところまで行かないと,printf デバッグも何もできない状態なのだが,ここでハマる.
STMicro のチップには Standard Peripheral Library なる C 言語のライブラリが用意されていて,それ自体は便利なんだろうけどドキュメントがなさすぎ.例えば UART 動かそうと思ったら GPIO の設定が必要で,GPIO 設定するためにはクロック供給の設定が必要とか,何重のトラップなんだよ.
もうちょっとサンプルとか充実してほしいなぁ.LED 1灯だけでデバッグする身にもなってくれw
とりあえず 1日がかりで,やっとこさ UART 通信ができるようになった.
2014年11月16日日曜日
ゴミからの華麗なる復活
そこで困るのが USB 充電器.今まで使ってた USB 充電器は Desire / Galaxy Note の付属品だから手元には残らないし,Zenfone5 の充電器は海外仕様だから使えない.
しゃーないから Amazon で買うか,と思ったが,ふと思い出したのが「本気でゴミを作ってしまった」ってやつ.データラインは切断してあるし,電源は PCI から取るように生かしてあったはず.
というわけで,D+/D- ラインを半田でショートさせて,4ポート USB 充電器の完成www
普通に PC の USB ポートで充電すりゃいいやん,とお思いのあなた.普通の USB ポートは 500mA しか電流を流さないけど,こいつは PCI から直に電源を取るのでそんな制限はない.
PCI バスが何アンペア流せるのか謎なんだけど,グラボが動いてたくらいなので 1A 位は余裕だろう…
2013年5月1日水曜日
GW のこうさくって言うほど工作でもなかったけど完了
測距センサー GP2Y0A21YK0F のマイコンへの接続は終わったので,センサーを車体に取り付ける.とその前に,センサーの有効距離範囲を改めて調べてみた.データシートによると,距離と電圧の関係は
←こんな変なグラフだが,実はこれは反比例のグラフなので,電圧から距離を求める式は割と簡単に求まる.
問題は距離が近くなるとセンサーの出力値が信用できなくなる.←実際に調べてみると,1/電圧 は 7cm 以上ではほぼ完璧に距離と比例することがわかった.
というわけで車体にセンサーを設置してみた図.ケーブルがゴチャゴチャしてるのはシートに座れば見えないので気にしちゃいけない.
床とアクセルペダルとの隙間がなく,7cm を割らない設置場所を見つけるのはけっこう苦労した.おまけに運転席下に頭突っ込んで作業するのは非常にアクロバテックな体勢を強いられるw
ついでに動かしてみた.
センサーの精度も良好で満足ヽ(´ー`)ノ
後はサーキットでセンサーを蹴っ飛ばさないことを祈るだけだなwww
2013年4月29日月曜日
GW のこうさく
データロガーでアクセル開度をロギングしようと思って,OBD-II アダプタを買ったんだけど,サンプリング周波数が 3Hz くらいしかなかったので結果的に使い物にならなかった.というわけで,シャープの測距センサー GP2Y0A21YK0F を購入.
これをアクセルペダルにつけることで直接アクセルペダルの踏み込み具合をロギングすることにした.
ホントはブレーキペダル用に 2個センサーを買ったけど,ブレーキペダルはストロークが 3cm くらいしかなく有意な値が採れそうになかったのと,このセンサーは赤外線を使った光学式なので,アクセル用・ブレーキ用の赤外線が混線したらやだなぁ,というわけでアクセルだけ計測することにした.
で,H8 マイコンに繋いでセンサーの素性を実験.意外と精度が高くてワラタwww ただし 10cm を切るあたりからだんだん怪しくなってくるっぽい.
2012年3月19日月曜日
Android Bluetooth プロジェクト完了
Android 側は Bluetooth Chat という優秀なサンプルがあるので,ここから必要なコードをコピペしたらほぼ終わった.ちょっとハマったのは,Bluetooth のマスター/スレーブと BluetoothSocket のサーバ/クライアントを混同していたことで,要は Desire が Bluetooth マスターであり BluetoothSocket のクライアントであった.
BluetoothSocket さえ取得してしまえば後は Ether だろうとファイルだろうと扱いは同じなので,コードの修正もそんなに多くなく,無事接続完了ヽ(´ー`)ノ
一番時間かかったのは,本題とは関係がない,接続先の Bluetooth デバイスの設定を一覧から選ぶ処理www
終わってみれば大した障害もなく簡単にできた.
世間では Android Open Accessory なる物がでてきて,組込みとかのハードが開発できるようだが,手軽さで行ったらこっちの Bluetooth シリアル変換使ったほうが上だろうな.
これで晴れて Fonera+ はお役御免に.
2012年3月17日土曜日
Android と BlueTooth 接続
この手のモジュールは日本では¥3K~4K くらいが最安値なんだけど,DealExtreme の SKU 104299 は破格の $8.20 (¥700 くらい).そのかわりマニュアルとか一切のドキュメントが無いという人柱臭がプンプンしまくるデンジャラスな一品www
とはいえ,先人たちがいろいろ解析してくれてるみたいなので,失敗しても¥700 (しかも中国からなのに送料無料) ならいいや,ということでポチッとな.
で,今日届いたので早速試してみる.内容物は,BT 基盤とケーブル一本のみ.
シリアルは RS-232C といいつつ電圧は 3.6~6V のようなので,PC とつなぐには電圧変換がめんどくさいので,とりあえず上の写真の通り Fonera+ のシリアルポートにつないでみた.この時に,Fonera+ への Ethernet 通信を全部シリアルポートに垂れ流すようにしているので,PC から Fonera+ へ接続すれば BT モジュールへのシリアル通信ができる.
BT モジュールはデフォルトで 9600bps なので,Fonera+ のシリアルポートもそのように設定する.
で,この BT モジュールには 2 つのモードがあって,一つは BT モジュールへの設定モード,もう一つは BT モジュールへのシリアル通信を BT 電波に垂れ流すモード.
BT モジュールへの設定は AT コマンドで行い,使えそうな AT コマンドはここの 2012/1/21 の書き込みにあった.↓↓↓
AT+VERSION
Returns the software version of the module
AT+BAUDx
Sets the baud rate of the module
1: 1200
2: 2400
3: 4800
4: 9600 (Default)
5: 19200
6: 38400
7: 57600
8: 115200
9: 230400
AT+NAME
Sets the name of the module
Any name can be specified up to 20 characters
AT+PINxxxx
Sets the pairing password of the device
Any 4 digit number can be used, the default
pincode is 1234
AT+PN
Sets the parity of the module
まず "AT" とだけ送ってみたら,"OK" が返ってきた.うっしゃあ,まずは BT モジュールとの通信が成功.
次にボーレートを 38400bps にするために "AT+BAUD6" を送ってみたら,"OK38400" が返ってきた.ここでちょっとハマったのは,TeraTerm で実験するとき,キーボードで手打ちするとコマンドが認識されないので,予めコマンド文字列をコピーしておいて TeraTerm にペーストすることと,改行文字は一切入れないこと.
BT モジュール⇔シリアルポートの通信・設定は成功したので,お次は BT モジュール⇔Android との通信をテスト.Android 側のアプリは,SENA BTerm Bluetooth Terminal をつかってみた.
ここで問題になるのが,BT モジュールをデータ垂れ流しモードにどうやって切り替えるのかということ.上の AT コマンドが載っていた投稿は「pin34 を…」とか書いてるけど,この方法だと余計な配線が必要なので,何か別の方法を模索していたんだけど,単純に BT モジュール⇔BT マスター の接続が確立すると垂れ流しモードに切り替わるっぽい.(そしてマスターとの接続が切れるとまた設定モードに戻る.)
垂れ流しモードでは当然ながら AT コマンドを送ってもそれが垂れ流されるだけなので,BT モジュールの設定はマスターと通信が確立する前に済まさなければならないっぽい.
ただし,ボーレートなどの設定はどこかに保存されているらしく,BT モジュールの電源を入れなおした後も変更した設定が有効だった.
こうして,無事に BT モジュール⇔Android 通信が成功ヽ(´ー`)ノ PC の TeraTerm で打った文字が BT 経由で Android に表示される.
接続が確立すると,BT モジュールの赤 LED が点滅から常時点灯に変わる.
Fonera の起動メッセージも BT 経由で表示できた.
値段の割に機能も必要十分で,当初の心配とは裏腹に制御も簡単で,結構遊べる一品.
これで,エリーゼから無線 LAN ルータが下ろせるよwww
2011年2月11日金曜日
USB 充電器改造
で,本体をばらしてみると,ラッキーなことに基盤も本体ケースも元々 USB-A コネクタをつけることを前提に作ってある模様.
手持ちの USB コネクタをハンダ付けするだけで,まるで元からそういう製品であったかのような新品同様の輝きヽ(´ー`)ノ
USB 機器なら何でも充電できるようになったのでチョーべんり.
2010年8月22日日曜日
Powwwwwweeeeeeeeeerrrrrrrrrr!!!!
つうわけで,Fon を車載するにあたって電源周りを何とかする必要がある.Fon は AC アダプタ駆動なので DC-AC インバータを載せる手もあるが,ゴチャゴチャするのはいやなので,車の +12V をレギュレータで 8V に落として使用することにした.
で 7808 が欲しかったのだが当然手元には無く.通販で買うのも送料がなぁ,と思いつつまったく期待せずに,rubbish! な地元の電子パーツ屋に行ってみたら,意外にも置いてあったよヽ(´ー`)ノ バカにしてごめんよぉ > パ○ス
で 7808 を Fon の基板上に貼り付けて,7808 への +12V は H8 マイコンのベース基盤から引っ張ってくることにする.これで,H8 ベース基盤へシガーライターソケットで +12V を供給するだけで,H8 と Fon に電源を供給できる.
で家での実験では,+9V 出力の AC アダプタで駆動しているのだが,Fon が謎の再起動を繰り返す(゜ーÅ)ほろり レギュレータ出力電圧はちゃんと 8V 出てるのになぁ,と思って Fon の起動ログを眺めていたら,無線 LAN が ON になったとたん落ちてリブートしてるようだ.
これって AC アダプタの電流が足りないんじゃね?
と確認してみたら,たった 300mA 出力www ( Fon 標準の AC アダプタは 1A )
結局家での実験では確認できなかったので,車につないで見たら問題なく Fon が起動した.
2010年8月1日日曜日
プロジェクト・PSP 引退
で,ここでふと気づいたのだが,Fonera+ にもシリアル端子 (というかピンヘッダ) が出ていて,さらに幸いなことに,PSP⇔H8 マイコンで使用しているレベルコンバータがそのまま使えそう.というわけで,ここ見ながら Fonera+⇔レベルコンバータ 接続ケーブルを作って,PC⇔Fonera+ をシリアルで接続してみた.
結果は一発で成功ヽ(´ー`)ノ Fonera+ の起動メッセージをシリアル経由で受信できた.
これで,あとは Fonera+ 上で,H8 からのシリアルデータを適当な TCP/IP ポートに垂れ流すプログラム書けば,Android は無線 LAN 経由でデータを受け取れる.
めざせ,世界初 無線 LAN ルータ搭載エリーゼwww
2009年6月26日金曜日
SDカードアクセス (その後)

かなり放置状態だったデータロガー 2号機計画,とりあえず単体で G を計測するやつを作ろう (これだと追加の半田付けはなんもいらんから) と思った.
で svn に葬ったソースファイルをチェックアウトしてきて,コンパイルしてみたらコンパイルが通らねぇ(爆) 原因を追っていったらなんかいろいろとコンパイルオプションとかがおかしくね? なんでこんなとこいじったんだろう…?
まぁめでたくコンパイルも通り,SD カードの初期化コマンドを CMD1→ACMD41 に変更したら,前回使えなかった 8MB ゴミカードも無事初期化できるようになった.
で,前回は SD カードリードでとまっていたので,SD カードライトに挑戦.ライト速度も見るためにいろいろデバッグメッセージ出力を削ってやってみたら,
fatfs に「ファイルシステムがねぇ」って怒られる orz
なんかデバッグメッセージを消したことにより wait が減って,動作が変になってるっぽい.まれにライトまでたどり着けたとしても,FAT エントリをめちゃくちゃに破壊してくれるんですが…(笑)
もう窓から投げ捨てていいかな?
2008年12月7日日曜日
本気でゴミを作ってしまった

GA-MA78G-DS3H はどのように省電力設定しても,USB に常に電源が入る.例えば電源を切っていても光学マウスの LED が光りっぱなし.で,PCI スロット用 USB2.0 カードがあったのでこれにキーボードとか挿してみたら,BIOS でキーがきかねぇ…_| ̄|○
なので,マザボ上の USB ピンヘッダをリアの PCI ブラケットに引き出すパーツを上の PCI カードを破壊して(笑) 作ってみた.ただし電源部分は残して PCI バスからとるので,PC 電源 OFF 時は USB 電源も落ちるのがミソ.
で,早速使ってみたら,キーボートとかマウスとか接続がプチプチ切れる…_| ̄|○ やっぱノイズとかまったく考慮してないからかなぁ…
久々にゴミを作ってしまった.しかも USB PCI カードを破壊してまで_| ̄|○

































