全年全月7日の投稿(時系列順)[41件](2ページ目)
2022年6月 この範囲を新しい順で読む この範囲をファイルに出力する
間数マーカーのLEDの制御にはCL0117を使っていますが、この制御レギュレータが廃番で入手出来ません。
100個パックを買っておいたので当面は大丈夫ですが、乾電池1個で使える物が見つからず、これを使い切ったらどうするか。
と思っていたら、比較的近い特性を持った制御レギュレータがありました。
YX8115です。
CL0117よりも電流が多いようなのでインダクタの値を調整しないといけませんが、YX8115の扱い方はこのサイトが参考になります。
今はCL0117に47uHを使い、LED2個並列で1個あたり30mA弱流れているハズです。LEDのスペックに合わせてインダクタを調整しますが、47uH、68uH、100uH、120uHあたりを試していけば良きところが見つかりそうです。
#舞台の小物 #電子工作
100個パックを買っておいたので当面は大丈夫ですが、乾電池1個で使える物が見つからず、これを使い切ったらどうするか。
と思っていたら、比較的近い特性を持った制御レギュレータがありました。
YX8115です。
CL0117よりも電流が多いようなのでインダクタの値を調整しないといけませんが、YX8115の扱い方はこのサイトが参考になります。
今はCL0117に47uHを使い、LED2個並列で1個あたり30mA弱流れているハズです。LEDのスペックに合わせてインダクタを調整しますが、47uH、68uH、100uH、120uHあたりを試していけば良きところが見つかりそうです。
#舞台の小物 #電子工作
最近、中華電器からLED-BARを仕入れましたが、LHQの代替として使うならもちっと広がって欲しいなと思っております。
フロストを入れたら解決しそうですが、プロストはエッジをボカすのが役目であって広角を広げる物ではありません。
レンズを前にかざすのが効果的ですが、スペックが出ているレンズは高価で、スペックがわからないソレっぽいカタチをしたレンズは安価です。中華電器に安い物がありますが必ずしも同じ物が来ません。ならば、ポリエステル樹脂で作ってしまった方が結果的によくね?
精度はボチボチでよいので型を作って流し込むだけ。初期段取りに手間はかかるけど、段取りが出来てしまえば同じ物が安価に作れる。
真空ポンプが欲しくなるのは目に見えているけど、表面仕上げはジクロルメタンを塗れば済むので、少しの気泡は気にしない?
#ガチ工作
フロストを入れたら解決しそうですが、プロストはエッジをボカすのが役目であって広角を広げる物ではありません。
レンズを前にかざすのが効果的ですが、スペックが出ているレンズは高価で、スペックがわからないソレっぽいカタチをしたレンズは安価です。中華電器に安い物がありますが必ずしも同じ物が来ません。ならば、ポリエステル樹脂で作ってしまった方が結果的によくね?
精度はボチボチでよいので型を作って流し込むだけ。初期段取りに手間はかかるけど、段取りが出来てしまえば同じ物が安価に作れる。
真空ポンプが欲しくなるのは目に見えているけど、表面仕上げはジクロルメタンを塗れば済むので、少しの気泡は気にしない?
#ガチ工作
2022年7月 この範囲を新しい順で読む この範囲をファイルに出力する
現場もホール資料の作成も一息つきました。
終わっていませんが、自分の領分に区切りが付いて投げたところなのでしばらくは少しサボれます。
なので、Art-Netエンジンを再開しています。
基本的な機能の製作は済んでいるので最適化をします。常にそれなりの負荷で動くモジュールなので可能な限り動作負荷を軽減し例外エラーも出にくくしたいからです。
特に処理の順位とタイミングの精査が重要です。無駄な繰り返し処理を極力減らし、やるべきことは適切に実行させるのです。パッと見はスマートでも順位が最適じゃないとか、状況確認のIF文が無駄に実行されていたりするのはよくあることです。自然な流れで実際の処理量をどれだけ減らせるかが勝負です。
改めてフローを書いています。実験段階ではフローを書かず処理が成立するかコマンドを試しながら思いつきで書くことが多いのですが、最適化をするには分割した部分を並べ直して見直すのがいいようです。いわゆるフローチャートを書くのではなく、付箋に要素を書いてホワイトボードに並べるブレインストーミングみたいな作業です。一人作業なのでパソコンの中でやってますけど、LibreOfficeのドローがこの作業では使いやすいですね。
時間も開発費も乏しいところですが、出来るだけ多くの製品を作りたいものです。
#[Art-Net]
終わっていませんが、自分の領分に区切りが付いて投げたところなのでしばらくは少しサボれます。
なので、Art-Netエンジンを再開しています。
基本的な機能の製作は済んでいるので最適化をします。常にそれなりの負荷で動くモジュールなので可能な限り動作負荷を軽減し例外エラーも出にくくしたいからです。
特に処理の順位とタイミングの精査が重要です。無駄な繰り返し処理を極力減らし、やるべきことは適切に実行させるのです。パッと見はスマートでも順位が最適じゃないとか、状況確認のIF文が無駄に実行されていたりするのはよくあることです。自然な流れで実際の処理量をどれだけ減らせるかが勝負です。
改めてフローを書いています。実験段階ではフローを書かず処理が成立するかコマンドを試しながら思いつきで書くことが多いのですが、最適化をするには分割した部分を並べ直して見直すのがいいようです。いわゆるフローチャートを書くのではなく、付箋に要素を書いてホワイトボードに並べるブレインストーミングみたいな作業です。一人作業なのでパソコンの中でやってますけど、LibreOfficeのドローがこの作業では使いやすいですね。
時間も開発費も乏しいところですが、出来るだけ多くの製品を作りたいものです。
#[Art-Net]
Art-Netエンジンの構成を整理していますが、そういやプロセス間通信はどうしましょう。
PythonではmultiprocessingのQueueが予想以上に遅くて使い物になりません。便利なんですけどね。
ネットの情報ではPipeや共有メモリが速いとあります。ですが、socketもQueueより速そうなレポートが多く見受けられます。
実験してみないとわかりませんが、速度が足りるならsocketにした方が将来性があります。なぜなら、内部でのプロセス間通信も別プロセッサとの協調動作も設定するIPアドレスとポートが違うだけで全く同じプログラムで実現可能だからです。Pipeや共有メモリよりもsocketはシンプルで扱いやすいので速度が十分なら尚更です。
Art-NetとEtherNetを共用するのは避けた方が良さそうですが、ローレベルのハードウェアを扱いやすいRaspberryPiと計算能力が高いPCを組合せば得意分野を活かして良い結果を出せるような気がします。もし調光卓を考えるならこの方法は必須かもしれません。もちろん、Art-NetエンジンそのものをPCに実装するのもアリでですけど。
これまではQueueベースで書いてきましたが、タプルをバイナリ化してsocketで通信する方法から試してみましょう。
#Python #[Art-Net]
PythonではmultiprocessingのQueueが予想以上に遅くて使い物になりません。便利なんですけどね。
ネットの情報ではPipeや共有メモリが速いとあります。ですが、socketもQueueより速そうなレポートが多く見受けられます。
実験してみないとわかりませんが、速度が足りるならsocketにした方が将来性があります。なぜなら、内部でのプロセス間通信も別プロセッサとの協調動作も設定するIPアドレスとポートが違うだけで全く同じプログラムで実現可能だからです。Pipeや共有メモリよりもsocketはシンプルで扱いやすいので速度が十分なら尚更です。
Art-NetとEtherNetを共用するのは避けた方が良さそうですが、ローレベルのハードウェアを扱いやすいRaspberryPiと計算能力が高いPCを組合せば得意分野を活かして良い結果を出せるような気がします。もし調光卓を考えるならこの方法は必須かもしれません。もちろん、Art-NetエンジンそのものをPCに実装するのもアリでですけど。
これまではQueueベースで書いてきましたが、タプルをバイナリ化してsocketで通信する方法から試してみましょう。
#Python #[Art-Net]
numpy.arrayを含むtupleをsocketで送るにはシリアル化ってのをすればいいらしい。pythonのオブジェクトをバイナリ化する方法とのこと。
pickleというライブラリを使います。pickle.dumps()でシリアル化し、pickle.loads()で戻します。
テキストと3次元のnumpy.arrayが混在するtupleが一発で処理出来ました。
変換したデータのtypeはbytesですからsocketで送れるハズです。
ただ、pickleのシリアル化/復号には時間がかかる様子。
先人の調査によると、scoket自体はとても速いけれどpickleの処理が案外遅くて総処理時間は他の方法と似たり寄ったりみたい。
ただ、先人の比較方法はデータ量を起点にする比較が主で、都度のデータは少なくコネクションの回数が多いケースの比較ではありません。multiprocessingのQueueはコネクション毎のマネージ処理が重い感じがするので、コネクション自体は軽いsocketに分があるかもしれません。
また、DMXのスロットデータを格納するnumpy.arrayは何も指定しないとint32やint64になりますが、uint8やuint16を指定すれば1スロット当たりのデータ長は小さくなります。つまり、データ総量が小さくなります。
試さないとわからんですけど、オーバーヘッドが大きい通信処理でデータ量を減らせば十分な速度を確保できる期待感があります。DMXの1スロットは1バイトですから、Art-Netエンジンではスロットに対する計算処理をせずにuint8で運用するのがいいのかもしれません。今のところ、比較抽出のnumpy.maxはあってもスロットデータに計算らしい計算は当てないのでuint8で運用しても問題無さそう。
つか、通信自体はsocketが凄く軽いことに驚いた。PythonというよりOS本体に依存するので当然かもしれませんが。
#Python
pickleというライブラリを使います。pickle.dumps()でシリアル化し、pickle.loads()で戻します。
テキストと3次元のnumpy.arrayが混在するtupleが一発で処理出来ました。
変換したデータのtypeはbytesですからsocketで送れるハズです。
ただ、pickleのシリアル化/復号には時間がかかる様子。
先人の調査によると、scoket自体はとても速いけれどpickleの処理が案外遅くて総処理時間は他の方法と似たり寄ったりみたい。
ただ、先人の比較方法はデータ量を起点にする比較が主で、都度のデータは少なくコネクションの回数が多いケースの比較ではありません。multiprocessingのQueueはコネクション毎のマネージ処理が重い感じがするので、コネクション自体は軽いsocketに分があるかもしれません。
また、DMXのスロットデータを格納するnumpy.arrayは何も指定しないとint32やint64になりますが、uint8やuint16を指定すれば1スロット当たりのデータ長は小さくなります。つまり、データ総量が小さくなります。
試さないとわからんですけど、オーバーヘッドが大きい通信処理でデータ量を減らせば十分な速度を確保できる期待感があります。DMXの1スロットは1バイトですから、Art-Netエンジンではスロットに対する計算処理をせずにuint8で運用するのがいいのかもしれません。今のところ、比較抽出のnumpy.maxはあってもスロットデータに計算らしい計算は当てないのでuint8で運用しても問題無さそう。
つか、通信自体はsocketが凄く軽いことに驚いた。PythonというよりOS本体に依存するので当然かもしれませんが。
#Python
2022年8月 この範囲を新しい順で読む この範囲をファイルに出力する
LED-BARのオプションです。
手持ちのLED-BARは広がりがあるのでジョーゼット幕などを染めるのに便利に使えますが、LHQの代替にするにはもう少し広がって欲しい。
中華電器のレンズ (ここのφ38の物)を試したところいい感じに拡散しました。LED-BARのリフレクタタイプのレンズの前にかざします。
このレンズは平凸レンズですが、平側に小さなレンズが沢山付いている構成です。エッジが柔らかくなり、カラーミックスでありがちな色むらが軽減されます。
照度は1/4くらいに落ちますが、エッジが無くなり広く柔らかい光です。今のところレンズが1本分しかありませんのでLHとしての評価は出来ていませんが、たぶん使えると思います。
レンズをハメている黒いのは3Dプリンタで出力したものです。
これをLED-BARに被せて使います。
手持ちのプリンタですとLED3発か4発分のサイズしかプリント出来ませんが、3発なら3個同時にプリント出来ますし、LED-BARの制御単位は3発なので都合がいいようです。
#照明器具 #LED
手持ちのLED-BARは広がりがあるのでジョーゼット幕などを染めるのに便利に使えますが、LHQの代替にするにはもう少し広がって欲しい。
中華電器のレンズ (ここのφ38の物)を試したところいい感じに拡散しました。LED-BARのリフレクタタイプのレンズの前にかざします。
このレンズは平凸レンズですが、平側に小さなレンズが沢山付いている構成です。エッジが柔らかくなり、カラーミックスでありがちな色むらが軽減されます。
照度は1/4くらいに落ちますが、エッジが無くなり広く柔らかい光です。今のところレンズが1本分しかありませんのでLHとしての評価は出来ていませんが、たぶん使えると思います。
レンズをハメている黒いのは3Dプリンタで出力したものです。
これをLED-BARに被せて使います。
手持ちのプリンタですとLED3発か4発分のサイズしかプリント出来ませんが、3発なら3個同時にプリント出来ますし、LED-BARの制御単位は3発なので都合がいいようです。
#照明器具 #LED
2022年9月 この範囲を新しい順で読む この範囲をファイルに出力する
このところサーバーネタが続いていましたがヒト段落しましたので、この後は舞台や照明の何某を作らんといけません。いや、作らんとマズい。
サーバーに専念してサボっていたワケではないのです。本業の準備やら本番で目が回っていたのが少し落ち着いたという意味です。サーバーは合間の息抜きでやっていたので日数がかかっただけですし、他に書くネタもなかったのです。
コロナは明けてませんが「もういいだろう」感で開催される催事が多く、お仕事を沢山いただいております。ありがたいことですが、主催者も準備期間が足りないのかまとまってない案件や期日が迫っての依頼が多く振り回されております。これまでの半分の時間で帳尻を合わせをしなければならず精神衛生上は良い状況とは言えませんが、これまでの閉塞感から抜ける渦中ですから仕方ないでしょう。
そんなワケで、今後しばらくは木工屋です。
階段やら踏み台を作らないといけません。
「軽くて丈夫なのよろしく!」とか言うのは10秒、作るは数時間です。
#本業 #雑談
サーバーに専念してサボっていたワケではないのです。本業の準備やら本番で目が回っていたのが少し落ち着いたという意味です。サーバーは合間の息抜きでやっていたので日数がかかっただけですし、他に書くネタもなかったのです。
コロナは明けてませんが「もういいだろう」感で開催される催事が多く、お仕事を沢山いただいております。ありがたいことですが、主催者も準備期間が足りないのかまとまってない案件や期日が迫っての依頼が多く振り回されております。これまでの半分の時間で帳尻を合わせをしなければならず精神衛生上は良い状況とは言えませんが、これまでの閉塞感から抜ける渦中ですから仕方ないでしょう。
そんなワケで、今後しばらくは木工屋です。
階段やら踏み台を作らないといけません。
「軽くて丈夫なのよろしく!」とか言うのは10秒、作るは数時間です。
#本業 #雑談
ネットで読みかじった話ですが、ヨーロッパのある地域ではテスラのEV車をフル充電するのに100ドル以上かかる様になってエライこっちゃ祭りになっている模様。
ハイオク馬鹿食い車を満タンにしたら1万円では済まないので、高級車のテスラを満タンにするならそんなもんぢゃないのって気もしますけどね。
EV車がエコだと言う人は送電線から電気が沸いてくると思っている傾向にありますが、原発を拒否したなら、化石燃料の価格と流通に電気が左右されることを実感して欲しいものです。地熱以外の自然エネルギー発電が不安定であることもね。
#雑談
ハイオク馬鹿食い車を満タンにしたら1万円では済まないので、高級車のテスラを満タンにするならそんなもんぢゃないのって気もしますけどね。
EV車がエコだと言う人は送電線から電気が沸いてくると思っている傾向にありますが、原発を拒否したなら、化石燃料の価格と流通に電気が左右されることを実感して欲しいものです。地熱以外の自然エネルギー発電が不安定であることもね。
#雑談
2023年1月 この範囲を新しい順で読む この範囲をファイルに出力する
C言語の基本的な書き方は整理がついてきました。
次はライブラリの理解と使い方となるのですが、ネットで検索しても情報があるっちゃあるけどイマイチ感。
基本に立ち戻れば、ライブラリのman(公式のマニュアルファイル)とヘッダーファイルを読めとなります。以前からそうするのが王道とは思ってはいましたが、何が書いてあるのかサッパリでした。
それが少しわかるようになってきました。我ながら大進歩。
manはLinux系のOSなら本体にも必ず入っているものの英文が多いのですが、ネットで検索すると日本語版がすぐに見つかるのでこちらを読んだ方がいいかも。
かといってman読めばいいかと言えばそうでもない。前触れもなく突然出現する用語やパラメータが多い。
ようやくわかったのですが、ライブラリのmanはヘッダーファイルを補足しているに過ぎないらしい。つまり、ライブラリを理解するための主役はmanではなくヘッダーファイルということ。
変数の型定義、構造体の定義、プロトタイプ宣言などが書かれているヘッダーファイルは定義書であり解説書でもありますので、これを読み解けない人がC言語でプログラムを書けるワケないでしょう・・・という熟練者たちのご意見はその通りです。
どこを読むべきか、何を理解するべきかが見えて来ただけでも今日のところはいいんじゃないかと。
早速、socketのライブラリである sys/scoket.h を読んでみようと /usr/include を覗いたのですがありません。
google様に教えてもらい、次のコマンドで在処を検索できました。
$ sudo dpkg --search sys/socket.h
結果は /usr/include/arm-linux-gnueabihf/sys/socket.h とのことでした。
パッと見ではサッパリわかりませんが、半分くらいはわかるので、全体を理解出来る様に頑張ってみましょう。
#C言語
次はライブラリの理解と使い方となるのですが、ネットで検索しても情報があるっちゃあるけどイマイチ感。
基本に立ち戻れば、ライブラリのman(公式のマニュアルファイル)とヘッダーファイルを読めとなります。以前からそうするのが王道とは思ってはいましたが、何が書いてあるのかサッパリでした。
それが少しわかるようになってきました。我ながら大進歩。
manはLinux系のOSなら本体にも必ず入っているものの英文が多いのですが、ネットで検索すると日本語版がすぐに見つかるのでこちらを読んだ方がいいかも。
かといってman読めばいいかと言えばそうでもない。前触れもなく突然出現する用語やパラメータが多い。
ようやくわかったのですが、ライブラリのmanはヘッダーファイルを補足しているに過ぎないらしい。つまり、ライブラリを理解するための主役はmanではなくヘッダーファイルということ。
変数の型定義、構造体の定義、プロトタイプ宣言などが書かれているヘッダーファイルは定義書であり解説書でもありますので、これを読み解けない人がC言語でプログラムを書けるワケないでしょう・・・という熟練者たちのご意見はその通りです。
どこを読むべきか、何を理解するべきかが見えて来ただけでも今日のところはいいんじゃないかと。
早速、socketのライブラリである sys/scoket.h を読んでみようと /usr/include を覗いたのですがありません。
google様に教えてもらい、次のコマンドで在処を検索できました。
$ sudo dpkg --search sys/socket.h
結果は /usr/include/arm-linux-gnueabihf/sys/socket.h とのことでした。
パッと見ではサッパリわかりませんが、半分くらいはわかるので、全体を理解出来る様に頑張ってみましょう。
#C言語
2023年2月 この範囲を新しい順で読む この範囲をファイルに出力する
ArtNet-Engineの入口出口キー操作は触るたびに問題点が見えてきます。なかなか次に進めません。
次の課題は受信スタックです。これは得たデータをレーンと呼ぶ内部的な経路と送信元毎に仕分けしたモノです。8レーン8送信元、64ユニバースの一時保存です。一見データ量が多いようですが32kBです。映像画像に比べたらわずかな量です。
受信毎に本処理まですればいい気もしますが、送信元から送られるデータは時間的に一定ではありませんので、受信の都度本処理までするとややこしくて重くなるのです。
ならば、一定の規則で受信データを整頓し、送信元×レーン毎の入れ子に最新値という形で一時保存してから本処理を行えばシンプルな処理になります。
こんなややこしいことをしてもDMX規格の最大速の1フレーム程度にレイテンシーを抑えようとしています。
もちろんタイムアウトも必要です。DMXはデータが1秒間更新されなければ送信が無くなったと判断する規格ですから受信日時を見て判断します。これは優先度が低い処理ですから優先度が高い処理が実行されない空き時間を用います。極端な話、タイムアウトは1秒が基本でも5秒かかったところで実用上の問題は無いと考えます。そんなにかかることは無いと思いますが、2秒くらいで処理されれば実用だと思います。それ以前にDMXのタイムアウトが1秒ってことを知る人が少ないのですから気にしない。
#[Art-Net]
次の課題は受信スタックです。これは得たデータをレーンと呼ぶ内部的な経路と送信元毎に仕分けしたモノです。8レーン8送信元、64ユニバースの一時保存です。一見データ量が多いようですが32kBです。映像画像に比べたらわずかな量です。
受信毎に本処理まですればいい気もしますが、送信元から送られるデータは時間的に一定ではありませんので、受信の都度本処理までするとややこしくて重くなるのです。
ならば、一定の規則で受信データを整頓し、送信元×レーン毎の入れ子に最新値という形で一時保存してから本処理を行えばシンプルな処理になります。
こんなややこしいことをしてもDMX規格の最大速の1フレーム程度にレイテンシーを抑えようとしています。
もちろんタイムアウトも必要です。DMXはデータが1秒間更新されなければ送信が無くなったと判断する規格ですから受信日時を見て判断します。これは優先度が低い処理ですから優先度が高い処理が実行されない空き時間を用います。極端な話、タイムアウトは1秒が基本でも5秒かかったところで実用上の問題は無いと考えます。そんなにかかることは無いと思いますが、2秒くらいで処理されれば実用だと思います。それ以前にDMXのタイムアウトが1秒ってことを知る人が少ないのですから気にしない。
#[Art-Net]