リサーチの結果は、

2018モデルのMacBook Air のdual core CPUではVScodeでPlatformIO立ち上げるぐらいでもファンが唸りを上げて、それでも1分ぐらい立ち上がりに時間かかるから、実質ブラウザとメモ帳ぐらいしか現実的ではありません。

で、apple silicon MacBookを何にするか?

条件は以下の6項目、

① intel MacBook 16の予備機としたいけどM1で性能的には同等だから問題ない

② 写真、動画のクリエーターでないのでM2(Air/Pro)のパーフォーマンスは今のところは無駄に不要

③ 一応モバイルとして使いたいから軽くはないけどモデルの中では軽いAir

④ VM、多くのパーツは扱わないけどFusion 360とか動かす前提だと8GBは心もとないから16GBに変更

⑤ SSD容量は④項を考慮するとVM用に50GBとかは割り当てるから256GBでは足りないから512GBに変更

⑥ キーボードは所詮かな入力しないし、16インチと合わせた方が使いやすい(かなりマストだと思う)からUSキーボードに変更

種々の環境もリリースからそろそろ二年経過でだいぶ整ってきているから替え時だろう。あと二年もすればintel Macは継子になるんだろうし。いずれにしてもUSキーボードを使う限りは、この先もCTO必須ということ。

 

P.S.

色はクリックしてから気づいたけどスペースグレイになってた、まあゴールドから変わるのも気分転換にはなる。

 

admin

MacBook Airで画面ロック掛からない?

いろいろ挙動不審だったのですが、最後に残ったのが画面閉じて開いた時にロックがかからないこと。

ググって、タイマー設定の問題、なんでここが変わったのかですが。

 

admin

M2 MacBook Air 7月15日から受注開始か、

今のMacBook Air 2018モデル、買ったのは2019年の今頃、も三年経過したし、そろそろApple Siliconへの移行準備も考えた方が良いだろうし。

となると、M2 MacBook Airは候補の一つですね。SSDは512GBで、メモリは16GBにした方が良さそうですが。画面は大きめが良いのは無論ですが、14/16インチのような性能は不要だし、モバイル用だとやはり最適は13インチになります。

外部モニターやiMacはやはり部屋の中では邪魔くさいから将来ともiMacを選択する可能性はなさそうで、やはり半固定の使い方で2019 intel MacBook16に慣れると16インチが麗しいけれども重たい。まあMacBookのラインナップって上手いこと考えられています。

P.S. @2022/7/8

今更ですが、本日日本時間9PMからオーダー受けるみたいですね。

 

admin

M5stackって色指定が16bit colorだったんだ

https://qiita.com/nnn112358/items/ea6b5e81623ba690343c

などで、M5stackの色指定は3バイトではなくuint16_tで指定されるので何でかなと思ったら、r/b : 5bit, g : 6bitの2バイトで表現されるんですね。

M5stackのディスプレイならば、それで問題ないだろうと思うし、メモリ使用量を少なくする考慮が種々なされてるから、それもアリなのでしょう。

 

admin

QwiicとSTEMMAインターフェース

https://www.switch-science.com/catalog/8183/

レーザー距離計のモジュールの商品説明に、STEMMAという名称のインターフェースが出てきて初耳なので調べてみた。それに上のリンクの商品紹介で「STEMMA QT/Qwiic互換」ともあってQwiicって何者?

STEMMAはピンピッチ2mm(gloveと同じ)の専用インターフェースでi2c以外もサポート、一方STEMMA QTは小型化のためにコネクタが1mmピッチでかつi2c専用です。じゃSTEMMA QTとQwiicはなにがちがうの?が知りたいこと。

で検索すると、以下が一番分かりやすい。

https://learn.adafruit.com/introducing-adafruit-stemma-qt?view=all

  • Qwiic is a bit newer than Grove, it’s only for use with I2C devices.
  • 物理形状の差ではなくてレベルシフターの有無だけのようだ、結果として3.3Vだけで使うならそのまま接続しても問題ない。
  • Compatibility:

Like Qwiic, STEMMA only uses the 4-pin connectors for I2C. The STEMMA QT connector is identical to the Qwiic connector and uses the same pin ordering.

  • Differences:

Qwiic only has level shifting and voltage regulation on the controller, not devices. So, you can use STEMMA + STEMMA QT devices with any Qwiic controller and you can use Qwiic devices on a STEMMA controller if you set the voltage jumper from 5V to 3V

この距離計、ターゲットが複数個でも検出できるというのが優れもの。『ヒストグラムベースのテクノロジー』というのが、それに該当していそうです。

 

admin

熱中症簡易アラーム(@M5stack + sensor)

そろそろ夏も本番に近づいて、散歩も一時間が限界になりますが、暑さを客観的な数値にするにはWGBT指数(湿度と温度で判定)ですが、無論風のあるなし、直射日光下、人間の暑さ耐性、あるいは運動強度によって変わってくるので目安の数値ですが、i2cインターフェースの温湿度(気圧もある)センサーとM5stackで実現します。M5stackも電源入れっぱなしでなくて、時々チェックするぐらいなら電池120mAhでも使えると思う。

 

・用意したもの

M5Stack Basic V2.6

M5Stack用温湿度気圧センサユニット Ver.3(ENV Ⅲ)

いずれもいつものスイッチサイエンスで購入。

 

センサーのライブラリとサンプルコードは以下からダウンロード。

・サンプルコード@GitHub

https://github.com/m5stack/UNIT_ENV/blob/master/examples/UNIT_ENV_III_M5Stack/UNIT_ENV_III_M5Stack.ino

・unit_env

以下をVScodeのソースディレクトリに展開します。

https://github.com/m5stack/UNIT_ENV

 

・USBドライバー

M5stackへのバイナリのアップロードで以下のようなエラー発生、これはM5Stack Basic V2.6でUSB-serialのICが変わっていて、標準のOSではまだサポートしていないからだと、スイッチサイエンスのページにも記載あります。

Uploading stub…

A fatal error occurred: Failed to write to target RAM (result was 01070000: Operation timed out)

*** [upload] Error 2

しかし、

https://mag.switch-science.com/2021/11/01/m5stack-v2-6-changes/

に書いてある様にやってみてもダメで、

platformio.iniに以下のようなポート決めうち指定で解決しました。

upload_port_set.jpg

“monitor_speed = 115200″と合わせて、platformio.iniへのデフォルト設定になると思います。

ポート番号は環境で変わると思うので、wch以降は、

/devディレクトリで

% ls tty.wch* を実行して確認しましょう。PIO HomeのDevicesではそのままの値が確認できますが。

tty.wchusbserial54260147311

 

・WBGT指数

https://healthy-ecohouse.com/wp-content/uploads/2019/08/190804-4.jpg

からダウンロード

このテーブルをソースの中に二次元配列で埋め込んで、WBGT値を獲得しています。

画面はこんな感じです。

 

全部のコードは、

https://github.com/chateight/PlatformIO/tree/master/heat_alarm/src

heat_alarm.cpp以外はセンサーアクセス用のライブラリファイルです。

 

P.S. @2022/6/22

表示方法変更しました、テキストよりもカラーブロックで表示がわかりやすいから。

気圧の使い道は何なのかなと考えると、一番分かりやすいのは標高を簡易的に知るということになると思う。およそ100m高くなると10hPa気圧は低下するのだから。

P.S.2 @2022/6/25

ということで、大まかな高度も表示するようにしました。気圧は揺れ動くから、刻みは200m刻みで山に行ったときぐらいには使えるレベル。正確に出すならばGPSモジュール使うのだろうけど、そこまでは不要でセンサーの機能があるから使ってみようぐらいの話。

 

admin

UnitV2でのsudo実行

流石に常時rootログインでコマンド実行は危険なので、sudoは必要ですが、sudoはデフォルトでは実行できませんが、sudoできるようにする方法(Jupter notebookでコマンド実行すればいい、なぜならroot権限で動作しているから)はいろいろなところで記事になっていますが、

例えば、

https://tanokatu.com/2021/06/09/linux-m5stack-unitv2-2/

Jupyter notebookに入って”新規” – ”ターミナル”を開いて、以下を実行というものですが、

# chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo

# chown root:root /usr/libexec/sudo/sudoers.so

# chown root:root /etc/sudoers

これでsudoは実行できてもsuは実行できません。特に必要性もないとは思いますが。また、これだけならばsshをrootログインして実行しても同じことでしょう。

 

admin

M6の1.25ピッチ?

UnitV2カメラの取り付けネジですが、M6ではありますがピッチが標準では無い模様。なぜなら1mmピッチネジだと途中で止まるから、かといってもちろん細目ネジ(0.75mmピッチ)ではない。

写真で見てみると、インサート埋め込まれている部分の厚みがおよそ6mmでネジ山が5つ見えるから1.25mmピッチらしいけど、そんなネジは普通はないと思うけどネットで検索するとカメラ固定用の三脚とか使えてるらしいから存在はするらしい。

P.S.(@2022/6/12)

手元のスマホ用三脚のスマホ固定部分を取り外したベースのネジはピッチ1.25mmのようでUnitV2にもフィット。どうもこのサイズは固定を素早くやるための特殊(標準)サイズのようです。

-> と思ったら、どうもカメラ固定用のネジはインチネジ(1/4″)ですね。それなら全てクリア。1/4-20 UNCと言われるネジで、ピッチは25.4/20 = 1.27mmになります。

 

admin

『論語と算盤』

渋沢栄一のこの本は有名ですが、最近宮崎市定全集の『論語』を読んでいて改めて『論語と算盤』のことを思い出す。

論語と算盤に書かれていることは、① 社会に害を与えることなく正しく生きて、② 社会に貢献できるように利益を出しなさいということだろうと思うけれども、それって最近話題のSDG然りで時代環境と共に多少の変遷はあるけれども本質においてビジネスの基本であることに変わりはない。

一番近いと思える考え方はbusiness ethicsとでもいうべきものでは無いかなと思うけれども。してみるとおよそ2,500年前の論語が現代でもかなり通用するというのは、人類というのはわずか数千年では全く進化していないということになります。

 

admin

UnitV2で顔認識結果の処理

登録した顔画像のマッチング結果をシリアルでM5stackに送信して、確かさがある一定以上ならばブザーで知らせるという簡単なアプリです。

https://isehara-3lv.sakura.ne.jp/blog/2022/05/24/unitv2-aiカメラとm5stackをgroveコネクタで接続して認識結果を/

のアップデートの形になります。

<シリアルのデータ形式>

顔認証でシリアルから流れるデータは、

{“num”:1,”face”:[{“x”:92.80541992,”y”:0,”w”:366.1600952,”h”:478,”prob”:0.995221317,”match_prob”:0.659739733,”name”:”face_1″,”mark”:[{“x”:194,”y”:178},{“x”:358,”y”:158},{“x”:292,”y”:246},{“x”:228,”y”:356},{“x”:368,”y”:338}]}],”running”:”Face Recognition”}

こんな感じで、JSONで階層構造と配列を使っています。マッチング閾値(match_prob)へのアクセスは["face"][0]["match_prob"]となります。

#include <M5Stack.h>
#include <arduinojson.h>
#include <softwareserial.h>

SoftwareSerial Grove(22, 21);     // define rx/tx connecting to the UnitV2 camera
                                  // SoftwareSerial(rxPin, txPin, inverse_logic)

float x;
int y;
long k;
char data[1000];

void setup() {
  M5.begin();
  M5.Lcd.setCursor(20, 40);
  M5.Lcd.setTextSize(2);
  M5.Speaker.begin(); 
  Serial.begin(115200);
  Grove.begin(115200);
  M5.Lcd.print("--initialized--");      // display M5 Lcd message
  M5.Lcd.setCursor(20, 70);
  M5.Lcd.print("Face recongition");
}


void loop_(){

  if(Grove.available()) {
    String recvStr = Grove.readStringUntil('\n');
    if(recvStr[0] == '{'){
      Serial.print(recvStr);
    }
  }
}

void readJSON(void){
  String recvStr = Grove.readStringUntil('\n');
  StaticJsonDocument<1024> doc;
  DeserializationError error = deserializeJson(doc, recvStr);

  if (error) {
    Serial.print(F("deserializeJson() failed: "));
    Serial.println(error.f_str());
    return;
  }

  x = doc["face"][0]["match_prob"];
}

void loop(){
  M5.Speaker.mute();
  if(Grove.available()) {
    readJSON();
    Serial.println(x);
    if (x > 0.7f)
    {
      M5.Speaker.setVolume(3);
      M5.Speaker.beep();
      delay(200);     
    }
  }
}

データのバイト数が結構大きく(800バイト以上)なるので、char data[1000]とStaticJsonDocument<1024>を大きめのサイズにしています。これをしないとM5stackがリブート繰り返しました。

ドキュメント(以下のリンク)によれば、StaticJsonDocumentは1KB以下の小さめのJSONファイルで使えとあります。それほど多くないスタックエリアを使うので、StaticJsonDocumentでの設定値が小さくてスタックオーバーフローを起こしたと思われ、M5stackがリブートを繰り返してました。

https://arduinojson.org/v6/api/staticjsondocument/

 

認識の閾値は流れるデータからmatch_probを0.7以上で判断しています。

M5.Speaker.tone()は動作しなかったのでbeepを使って音出ししています。

 

P.S. @2022/6/16

細かな体裁(UnitV2のAP立ち上がり検知、認識結果の顔IDプリントアウト)を整えました。ソースはこちらに、

https://github.com/chateight/UnitV2_camera/tree/master/src

 

admin