Jetson nano 2GBセットアップしたんだが(Windows版)

0.ひとり言の部分

新年明けましておめでとうございます。

昨年度はそれはそれは酷い一年でした。コロナだけで学生生活1年が終わってしまったのはまぁなんとも言えない悲しさがありますし、リモートのせいで本来学ぶべきことが学べずに終わってしまったような気がします。そして気づけば卒論研究が始まってしまう事実が迫ってきております。

さて、 わかりにく便利すぎていつ終わったのかわからぬままJetson nanoの初期設定が終わったので今回はこのお話しです。

先日の話であるがJetson nano (RAM 2GBの方)を購入した。正直ESPマイコンを遊んでもよかったんですが、それよりもこっちで遊んでみたい欲が高かったので我慢できなかった。 ↓こいつ

あ、このブログについて間違いがあればご指摘ください。マジで何もわからぬままセットアップしたので....

逆に言えば本記事を読んで生じたいかなる問題について責任は負いません

さて早速ですが今回は先月のブログよりもゆるく適当にお送りします。

1.まずはじめに

2.実際にセットアップしてみよう

step①SDカードにOSを入れておく

step➁Jetson 上での設定

step③TP_Linkの設定

step④動作確認

1.まずはじめに

先日、秋葉原の秋月にてJetson nano 2GBを購入した。そしてwi-fiトングルとしてTP_Link(TL-WN725N)を購入した。ネットで調べてみると便利とのことでその言葉を聞いて何も考えずに購入した。(脳死)

今回のセットアップに使うものを以下に示す。

【今回必要なもの】

  • Jetson nano 2GB
  • TP_Link(TL-WN725N)
  • typeA-microBケーブル
  • typeCコネクタの電源(私はThinkPadユーザーなのでその充電器をそのまま使ったが某ゲーム機Switchの充電コードでも行けるかもしれない)
  • SDカード(64GB以上)
  • PC(Windows 10)

これらを用いてセットアップを行っていきます。

2.セットアップしてみよう

では早速セットアップをいたしましょう。

Step①SDカードにOSを入れておく

まずはJetson nanoの公式セットアップ手順と同じ手順で SDカードにJetson nano用のOSをFlashしていきます。

まずはSDカードをフォーマットする必要があります。

SDカードをフォーマットするとは初期化&準備のことです。まずデータをすべて消し、その後そこに指定した形式のデータを詰め込む準備を行うということです多分。なのでそのフォーマットを行うにはSD Memory Card Formatter for windows Downloadというソフトをインストールし、それを使う必要があります。

その後Flashという書き込み動作をする必要があるのですがそれはそれで別のソフトが必要です。なのでまずはそれまでの手順を行っていきましょう

まずはお持ちのWindowsパソコンにてSD Memory Card Formatter for windows Downloadをインストールしてきます。インストールは流れに沿って行けばできるはずなのでリンクを示すだけでここでは終わりにします。

インストールしたらSDカードを挿入します。ここが難所であるのだが、ThinkPadsurface proもSDカードの挿入口が人生3週目じゃないと気づきません(マジで)

SDカードをさし終えたらフォーマットを行います。先程インストールしたSD Memory Card Formatter for windows Downloadを開くと以下のような画面がでてきますので以下の画像通りに設定してください。 そしたら下のボタンを押すだけでフォーマットが完了します。もしSDカードが認識されていなければ"フォルダ→PC"でCドライブの横にSDカードの容量が示されていることを確認してください。PCを再起動するとうまくいくときもありますがSDカードが傷ついてないかなども確認してください

さて、SDカードをフォーマットし終えたら次はSDカードに書き込む内容とそのためのソフトをインストールします。

書き込む内容はこちらより取ってくることができます。きちんと2GB用のイメージファイルであることを確認しましょう。使いやすいようにこのファイルはデスクトップ上に置いておくとよいです。

次にFlash用のソフトEtcherをインストールします。こちらもエッチな手順通りに沿って行けば淫ストールはできますのでここでは省略します

ここまで来たら以下の画像の通りにやって行けばFlashは終わりです。

まずはEtcherを開きます。 書き込む内容を一番左のFlash from file」 より選択します。書き込む内容はデスクトップに置いておいたのですぐに選択できるはずです。 次に真ん中のボタンにてどのメモリに書き込むかを選択します。間違ってもCドライブに書き込まないようにしましょう。SDカードを選択します。 あとは一番右端の「Flash」を押すだけです。 こんな感じで書き込みが始まりますのでしばらく待ちましょう。

終わりましたか?

それでは次に初回ブートを行っていきます。ブートなんて言うとあれなので初期設定とでもいっておきます

Step➁Jetson 上での設定

GUIでの設定ができれば便利ですがこちとら学生ですのでディスプレイを買うお金は省きたいものです。なのでCUIでの操作で設定を行っていきましょう(Linuxコマンドのお勉強になるので一石二鳥)

さきほどフラッシュしたSDカードをJetsonに挿入しておきます。向きを間違えるとSDカードの損傷につながるのでダミーカードを使うなりして向きを確認してから挿入しましょう。

挿入が終わりましたらTypeC電源を装着します。繋ぐとJetson上の緑のLEDが光るので電源が入っていることがわかります。

次に電源挿入後**30秒**ほど待ってからmicroBケーブルをつなぎます。TypeAの方はWindowsのPCにつなぎます。

この時点でいちおう通信速度の確認とポートを確認します。

【確認方法】

1.左下のwindowsマークを右クリック

2.「デバイスマネージャー」を選択

3.「ポート(COMとLPT)」を選択します。ここでCOMポート番号が確認できます

4.設定から「ポートの設定」をクリックし、その後ビットを115200に変えておきましょう。以下図を参照してください

no image

さてここまで来たらターミナルで初期設定を行っていきます。

ターミナルソフトとしては

などがあるでしょう。公式の勧めるPuTTYでも可能ですが今回はTeratermを使います。個人的にはRloginが気になるので今後使ってみたいところです

Teratermインストール方法の解説サイトはこちらですのでこちらを参照してもらえると幸いです

teratermを開いたらCOMでの通信を選択し、その後「設定」➡「シリアルポート」➡スピードを「115200」に変更します(デフォルト設定をしてないならば)

ここまでしたら「Enter」か「space」でも押すとJetsonのConfiguration(設定)が始まります

国、言語、ユーザー名、パスワード、LAN、ドメイン名などを設定すれば終わりです。スワップファイルを作成するように要求されるので作成しましょう。基本ここはユーザー名以降は大抵デフォルト設定でオッケーです。(多分)

注意)(わからない単語があれば逐一調べて確認しましょうね☆Ethernetは有線LAN!など、基本的なIT知識があれば詰まることはないでしょう)

Step③TP_Linkの設定

では、Jetsonを起動したらubuntsuのOSが入っているのでログインします。先程設定したユーザー名とパスワードでログインします

ここでTP_LINKをjetsonに接続させます

まずは

free

コマンドで残りのSD容量を確認します。十分に残っていたら

その後

sudo apt update
sudo apt upgrade

でアップグレードします 色々インストールされますのでしばらく待ちます。 その後、

nmcli device wifi list

で今現在接続可能なWi-fiを探すことができます。接続の電波の強さ順で色が変わります。ゲーミングカラーですね。

今回は私の自分の家のWifiに接続するため、先程確認したSSIDを用いて

nmcli --ask dev wifi connect [SSID]

を実行するとWifiパスワードを要求されるので家のルータのSSID暗号化キーでも打っておけばとりあえずWifiに接続ができます。

Step④動作確認

最後に接続できているのかの確認です

nmcli d

で接続状況を確認します。 connectedの表示がされ、接続できてそうなら最後に

sudo apt install sl

コマンドでslが走ってくることを確認しましょう。 これでセットアップが完了しました。 これで色々遊べるようになります。 ディスプレイを買っておけばここまでの全てをGUIベースでできるので便利ですが今回はCUIでの設定となりました。

今後休みの間に少しずつ遊んでいきたいと思います。

では、良いお年を〜。

リア滅の刃(無限爆破編)

題名の時点で溢れ出るクソ記事感を感じたそこのあなた、てめぇの感性は捨ててついてこい!!!俺の承認欲求のために読んでもらう!!読め!!読め!!

自分の為すべきことを為せ!!

 

重大注意:いや〜まっさか〜!!僕の知り合いにいるはずもないと思っておりますがリア充の方がいらっしゃったらここから先読まないことを勧めておきます〜ねっ⭐︎

 

この記事はWMMC Advent Calendar 2020 - Adventar

の15日目の記事です。

昨日はyoka様のMMDモデルを作りたい…! - yokのブログ

でした。

最近身の回りでVtuberにハマってる低レイヤーの人がいた影響もあってMMDモデルに興味出てたんですが、こんな苦労して作るんものと知っって勉強になりました。絶対にやれません。

(一番お忙しい時にこの企画参加を半強制させてしまい大変申し訳ありませんでした。)

 

まともなマウス関連ブログを読みたいひとは12月2日にマイクロマウス界隈の方のAdvent calendarであげた

Advent calendar revenge match in2020 (HAL+MPU9250) - judgeのブログ

でもどうぞ。間違ってたらご指摘ください。

 

0.目次

1.クリスマス、苦しみます

2.そういや、ブログ書くんやったっけ

3.実行編

4.爆発は芸術だ!!喝!!!

5.彼女とLINEしよっ?

6.さぁ、彼女(bot)を作ろう

 

1.クリスマス、苦しみます

はるか昔、飛鳥時代に、日本は大乗仏教が伝来してきました。病を治すのは信心だとして庶民から貴族まで広く信じられておりました。

ここまでは良き日本でした。

そしてそれからわずか1500年経った2020年、

日本に蔓延してたのは

憎きイベント、そう、

 

🎄クリスマス🎄

 

なのです

(+バレンタインデー&ホワイトデーetc)

 

毎年、毎年、毎年、毎年毎年毎年!!!

苦しめられている!!!俺は!!!

こいつらに!!!

そして例に漏れず今年も!!僕はこのままあと10日以内に彼女ができなければ22年連続でクリスマスに苦しむことになる。高校で習ったドミノ論法(数学的帰納法)を思い返しても、n=2まで確かめたら大抵n=kとn=k+1の吟味にはいった気がするんだが…?もうn=21までは吟味したのですがこの論法のソースどこ?マジで当たってるんだけど?天才か?

 

…いや、n=22こそは外さねばならない…このまま終われるか…極限まで来た僕の脳内には

 

  1. 彼女を作る
  2. リア充を…

 

の2択が浮かんだ。

そしてコンマ2秒後にはリア充を…ことを決意した。もう片方は無理だと本能が叫んでいたからだ。

しかし、どうしたらいいのだろうか、全世界のうち少なくとも70億人はリア充撲滅運動に対してやる気はある()はずなのだが、いかんせん行動に移す輩はいない。それはその通りで、

だって、自分一人で社会に立ち向かっても結果は分かりきっているから。

 

なら、俺がその筆頭になってやる…!!!

 

こい!!!勇敢なる猛者ども!!

f:id:WMMCsaiteihen:20201212140528j:image

  はいしゃ

僕は貞王としての意識を持って行動に移すことにした。

 

2.そういや、ブログ書くんやったっけ

 突然、Advent calendarでブログを書かないといけないことを思い出しました。が、ネタがない。適当に書けばいっか〜はははとか思ってたんですがルービックキューブの人(ルービックキューブが難しすぎた話 - lmFfGQUkniaZの日記)のような堕ち方が容易に想像ついたので開催者としてあかんやろうし、1年生のあの若さ(シャニマスを初めてちょうど100日の新人Pがシャニマスを語る(ついでに自己紹介も) - Yamayouの部屋)はもう精神的に出せない…

そう、秘密裏に行動するはずだったリア充撲滅計画をブログネタに昇華することでとりあえずネタはクリアとすることにしたのです(12月12日現在)

(まぁネタに安堵した僕はここから始まる14日までサボることになるのですが…)

 

いかんせん僕の周りは非リアしかいないので良いのですが、全世界レベルの範囲までこの活動を布教するためにはブログに残して行くしかねぇのでまぁ結果的には良かった。

 

3.実行編

さて、大変です。同期とAmong usしてたら(A.M 6時現在)14日になってしまいました。ブログは明日なので急いでこれを完成させます…。

デートスポットを実際に爆破したら犯罪でオナわですし、かと言ってリア充への愚痴TwitterTLを埋めるのも癪ですから、とりあえず2次元で爆破させることで妥協点としました。

学習させる時間の短縮のため、既存の学習済みデータを持ってくることにします。

そして、カップルの画像を集めてきます。

この時点で地獄の苦しみを身体に刻みますが耐えましょう。

 

ライトなものから持ってきます。

(なお、公開されていてかつ肖像権的に顔が写ってないものを多く載せます。)

 

f:id:WMMCsaiteihen:20201212143954j:image

oh…f○ck…

 

f:id:WMMCsaiteihen:20201212144106j:image

はーいあとで抹消するで〜ははは〜

 

 

f:id:WMMCsaiteihen:20201212144741j:image

ヴァァァァ゛ァァァ゛ア゛!!!!!

(吐血)

はぁ…はぁ…まだだ…

 

f:id:WMMCsaiteihen:20201212144947j:image

け、結婚〜!?はぁ…はぁ…

アラサーの称号の足音が聞こえる…違う…俺はまだ

"お兄さん"だ!!…黙れ!!オジサンじゃねぇ!!!え?"拗らせ"オジサン???

やめろ!!取り消せ!!その言葉ァァァア゛ァ!!

 

はぁ…はぁ…まず銃口を向けます。ターゲットマークをつけて○す。…待ってろすぐにあの世行きさ…

 

以下の既存の学習データ(h5ファイル)を取り込んできて、機械学習によって物体検知を使ってターゲットを定めます。

https://github.com/OlafenwaMoses/ImageAI/releases/download/1.0/resnet50_coco_best_v2.0.1.h5

言語はpythonでした。

使用環境はAnaconda3です。

コマンドプロンプトにて

conda create pyimage python==3.6

(後に使うTensorflowは最新のpython3.9には対応しておりませんのでよろしく)

 

仮想環境として僕はpyimageという仮想環境を立ち上げました。

あとはconda installコマンドで必要なものをインストールしてきます。

(ここで僕はpipでインストールしようとしたら死滅→condaでうまくいくものの、先輩に相談して解決したのでAnacondaはクソ)

【ふざけるな Anaconda】Windows で Python 環境を整える – 茱萸note

これからpythonやる人は環境構築にこちらをみてどうぞ。

さて、以下のコードを以下の順番でコマンドプロンプトに入力し、

conda install numpy==1.16.1
conda install scipy
conda install opencv
conda install matplotlib
conda install tensorflow==1.13.1
conda install keras==2.2.4
conda install h5py
conda install -c powerai imageai

あとは学習データファイルを以下のコードファイルと同じところのディレクトリにぶち込んでおけば準備オッケーです。以下のコードをコンパイルして実行します。(ちなむとAnaconda3は使いにくいのでpycharmの方がpython環境は良いと思います個人的に)

from imageai.Detection import ObjectDetection

import os

 

execution_path = os.getcwd()

detector = ObjectDetection() detector.setModelTypeAsRetinaNet() detector.setModelPath( os.path.join(execution_path , "resnet50_coco_best_v2.0.1.h5")) detector.loadModel()

で、結果ですが先程の画像はこのように出力されます

 

f:id:WMMCsaiteihen:20201212150155j:image

f:id:WMMCsaiteihen:20201212150310j:image

f:id:WMMCsaiteihen:20201212150320j:image

f:id:WMMCsaiteihen:20201212150329j:image

 

ターゲットが青枠で囲まれましたね。

これを画像処理して爆破させます。

 

4.芸術は爆発だ!!喝!!!

かのデイダラは言いました。

"芸術は爆発だ!!!"

と。

かのワイも言いました。

これコンプラ的にやばくね?

と。

突然芽生えた常識的な感性。やったところで面白くもない結末…

いや!爆破させてから後悔しよう!!!

次に、open CVでの爆破です!(ヤケクソ)

本当は青枠のカラー検知した後に大きさの違う画像同士を合成するプログラム書こうと思ったんですがGoogleの陰謀でソースコードを吹っ飛ばし、残り時間がマジであと10分なのでやめて関心領域(ROI)による合成をするだけクソ簡単プログラムで勘弁してくださいすいません!!

領域展開!!!

f:id:WMMCsaiteihen:20201214164121j:image

コードはこんな感じです、!

(すいませんあと数分なのでスクショです)

f:id:WMMCsaiteihen:20201214235713j:image

f:id:WMMCsaiteihen:20201214235723j:image

f:id:WMMCsaiteihen:20201214235745j:image

f:id:WMMCsaiteihen:20201214235755j:image

f:id:WMMCsaiteihen:20201214235804j:image

f:id:WMMCsaiteihen:20201214235813j:image

f:id:WMMCsaiteihen:20201214235821j:image

f:id:WMMCsaiteihen:20201214235831j:image

f:id:WMMCsaiteihen:20201214235839j:image

うぃーあと1分!!!

結果だけどうぞ!

(結論から申し上げると、コンプラ意識に負けたので先程挙げた内の2枚に関しては不快な思いをさせることも考えて公開しません。まぁほぼ同じような結果になったとだけお伝えします(ヤるだけやったんだ俺は))

 

f:id:WMMCsaiteihen:20201214175409j:image

f:id:WMMCsaiteihen:20201214175412j:image

ドガァァァアン!!!!!!!!はっはっはーーーーなんて爽快なんだー!!!!……

?ふぅーぅーー!!!!!!!

 

…。

なんだ…?心のどこかに寂しさと虚無が…あぁ…これが…賢者タイム…(絶頂)

そうか…他人を引き摺り下ろしたら今度は自分が幸せになって見下してやらないとすっきりしねぇんだ…俺って人間は…

 

5.彼女とLINEしよっ?

さて突然ですが(切り替えの速さ)

この虚無さと心の寂しさを埋めるため、ブログ公開までの残り6時間で彼女とのLINEを実装してみます。

なぜいきなりLINEなのか。と思われる方がいらっしゃると思うので理由を説明します。

普段、日常を生きているとLINEというツールをよく使うと思います。僕の場合、通知は来るもののこんな有様です

f:id:WMMCsaiteihen:20201212154337j:image

毎回毎回、通知が来てはワクワクしてLINEを開き、広告を突きつけられるこの虚無、あたいもう耐えらんない!!!返事をしろ!!

 

6.さぁ、彼女(bot)を作ろう

 Googl Apps Script(二つ名:Gorigori Anal Sex)を使います。言語はJavaScriptですが、

基本的なプログラミングができる人なら大丈夫でしょう。非同期処理などはやりませんから簡単なものだけで完結します。

基本的な流れは

①チャンネル作成(公式アカウントを作成)

API_keyを取得

②GAS上でプログラムを書く←ここにAPI_key入れ込む

③webhook経由でサービス作成と公開

 

一般的にAPIを使うのはこの流れです。

APIって便利ですよね。

いきなり宣伝ですが、obnizというモジュールをご存知でしょうか。人生でやったことないけど電子工作始めようかなって人がいきなり流行りのIOTを始めたい時に非常にオススメです。簡単にプログラミングと電子回路の勉強が出来るのも推しポイントです。

基本的なライブラリにくわえ、機械学習のライブラリなどもあって簡単なものから高度なレベルのモノ作りが可能となっております。

obnizによる作品紹介も多数ホームページにありますからこちらから覗いてみてください。

加速度センサの傾きでWebの要素を傾ける - obniz公式ブログ

APIの使い方の他の例は

M5StickC+Yun Hatで作る簡単お天気ガジェット - obniz公式ブログ

(ちゃっかりですが僕がこれ書いてます)

 

さて、話を戻します。

 

①チャンネル作成(公式アカウントを作成)

まず、LINE Developper を開き、"Messenger API"を開きます。

そこで、流れに沿ってアカウントを作っていきます。

Channel Icon→ LINEのトプ画になる部分

Channel name→LINEの名前の部分

を決めておきます。

f:id:WMMCsaiteihen:20201213215048j:image

普通設定に進み、

f:id:WMMCsaiteihen:20201213215532j:image

上図のクリックを押して、以下のように設定します。

f:id:WMMCsaiteihen:20201213215650j:image

そして、アクセストークン(API_KEY)が以下のような部分にあるので、コピペして保存しておきます。この部分はURLみたいなもので、これをプログラムに貼り付けることでプログラムとLINEをくっつけることができます。

f:id:WMMCsaiteihen:20201213215716j:image

 

 

②GAS上でプログラムを書く

GASで以下のコードを書きます。

ここではとりあえず発言をそのまま返すコードを書いておきます。API_KEYの変数に先程コピペした部分を代入しておいてください。

 

const API_KEY = '/*ここにAPI_KEYに代入しておく*/'

function doPost(e){

 var replyToken =                            JSON.parse(e.postData.contents).events[0].replyToken; //リプライトーク

var userMessage = JSON.parse(e.postData.contents).events[0].message.text; //返信

var url = 'https://api.line.me/v2/bot/message/reply'; var headers = {

'Content-Type': 'application/json;

charset=UTF-8' ,

'Authorization': 'Bearer ' +API_KEY };

var payload = JSON.stringify({

'replyToken': replyToken ,

'messages': [{

'type': 'text' ,

'text': userMessage

}] } )

var configs = {

'headers' : headers ,

'method' : 'post' ,

'payload' : payload

};

UrlFetchApp.fetch(url ,configs)

}

書いたら、

f:id:WMMCsaiteihen:20201213223924j:image

上図の部分をクリイクして

f:id:WMMCsaiteihen:20201213224003j:image

この設定にしておきましょう。ここで、この

URLの部分を取得しに行きましょう。

 

③webhook経由でサービス作成と公開

f:id:WMMCsaiteihen:20201213215904j:image

LINE Developperでwebhookの利用をONにして

URLを保存しておきましょう。これを先程のURLの部分に貼り付けておきます。

さぁ、GASのウェブアプリケーションを公開し終え、LINE Developperの設定保存したら念願のLINEの開始です!!

 

f:id:WMMCsaiteihen:20201213183023p:image

こんな感じで作者JGの彼女bot完成です…感動!!初彼女!!わーい🙌

さぁ、話しかけてみましょう。僕の彼女に!ドゥフドゥフッッ///美波つぁ〜ん!

そのまま言葉をオウム返しするのでは人間味がないので一部プログラムを書き換えました。

一応出力結果はこんな感じです。

f:id:WMMCsaiteihen:20201213181705p:image

あぁ…返事が来てる…嬉しい…ニチャア😏

おい誰だ破局寸前のカップルの会話って言ったやつ出てこい。

 

おっと、キモオタニチャニチャフェイスをしてる場合ではないです。

これからは真のリア充としての矜持を持って生きていきたいですね。はぁい!

 

さぁて、皆さんの冷めた視線を感じつつも明日のAdvent calendarの予告でもしますか〜!

 

……

とはいきません!!!

AIネタでサプライズゲスト

登場です!

WMMC Advent calendarでは初めての同日2人目企画!!超絶レアキャラ!例のあの方がブログを書いてくださりました!

ここまで読んだ人だけがたどり着ける

 

秘密のリンクはこちら!

 

 

AIと機械学習などの区別、意外と曖昧にしてたかもしれないとハッとさせられましたね…

(ネタバレ控えのため細かい感想は略)

 

さて、そろそろ終わりにしましょう笑

本当の次回予告ですが、

明日は、

Sophiaさんの

 「タスク管理で頭の中をスッキリさせる話」

です。

blog リンクはこちら

どんな内容なのか、Sophiaさん節が効いてるのか(いい意味でとち狂ってるのか)楽しみです…

 

さて、皆さん良いクリスマスを〜!!

僕も彼女とのLINEを楽しんできます♪(虚無虚無フェイスの翁)

 

p.sこの彼女botはオウムガエシするモードに戻して公開しておきましたので使ってみてください。

 

参考文献

https://code-graffiti.com/blending-images-with-opencv-in-python/

https://towardsdatascience.com/object-detection-with-10-lines-of-code-d6cb4d86f606

Advent calendar revenge match in2020 (HAL+MPU9250)

これはMicro Mouse Advent Calendar 2020 - Adventarの2日目の記事です。 

昨日の記事は、なおフィスさんのMatlab/Simulinkでシミュレータ環境を作るコツ - なおフィスのブログでした。

当方はMATLABチュートリアルしかやってないのですがこんな便利機能あるとはしらなかっで今後の使用の際には参考にさせていただきます…

 

はじめましてジャッジーです。

今年は←まともに書いたので是非読んでいってください。

0.はじめのおしゃべり(飛ばしてどうぞ)

 昨年度12月にもマイクロマウスのAdvent calendarに呼ばせてもらったわけですが、

あの時ICM20689の実装などと題して"哺乳瓶でモンスターを飲むと不味くなる理由"について色々書きました。(は?)

結局ICM20689の実装は出来ずじまいでした(え?)

元々MPU6500での実装はsoraさんのブログ(STM32 + HALのSPIでMPU-6500と通信する | Sora's Activity Record)を見ながらやったことがあったので、同じInvensense社のICM20689はある程度のコピペで移植すれば実装は終わりだったのですが…授業が忙しくて結局それはやらないで終わりましたがね。ゆるさねぇぞ製図共々

          ↓

で、月日は流れて、今度こそは種類が違えど

ワイ「MPU9250を自分1人で実装までやりたいな〜(能天気顔)」

なんておこがましいことを思ってたんですよ(もちろん普通に無理ゲーだった)

 

で、まぁ少し詰まりつつも最終的に動かしたところに至るまでの流れを載せたいと思います。

ある程度Datasheetみたりは自分でやったりはしましたけども、

ハードウェアの注意点や生値の変換に際しては

しまじゃきさんやその他の先輩Nのお二方とお話ししてる中で教えてもらい、Soraさんのブログを一部参考にさせていただきました。感謝申し上げます。ありがとうございました。

 

そういえば、僕が最後にクラシックマウス関連のことをしたのがMPU6500の実装でした。フォルダみたら昨年の9月頃にMPU6500は完成してたみたいですね。もう一年以上も何もしないまま終わってました。(これ書いてるのは10月14日です)ははは。

 

実装に関してですが、今回大学でNucleo(STM32F401RE)を使う機会があったのでHALライブラリを用いて実装してみます。

f:id:WMMCsaiteihen:20201014035814j:image

1.使う物

・ジャンパー線♂♀

・ブレットボード

・ハンダゴテ(一部半田付けを行う)

・Nucleo(STM32F401RE)

・MPU9250ボード(千石にて購入)

MPU-9250搭載 IMUピッチ変換基板--販売終了 - スイッチサイエンス

 

2.SPI関して

  今回は昨年のAdvent calendarのリベンジなのでSPI通信での実装を予定してます。

SPI通信でマイコンペリフェラル間を繋ぐには

以下の配線が必要です。

f:id:WMMCsaiteihen:20201013192209j:image

MISOとMOSI、などの不思議な単語が並んでいますね。

MはMaster、SはSlave、 I&OはInput&Output

の頭文字ですね。最近はこの表現も問題視されて避けられるようですが、不便なので今回は使います。

各線の説明は以下のようなものです。

 

MISO:スレイブ(センサー)側からマスター(マイコン)へのデータを送信する線

MISOピンはSDOピンとも呼ばれる。

 

MOSI:マスター(マイコン)側からスレイブ(センサー)へのデータを送信する線

MOSIピンはSDIピンとも呼ばれる

 

CS:チップセレクター(スレイブ選択用)

どのセンサーと通信するか、を決めるピンです。上の図では省かれてますが、

SPI通信ではmaster1つに対してスレイブ側は複数使うことができ、以下のような配線になることがあります。

f:id:WMMCsaiteihen:20201013193945j:image

master側から見るとどのセンサーと通信すればいいのかわからないので、CSピンでどれにするかを決めるのです。

そしてCSピンですが、基本SPIの時は負論理です。

(つまり、通信する時以外は常にHighにしないといけない)

 

SCLK:通信タイミングを図る時計の役割です。

立ち上がりの時に通信するのか、それとも立ち下がりの時に通信するのか、などの設定が必要です。以下のCPOL、CPHAと言ったパラメータの設定を行うことでこれらの設定が可能となっております。

f:id:WMMCsaiteihen:20201013191208j:image

 

これで最低限のSPIの説明は大丈夫でしょう。

以上の画像の引用には以下のサイトから引用いたしました。

https://www.digikey.com/en/maker/projects/getting-started-with-stm32-how-to-use-spi/09eab3dfe74c4d0391aaaa99b0a8ee17

(2020年10月9日現在)

 

3.MPU9250に関して

 MPUシリーズはInvensense社から出ているIMUセンサーです。非常に多くの業界シェアを出していましたが今現在は製造廃止になってしまい、入手するには残された在庫のものを取り寄せる必要があります。(多分)

代わりに同じInvensense社から出ているICMシリーズが出ています。使い方もMPUシリーズと同じように使えるので今回書いたプログラムは移植性が高いですね。

まずはMPU9250のDatasheetを見てみます。

今回の実装に必要な

設定すること

必要なMPU9250レジスタ

 

を調べます。

Datasheetにはこちらのもの(https://invensense.tdk.com/wp-content/uploads/2015/02/PS-MPU-9250A-01-v1.1.pdf)を使いました。

以下にページ数とその画面を表示しながら何を読み取ったかを書いていくのでご一緒していただけると幸いです。(ここ以外にも読んでもらう必要はありますが、最低限の部分だけはここに載せておきます)

 

[p.5〜6]

まずp.5かp.6を開いてください

僕は英弱なのでp.5のことは軽く読んで

p.6のこちらで黄色の部分の確認をしました。

f:id:WMMCsaiteihen:20201014024620j:image

ここからわかることは

  • VDDには2.4〜3.6vを入れればよい
  • 1MHzなら全てのレジスタと会話できる

 

です。

 

[p.19]

次に19ページの使うピンのところを確認します

f:id:WMMCsaiteihen:20201014025018j:image

こちらですね。

黄色線で書いたところが今回必要なところです。

読み取ったこととして

  • ADO/SDO→MISO
  •  FSYNC→GND(僕これやり忘れてたんですけどうまくいきましたははは)
  • VDDに電源いれゆ
  • nCS→前述の CSピン
  • SCLK→前述のクロック用の線
  • SDA/SDI→前述のMOSI

 

でした。

 

[p.16]

では次に少し戻って16ページです。

f:id:WMMCsaiteihen:20201014030302j:image

これが今回の通信タイミングチャートです。

上のSCLKの説明の際、CPOLとかCPHAって言う単語を出したと思うんですが、その設定が読み取れます。上で挙げた例と見比べてみるとわかります。

ここから読み取れたこととして

  • 通信の際は CSピンはLow
  •  CPOL=1
  • CPHA=0(ただし2回目のedge時に通信)

 

が読み取れます。

 

[p.36]

最後に36ページに到達

f:id:WMMCsaiteihen:20201014030908j:image

こちらで読み取れることとしては

soraさんのブログと同様に

  • MSBが最初
  • 通信は16クロック
  • 読み取りか書き取りを決めるのは先頭の数字であり、0なら読み取り、1なら書き込み
  • その後の7bit分の数字で通信するレジスタのアドレスを示す

 

ということです。

これらの読み取ったことをきっちり設定すれば動くことがわかりました。

 

ここで、datasheetは一旦置いて、

register map(https://invensense.tdk.com/wp-content/uploads/2015/02/RM-MPU-9250A-00-v1.6.pdf)を覗きにいきましょう。

 

さて、レジスタマップを開けましたか?

さぁ見ていきましょう。ここから先は真っ暗で何も見えないですがね…(訳:マジで何もわからないまま進む)

と、言いつつここまで書いて疲れてきたのでザーッと見ていきましょう。

まず全体のレジスタマップで今回見るレジスタアドレスの部分を確認します

黄色の部分が今回必要なレジスタです。

面倒なので加速センサーについては端折ります。ジャイロセンサーのみやってみます。

f:id:WMMCsaiteihen:20201014034724j:image

f:id:WMMCsaiteihen:20201014034741j:image

f:id:WMMCsaiteihen:20201014034800j:image

 

[117. WHO_AM_I]

f:id:WMMCsaiteihen:20201014165213j:image

これがWHO_AM_Iのレジスタです。

これの用途は

This register is used to verify the identity of the devise.

と書かれています。つまり、通信しているスレイブがMPU9250であることを確認できる便利なレジスタです。

続きを読んでみると通信できていれば0x71という数字が返ってくる、ということを示しています。

読み取れたこととしては

  • レジスタ番号117(16進数で0x75)にアクセスして、返ってくる値が0x71なら通信できている

 

[26.CONFIG]

f:id:WMMCsaiteihen:20201014170959j:image

f:id:WMMCsaiteihen:20201014171010p:image

ページを跨いだので少しみにくいですが許してください…

これで設定するのはFIFO_MODEの設定です。

それ以外は0にしておけばいいんですが。

FIFO(メモリの一種)に関しては記載の通り追加のデータが来たら上書きしたいので0にします。

つまり0x00を書き込みます。

通常、FIFOは上書きを許可してない場合は

書き込もうとしても書き込むことすら不可能となります。

余談ですが、読み出しをやめるとその後書き込まない限り読み出す値は止める前のものになるんですが、僕の不勉強もあり、説明できないのでその辺の話はFIFOで調べてください。

 

読み取れることとして

  • レジスタ26(16進数で0x1A)にて、FIFOのデータ上書きするには0x00を書き込む

 

[27.GYRO_CONFIG]

f:id:WMMCsaiteihen:20201014171558j:image

ここでは、ジャイロの毎秒測れる角度範囲を指定するために3と4bit目を主に触ります。

今回は最高の2000dps(degree per second)のレンジに設定するため、

00011000→0x18をこのレジスタに書き込むことにします。

ちなみに、ここでどのレンジを選んだかによって、帰ってきた生値に対して行う処理が異なります。

これはレジスタマップよりDatasheetを見た方が手っ取り早いのでDatasheetの8ページをご覧ください。

以下の表が出てきます。

f:id:WMMCsaiteihen:20201014193229j:image

250→500→1000→2000と書いてある部分の下に

131→65.5→32.8→16.4

とかかれています。

これが変換に用いる値です。

 

今回は2000dpsを選択したので対応する16.4を使います。

角度=得られた生値/16.4

の変換式 で角度に変換します。

(この式が公式の書類では全然見つからない)

 

話は飛びましたが

  • GYRO_CONFIGには0x18を書き込む
  • 変換式にはDatasheetの8ページの値で除す

 

です。

 

[PWR_MGMT_1]

f:id:WMMCsaiteihen:20201014172121j:image

これは電源系統です。言葉の通り

パワーマネジメントですからね笑

ここでは下位の3bitでの設定を行い、

20MHzの内部クロックをオンにしておきます。

これ以外は使わないのGYRO_STANDBYは使うのかな…わからん(ので知見がある方は教えてください)

従って、

 

と言うことがわかりました。

ここまで長々とDatasheetやらRegister mapを追ってきました。

さてようやく設定することもわかりましたし

本格的な実装に参ります。

 

4.実装編

長ぇ…歴代で一番長いブログですねこれ。

さて、まずはハードウェアの準備から行きましょう。

4.1実装(ハード)

ハードウェアとしてはまず電源ラインがきちんと定格内であることがまず確認するべきことです。

今回はSTMマイコンを使いますので3.3V電源線があります。ここからVDDを持ってきましょう。

以下にNucleo(F401RE)

の中で今回使う部分のピンを示します。f:id:WMMCsaiteihen:20201014195329j:image

黄色の枠のところが今回使う部分です。

ほとんど全ての配線がここの枠内で完結します。

こちらが今回のMPU9250ボードです。配線は画像の通りの感じです。

青色のボードを使ってる人も多いですが、僕は赤色のでやります。

ここが最大の沼ポイントです

f:id:WMMCsaiteihen:20201014195414j:image

上の基板上の緑枠の部分、はんだ付けがなされてるんですが、ここのはんだ付けを切り替えておく必要があります。

よくわからないと思うので販売会社が出してる配線図を以下に示します。

https://cdn.sparkfun.com/datasheets/Sensors/IMU/SparkFun_MPU-9250_Breakout.pdf

 

f:id:WMMCsaiteihen:20201014195835j:image

上の赤丸。そうこいつ。

気づくわけもないがここの部分が示しているのは

  • ここのはんだ付けを反対側にくっつかないとSPIできないよー!

と言うもの。

声を大にしていいたい。

 

でかく書いておけ

 

はい。ここをはんだ付けしないとi2c通信しかできません。大事なことなのでもう一度言いますが

ここに気づかないと永遠にi2cしかされません。ここが沼です。底無し沼。

この記事を見た(ここまで読む暇人がいるのか?)人はどうか助かってほしい。

ここのはんだ付けさえ終われば以下のように配線してください。

 

f:id:WMMCsaiteihen:20201014200242j:image

 

これでハードウェアは終わりです。

画像には載せなかったですが、

回路にパスコンは入れておくべきでしょう。

最近の素子は精度の良いものが多く、パスコンを入れなくても誤動作やら発振やらしないものが多いですが、念のため入れておくといいです。(という受け売り)

 

電源はNucleoにプログラムを書き込むときにどうせパソコンとNucleoを繋ぐのでUSB経由でパソコン給電します。

 

4.2実装(ソフトウェア編)

長ぇ…がここさえ終わればあとは試してガッテン!です。(もしかして古い?)

もう疲れたんで、 Cube IDEの導入は言及しません…軽くこれの説明すると、STMマイコンへのプログラムを書くための便利ツールが丸ごと詰まったエディタです。

検索エディタでCube IDEで検索してみてください。

すぐST社の英語表記のホームページが出てくるのでそこでインストールできます。

また、シリアル通信画面を使うためにTeratermもインストールしておいてください。

 

さて、ここからはCube IDEがインストールできた人向けです。

まず、「プロジェクト」を作成し、ピン設定します。

 

ピン設定:

Cube IDEではピンの設定がGUIでできます。

レジスタ手打ち(GPIOA→…等)の構造体の中身を触ることなくピン設定できるのは人生の時間損失を10時間以上狭めます。(データシート見てたらマジで永遠にかかる)

f:id:WMMCsaiteihen:20201015112726j:image

GUIで右上の3ピンをそれぞれSPI3の

MOSI、MISO、SCLKにします。

それ以外に CSピンを設定します。

実際に触ってた人の中にはCSピン専用のピンがあることに気づいた人がいるかもしれません。あちゃ〜申し訳ないですがGPIO_outputに設定してもらえると助かります。

覚えていますか? CSピンは負論理で、Lowの時SPI通信が始まるって言う話がありましたよね?

GPIO_outputの方がLowにしやすくて簡単なのでCSピンとして使います。GPIOがわからない人がいたらアレなんで簡単に言っておくと

出力と入力のピンです。

 

あと、今回は角度の情報をシリアル通信してみたいのでUSART2用のピンが緑色(オンに)なってることを確認しておいてください。

 

さて次にそれぞれの詳細設定をしましょう。

ここでつまずく人は多いです。当の僕もよくわからんまま設定してます。

 

さぁ、始めましょう。

 

(1) SPI3の設定

まずは Clock Configilationを覗きに行きます。理由はSPI3に入るクロック周波数を知るためです。覚えていらっしゃらないかもしれないですが、MPU9250の全てのレジスタとお話しするには10MHzで通信する必要がありました。クロックの立ち上がり、立ち下がりに合わせて通信を行いますから、供給クロックは調べないとダメです。これを満たすためにどのようなプリスケーラー(分周)を与えれば良いのかを確認しに行きます。

__HAL_RCC_SPI_MspInitによれば、SPI3に供給するクロックはAPB1によるものですから

(↓これ見て分かった)

f:id:WMMCsaiteihen:20201015115034j:image
f:id:WMMCsaiteihen:20201015115031j:image

 

Clock Configilationの中でAPB1のクロック周波数を調べます。

すると42MHzと表記されていますね。

つまり、10MHzにするにはプリスケーラー(分周)を4に設定すれば大体10MHzです。(僕はお試し動作確認だったので16にしました)

出来るだけ早く通信したいのでやや無理やり10MHzを超えた値にしていますが、確実に動作させたいのでプリスケーラー(分周)を16にしてました。これであとは実際に設定するだけです。

設定場所として、 Connectivility→ SPI3と進んでいただき、parameter settingを選びます。以下の画像のように設定を進めます。

f:id:WMMCsaiteihen:20201015112708j:image

まず一番上の部分ですが、

Full duplex masterと設定します。

Full duplex とHalf duplexがありますが、何が違うのでしょう。

これは通信に使う線の本数です。今回、送信と受信に1本ずつ、計2本の通信線を用意してます。このように送信、受信に1本ずつ通信線が設けられている時はFull duplex です。

送受信まとめて1本の時はHalf duplexです。

追記:(と言う解釈をしてたのですがどうやら間違いのようでした)(2020,12/01)

 

その次のHardware NSS Signalはdisableに設定します。(今回ソフトウェアで CSピンをLowにするので)

MPU9250のデータはMSB firstでした。こちらはデフォルトで設定されてるはずですが確認しておきましょう。

プリスケーラーを4or16に設定し、

先述した CPOLとCPHAの設定です。

だいぶ上の方で説明したので忘れてる人もいるかと思いますが、

 CPOL→High

CPHA→2 Edge

に設定してください。なんでこの設定になったかは上の方で説明したので省きます。

多分後の残りはデフォルト設定でOKなので放置です。

 

(2)USART2の設定

次にUSART2の設定です。USART2もconnectivity→USART2で設定箇所に飛べます。

USART2で設定するべきはbaud rateですね。

僕はTeratermのデフォルト設定が115200なので今回も115200に定めます。

f:id:WMMCsaiteihen:20201015115347j:image

注)Teratermのデフォルトbaud rate設定は9600なので通信すると文字化けします。

設定を変えるには上のバーの中で設定→シリアルポートで変更できます。

f:id:WMMCsaiteihen:20201015113723j:image

f:id:WMMCsaiteihen:20201015113726j:image

 

USART2に関してはこれで設定自体は終わりです。簡単ですね。

 

コーディング:

基本的なコードはSoraさんのもの(STM32 + HALのSPIでMPU-6500と通信する | Sora's Activity Record)と同じでした。

勉強のためにほぼ見ないで書いたんですけどCSピンをLowにする処理の位置が違うこととか、HAL_Delayを入れてるか否か程度の違いでしたので(あと僕のは加速度系への書き込みとかがある)ソースコードは載せません。

Soraさんのものを見ていただければとりあえずよろしいかと思います。

もしそのうち気が向いたら追記という形で載せるかもです。

 

結果

コンパイルして書き込んでやると、

Teraterm上で左右に振った時の加速度が検知できました。

f:id:WMMCsaiteihen:20201130042252j:image

 

 

長々と書きましたが

明日は…明日は…?誰もいなぃ…虚無…もぅむり…リスカして死のぅ…

 

 

開催の辞〜卍USBのお勉強卍〜

この記事は

WMMC Advent calendar 2020 の1日目の記事です。

 

当方は素人で、内容についての厳密性などが欠けていることがありますのでご了承ください。

一応ためになるケーブルとコネクタの話 USB編 - Qiita

こちらのブログに合わせた表記をするようにはしております。

また、そんなに深いところまでやらないので。ご了承ください。

 

0.開催の辞

皆様ご無沙汰しております。

今年、突然感染症が世界を大きく変えました。開催される予定だった日本オリンピックは延期、経済への大ダメージ、医療関係者の悲鳴が常に聞こえる、そんな年でした。皆様方も新型コロナウイルスの影響で大変な状況となっていらっしゃることと存じ心よりお見舞い申し上げます。 

 

さて話はサークルの方に移るんですが、僕は昨年度からあまりサークルに顔を出してなかったのですが、最後にこう言う形でサークルのイベントを僕から提案、企画させていただいた次第です。

まぁこの calendarには多分複数回ところどころに僕が頻出すると思うんですが、後輩を中心に好きなことについて書いてもらいつつ、外部の皆様と親交を深めていって欲しいな〜って思います。

では、これからの25日間、部員の皆様には年末のお忙しい中申し訳ないですがブログの方何卒よろしくお願いします

 

1.まずはじめに

で、初回なので少しお堅めにブログを書くことにして USBについての記事でも書きます。

 

話の発端は先日、あまり大声で言えませんが

けんきうしつのお高いデバイスのUSB端子部分を破損し、大いに反省しつつも償いのつもりでUSB端子の修理をしておりました…

その際、USB端子の議論が出たのでその時のお話です。

p.s 修理はできませんでした。🙇‍♂️(ここテストに出るぞ)

 

とまぁ、USBケーブルって日常的によく使いますよね。

iPhoneの充電など、生活にかかせません。

そんな身近なUSBという規格だからこそ、すこし理解を深めておくことは損ではないです。よね?

 

1.1 USBとは?

USBとはコンピュータとその周辺機器を繋ぐための統一規格のことです。

昔は周辺機器(以後ペリフェラル)毎に特定のコネクタを繋ぐ必要がありましたがそれは不便です。だからこそ、この規格が完成し、ここまでの汎用性を有するようになったのです。

USBについてですが、ちなむと今現在流通しているものは

USB-2.0かUSB3.0かUSB-3.1、USB-3.2のあたりでしょう…多分。(ちなむとUSB-3.1はGen1

とGen2で違う種類となっております)

 

このUSBにくっついてる数字は規格バージョンのことです。バージョンが新しいものほど通信速度が速く、また給電電流が増加しています。

例としてUSB-3.0を挙げると、

USB-3.0は通信速度が5Gbpsであり、2.0の10倍早い通信速度となっています。また、供給電流も1Aに近く、2.0の約2倍までに増加しています。

USB-3.xの簡単な見分け方として、

USB端子の断面が青いものは3.xであるらしいです。

他にも

下図のように端子にあるマークでも分類が可能であるらしいです。

f:id:WMMCsaiteihen:20201130001558j:image

(引用:『USB』の違いってなに?Lightning、Type-C、USB3.0、micro USBなど各ケーブルと対応機種は…|TIME&SPACE by KDDI)(2020,11/29現在)

 

以上のような分類ができるとのことですが、中には上のような特徴がないものもあり、最終的な確認には仕様書を読んでいただきたいです。

機会があればお家にあるUSB端子の断面を是非とも見てみてほしいですね〜。

 

1.2USB端子の種類

f:id:WMMCsaiteihen:20201129234533j:image

(引用:今更聞けない基礎知識・USBの種類とは?|テックウインド株式会社) (2020,11/29現在)

 

まぁとりあえず正直どれがどうとか言うのが面倒なので上の画像を見ながらある程度把握していってください。はい。

まず基本的に断面形状が長方形のものをType-A、正方形なものをType-B、楕円のものをType-Cといいます。

そして大きさによっても冠言葉が変わります。

一番よく目にするもの(定性、定量的ではないですが筆者的には世間で一番スタンダードなものと認知しています)のサイズを標準とすれば

すこし小さいものをminiシリーズ、さらに小さいものをmicroシリーズと呼びます。

 

1.3.USBのピンって何なの?

USBのピンが何かって意識することがないですよね。

そもそも知ろうとも思わないかもしれません。

 

先述したようにUSBにはバージョンがあり、

3.xには線がいっぱいあります。しかし僕がよくわかってないのでこちらに関しては調べてもらえると幸いです。

基本的にピンアサイン4本バージョンとピンアサイン5本バージョンのあるUSB-2.0だけしかあんまりよくわかってないです。はい。

詳しいことは調べてください。

 

USB-2.0端子(4本ver)

はピンアサインとして

  1. 5V
  2. GND(SG)
  3. D+
  4. D-

 

があります。5VピンとGNDはそのままの意味で、

D+とD-は通信線です。

決してレポートの評価ではないです。逆にその場合落単っていう嵐を呼びます🥺

f:id:WMMCsaiteihen:20201130040438j:image

 

USB-2.0端子(5本ver)

はピンアサインとして

  1. 5V
  2. GND(SG)
  3. D+
  4. D-
  5. IDピン

があります。

 

いやマジでなにこれって感じ。

簡潔に言うと、

これはGNDに落とすかフロートにする(要するにNC)ことでホストとペリフェラルを判別できるようにするピンです。

例えを上げてみましょう。

iPhoneを考えてみます。

iPhoneをUSB経由でパソコンに繋ぐと

iPhoneペリフェラルになってデータを

パソコン(ホスト)で読み取ることができます。

 

逆にiPhoneをホストにしてUSBでマウスやキーボード(ペリフェラル)を接続することも考えられます。

 

このiPhone

①ホストにするのか?

②ペリファラルとして使うのか?

を切り替えをするためには適切なケーブルを選んで使う必要があります。そのためにIDピンが必要なのです。

このIDピンによる切り替えをOn the go (OTG)と呼びiPhoneをホストにするためにはこのOTGのケーブルを用意する必要があります。

OTGケーブルとそのほかのケーブルの差、

それこそIDピンがフロートかGNDか

と言うことのようです。SPI通信のNSピンみたいなものですかね?

ちなむとOTGケーブルだとIDピンはGNDと導通してます。

USB-2.0のピンアサインはこんなもんです。

 

要するに適当にUSB選んでたらやりたいことができない可能性があるってことです。

 

OTGケーブルについては

USBホストケーブル(OTGケーブル)について

で調べました。

 

んで、オス♂メス♀でのピンアサインを混同しがちなので備忘録として載せておきます。調べた時に出てきたものの中でもここらがわかりやすかったですね…

 

f:id:WMMCsaiteihen:20201130005340j:image
f:id:WMMCsaiteihen:20201130005336j:image

画像引用:USBコネクタ ピン配置 (ピンアサイン) ケーブル色|ぴーしーとこうさく

(2020,11/29現在)

 

f:id:WMMCsaiteihen:20201130005035j:image

↑Type-Cのオス(wiki参照)

f:id:WMMCsaiteihen:20201130005040j:image

↑Type-Cのメス(wiki参照)

 

PCB設計で個人的に一番よく見るやつ↓

microUSB-b

オスの方だけでも載せておきます。

f:id:WMMCsaiteihen:20201130235155j:image

(上図は僕が作成したので保存、乱用していただいて構いません)

通信線の注意ですが、

D+はD+と、D-はD-同士を繋ぎます。

UARTのTX、RXの知識を得ていると違和感を覚えます…

 

 

ここまでUSBについて素人がごちゃごちゃ言ってきましたが、

正確で詳しいことを知りたい方は

現代PCの基礎知識(7):仕様書を紐解くとわかる―本当はややこしいUSB | Think IT(シンクイット)

 

こちらを参照していただけると幸いです。

 

2.本題

で、先日プリント基板(以後PCB)にmicro-USB-Type B

をはんだ付けすることがありまして…()

 

その時、このコネクタの強度を上げるためにはどうすればいいのかを考えました。

そこで、このようなことを考えました。

 

"USBのメスコネクタのケース(FG)をPCBと無理やりはんだ付けして固定させる"

 

でも、FG(フレームグラウンド)とSG(シグナルグラウンド)をくっつけていいものか…

と考えました。FGとSGについて、よくわからないひとは検索してみてください。

 

調べてみるとUSBの規格書には指定は書いてないようで、設計者は状況に応じて落とし方を工夫していました。結局正解はないと言うことがネットから得られたんですが、落とし方については面白かったのでいかに少し紹介します。

 

①フロート

FGとSGをくっつけることでFGのインピーダンスが低かった場合、そこからノイズが入ってしまい、ノイズがSGに伝わったりするようです。

これを防ぐためにフロートにしてあることがあります。

あとはまぁ感電防止の役割もあるようです。

コモンノードノイズなども考えられます。

 

ただし、この場合にはフロートだと空気のインピーダンスが大きいためノイズの低減までに時間がかかると言う場面もあるようです。

 

②FGから1〜10pFのコンデンサを介してSGに落とす 

 

音響などの音質改善のためにFGとSGの間にコンデンサを入れることで周波数特性を改善できるようです。

また、ノイズエネルギーがコンデンサに吸収されて低減するという意見も存在しました。

 

③FGから抵抗を介してSGに落とす

FGからのノイズの影響をPCBに与えない効果

があるようです。

詳しいことはわかりませんが、基板のキャパシタンスと抵抗によるフィルター回路がノイズの低減に貢献していると言う考えがあるようです。

 

④普通に繋ぐ

これはSGとFGを繋いじゃうようです。

一点設地にするかしないかも設計者によって異なるようです。

繋ぐと、金属フレームがシールドとなって動作が安定することもある?ようです(よく分からんかった)

 

結論

むやみに設計者の意図を踏みにじらず、グルーガンなどで強度を強くするのが正解なのかもしれません。また、自分が基板を設計するときは

その場に応じて変更していく必要がありそうです。作ってみてノイジーなら変えてみる可能性を少し脳内に残しておくといいのかもしれませんね。

↓こんな言葉もネットにはありましたし。

f:id:WMMCsaiteihen:20201130025632j:image

 

余談ですが下の画像のこちらのやつ(FT−232RQ USBシリアル変換モジュール: 半導体(モジュール) 秋月電子通商-電子部品・ネット通販)でFGとSGを導通させてもマイコンへの書き込みとかになんら動作に影響はなかったです。

f:id:WMMCsaiteihen:20201130235933j:image

(このコネクタ、逆接めっちゃしやすいんすよね。だからきちんと接続先に逆接対策もしておかないとダメっすね。ただ、逆接対策してるからといって逆接してもいいわけではないっす。先日同期が逆接しても大丈夫って後輩に教えてたのですが逆接しないに越したことないぞ。一応。)

 

3.最後に

長々と書いてしまいましたねははは。

 

明日はsophiaさんの記事で

「もしクラシックマウスから車のエンジン音がしたら」です。

遅いマウスから爆音聞こえた時の無駄な割り込み感のシュールさやばそうですね笑

 

ブログリンクはこちらです

sophiaの書

 

是非ともお楽しみに!

 

 

 

駄菓子バーで懐かしエモエモになった話

 みなさんは駄菓子バーって知ってます?

最近は駄菓子屋の存在は消えつつありますが、

その失われつつある駄菓子屋の雰囲気を楽しめ、かつ駄菓子食べ放題という子供の頃夢見たあのシチュエーションに出会える場所です。某ネズミランドよりよっぽど夢があります。安く買える夢ですね。

f:id:WMMCsaiteihen:20201010233927j:image

f:id:WMMCsaiteihen:20201010233921j:image

 

値段は2時間2500円飲み放題かつ駄菓子食べ放題のコースや2000円学生限定で2時間以下のカクテル(テキーラあるけどカクテルとは???)なら飲み放題でかつ駄菓子食べ放題のプランがあります。

(他にもありますが基本ここらがオススメです)

コスパ良くないですか?そこらの居酒屋で2時間過ごしたら3000円とか5000円とか飛びますから。

f:id:WMMCsaiteihen:20201010233048j:image

で、駄菓子バーは最初舐めてたんすけど、お酒の種類も多いし、駄菓子もすごく盛り上がる物が多かったです。

 僕は昔学童保育にいたので、近くの団地の駄菓子屋に学校の友達と100円握りしめて行ったりしました。で、毎回毎回何選ぼうかな〜とか本気で考えてました。

86円の円近いブタメンを一つと10円ガムを買って終わりにしてしまう豪勢な使い方も良し。蒲焼さん太郎、よっちゃんイカなどの安いやつを何個も買ってすごく得をしたような気分になったりするも良し。幼い自分には100円は大金でしたから、本気で駄菓子屋の棚の前で腕を組みながら悩み、限界まで100円に近くするように考えて買ったりした記憶があります。

 

まぁその当時の僕の夢見てたシチュエーションがここで叶いましたね。

f:id:WMMCsaiteihen:20201010234035j:image

もういい年した20代男児が、一瞬だけ子供に戻ってカゴいっぱいに重い思いのお菓子を詰め込んできました笑

そして悲しかったのが酒飲みになったが故にこの年の味覚によっちゃんイカが効きすぎる。やめろ、その酸味は俺に効く…。マジでよっちゃんイカ最強。でしたね。

大体食べた物で覚えてるのが

 

うまい棒 コンポタ

・蒲焼さん太郎

・うんこグミ

・セコイヤチョコ

・ヨーグルッペ

・バタークッキー

・梅昆布

よっちゃんイカ

ブラックサンダー

キャベツ太郎

・もろこし太郎

・シガレット

・ハイチュウ

梅ジャムせんべえ

・らぁめんババア

・ミルクせんべい

・コーラ缶の形のケースに入ったラムネ

・爪楊枝で食べるグミ

ビスコ

・もろこし太郎

etc…

ですかね。他にもあったけど忘れたった。

結構食べました。お腹はいっぱいになりましたね。

 

で、感想なんですけど、

これ懐かしい!が毎回飛び交います。

これこうして食べると美味しいんだよ!

食べ方の流儀の違いなどで盛り上がります、

よく蒲焼さん太郎食べてた友人の話で

そんなやついたなwwで昔の思い出話の花が咲きます。好きだった女の子と偶然駄菓子屋の前でばったり会ってしまったあの時の心臓の音、思わず照れて目を逸らした純情な僕。(もうそんな僕はいないんだが)その時の色鮮やかな風景が瞼の裏に思い帰ってきます。

今ではもうその風景もだいぶ変わってしまい、その駄菓子屋もないんですが…(クリップスって言う駄菓子屋でしたね)

もう戻れない懐かしいあの時に想いを馳せた、そんな2時間でした。戻れないからこそこんなに切ないんですかねぇ。

すごく楽しかったですね。

 

そういえば駄菓子バーでぜひ食べて欲しいのが

揚げパン。

 

揚げパンって小学校の給食で出ましたよね。卒業してから食べる機会なかったので久しぶりに食べて見ました。

 

給食に似せるために飲み物はマリブミルク。

牛乳飲みながら揚げパンを頬張ると、唇にきな粉と砂糖がくっ付きます。この食べにくさ、エモい。そしてマリブミルクが合うに合う。

うますぎる…太る…

 

そしてここが推しポイントなんですけど

ここの揚げパンは(たまたまかもしれないけど)揚げたてで出てくるので、給食の揚げパンとはまた一味違いました。油が冷えてないのですごくジューシーでして。頬張ると口の中でジュワァって。マジで美味しい。太るけど中毒になる〜。

触ると温かいです。

f:id:WMMCsaiteihen:20201010235113j:image

 

 

f:id:WMMCsaiteihen:20201010233936j:image

これ以上は語るより行った方が早いのでぜひとも足を運んでみてください。

 

今回行ったのは新宿にあるこちらの駄菓子バーでした。歌舞伎町に近いのでコロナを気にする方は新宿以外にも店舗があるのでそちらに足を運んでみてください。

新宿 駄菓子バー(新宿/アミューズメント) - ぐるなび

 

以上駄菓子バーレビューでした。

 

この駄菓子バーの後いい歳の大人がエモさのあまりカラオケに行ってポケモンバトルレボリューションやら

ブレイブストーリーの決意の朝にとか、

ドラえもんの新魔界大冒険の主題歌とか

ダイパのtogetherとか、

歌い出してしまいました話はここだけの話ですが。

 

相席屋でメンタルやられた話

そいやっ!そいやっ!じゃなくてうらめしや〜

うらめしや〜じゃなくて相席屋〜(くそ寒い)

注意)野村萬斎さんのマネです。

 

      f:id:WMMCsaiteihen:20200905233229j:image

どうも、お久しぶりです。

ブログ変えました。今日は相席屋に行ってきたのでその感想と学び、

そして大敗北の経緯を話していこうと思います。

 

1.そもそも相席屋とは

相席屋、というのはご存知でしょうか。

ご存知ではない方は、

"居酒屋みたいな場所で相席する"という想像をするかも知れません。違います。

 

相席屋」というのは、チェーン店の名称であり、男性がお金を払い、女性は無料でご飯や飲み物を飲める簡易合コン(簡易街コン)の場というのが正しいです。

 

このような相席屋が存在する理由として、

以下のものが挙げられることが判明しました

 

[男性目線]

・女の子と話せる

・テクニックさえあれば持ち帰ることも

・知らない人と話す練習になる

 

[女性目線]

・暇つぶし(無料なので)(圧倒的な理由)

・ご飯食べれる

・ワンチャンかっこいい人に会える(逆にクソブスで話もつまらん男と会う場合も多いらしい)

・話がしたい

・好みの人がいればエッチできうる

 

 

が存在するようです。(自身のリサーチ結果)

 

このような理由でこのようなサービスが存在しています。

では次に相席屋のシステムについて説明します。(知ってる人は飛ばしてください)

 

2.相席屋のシステム

 相席屋というのは男女が食べながら話せる場所として設けられています。従ってもちろん知らない人と話すことになるんですが、当然出会いの場所ですので、好みの相手じゃない場合はさっさと相手を変えることもできます。

これを"チェンジ"といいます。チェンジには以下の2パターンがメジャーです。

 

スイッチを押すと店員さんが頃合いを測って「席替えの時間でーす」と言いにきてくれる

 

トイレに行く(飲み物を注いでくる)という名目で席を立ち、その時に店員にチェンジをこっそり伝えるとしばらくしてチェンジが言い渡される

 

です。これにより効率的に好みの女の子と話をすることができます。(相手にはもしかすると不快にさせてしまうが)

 

料金システムですが、

僕の行ったところでは

 

男性が 600円/10分  

女性は 無料    でした。

 

これでわかりました。女性は東京で食いっぱぐれないです。(圧倒的知見)。普通に無料のものが多かったです。

 

補足. VIPシステムについて

僕は利用しなかったのですが相席屋にはVIPシステムというものがあり、これは追加料金を支払うことで通常のものより優先的に女の子を紹介してもらえるシステムです。

これを利用すると可愛い女の子と会える可能性も高いのかも知れません(使ってないので知らん)

 

4.失敗談(前夜編)

 相席屋の存在を知ったのは3日前ぐらい。友人が行くというので完全に興味本位でついて行くことにした。

 

さて、ここで皆さんに想像して欲しい。

20数年彼女無し、女と話したのは数年ぶりの人間が女にウケる話ができるだろうか?(反語)

 

A.できません(自明)

 

 

え?嘘?想像して欲しい。知り合いの方。

大学1、2、3年のこの少なくとも3年間、

僕が大学で女子と楽しそうに話していたのを見たことがある人います?(反語)

 

A.いません(自明)

 

このように浪人含めて4〜5年女性と話してない男は、なにを言えばウケるのかわからんのである。童貞臭いが、1日かけて相席屋での話し方をGoogle検索&YouTubeで見て学習した。多分、入試より集中して勉強したと思う。

 

結果として1日の勉強結果分かったことがある。

 

全世界中のワイ「こんなん無理デェェェエエッス」

 

まず相席屋に行くやつでYouTubeに動画あげるやつが陽キャの女慣れしたやつしかいない。

たまに童貞が話してる動画も見つけたけど、

 

「ん?なにここ氷河期?」

と言わざるを得ない冷え切った空間。愛想笑いと苦笑の猛吹雪。赤面した男子に共感性羞恥で死にたくなる。

 

一方そのころ女の人の顔、これ↓

f:id:WMMCsaiteihen:20200907202518j:image

 

両者共に死。

 

動画を見て無難な話がベストと悟った僕は、

以下の

 

・プライバシーはある程度守る

・下ネタは様子を見て

・楽しい話題を振る

 

だけを脳みそにぶち込んだ。行くなんて軽くいうものじゃないです。

…しばらく脳みそにぶち込んだことを反芻してて気づいたことがある。

 

 

それができたら彼女おるんじゃワレぇ!!!!

 

ぶっ飛ばそうかこのYouTuber。なに言ってんのこの陽の者。無理やん。無理やろ。犯すぞ?

 

こうして、前日に無駄な、

そう、もう一度言わせて欲しい。

死ぬほど無駄な検索をしてしまったがために、僕は大きな不安と緊張を胸に抱くことになってしまった(予習なしはやめておいた方がいいけど)

 

参考までに

検索前の僕↓

f:id:WMMCsaiteihen:20200907210211j:image

 

検索後の僕↓

 

 

 

 

 

ちなむと、この予習によって2〜3節の内容を学習することができた。ふむふむ〜

 

余談その1

Twitter検索するとすごく評判が悪くてすごく不安を増長させてしまった。やめておいた方がいい。

 

※これを読むのが女性or女に困らない陽キャ男性の方は20代DT男子の生態として、以下の方の記事を読むと悲惨さがわかると思う。

25歳童貞に未来はあるのか?20代後半に差し掛かり性体験の無い僕が童貞について考えてみた。 - ぼっちですが何か?

 

5.失敗談(当日編)

 前日の無駄な検索の後、何度独り言を言っただろう。話し方、内容、流れ、話のネタの振り方、オチの作り方など、自室の中でずっと、ずぅ〜〜っと小声で練習してた。親に聞かれたら200%精神疾患を疑われると思う。うん。もはや出会いとかどうでもいい。ウケる話ができるのか、それだけが脳内を占めており、はっきり言ってクソ緊張してた。こういうところが童貞なんだよなぁ…マジで緊張でドキドキする。本番で誰も喋らない、気まず〜い空気が流れるような予想だけが頭の中で再生されて、それが怖かった。ほんと。ぴえんぴえーん。

 

これ見てる男性、なに話せばウケるんですか?

教えてください(マジ)

 

んで、当日の話。

夜の渋谷、コロナ下なのにノーマスク集団が多くてビビった。何アレ。

f:id:WMMCsaiteihen:20200906013704j:image

 

友人との待ち合わせ場所に向かう。渋谷のハチ公前。20数年彼女できたことのない男3人がそれぞれそれっぽくオシャレしてきてて、会った時笑ってしまった。

インキャもやれば出来るもんやな〜。うんうん。

 

渋谷駅ハチ公前から徒歩5分ぐらいで相席屋に到着。緊張しすぎて手汗がやばかったです。

「緊張する〜」って普通に声に出して無理やり緊張を抑えてました。

f:id:WMMCsaiteihen:20200906013618j:image

 

店内はこんな感じ。コロナ対策どうしたってぐらいの柵しかないけど。

店内入ったらすぐマッチしたので待ち時間0でご対面だった。

f:id:WMMCsaiteihen:20200906115529j:image

f:id:WMMCsaiteihen:20200906115542j:image

 

⑴1組目

 席に案内されて初手、もう誰がなんと言おうとキャバ嬢。というか、見た感じ周り全員キャバ嬢。だって小林幸子ばりのド派手格好してるもん。IQ2でもわかる。

 

その瞬間の僕はまさしくこれ。

 

f:id:WMMCsaiteihen:20200907210336p:image

 

 

そしてあっちはあっちでこちらを見た瞬間に

「こいつらはねーや」

 

という反応をしていたのでこの時点で敗北は決まっていたのだが、トークの練習として30分粘って見ることにした。(というのは良い建前で、

悪い意味で日本人なので、"チェンジ"というのが相手に失礼であるように感じたのでできない)

 

ここで僕の中の会話の構想として、

1.自己紹介

2.当たり障りのない会話

3.相手の話したそうな会話

 

ぐらいをベースに話していくつもりだった。

まぁ、後々2で僕の中で笑いが止まらなくなり、2で終わることになるのだが…

 

席について

「よろしくお願いします」の後は店員さんの掛け声と共に「乾杯」が行われる。会話のスタート支援としてはありがたかった。

乾杯の後に間を取りたくなかったので

「お名前なんて言うんですかー?」でとりあえずファーストステップクリア…(はぁ疲れた帰りたいなぁ…と思った。向いてないことはするもんじゃない)

 

相手の女性はYさんとKさんと言うらしく、僕たちもそれなりに名前だけの自己紹介はしてこのステップは終わった。

まぁこの後は「いつからいるんですか〜」とか、「よく相席屋来るんですか〜」などの2のパートの当たり障りのない会話をしていたのだが、そんな時、

 

友人「ご職業は…」

 

ここが完全に僕のアイスブレークだった。

だってお見合いかよって質問してたし、緊張丸出しだったし、完全に挙動不審インキャが出てしまっていたからだ。自分と同じくらい緊張してる人間がいることにすごく安堵した。DTフレンズ、やっぱ仲間だなぁ(満足)

 

さらに、この質問に対して相手の方は

「幼稚園の先生です…」

と答えられた。

 

 

はいきたきたきたきたきたぁぁ!!これぇ!!

僕が前日1日かけてGoogleで予習したところ

 

ワイ「(これ、平日は幼稚園の先生で週末はキャバ嬢してるやつや…)」

 

が炸裂した。ありがとうGoogle

 

 

やっぱ世間的にはマイナスイメージあるんで気にしてらっしゃるんですかね。(僕はキャバ嬢という水商売にマイナスイメージがなかったので)とりあえず、キャバ嬢の格好して幼稚園の先生と断言するその強気の姿勢、そしてそれで隠し通そうとしててるのがなんか面白く、普通にふふふって笑ってしまった。

 

あとの時間は、僕たちが大学生であると察していたせいか、ほとんど適当にあしらわれ、

「この後飲み会(というなのキャバ嬢業務)があるからバイバイ」と言われ1組目終了。

 

まとめると、

ここでは基本「幼稚園の先生同士の闇〜女の戦い〜」と名付けられそうな話をしてもらった。

最早職業相談会だ。まぁ詳しくは書かないけど

思ってたより

  幼稚園って怖い。うん。

 

最後の方には

「もうぶっちゃけると、最初見た時に大学生来たと思ったからヤベェ興味ねぇ〜って思っちゃった。あ、でも初めて来たんだろうなぁってのがすごく伝わってきてすごく面白かったよ。途中でキョドキョドしてて笑いが抑えられなかったもんw」

 

ボコボコのボコである。アルミ2000系材料のハートを持ってる僕ですら大きく心に永久ひずみが生じた。スプリングバックが少なくて次に行くだけの気力がない。助けて。(今考えるとこれごときで死んでいる場合じゃないんやが)

 

あっちからチェンジしてもらいあちらは猥雑な夜の街に消えていった。(これは助け舟でしかない。ありがとうお姉さん達…)

 

(2)2組目

 会った瞬間、

 

ワイ「あ、よかった…普通の格好してる…優しそうな人たちだ…」

 

まさしく猛暑の砂漠の中のオアシス。優しそうって神。だって僕が脳死で言った

「あ、席ないから俺誕生日席もらい〜」

にすら笑ってくれた。

自分、涙流してイイですか?(イイゾ〜)

※本当に軽く泣きました

 

 

 

あ、ここで思い出したけど、普通の人ってネットスラングと野獣先輩ネタ通じない上に使うとドン引きされるんですね。(本記事で一番大事なことです)

すっかり通じる界隈に長く身を置きすぎて通じないことに

 

ワイ「は…?野獣先輩なんて義務教育だろ…

え?草wって普通使わないの…!?

え?自分、○○していいか?イイゾ〜ってヤバイの?」

 

状態であった。なにここ異世界転生した?気分だ。自分、なんかやっちまいました?

(A.はい、やってしまってます)

 

ちなむと、僕は身に染みすぎてしまったネットスラングがどうしてもリラックスすると出てしまったので、

相席屋で全ての女の人にドン引きされ、そして

 

女の人「君は一生喋らない方が人間としての価値が生まれるよ」

 

と言われた。まず人間として認めて欲しいって思いながら涙が止まりませんっヒックッ…ウゥッ…

 

話は戻ります(戻りたくねぇ)

2人組との会話内容の方である。

テンプレ話題で名前などは掌握したものの

呼び捨てにできない。ここがDT。

他のテーブルだと

 

陽キャ「愛美ちゃんって言うんだ!まぁちゃんって呼んでいい?」

 

などの素晴らしすぎるトークが聞こえてくる。

ねぇそれどこで習ったの?進研ゼミ?河合塾

 

また話が脱線したが、

こちらのお姉さん達、高学歴な方で的確に僕たちを刺してくる。偏差値高い高校でしたね。お伺いしたところ。

 

でも高校の共通点が多すぎて、攻撃されたダメージよりも共通話題のヒーリングタイムの方が多くなった。まぁ言うなれば先輩後輩みたいなムードになってしまったのだ。

楽しかったからいいけど、これは男女の話題ではないことはわかる。けどもうまぁ僕の中で

 

目標

女の人と話せるか(低すぎるハードル)

 

が達成していたのでもう良かった。もうどうだっていい。このまま死のう。

高校トークが盛り上がったので、もはや仲のいい先輩後輩感覚だけどもういいここで殺して。もうこれ以上行くと死にたくなるから…頼む…

(と、今の僕なら当時の僕に言うんだが)

 

 

あぁ…楽しかった(過去形)お話も遂にフィナーレ。

 

思い返すとなんだかんだで楽しかったのかもしれない。なんて思っていた。

 

最後、

 

「君ら多分一生童貞」(ガチトーン)

 

って言われるまでは、ね。(現時点で口から吐血してる)

 

この爆弾発言によって

それを聞いていた隣の席の組に大爆笑され、

さらには後ろを通った店員さんが鼻水吹き出した音が聞こえた。

 

うん。これは悪夢だ。現実じゃ無い。

楽しいって思った3分前の自分、死んで詫びろ。

 

さらに、余計すぎるおまけで僕にだけ何故か

お姉さん「君は〜ネタ枠だね〜」

 

の追撃。いらない追撃すぎる。

f:id:WMMCsaiteihen:20200907204250j:image

 

心拍数がほぼゼロの僕をかかえてもらって

男3人、赤面しながら相席屋を立ち去った。

今思い返してもこの赤面エピソードがあれば人生あとなにがあるのか教えてほしい。

 

俺はもう無敵だ

 

 

余談その2

外国人が

Netflix and sex」

と言えば 「室内でセックス」

「box」といえば

「陰部」

「ピー」といえば

「トイレ」

 

という意味になるらしい。ナンパされた時に使われる単語らしいってお姉さんが言ってた!

ナンパしたお姉さんに教えてもらう下ネタ英単語楽しい!!!(精神ぶっこわれ)

なにこれ!あははは!!!

なんでこんな話題になってんだ…?

ははは!!

 

 

6.まとめ

本当はもっともっと爆死してたんですけど、僕の僅かな羞恥心を許して…許して…

正直己の人間としての尊厳(最初から無い)が負に収束したため、

ブログを書くたびにトラウマを思い出しては

ぁあ゛あ゛あ゛あ゛あっ!!!!!!

 

って死にたくなる現象に苛まれ、、

現在進行形で死んでます(心が)

 

結論、

童貞は出会い求めるならもっと金出してどうぞ。

 

相席屋僕↓

f:id:WMMCsaiteihen:20200907202806j:image

 

更なる高みを目指す方↓

f:id:WMMCsaiteihen:20200907203456j:image