2026年4月30日木曜日

LiDARを使った相対速度計(その1)

 以前米国を走っているトラック野郎USAの動画を見ていたら、自車の車速に加えて前車の車速を測る機械が付いていて、あれは便利そうだなと思った。またAquaを運転し赤信号で止まっている時、前車が発車した後自車が発車せずにいるとピッと警告で知らせてくれる。これも便利だ。

そこで同じ様な機能が作れないかと考えてみた。超音波センサーは車外に出すセンサー部の防水が面倒なので除外する。前車の速度を測るにはミリ波レーダが良さそうだが距離を安価に測れるものは秋月では売ってない。 一方PONO社のLiDARは最大50mまで計れるし安全基準はCLASS1となっているのでこれを使うのが良かろう。とりあえず前に使っていた10mまで計れるTSD10を使ってみる事にする。上手く行ったら50mまで計れるTSD50も試してみよう。なおTSD20は電圧仕様が異なるため今回は除外する。

TSD10は10mまで、TSD50は50mまで計れるから4桁の表示器が欲しい。秋月で色々物色した結果4桁の緑色の7セグLEDを使う事とした(当初は4桁2色の7セグLEDを使うことも考えたが全幅が3cmと思いのほか小さかったため諦めた)。ドライバーには TM1637というアノードコモン用のドライバーを使う事とする。TM1637は外付け部品無しで直接6桁までの7セグLEDを扱うことが出来る(このICがある事は超音波距離計を作っている時は気付かなかった。知ってたらもっとコンパクトに出来たかもしれない)。またTM1637はI2Cに似た仕様の2線インターフェイスで接続するのでPICの足を無駄に消費せず便利だ。

以上を踏まえて早速基板を設計・発注した。回路頭上はPICに20ピンの16F18346を使うように書いているが実際はそれとほぼ同じ内容で14ピンの16F18326を使うつもりだ。

 

ケースの高さを抑えるため基板は2つにカットし、L型に仕上げて使うようにしている。

(続く)

2026年4月20日月曜日

Windowsのショートカットとリンクの違い

 前の投稿で、Windowsのショートカットとリンクは違うようだと書いたが、その違いを実際に試してみた。

まず、実際に同一フォルダ(E:\CAR)のショートカットとリンクを作成してみた。リンクの作成は管理者権限のcmdで次のコマンドを実行した。

C:\work>mklink /D .\CAR-ln E:\CAR
.\CAR-ln <<===>> E:\CAR のシンボリック リンクが作成されました 

リンクの実体はシンボリックリンク、それならショートカットと同じはずだと考えたがエクスプローラの表示は異なっている。

 明らかな違いは、ショートカットには1KBと表示される実体(ファイル)が見えているがリンクにはそれが無く、あたかもそこにリンク先の実体(フォルダ)があるように表示されており、見かけ上UNIX(Linux)のリンクのように機能している。UNIXのシンボリックリンクならショートカットと同じく実体がある筈だが、Windowsではそれは隠されているか別のカラクリで実装されているのだろう。

各々のプロパティを見てみると、

となっている。やはり上で述べたようにリンクはシンボリックリンクではなくUNIXのリンクのように見えている。

リンクではリンク先のファイルが読み取り専用のように見えるがこれは変更できた。

 Windowsでショートカットとリンクは同じように見えてシステム上の扱いは別物だという事がわかった。Windowsには別のカラクリとしてジャンクションもあるようだしショートカットとリンクの細かい話もあるが、それらはCopilotにでも相談して欲しい。

 

〔参考〕UNIX(Linux)の リンクとシンボリックリンク

UNIXのファイルの実体は i-nodeというデータに1:1で紐づけられている。 i-nodeは i-node番号というユニークな番号を持っている。UNIXのディレクトリはファイル名と i-node番号の対応表にすぎない。従って1つの i-nodeに対応したファイル名を複数作ることができ、これがリンクである。各i-nodeにはこの実体がいくつの名前と紐づけられているかを表すリンク数というパラメータがあり、これが0になるとその実体は消去される。

UNIXのファイルはファイルシステムという単位で管理されている。UNIXのファイルシステムは、ストレージ内の管理構造という意味ではWindowsのドライブに相当するものと考えられるが、UNIXにドライブの概念は無く、UNIXのファイル全体は1本の木構造をしている。複数のファイルシステムを扱う場合、根元(root)から立ち上がった木の何処かの枝に他の木を接ぎ木(mount)する。

i-nodeはファイルシステム毎に独立しているため、ファイルシステムが異なるとリンクは出来ない。これを可能にするのがUNIXのシンボリックリンクであり、Windowsのショートカットと同様にパスを示してファイルやディレクトリ(フォルダ)を指定する。

 一方、私はWindowsのファイルについてFat32とかNTFSという名前は知っているが 内部構造は全く理解していない。

2026年4月10日金曜日

C:ドライブが満杯

 家族のPCの C: ドライブ(500GB)がほぼ満杯で動きが悪い(これ以上写真を保存できない)との相談を受けた。

どうせ写真や動画を撮りまくってるんだろうと思いながら内容を確認すると、C: ドライブの大部分は iTunes が作成した iPhone のバックアップファイルで、何と計286GB もあった。そのほか iTunes が使っていた一時ファイルが約32GB あり、 iTunes の無駄使いが過ぎる。デスクトップにも 50GB 近く使っていてその合計が 368GB にもなる。つまりC:ドライブの半分以上が本来の目的意外に食われている事になる。

iPhone/iPad のバックアップファイルは機種毎に作成されるようで、それらを買い替える度に巨大なファイルが残り、意識的に掃除しない限り残り C: ドライブを圧迫する。iPhoneの バックアップファイルはユーザデータ(写真と動画がメイン)をバックアップしているようだが、最近の大容量化した iPhone を使う上では盲点だろう。1TBの iPhone を買うならそのために PC に 1TB 近いストレージを用意する必要がある。こんなバックアップファイルは少なくともC: ドライブからは追い出す必要があると思う。C: ドライブはパフォーマンス向上のため SSD 化しているし、その大部分をほぼ使う可能性が無いバックアップに提供するのは勿体ない。

Copilot に相談したら、iTunes にはバックアップファイルの場所を変更するメニューは無いので(これは明らかに欠陥で、Apple に何とかして欲しい)リンクを使えとの事。ちなみにiTunes が作るバックアップファイルの格納場所には2種類あるようだが私の場合は次の場所だった(ちなみに MobileSync は隠しフォルダなのでフォルダーオプションを変更しないと表示されない)。

 C:\Users\ユーザー名\Apple\MobileSync\Backup\

そこでバックアップファイルを D: ドライブの中に作った次のフォルダへコピーし、

 D:\Apple\ios-backup\Backup\ 

そのフォルダのショートカットを作って元のフォルダに入れた(このとき元の Backup フォルダは消して(または別の名前にリネームして)使われないようにした)。これで上手く行くはずだ。

iTunesを立ち上げ「編集」->「環境設定」->「デバイス」を確認するとコピーしたバックアップファイルは認識されていない。iPhone を接続してバックアップを行うとC:ドライブにはBackupというショートカットに加えて消したはずの Backup という同名のフォルダが作られ、その中に新しいバックアップファイルが作られている。これを何度か繰り返して、埒が明かない。

なぜショートカットが認識されないんだ?ネットで成功事例を見ると、皆さんリンクはコマンドで作成していて、ショートカットを作成&コピーしてはいない。結果に違いはないように思うがこの方法を試しにやってみるか、と次のコマンドを管理者権限で cmd に与えた(ちなみに、この mklink は cmd の内部コマンドなので PowerShell ではエラーとなる)。

mklink /D "C:\Users\ユーザー名\Apple\MobileSync\Backup"  "D:\Apple\ios-backup\Backup"

iTunes を立ち上げると何故か過去のバックアップファイルをちゃんと認識してる。そしてバックアップも正しく D: ドライブの方へ格納される。理由は不明だがこれで上手く行ったようだ。

(終り)

追伸:Windows のショートカットとリンクの違いについては次の投稿「Windows のショートカットとリンクの違い」を参考に。

2026年4月3日金曜日

携帯内に混在する2つのPontaポイントの統合

 私の携帯(iPhone)内には10年以上前にLawsonで作ったカードをそのまま携帯アプリに移行したPontaポイントと、

AU Payアプリに紐づけられたPontaポイントが混在していた。

最初はこの違いに気づかなかったがポイントの数が違うことから2つが独立していることに気づいた。

Pontaのホームページ(PontaWeb)を見るとこれらを1つに纏める方法も書いてあるが、Pontaにも色々あるようで私がどれに該当するのか、或いは場合分けが多く、私の場合にどうすればよいのか分かりずらかった。じっさいLawsonで作ったPontaカードを携帯アプリに移行したものは今はRecruit IDに関連付けられていることを後に認識した。AU Payアプリに紐づけられたPontaは意識しないまま、いつの間にか登録されていた。

AU Pay ではPonta IDの切り替えも出来るようだが、これをやると統合は出来ず片方のPontaポイントを失う事になる。 

実際に手続きを進めると上手く行きそうなのに最後はエラーで駄目になる。手続きの途中でエラーで「失敗しました」と言われても何が悪かったのか原因も分からない。これまで時々挑戦しては失敗を繰り返してきたが、やっと成功したのでメモとして残す。

携帯アプリのPontaカードはRecruit IDに紐づけられていて、これをPonta-1とする。AU Pay に紐づけられたPontaカードをPonta-2とする。それぞれのカードは独立したPonta ID及びそれに対応して独立したPontaポイントを持っている。

〔Step-1〕 2つのカードの会員情報を合わせる(同じにする)。氏名や生年月日、電話番号等で、これが違っているとStep-2の手続きがエラーになる。私の場合、古いPonta-1は固定電話で登録していたので携帯に合わせた。
〔Step-2〕PontaWebにログインしてPonta-2のポイントをPonta-1に統合する。この手続きが済むとPonta-2は使えなくなる。
〔Step-3〕AU Pay でPonta-2との連携を解除する。Step-2の時点でAU Pay からPonta-2へはアクセスできなくなっているが、この解除を行わないとStep-4がエラーになる。
〔Step-4〕 AU Pay でRecruit IDを使ってPonta-1と連携させる。

これで携帯内の2つのPontaポイントは1つに統合された。 

メデタシ、メデタシ 

(上の記述の中に何点か誤りがあったので訂正しました)