全年全月9日の投稿[42件](3ページ目)
2023年3月 この範囲を時系列順で読む この範囲をファイルに出力する
インターカムのパワーサプライは3台完成。出来る限り見た目も良くしたのでそれっぽく見えます(自画自賛)。
本業も忙しいのですが、この調子で棚上げ課題を済ませたいところです。
次は「裸族のパイ」です。
HDDケースの「裸族のカプセルホテル」の中にRaspberryPiを入れてサーバー機にするものです。
筐体の改造などは終わっていて、RaspberryPiのACT信号によるUSB電源の制御を残すだけなのでそれほど難しくないハズです。
「裸族のパイ」は自宅サーバーの省電力化のためにも必要なので速やかに進めたいところです。
追記
せっかくなのでパワーサプライの記念撮影

ケーブルに隠れていますが、3枚目の写真の右側にターミネーターを実装した分岐基板があります。
以前から使っているパワーサプライはXLRコネクタの内側端子にターミネータの部品を直接ハンダ付けしていますが、見た目も悪いし機械強度も不安なので、この基板に換装しようと思います。
#電子工作
本業も忙しいのですが、この調子で棚上げ課題を済ませたいところです。
次は「裸族のパイ」です。
HDDケースの「裸族のカプセルホテル」の中にRaspberryPiを入れてサーバー機にするものです。
筐体の改造などは終わっていて、RaspberryPiのACT信号によるUSB電源の制御を残すだけなのでそれほど難しくないハズです。
「裸族のパイ」は自宅サーバーの省電力化のためにも必要なので速やかに進めたいところです。
追記
せっかくなのでパワーサプライの記念撮影



ケーブルに隠れていますが、3枚目の写真の右側にターミネーターを実装した分岐基板があります。
以前から使っているパワーサプライはXLRコネクタの内側端子にターミネータの部品を直接ハンダ付けしていますが、見た目も悪いし機械強度も不安なので、この基板に換装しようと思います。
#電子工作
2022年12月 この範囲を時系列順で読む この範囲をファイルに出力する
3Dプリンタそのものが旧式なのも原因でしょうが、相変わらずABSは難しい。
反る、寸法が出ない、高積層だと割れるなど、求める形にするのに難儀します。
されど、機械特性は良く真夏の倉庫に保管しても形が崩れることがありません。
求めると応えてくれない、諦めようとすると応えてくる、相変わらずのツンデレさんであります。
形状に合わせた条件を探っていけばそれなりに仕上がるのですが至るまでが大変。どうにかしたい。
息抜きになんとなくネットを検索したところ、「polymaker(ポリメーカー)」というブランドのフィラメントが良いとの書き込みを見つける。
PLAやPETG並みに扱いが簡単って意味ではありませんが、ABSにしては画期的に条件が出やすいとのこと。人によってはコレ一択だそうです。
amazonで検索したところ扱いがありました。他のフィラメントより20-30%ほどお値段は張るものの、仕上がりを探る手間、つまりテストプリントの回数が減るならむしろ安いと言えます。
もちろんポチリました。
入荷は週明けですが、試すのが楽しみです。
#3D
反る、寸法が出ない、高積層だと割れるなど、求める形にするのに難儀します。
されど、機械特性は良く真夏の倉庫に保管しても形が崩れることがありません。
求めると応えてくれない、諦めようとすると応えてくる、相変わらずのツンデレさんであります。
形状に合わせた条件を探っていけばそれなりに仕上がるのですが至るまでが大変。どうにかしたい。
息抜きになんとなくネットを検索したところ、「polymaker(ポリメーカー)」というブランドのフィラメントが良いとの書き込みを見つける。
PLAやPETG並みに扱いが簡単って意味ではありませんが、ABSにしては画期的に条件が出やすいとのこと。人によってはコレ一択だそうです。
amazonで検索したところ扱いがありました。他のフィラメントより20-30%ほどお値段は張るものの、仕上がりを探る手間、つまりテストプリントの回数が減るならむしろ安いと言えます。
もちろんポチリました。
入荷は週明けですが、試すのが楽しみです。
#3D
コレ、すげー。
#雑談
#雑談
2022年9月 この範囲を時系列順で読む この範囲をファイルに出力する
星球はコントローラーの電源モジュールを載せ替えて治ったのですがフューズやブレーカーが無い。
以前の電源モジュールには交換可能なヒューズが載っていたのですが、載せ替えた物には無い。過電流保護が無いのは怖い。
パネルに取り付けるヒューズフォルダはいくらでもあるので取り付けます。
取り付けるにはケースにφ12mmの穴を空けねばなりませんが、アルミの薄板にこのくらいの丸穴を空けるならステップドリルが便利です。

ドリルとリーマーの中間といった刃物です。
普通のスパイラルドリルやリーマーを使うよりも薄板にキレイな丸穴が空けられます。
薄板に丸穴はホールソーを使うのが定石ですが、1本で複数の穴径に対応出来るのはコスパが良く管理も楽。
精度は期待できませんが取付穴なら十分です。
安い物はアルミより硬い素材に使うと刃がすぐにダメになりますが、鉄やステンレスを切るならそれ用を使うといいみたいです。自分で砥ぐのは難しい刃物ですから、高価であっても最初の1本からステンレス用を買った方がいいかもしれません。
#工具や資材 #照明器具
以前の電源モジュールには交換可能なヒューズが載っていたのですが、載せ替えた物には無い。過電流保護が無いのは怖い。
パネルに取り付けるヒューズフォルダはいくらでもあるので取り付けます。
取り付けるにはケースにφ12mmの穴を空けねばなりませんが、アルミの薄板にこのくらいの丸穴を空けるならステップドリルが便利です。

ドリルとリーマーの中間といった刃物です。
普通のスパイラルドリルやリーマーを使うよりも薄板にキレイな丸穴が空けられます。
薄板に丸穴はホールソーを使うのが定石ですが、1本で複数の穴径に対応出来るのはコスパが良く管理も楽。
精度は期待できませんが取付穴なら十分です。
安い物はアルミより硬い素材に使うと刃がすぐにダメになりますが、鉄やステンレスを切るならそれ用を使うといいみたいです。自分で砥ぐのは難しい刃物ですから、高価であっても最初の1本からステンレス用を買った方がいいかもしれません。
#工具や資材 #照明器具
2022年7月 この範囲を時系列順で読む この範囲をファイルに出力する
2022年6月 この範囲を時系列順で読む この範囲をファイルに出力する
LED-BARの拡散レンズをクリスタルレジンで作ったらどうかと考えています。
ネットで先達の書き込みを読む限り、手順を守れば難しく無さそうですし、必要な用品は小分け少量でも手に入る。手間は少なくないけど、型を作って段取りがまとまればそれ程大変でもない感じ。
屈折率は1.5前後。ガラスと大きな違いはないから、好みのレンズを見つけて型取りすればいい。
今は時間がありませんが、近々試したい手段です。
そういや、間数マーカーもレジンで作ったらどうだろう。3Dプリンタで元型を作って鋳造型を起こせばいい。
計算しないとわかりませんが、安く出来るかもしれません。
#ガチ工作
ネットで先達の書き込みを読む限り、手順を守れば難しく無さそうですし、必要な用品は小分け少量でも手に入る。手間は少なくないけど、型を作って段取りがまとまればそれ程大変でもない感じ。
屈折率は1.5前後。ガラスと大きな違いはないから、好みのレンズを見つけて型取りすればいい。
今は時間がありませんが、近々試したい手段です。
そういや、間数マーカーもレジンで作ったらどうだろう。3Dプリンタで元型を作って鋳造型を起こせばいい。
計算しないとわかりませんが、安く出来るかもしれません。
#ガチ工作
2022年5月 この範囲を時系列順で読む この範囲をファイルに出力する
電源モジュールが疑わしいと思われたムービングライトですが、LEDドライブ基板をチェックしたところハンダクラックを発見。パッと見にはキレイなハンダ付けですが、電源の入力コネクタのピンが完全に浮いてました。これでは電源モジュール以前に正しく動くワケがありません。もちろん、これを直して全てが解決するとは限りませんけれど・・・
ハンダ付けを直してランニングテストを試みたところ、ファンが動いていないことも発見。どうやら、電源ピンが浮いたことで発生したスナバで飛んだっぽい。近所には適合するファンが売っていないのでアマゾンでポチリ。明日入荷です。
電源モジュールに不良がなければいいのですが、負荷側が正常に動かなくては確認が出来ません。
ということで、本日のジャンク弄りは終了。
#照明器具
ハンダ付けを直してランニングテストを試みたところ、ファンが動いていないことも発見。どうやら、電源ピンが浮いたことで発生したスナバで飛んだっぽい。近所には適合するファンが売っていないのでアマゾンでポチリ。明日入荷です。
電源モジュールに不良がなければいいのですが、負荷側が正常に動かなくては確認が出来ません。
ということで、本日のジャンク弄りは終了。
#照明器具
中華電器に頼んでいた抵抗が入荷しましたので、Rが暗いムービングライトに取り付けてみました。
ビンゴです。他の機体と同じ明るさを出すようになりました。部品代15円くらいですから御の字でしょう。
この手の故障は原因を特定するのが難しく、可能性がありそうな部品を交換しながら試すしかありません。
もし抵抗が原因でなかったら次に疑わしいのはドライバICとなり、ドライバICが正常だったらインダクタが疑わしいとなります。
動くには動くけれどスペックが出ない不調は何ともイヤらしい。
次は電源モジュールが疑わしい機体です。
電源投入直後は正常に動くのですが、しばらくするとLEDが暗くなってきて、さらにしばらくすると突然明るさが戻ってLED周辺から煙が出てくるという難解な不調です。
たぶんですが、通電しているウチに電源電圧が下がっていき、電圧が一定以下になるとドライバICが不正動作を始めるか、状態が変わって定格以上の電圧になるかだと思います。原因を特定するには電源モジュールから出力される電圧の変化を見ないといけません。
と、難しいことをする前に、別な機体の電源モジュールを使って試すのが早いかな。
#照明器具
ビンゴです。他の機体と同じ明るさを出すようになりました。部品代15円くらいですから御の字でしょう。
この手の故障は原因を特定するのが難しく、可能性がありそうな部品を交換しながら試すしかありません。
もし抵抗が原因でなかったら次に疑わしいのはドライバICとなり、ドライバICが正常だったらインダクタが疑わしいとなります。
動くには動くけれどスペックが出ない不調は何ともイヤらしい。
次は電源モジュールが疑わしい機体です。
電源投入直後は正常に動くのですが、しばらくするとLEDが暗くなってきて、さらにしばらくすると突然明るさが戻ってLED周辺から煙が出てくるという難解な不調です。
たぶんですが、通電しているウチに電源電圧が下がっていき、電圧が一定以下になるとドライバICが不正動作を始めるか、状態が変わって定格以上の電圧になるかだと思います。原因を特定するには電源モジュールから出力される電圧の変化を見ないといけません。
と、難しいことをする前に、別な機体の電源モジュールを使って試すのが早いかな。
#照明器具
2022年4月 この範囲を時系列順で読む この範囲をファイルに出力する
体中が痛い。病気ではありません。
昨日はテレビの中継現場でした。夜桜がネタだったので当然ライトアップするのですが、落差10mはあろう谷底に桜がありました。その谷を降りたり登ったりを繰り返したワケです。当然脚を酷使しますから疲労困憊。今日もライトアップのバラシでしたので輪をかけて疲労困憊。オッサンにやらせる日程ではない。
今日も工作はオフですが、作業の合間にArt-Netの処理をまとめましたので、明日は少し進めようと思います。
今のところArt-Netの処理は堅調です。
このまま書き進めれば使い物になりそうです。
#[Art-Net]
昨日はテレビの中継現場でした。夜桜がネタだったので当然ライトアップするのですが、落差10mはあろう谷底に桜がありました。その谷を降りたり登ったりを繰り返したワケです。当然脚を酷使しますから疲労困憊。今日もライトアップのバラシでしたので輪をかけて疲労困憊。オッサンにやらせる日程ではない。
今日も工作はオフですが、作業の合間にArt-Netの処理をまとめましたので、明日は少し進めようと思います。
今のところArt-Netの処理は堅調です。
このまま書き進めれば使い物になりそうです。
#[Art-Net]
2022年3月 この範囲を時系列順で読む この範囲をファイルに出力する
Art-Netを受信した後、送信元別だった受信値をミックス(HTP)する方法。
numpy.maxを用いれば簡単
受信値を3次元のnumpy.arrayで保存します。
3次元のnumpy.arrayはエクセルでイメージするとわかりやすいかなと。
1スロットの受信値は0-255の数値で、これが横方向(行)に512個並んだ状態をユニバースとします。
これをルート別に縦方向(列)で並べます。ここまでは縦横の1枚のシートです。
この1枚を送信元別のシートとし、レイヤーとして重ねます。もちろん、スロットアドレスとルートは同様にします。
あとはレイヤーを串刺しで最大値を得ればHTPでミックスしたルートとスロットの2次元のnumpu.arrayを得られます。
numpyをnpの名前でimportし、3次元のnumpy.arrayをan_cache_senders_route、最大値の2次元のnumpy.arrayをan_cache_htpとすると次の様になります。
an_cache_htp = np.max( an_cache_senders_route, axis=0 )
こんな感じの1行で計算出来ます。axis=0は最大値を得る次元方向の指示です。3次元なら、axis=2は横で、axis=1は縦で、axis=0は奥行という指示です。
以下、ちょいとオレメモ
受信値、付随するデータ
an_bytes 受信したArt-Netパケットのデータ(type=bytes、別途デコード必要)
an_sender_ipaddress 受信したArt-Netパケットの送信元IPアドレス(type=string、4つのドット切り10進数 IPv4の一般的な表記)
an_received_datetime 受信された時点でdatetime.datetime.now()により取得した日時(type=datetime.datetime)
処理の処理を指示するデータ
an_universes2route 対象ユニバースの1次元配列 ( Net, Subnet, Universe )[ ルート ]
受信値を処理、管理するデータ
an_ipaddress_senders 送信元のIPアドレスの1次元配列 IPアドレス [ 送信元 ]
an_datetime_senders 送信元ごとの最終受信日時の1次元配列 最終受信日時 [ 送信元 ]
an_datetime_senders_route 送信元ごとにルートの最終受信日時の2次元配列 最終受信日時 [ 送信元, ルート ]
an_cache_senders_route 送信元とルートごとに受信値を保存する3次元配列 受信値 [ 送信元, ルート, スロットアドレス ]
an_cache_htp 次の処理へ渡す処理済み受信値の2次元配列 受信値 [ ルート, スロットアドレス ]
※ [ ]内はインデックスの要素([3次元目,2次元目,1次元目])
※ 同名のindexは同じ値になるように設定
#an_ipaddress_senders から an_sender_ipaddress と同じIPアドレスを持つ[ 送信元 ]のindex配列を得る
list( zip( *np.where( an_ipaddress_senders == an_sender_ipaddress ) ) )
※ 受信した際に重複しない様に送信元情報を保存してインデックスを発行し、送信元別に日時と受信値を保存するために使う。
※ ただし、対象のユニバースを送って来ない送信元は無いものとする。早い段階でフィルタしないと後が面倒。
#an_datetime_senders から現在日時より1秒以上前の日時を持つ[ 送信元 ]のindexの配列を得る
list( zip( *np.where( an_datetime_senders < ( datetime.datetime.now() - datetime.timedelta( seconds=1 ) ) ) ) )
※ 送信元の存在を確認するために使う。1秒間受信が無い送信元は無いものとする。
#an_datetime_senders_route から現在日時より1秒以上前の日時を持つ[ 送信元, ルート ]のindexの配列を得る
list( zip( *np.where( an_datetime_senders_route < ( datetime.datetime.now() - datetime.timedelta( seconds=1 ) ) ) ) )
※ ユニバースの存在を確認するために使う。1秒間受信が無いユニバース(=送信元,ルート)はゼロデータにする。
#Python #[Art-Net]
numpy.maxを用いれば簡単
受信値を3次元のnumpy.arrayで保存します。
3次元のnumpy.arrayはエクセルでイメージするとわかりやすいかなと。
1スロットの受信値は0-255の数値で、これが横方向(行)に512個並んだ状態をユニバースとします。
これをルート別に縦方向(列)で並べます。ここまでは縦横の1枚のシートです。
この1枚を送信元別のシートとし、レイヤーとして重ねます。もちろん、スロットアドレスとルートは同様にします。
あとはレイヤーを串刺しで最大値を得ればHTPでミックスしたルートとスロットの2次元のnumpu.arrayを得られます。
numpyをnpの名前でimportし、3次元のnumpy.arrayをan_cache_senders_route、最大値の2次元のnumpy.arrayをan_cache_htpとすると次の様になります。
an_cache_htp = np.max( an_cache_senders_route, axis=0 )
こんな感じの1行で計算出来ます。axis=0は最大値を得る次元方向の指示です。3次元なら、axis=2は横で、axis=1は縦で、axis=0は奥行という指示です。
以下、ちょいとオレメモ
受信値、付随するデータ
an_bytes 受信したArt-Netパケットのデータ(type=bytes、別途デコード必要)
an_sender_ipaddress 受信したArt-Netパケットの送信元IPアドレス(type=string、4つのドット切り10進数 IPv4の一般的な表記)
an_received_datetime 受信された時点でdatetime.datetime.now()により取得した日時(type=datetime.datetime)
処理の処理を指示するデータ
an_universes2route 対象ユニバースの1次元配列 ( Net, Subnet, Universe )[ ルート ]
受信値を処理、管理するデータ
an_ipaddress_senders 送信元のIPアドレスの1次元配列 IPアドレス [ 送信元 ]
an_datetime_senders 送信元ごとの最終受信日時の1次元配列 最終受信日時 [ 送信元 ]
an_datetime_senders_route 送信元ごとにルートの最終受信日時の2次元配列 最終受信日時 [ 送信元, ルート ]
an_cache_senders_route 送信元とルートごとに受信値を保存する3次元配列 受信値 [ 送信元, ルート, スロットアドレス ]
an_cache_htp 次の処理へ渡す処理済み受信値の2次元配列 受信値 [ ルート, スロットアドレス ]
※ [ ]内はインデックスの要素([3次元目,2次元目,1次元目])
※ 同名のindexは同じ値になるように設定
#an_ipaddress_senders から an_sender_ipaddress と同じIPアドレスを持つ[ 送信元 ]のindex配列を得る
list( zip( *np.where( an_ipaddress_senders == an_sender_ipaddress ) ) )
※ 受信した際に重複しない様に送信元情報を保存してインデックスを発行し、送信元別に日時と受信値を保存するために使う。
※ ただし、対象のユニバースを送って来ない送信元は無いものとする。早い段階でフィルタしないと後が面倒。
#an_datetime_senders から現在日時より1秒以上前の日時を持つ[ 送信元 ]のindexの配列を得る
list( zip( *np.where( an_datetime_senders < ( datetime.datetime.now() - datetime.timedelta( seconds=1 ) ) ) ) )
※ 送信元の存在を確認するために使う。1秒間受信が無い送信元は無いものとする。
#an_datetime_senders_route から現在日時より1秒以上前の日時を持つ[ 送信元, ルート ]のindexの配列を得る
list( zip( *np.where( an_datetime_senders_route < ( datetime.datetime.now() - datetime.timedelta( seconds=1 ) ) ) ) )
※ ユニバースの存在を確認するために使う。1秒間受信が無いユニバース(=送信元,ルート)はゼロデータにする。
#Python #[Art-Net]