車のOBD情報を取得する
バイクに乗っていると、速度計とタコメーターがヘルメットのバイザーに表示されたら良いのになぁと思うことがよくあります。
実際、そのようなヘルメットはクラウドファンディングなどで売っていたりしますが、高いし、よくみるとあまり機能がなかったりと、まだ未来を待つ必要があるなと思っています。
ふと、自分で作れないかな?と思って色々調べてみると、どうやら車両情報ってECUから取得できるようです。なのでちょっと調べてみました。
OBD2とは?
今回ターゲットとしたのが、OBD2というプロトコル。
OBD = On-board diagnostics
車両が故障した時の診断用に作られたもので、歴史も古く、SAEJ1939で標準化されており、最近の車両であればほとんど対応している。
OBD2を使うことで、速度や回転数などの情報をリアルタイムに取得することができる。
詳しくはWikiを参照
どうやって情報取得するの?
ELM327 OBD2 スキャンツールがAmazonで売っていますので、それを車両に設置して、BluetoothやWifi経由で情報取得します。
以下の商品を買ってみました。この商品はiOS非対応なのでご注意を。
ELM327 OBD2 Bluetoothで検索するといっぱい出てきます。
同じものに見えても細かい違いがありバージョンはv2.1とv1.5があります。
v1.5の方が安定しているようです。
iOSも使える製品もあるようです。
どこにつけるの?
車両のどこかにコネクタがありますので、接続するだけです。
僕の車(SUZUKI ワゴンR)はダッシュボード運転席左下側でした。



接続するとLEDが点灯します。

エンジン切っても点灯していたので常時電源接続のようです。
OBD2をつけっぱなしにすると最悪バッテリーが上がってしまうので使い終わったら外しましょう。
どうやって情報取得するの?
情報を取得するには専用アプリがあります。以下が有名どころ。
車両情報取れてます。車両加速度、エンジン回転数、車両速度。
— すぎどん (@sgidon) 2021年8月21日
これをデータで吸い上げたい。 pic.twitter.com/Cbjw5moHPa
今後は?
情報取得できることがわかったので、データだけを取り出せるような方法を調査しています。
ゆくゆくは
情報取得 → クラウドアップ → データ分析 → BIツールで表示
情報取得 → アプリで加工 → ARグラスに表示
とかやっていきたいと思います。
ソロキャンプの準備 料理と焚き火も
家にあったシュラフを干そうと引っ張り出してきて、試しに中に入ってみたら「頭ひとつ分長さが足りない」ことがわかって、どうしようと頭を悩ませている今日この頃です。なんでこんなシュラフを買ったんだろう、なんでこれでいいと思ってたんだろう。昔の自分にいろいろ問い詰めたい。
とりあえずこのシュラフでキャンプ決行してみるか、いやいや寒いと体調を壊すのでちゃんとしたやつを買ったほうがいいか、そんな不毛な悩みを抱えています。。。
シュラフは最速、娘の遊びものになっています。
いもむし〜とか言ってる。ファスナー壊すのも時間の問題かと。
今回のキャンプ用品の紹介は、料理と焚き火をするために買ったものです。
普段料理しないので、料理と言っても凝ったものをするつもりもなく、ただ焼くだけですむものを考えています。お肉とか、あとは冷凍餃子や冷凍ピザとかを焼いて温めて食べれるくらいで良いかな。
料理と焚き火も
火を起こせて焼ければいいので、揃えるのはこんな感じ。
- 焚き火台
- 火起こし器
- トング、火ばさみ
- クッカー、メスティン
焚き火台
全然知らなかったのですが、焚き火って直接地面でやってはダメなんですね。何か足がついた台の上でしないとキャンプ場を汚してしまうし、火が延焼して山火事が発生してしまいます。
火の扱いはちゃんとしないといけませんね。
ひとり用の焚き火台として、B5サイズのコンパクトなやつを買ってみました。
火起こし器
着火剤+炭で火はつくようだけど、念には念を入れて火起こし器を買いました。と言っても100円ショップでそろえました。
買ったのは以下の2つ。どっちも200円だったけな。400円で火起こし器と火消し器がそろってしまった。
- ステンレスのカトラリーラック
- オイルポット
クッカー、メスティン
クッカーもメスティンも、ダイソーで購入です。
クッカーは直火NGって買いてあるけど、、、壊れたらいいやつ買おう。
まとめ
昔はキャンプ道具揃えるのは一苦労と聞いていたのですが、今ではダイソーになんでもあるんですね。
便利な世の中になったものですね。
ソロキャンプ の準備 お茶を飲みながらゆっくりする道具
ソロキャンプ 準備を着々と進めています。
そろそろ行けるんじゃないかなと思いながら、予定が合わなかったり、天候と相談して寒いからやめようとかいろいろ噛み合いません。
前回のblogで最小構成の道具は揃えました。
次はまったりする道具を揃えていこうと、思います。
お茶を飲みながらゆっくりする道具
キャンプに行ったら、本を読みながらゆっくりするんだ。
という妄想を実現するべく、以下の道具を揃えています。
- テーブル
- イス
- バーナー
- コップ
テーブル
テーブルといえば、キャプテンスタッグの折り畳みローテーブル一択!
と思ったけど、2021/03/05時点で在庫切れ。売り切れになるくらいキャンプ流行っているのかな。

キャプテンスタッグ(CAPTAIN STAG) アルミ ロールテーブル ケース付 M-3713 アウトドア用 折りたたみ式
- 発売日: 2012/03/09
- メディア: スポーツ用品
他にもないかと調べていると、ワークマンがアウトドアグッズを出していて、似たようなアルミテーブルを990円で出していた。ワークマンすごい!
オンラインでの販売はなさそう。実店舗を何件か回ってみたが、在庫切れのようだ。
こうなるともうなんでもいいやと思い、1500円くらいの中華テーブルを購入しました。
イス
コンパクトローチェアがワークマンで売っている!しかも1500円!ということで探しましたが、やっぱり在庫切れ。
amazonでいろいろ探していると、似たような商品がいろいろなところから出ているのですね。コメントみても品質はそんなに悪くなさそうな、ハイバック折り畳みチェアを購入しました。ハイバックだとうたた寝できるのが良さそう!
バーナー
お湯を沸かすためには火が必要なのでお手軽に使えるバーナーを購入しました。
このバーナーはアダプタがついてて、CB缶とOD缶どちらも使えるのが嬉しいです。CB缶は100円ショップにも売っているので、とりあえずはそれで。無くなったらOD缶に手を出してみよう。
後で知ったのですが、アルコールストーブというものがあり、お湯を沸かす程度の火力であればこれでも良さそう。お手軽という点だとこっちでもよかったかなと。
アルコールストーブは100円ショップの材料を加工して作れるみたいなので、必要だったら作って試してみようと思っています。
コップ
コップは別になんでもいいかな。
もらったけど使っていない保温マグカップを引っ張り出してみる。

バーナーを使ってみた
ライターとかバーナーとか、火を起こせるものってワクワクしますね。
あれ?僕だけ?
試しにバーナーを使ってみようと、ダイソーでメスティン買ってご飯を炊いてみた。
- お米1合をメスティンに入れる。
- お米の上、指の第一関節の半分くらいの高さに水を入れ、30分浸す
- バーナーを着火し、沸騰するまで強火で加熱する
- 沸騰した弱火で10分加熱する
- 中をみて、炊けてそうなら火を止める
- メスティンを逆さにして10分ほど蒸らす


初めてご飯を炊いた!ちゃんと炊けてちょっと感動した。
まとめ
いろいろ揃えていく過程は楽しいですね。
キャンプ行く前に満足しそう。
A-Frame で WebXR hit-test を利用する方法
A-Frame v1.1.0 でDom-Overlay、hit-testが使えるようになったのは、以前記事にしました。
Dom-Overlayについては、以下に記載しています。
今回は hit-test について書いていきます。
これで現実空間の垂直面/水平面を取得することができます。
WebXR の設定
前回も書きましたが、A-FrameにWebXRを利用することを知らせる必要があります。
そのため、A-Frameにはwebxrコンポーネントが用意されています。
実装は簡単で、a-sceneタグにwebxrコンポーネントを設定するだけ
<a-scene webxr>
hit-test の設定
これだけでは hit-test を利用することはできません。
以下の4ステップの設定が必要です。
- webxr コンポーネントの設定
- xrHitTestSource の取得
- hitTestResult の取得
- 位置情報・回転情報の反映
それぞれ見ていきましょう。
webxr コンポーネントの設定
先ほど設定したwebxrコンポーネントの引数として、
- optionalFeatures: hit-test
を設定します。
<a-scene webxr="optionalFeatures: hit-test">
xrHitTestSource の取得
xrHitTestSource とはhit-testの結果を取得するための事前準備・インターフェースと考えてください。
詳しくは以下を参考に。
具体的にどのように取得するかは、
- a-scene から renderer を取得
- renderer から session を取得
- session からxrRefereneceSpaceを取得します。
- 取得したxrReferenceSpace を引数にxrHitTestSourceを取得します。
let scene = document.querySelector('a-scene'); let renderer = scene.renderer; let session = renderer.xr.getSession(); let viewerSpace = await session.requestReferenceSpace("viewer"); let xrHitTestSource = await session.requestHitTestSource({ space: viewerSpace });
xrReferenceSpace について別途説明を書こうと思います。
hitTestResult の取得
取得した xrHitTestSource を使って、hit-testを実行して結果(hitTestResult)を取得します。
- AnimationFrameを取得する。
- xrReferenceSpaceを取得する。
- AnimationFrameからhitTestResultを取得する
let frame = scene.frame; let refSpace = renderer.xr.getReferenceSpace(); let hitTestResults = frame.getHitTestResults(refSpace);
位置情報・回転情報の反映
取得したhitTestResultを解析して、位置・回転情報を取得する。
- hitTestResultからpose情報を取得する
- pose情報から位置、回転情報を取得する
- それぞれを対象に反映する
const pose = hitTestResults[0].getPose(refSpace); target.setAttribute("position", pose.transform.position); target.object3D.quaternion.copy(pose.transfrom.orientation);
コンポーネント化する
実際に使うことを考えてコンポーネント化しておくと便利になります。
hit-test結果を自分自身に反映するコンポーネントを作成します。
ARセッションスタート時にxrHitTestSourceを取得して、
フレーム毎にhitTestResultを取得して、自分自身の位置、回転情報を更新します。
AFRAME.registerComponent("ar-hit-test", { init: function() { // session start this.el.sceneEl.renderer.xr.addEventListener("sessionstart", async () => { if (this.el.sceneEl.is("ar-mode")) { this.renderer = this.el.sceneEl.renderer; let session = this.renderer.xr.getSession(); let viewerSpace = await session.requestReferenceSpace("viewer"); this.xrHitTestSource = await session.requestHitTestSource({ space: viewerSpace }); } }); // session end this.el.sceneEl.renderer.xr.addEventListener("sessionend", async () => { this.xrHitTestSource = null; }); }, tick: function() { const frame = this.el.sceneEl.frame; if (!frame) return; // hit-test in real world const xrHitTestSource = this.xrHitTestSource; if (xrHitTestSource) { const refSpace = this.renderer.xr.getReferenceSpace(); const hitTestResults = frame.getHitTestResults(xrHitTestSource); if (hitTestResults.length > 0) { const pose = hitTestResults[0].getPose(refSpace); this.el.setAttribute("position", pose.transform.position); this.el.object3D.quaternion.copy(pose.transform.orientation); } } } });
A-Frame で WebXR Dom-Overlay を利用する方法
A-Frame v1.1.0 でDom-Overlay、hit-testが使えるようになったのは、以前記事にしました。
今回は、そのうち、Dom-Overlayの設定方法を記載します。
WebXR の設定
Dom-Overlay設定の前に、A-FrameにWebXRを利用することを知らせる必要があります。
そのため、A-Frameにはwebxrコンポーネントが用意されています。
実装は簡単で、a-sceneタグにwebxrコンポーネントを設定するだけ
<a-scene webxr>
Dom-Overlay の設定
これだけではDom-Overlayを利用することができません。
Dom-Overlayを設定するには、以下2つが必要となります。
webxrコンポーネントの設定
先ほど設定したwebxrコンポーネントの引数として、
- optionalFeatures: dom-overlay
- overlayElement:#overlay
を設定します。
<a-scene webxr="optionalFeatures: dom-overlay; overlayElement:#overlay;">
これにより、dom-overlay機能が有効となり、IDがoverlayのタグ以下を対象として表示いたします。
overlayElementに設定する情報は任意となります。#overlayではなくても大丈夫です。
表示するDOMエレメントの作成
実際に表示するDOMエレメントの実装を行います。
<div id="overlay" ・・・></div>
上記divタグ配下にボタンなどを配置して、XR表示時に様々なコントロール可能とします。
ソロキャンプの準備 最小構成の道具
ソロキャンプに行きたいけどまだまだ寒いし、雨降っているしで実現は先になりそう。
その間、着々と道具だけは揃ってきています。
前回のブログで揃えようとしているキャンプ用品のお品書きを書きました。
今回は実際に揃えたものを紹介したいと思います。
最小構成
まずは最小構成のキャンプ用品について
- テント
- グラウンドシート(ブルーシート)
- シュラフ
- 銀マット
- ランタン
これは最低限必要なものかなと。
テント
むかーし買ったテントが残っていました。
当時3,500円の安さで衝動買いした覚えがあります。
コメントみてもコスパ最強で、大きな問題もなさそうです。
一度だけキャンプで使いましたが、ふつーに使えていました。
買ったのが6年前だったので、今だと新しい物が出ているようですね。
BDK-17→BDK-18。新しいほうが安いという。
グラウンドシート(ブルーシート)
これはダイソーのブルーシートを買いました。
1.8mx1.8m(2畳分)で100円とか、安すぎますね。
テントの下に引く汚れ防止のためと思っているので、消耗品と考えて割り切りました。
水分を通すと思うので、使い勝手が悪かったらちゃんとしたものを買おうと思います。
シュラフ
これも昔買ったやつがありました。
防災用に買った大きめのやつと、夏用の小さめのやつの2つ
大きめの方で使用最低気温5度と書いてあった。
もう少し暖かくなってからじゃないと厳しめかな。
銀マット
これも昔買ってた。なんの変哲もない銀マットですね。
これがないと、地面に熱を奪われてしまいます。
また、地面が硬い場合にクッションとして使います。
ダイソーにも銀マットがありますが、ペラペラのようです。
保温にだけ使うならダイソー銀マットでも良いのかな。
ランタン
ダイソーで300円でLEDランタンが売っていました。
特にこだわりがないのでこれを使います。
単3電池3本で40時間以上持つようで、コスパも良さげ。
余裕が出てきたらこういう充電式LEDランタンをGETしようかなと
まとめ
探したら昔買ってたので、思ったほど出費がかさまなくて済んだ。
嬉しい誤算です。
次は、テーブル、イスとかをご紹介したいと思います。
朝活コミュニティ「朝渋」に参加してみました
朝活を初めてみました
Peatixをみていると、北野唯我さんをゲストとした朝活イベントがあったので参加してみました。
【参加無料】朝渋Vol.186/北野唯我が実践する超実践型仕事術図鑑(ゲスト・北野唯我さん)#朝渋 #朝活
北野唯我さんは何冊か本を読ませていただいています。
「転職の思考法」は、今の会社に転職する際に読ませていただきました。
転職の仕方、というより転職に当たっての転職以外の方法(今の会社にいる方が良いかもとか)の考える方法をまとめられている本です。とても参考になりました。
「天才を殺す凡人」は、天才という特異なマイノリティな人が村八分にされるような状況が起こる理由を知れました。天才/秀才/凡人はジャンケンなんですね。
上記の流れで「オープネス」を読みました。
この本はあまり記憶がない。。。
新しい書籍をイベント内で紹介されていました。
Kindle Unlimitedだと無料だそうです。
朝渋って?
朝渋コミュニティは渋谷で集まるリアルの朝活コミュニティからスタートし、現在は日本全国のメンバーとオンライン・オフラインを両立しながら、朝活を楽しんでいるようです。
朝はあなたの可能性が目覚める時間。
MISSION
早起きをきっかけに、人生を自分で選択できる人を増やす。
詳しくはこちら。
イベントの内容
イベントの内容はトークセッションとQ&Aで構成されていました。
トークセッションテーマは以下の通り
・北野唯我x仕事術図鑑
・20代の仕事術
・メンターが必要な理由
・努力の方向性
・TOP1%との人との対談で学んだこと
・あなたと一緒に仕事がしたい
・人望のある人
・石を積む
・内定者への手紙①②
・質疑応答
・今日から行動できること
新しい本「内定者への手紙」からピックアップした内容になっているようです。
様々な金言をいただいたのですが、その中でも心に刺さったフレーズがありました。
(イベント中のメモですので読みづらいです。すみません)
--
Q:なにかしなきゃ、でも失敗したくない。どこに向かってアクセルを踏めばいいかわからない問題
A:なんでもやってみないとわからない。やってみて選択する。
--
毎日何かをやるのは良い。毎日15分〜30分は本を読んでいます。
人の心は弱いです。「いつか」なんて時はないので、今やる。
--
自分の能力や才能を出し切って死ぬと満足すると思います。
「あ、自分もっとできたのにな」と思いながら死ぬのは一番後悔する。
--
才能を出し切るのは怖いし、嫌われるかもしれない。
ただ、出し切っている人は顔の表情が良いので人が集まってくる。
--
失敗した時だけ変えるのは間違い。勝っても負けても変える必要がある。
負けた場合変えるということは、環境が間違っているという非科学的な根拠。
--
質を上げていく。お客様が質の正誤を決定する。
リーダーが高いクオリティを知っていないと、上がっていかない。
現場目線だと、「そこまでがんばらなくてもよくないですか?」となる。
リーダーとして妥協してはいけない。自分が担保する。そこだけは譲ってはいけない。
--
Q:今まで捨ててきたものはなんですか?
A:羞恥心。自分を出す、Blog・本を出す、SNSを利用する。
絶対に笑われるだろうな。意識高い系だよねとか
→ 先のことを見据えてやらないといけないと思ったのでやった。
やらないと後悔するからね。
--
Q:自分に自信がない時どうしたらいいでしょう。
A:物事がごちゃごちゃしていてうまくいない時はみんな足そうとする。
逆に捨てることを考える。「全員から好かれる」とか、
あとは準備しかない。
不安ではなく危機感
不安: 次が見えない。何をすればいいかわからない。(≒自信がない)
危機感: 次にやることが明確。
→ 前日夜に準備して、翌日実行。これで改善する。
--
ブランドは思想と一貫性から生まれる。
その人が長く続けているから信頼できる。
それを言語化することで明確になるし、他人に示すことができる。
迷ったときに確認できる。これが一番大事なんだ。
俺なんで頑張っているんだっけ?→確認できる。Mission確認。旗を持つ。
--
何かを深めたという経験は、人生において貴重。
まとめ
北野唯我さんの本を読んで、勝手にスーパーマンのような人を想像していました。
Zoom越しに北野唯我さんが話しているのをみて、今までの経歴や様々な苦労、創意工夫をされているのを聞いて、イメージがガラッと変わりました。
「石を積む」という言葉通りコツコツと努力した結果なのだと。
いろいろな金言いただきましたが、一番響いたのは「今まで捨てたものは→羞恥心」でした。ちょうどこれがネックで様々な行動ができなくなっていたところだったので、背中を押された気がしています。
朝渋に参加して、北野さんの言葉に出会えたことに感謝いたします。












