e-tipsmemo

ごった煮

OSSでJiraのようなプロジェクト管理ツールの検討と導入

LAN内アクセスonlyで運用することを前提とし、個人で使用するjiraの代替OSSを探していた。

条件としては基本的な機能としては

  • 簡単
  • 軽い
  • docker composeで導入できる

といった点を見ていく

候補

Redmin

超有名OSSだが表示が古そうでやる気が出ない。
操作性もあまりよくないといった噂を聞くので見送り。

Gitlab

基本的なところでは、バージョン管理ツールとして使用されているが、
プロジェクトとissueだけを使用することで、jiraのようなタスク管理としても使用できる。
まずはこれをLAN内に立ち上げてみたが、デフォルトの画面がゴチャついていているのと、タスク(issue)をポンポン登録する操作性があまり良くなかったのでやめた。
ガンチャート機能はCE版にはないらしいのでちょっと弱い。

OpenProject

公式導入ドキュメントが充実しているが、docker(not compose)だけを使用したものしかなかった。

一応docker composeを使用したインストール手順もあるが、
proxyがすでに存在しないimageに依存していて起動しない。
GitHub - opf/openproject-docker-compose: Recipes to deploy OpenProject with Docker, Docker Compose, Kubernetes, etc.

HTTPS対応なんてしなくていいからChatGPTにcompose.yamlを書かせて修正したもので起動した。
ガンチャートは標準であるので、そこは良さそう。
操作も軽いし簡単なのでよさそう。

NocoBase

"jira Alternative OSS"とかで検索していた時に「AI支援のある~」といった文句が書いてあったので調べたが、LLM的なものを動かすサーバーもローカルにできるのかわからなかったので見送り。
見た目はモダンでよさげ。

最後に

最終的にOpenPojectを導入を使い始めて、よさそうな印象を受けた。
Wikiの役割は、同一LANにあるgrowiに任せてあるので、
うまいことプロジェクト一覧・タスク一覧をgrowiのページに表示出来たらよさそうだと考えている。

services:
  openproject:
    image: openproject/openproject:16
    container_name: openproject
    ports:
      - "8090:80"
    volumes:
      - ./pgdata:/var/openproject/pgdata
      - ./assets:/var/openproject/assets
    environment:
      SECRET_KEY_BASE: "openproject_secret_key"
      OPENPROJECT_HOST__NAME: "<serverのIPアドレス>:8090"
      OPENPROJECT_HTTPS: "false"
      OPENPROJECT_DEFAULT__LANGUAGE: "en"
    stdin_open: true
    tty: true

ESP32評価ボードをESP32の書き込み機として使ってみる

ESP32の基板をつくっているが、
書き込みのためだけにUSB-serial変換器を買うのはなんかもったいない気がしたので、ESP32評価基板を買って、そこから別のESP32モジュールに書き込めるのではないかと考えた。

まずはESP32評価ボードを購入し、動作確認をした。

書き込み手順

接続

ChatGPTに聞いてみたが間違っている接続を提示された

評価ボードのTX-->書き込み対象のRX
評価ボードのRX-->書き込み対象のTX

評価ボードの3.3V-->書き込み対象の3.3V
評価ボードのGND-->書き込み対象のGND
TX/RXの接続が間違っている

評価ボードのTX/RXは評価ボードに乗っているESP32のもの

なので、CP2102のTX/RXからの接続を考えると、
CP2102のRX-->評価ボードのTX-->書き込み対象のTX
CP2102のTX-->評価ボードのRX-->書き込み対象のRX
https://dl.espressif.com/dl/schematics/esp32_devkitc_v4-sch.pdf

これに気付かず、USBシリアル変換モジュールを買ってしまった・・・


電源=3.3VやGNDは普通に接続し、
GPIO0はGNDにジャンパーする。
ENは書き込みするときにGNDに落とす(タクトスイッチなどで)

プログラム

Arduino IDEで、Board Managerからesp32のボード情報をダウンロードするが、
結構時間がかかる(5分ぐらい?)

ボードはこの評価ボードと同じ、ESP32 Dev Moduleを選択する。

LED点滅プログラムはChatGPTに書かせて、LEDのポートは自分の基板に合わせる。

// ESP32 DevKitC / ESP32-WROOM-32 LED点滅サンプル
const int LED_PIN = 2;  // 内蔵LEDピン(多くのDevKitCではGPIO2)

void setup() {
  pinMode(LED_PIN, OUTPUT);  // 出力モードに設定
}

void loop() {
  digitalWrite(LED_PIN, HIGH);  // LED点灯
  delay(400);                  // 1秒待つ
  digitalWrite(LED_PIN, LOW);   // LED消灯
  delay(1000);                  // 1秒待つ
}

書き込み

GPIO0がGNDに接続されていることを確認して、電源(3.3V)をつなげる。
Arduino IDEのUploadボタンを押してコンパイル中に、ENをGNDに落としてリセット。

正しく書き込みがなされれば、以下のようになる。

自動リセット機能はないので、
GPIO0を開放して、もう一度チップをリセット(ENをGNDに落とす)すれば、
LEDが点滅する。

その他

今回の基板はESP32の裏面GNDパッドをはんだ付けしていないが、マイコンは動いた。データシートには裏面パッドのGNDへの接続はMustではないと書かれている。

格安なのにPCB基板も簡単に発注できて、簡単な書き込み回路でよくて、シリアル通信でプログラムが書けてPICやAVRやSTM32で大変な思いをしていた時代が遠い過去のものに。。

久しぶりに基板を発注し、実装まで注文(JLCPCB)

Ethernetの基板てあんまりないよねってことで、JLCPCBに発注した。
WT32-ETH
とかいうものがあるが、技適マークがなくて本当に大丈夫かと思っている。
有線接続だけならよいのか?


(あんまり評価もついてなくてちょい怪しい)

Microchipの10BaseTのLANコントローラーは自分では実装が大変そうなので、JLCPCBに部品実装まで注文した。

部品実装自体は、以前にPCBGOGOで頼んだことがあったが、エクセルでの部品指定が面倒だったため、少し大変だった記憶がある。

KiCADで設計

いろいろと参考にし、書き上げる。

発注データ

JLCPCBへの発注データはプラグインが簡単

JLCPCBへ注文

裏面に部品実装がなくても、2-layerで注文が必要だった。
アセンブリサービスをチェックして、だいたいこんな感じ。

何よりも感動したのが、部品を勝手に選んでOK/NGを選択できる。
JLCPCBが部品を買ってくるところは
www.lcsc.com
なので基板設計時にMouser/Digikeyではなく、ここを基準にしようと思った。

製造中

2-layreだとほぼ1-2日程度で基板の製造はわった様子。
注文前の部品選択時には、マイコンの位置がずれていたが、

製造直前に確認する画面では、位置が正しくなっていた。

この件についてサポートにメールしてみたところ
「部品の回転ビューは必ずしも正しく実装の位置を示しているわけではないので心配するな」といった感じの返信をもらった。

これにて製造&実装Go
~~~~~~
気長に待つこと2週間程度

表面実装基板が出来上がってきた。

LANチップは裏面にもパッドがあるが、そこには大きなViaを開けてあるので
動作しなかったら後ではんだを流し込んでGND接続する予定。

その他

久しぶりにKiCADを使用したらいつの間にか V9になっていた。
操作感はほとんど変わっていないような気がするが、
一部差動配線の実行方法は変わっていた気もする。

ESP32はライブラリも作例も豊富で簡単な周辺回路で動作するし安いのでとても良い。


BlenderでSTLファイルの位置と角度を修正する

以前、3Dスキャナーを購入した。

特に、Einstar Vegaはポータブル型で、
お手軽に3Dスキャンをすることが可能であり、
テクスチャマッピングを完了したあと、STLファイルがダウンロードできる。

このSTLファイルを、そのままFusion 360にインポートしても、
モデルの位置がワールドの原点に対して、適当な位置にあるので、形をコピーするにも使いにくい。

そこで、BlenderSTLモデルの位置を移動させ、角度を調節する。

準備

Blenderを入手する。
最近はWindows Storeからもインストールすることが可能となっていた。

原点移動

起動した瞬間から作業が開始できる。
ここら辺の立方体やカメラは邪魔なので選択→Deleteで削除する

起動

STLをインポートする。


Edit Mode

対象物を選択し、[Tab]キーを押すか、左上のメニューからEdit Modeを選択することで、モード変更がなされる。

三角形の辺が強調されるモードになっているので、
原点を移動させたい頂点を選択する。

[Mesh]→[Snap]→[Cursour to Selected]
でカーソルが選択された頂点へ、移動する。

[Tab]キーを押して、「Object Mode」に戻ったあと、
対象モデルを右クリックメニューから
「Set Origin」→「Origin to 3D Cursor」で原点が移動する。

モデルの中心座標の移動前

モデルの中心座標の移動後

モデルの原点を移動させたので、ワールドに対してずれた位置にあることになっている。
このLocation X/Y/Zをすべて0にすることで、
モデルの原点とワールドの原点が一致する。

角度の変更

位置が移動できたところで、次は角度の調整を行う。
X/Y/Zの軸方向を見て、どの軸から見ても納得のいく角度になるように
Rotation X/Y/Zを調節する。


その後、モデルを選択し、「Ctrl + A」を押すと、「Applyメニュー」が出てくるので、ここで、「Rotation」を選択することで、設定したTransformを適用できる。

回転が適用されて、今の角度がデフォルトになった(なので、右下は0になった)

エクスポート

FileメニューからSTLをエクスポートする。

確認

Fusion 360STLをインポートすると、
先ほど設定した位置に、原点があることがわかる。

所感

今回編集した対象はPGYTECHのサクションカップの部品で、
Insta360とともに、車に取り付けたときのサイズ感や、位置を確認したかった。
あわよくば自作の部品を追加してよりコンパクトにまとめることが可能かと考えている。

いままで3D制作などもトライしたいと思い続けていており、
Blenderなどもインストールするまではやったことはあったが、
とにかく操作できることが多く、ネットで知らべた参考サイトも必ずしも自分がやりたい作業と一致しているとは限らなかったので、
始めるのが難しいと感じていた。
しかし、今回のこの作業の半分ぐらいをChatGPTに聞けたことによって、スムーズに作業をこなすことができた。

patchelfというものがあるらしい

e-tipsmemo.hatenablog.com
以前Ubuntu 22.04 で録画サーバーを立てていた。
それ以降も様々なものがアップデートされており、新しい構成要素を調査した。
その1つとして、recisdbがあった。
GitHub - kazuki0824/recisdb-rs: recisdb-rs and b25-sys are more convenient Rust wrapper for libaribb25. recisdb can read both Unix character device-based and BonDriver-based TV sources.
recisdbは、recpt1の置き換えを図ったもので、Rustで書かれている。

導入にあたり、依存関係で困ったので、それを変更する方法を調べた。
ChatGPTに聞いたところ、patchelfというのを使用することができるらしい。

patchelf --replace-needed [置き換えたい対象ライブラリ] [置き換えた後のライブラリ] [対象のバイナリ]

これを使用し、ビルドしたバイナリの依存を、現環境のrecpt1が依存をしていたものにそろえたことで、現環境にこれを置き換えることができそうだった。

感想

Googleで検索しまくれば、patchelfを見つけ出すことはできたかもしれないが、非常に時間がかかったと思う。
ChatGPTを使用したことで、より短時間で見つけ出すことができた。

Einstar VegaとStarvision 使用感

以前、Einstar vegaを購入した

機能の問題はなく、使えている。

いいところ

  • 3Dスキャンができる
  • ポータブルタイプ
  • 処理も完結できる
  • クラウドにアップロードできる
  • 動きがスムーズ(スキャンモード切替以外)

もう少しなところ

  • 画角が狭い
  • 少し重い
  • バッテリー持ちが悪い

ダメなところ

  • 有線接続で、Starvisionに転送しようとすると、転送途中で接続が切れる

Starvision

EinstarのStarvisionの使い方がなんとなくわからなかったのでChatGPTに聞いた。

Googleで手順を調べるよりも楽だった・・・

Starvision
3Dプリンターでスタンドでも作ろうかと思って某ゲーム機をスキャンしたかったが、なかなか難しい

画面が反射すると、そこはスキャンできないのでテープで紙を張ってみたがあまり効果がなかった。
重いので、回転台を買って、スキャン対象を回転させたほうが良いかもしれない。

3Dスキャナー Shining 3D Einstar Vega

以前3Dプリンターを買った。

3Dプリンターで、何かしら既製品の修理、機能を拡張、補助するようなパーツを作るとき、
既製品のサイズを測って、それを3D CAD上で再現するのが大変。

なので3Dスキャナーを購入する。

3Dスキャナーは、産業向けの非常に高価格のものがよくイメージされるが、近年は手頃な価格の3Dスキャナーが登場していた。

メーカー

Youtubeでメーカーを調べる。

  • Revopoint
  • Shining 3D
  • Creality
  • 3Dmaker pro

Revopointが最もYoutubeでレビュー(案件)されているように感じる。
また、多くのラインナップを出していてモデルチェンジも頻繁な印象。
Crealityと3Dmakerproも(案件)レビュー動画が多かったが、こちらは機種は多くはなさそう。

選定ポイント

  • 手軽さ
  • 値段(?)
  • 精度
  • ソフトウェア

低価格帯のほとんどのスキャナーはPC接続が必須であった。
使用状況を想像した場合、例えば屋外で使うなど、ケーブルの取り回しが非常に邪魔になると考えた。
そうすると、使うのが億劫になって使わなくなってしまうことが想定される。

なので、どうせ買うなら、近年登場しているPC不要で独立型のスキャナーを検討した。
ちょっと高いけど。

結論

Einstar Vegaを購入した。
当たり前だが、カメラを使用してスキャンしているので
黒い物体や、ガラス、メタリックや鏡面を持つ物体などはスキャンに向かない。

お試し

スターリンクアンテナの接続部分をスキャンしたもの。

テクスチャマッピング機能を有しているのもよいところであるが、
テクスチャの色が環境光に依存しているので
そのまま3Dモデリングに利用したい場合は、光源も考える必要がある。

その他

個人的にスキャンしたかった対象物である車の中や、アクションカメラ(Insta360 Ace pro)、その他ちょっとした製品などはメタリックな表面を持っていたりすることが多く、スキャンするのにちょっと苦労している。