2024年4月13日土曜日

M5Stack Core2 + バッテリーボトム

Core2のタッチパネルを使いたい+BasicのGPIO使いたい、ということでバッテリーボトムを組み合わせてみました。

Core2の底の4本のネジを外し(M2トルクス)、垂直に引っ張ると底のカバーが外れます。

バッテリーボトムは2本のネジ穴しかないし、外したネジは届きません……ボトムの厚さが違うので仕方ないですが、ネジの長さの許容範囲が狭いので、さてどうやって調達したものか……。

M5Stackは内部で使っているGPIOも外に出す方針。Core2はBasicより更に内部仕様が多いので、外で使える信号が少ないんですよね。

いつもお世話になっておりますlang-ship様の「M5Stack Core2のGPIO調査」によれば、13,14,19,25,26,27、あとGroveのところに32,33が出ている、とのこと。

ただ、M-BUSの配置が変わっているので(M5Stackさんのこういう行き当たりばったりな体質……10年使えるバスを考えていて製品が出ないより良いのでしょうね)、読み替えないといけません。

まぁ、ESP32自体、使えるGPIOが少ないのでしょうがないですね……。

で、pimodeをoutputにしてdigitalWriteでHIGH/LOWするという極めて原始的なプログラムで検証した結果、以下のGPIOが使えそうです。左がプログラム上のGPIO番号、右がBattery Bottomでの名称です。

13 -> 16
25 -> 25
26 -> 26
14 -> 17

おお、全部(後ろから見て)左側に並んでいる!ありがたや!!

なお、この他、入力のみ使えるピンとGroveで使えるピンがありますが、検証していません。また後日←(うん、いけたら行く

入力のみ使えるピンは35,36ですが、これはBasicでもCore2でもM-BUS上での配置が同じなので、そのまま使えるんじゃないかと思います。

筐体設計……

設計なんてだいそれたことじゃなくて……穴開け指示図面を書いて、業者さんに齟齬なく依頼できれば良いんですが……

今回、Fusion 360で、

各面(天板・底板・前面・後面)にスケッチを作って穴位置を指定する

ってやったんですが、終わってから気づいたんですよね。

1. スケッチで底面の長方形を描く
2. 直方体にする
3. 穴開けの必要な面をスケッチにして、穴加工を描く

この方が楽だったな、って……。

出来上がったのが上の画像です。板金屋さんへの説明のために底板だけ1.5mm厚さのボディを作ってあります。あと天板の加工は省略です。

こんな感じの「3Dツールで書いたけどやっぱりポンチ絵」な雑な図面で、きっっちりきれいなケースを作ってくださる星製作所こと「板金ケース.com」さん、ありがとうございます!

今回は時間がなくて鉄+塗装なんですが、アルミ+アルマイトとか鉄・ニッケルメッキがきれいなんですよね。



2024年4月11日木曜日

ポゴピンの台、作りました。



作った基板の検査用に基板裏から接続して計測などする必要が生じたのでDIP 8の形に生えたポゴピン探したんですが……ないですね。

なので作りました。

最初ユニバーサル基板重ねて動かないように固定してからはんだ付けすれば楽勝じゃね?って思ったんですが、ユニバーサル基板の穴は0.8mmぐらい。今回使う「凹」型のポゴピンは太さ1.3mmなので通らない。

基板を起こそうかとも思ったんですが、時間もないのでとりあえず絶縁した台を作ってワイヤ引っ張り出しました。

1. 3Dプリント→ピンバイスで穴加工

FDMで穴のサイズをいくつか変えて出力したんですが……ダメダメでした。最近うちのSnapmakerさんご機嫌ななめで、ノズルを交換しないと駄目な感じです。

SLAプリントなら精度出るんですが、いま手荒れがひどくて使用禁止。

ということで、ピンバイスで1.5mmに穴を広げました。PLA硬いけど、なんとかOK。

2. はんだ付け

ポゴピンを台に通してから導線をはんだ付けします。ゆっくりはんだ付けしていると台が溶けるのでご注意を。はんだ付け不要のタイプなどもありますが、今回、在庫の都合ではんだ付けしました。

3. ポゴピン通していい感じに仮接着

この項目の作業はSLAで精度良く出力したら不要かも。

作業用のジグを出力しました。ポゴピンが同じ長さになるように、ポゴピンを通してひっくり返した「台」が作業台と水平になるように保つジグです。

ポゴピンを穴に通してから、台をひっくり返した状態で上記ジグにはめ込んで、ポゴピンがみんな平行かつ垂直になっているのを確認してから、ホットグルーを垂らして動かない程度に固定します。

ホットグルーが温かいうちに水平垂直を確認しまくります……冷える時の「ヒケ」で動いたりしますので。

4. ホットグルー増量→再融解

ホットグルーを積み増しします。1回で乗せるとヒケやらで台無しになりますので、2-3回に分けて盛ると良いかと思います。

分けて盛ると、ホットグルーが汚くなりがちですが、そのときには手芸用のヒートガンでゆっくり温めます。するとグルーがいい感じに溶けて、滑らかかつ均一になります。糸引きなんかもキレイに溶けて一体化するのでグルーガン下手な方(遺憾ながら私だ)はぜひ。


いやー……大変でした。買うと高いわけですね。

でもDIPの「肩」に針立てるやつなんかを作っておくと楽だろうなぁ。あとポゴピン通すユニバーサル基板こんど作ろう。

2024年1月21日日曜日

E220-900T22 + EByte Lora E220 Library + ESP32

世間様のブログなどを見ているとみなさん簡単に動かしているんですが……原因確定するまで半日潰しました。とほほ……

ライブラリ、各種使いましたが、最終的にうまくいったのは表記の「EByte E220 Library」です。これのソースに書いてある配線でOKです。AUX, M0, M1についてはどのGPIOでもOKですし、Serial2についてもアサインを変えれば動きます。ESP32だとSoftwareSerialは面倒くさいので使いません。Hardware Serialで良いのです(強意)。

// 何があった>くらはし

私の場合はE220 : ESP32の配線を

M0 : 26
M1 : 27
RX : 17
TX : 16
AUX : 25
Vcc : 3V3
GND : GND

としました。これにあわせてピン設定を書き換えます。

さて、EByte E220 Libraryはよくできています。

ただ、そのままでは通信できないんじゃないかと思います。各通信モードに合わせた設定が必要ですが、各通信サンプルには設定を変更する機能が組み込まれていません。

02_setConfigurationという設定書込プログラムがありますが、そこに各送信モードでの初期設定が用意されコメントアウトされています。使いたい通信モードの設定のところのコメントを外して実行してE220に対して書き込み、それから使いたい通信モードのプログラムを実行します。

たとえば、04_sendFixedTransmissionというプログラムを実行する場合には、あらかじめ02_setConfigurationの"FIXED SENDER"とあるブロックを有効にして設定を書き込んでおくか、これに関連する処理を04_sendFixedTransmissionに移植して実行する必要があります。

あと、もう一つの落とし穴としては、通常の通信プログラムだと送信アドレスと受信アドレスを設定しておき、相手側のアドレスを指定すると送れるのですが……LoRaの特性なのかライブラリの特性なのか、送信側のアドレスと、受信側のアドレスが一致していないとデータ送信ができません。

一種のペアとして動く仕様なんですかね……?

まぁ……わかってしまえば簡単です。LoRaで長距離通信を楽しみましょう!

余談ですが、各種ブログを見ると、見通し距離なら数十Km届くみたいですが、影になるとガタ落ちみたいですね……最近の無線は2.4Ghzなどが当たり前なので、それに比べればLoRaの400とか900MHzは「回り込める」と言われるんですが……私ら古いアマチュア無線屋からみると900MHzなんて光と変わらないワイ、という印象です ^ ^