🗐 電装工芸日記 - 舞台照明機器の製作とか -

能登半島地震で被災された方々にお見舞い申し上げます。

or 管理画面へ

全年全月14日の投稿[30件]

2024年5月 この範囲を時系列順で読む この範囲をファイルに出力する

Icon of admin
 RaspberryPiに最新のOS(bookworm)を入れてみました。
 ナニかおかしい・・・。
 調べてみたら、bookwormではネットワークの設定方法が変わったらしい。dhcpcdではなくNetworkManagerらしい。
 これは勉強しなおさんといかん。
 このあたり、ちょくちょく変わるので面倒である。

追記
 ちょっと早起きしたので NetworkManeger について調べてみました。
 dhcpcd とは違うけれど、設定ファイルを書いてもコマンドでも設定が出来る。
 そもそも何なのよ、を理解するのに少し時間がかかりましたが、覚えてしまえばこちらの方が楽かもしれない。
 次の記事はわかりやすいかも。
 「NetworkManagerの接続設定作成用テンプレート」
 Art-Net で使うipv4アドレスを自動設定するところまでやってみましょう。

追記+
 NetworkManager の設定を変更するには modify を使います。
 まだわからないことがあるので手順は示しませんが、modify は設定ファイルの変更であってこれを実行しても有効にはなりません。
 down して up する操作が必要です。

#RaspberryPi

2023年11月 この範囲を時系列順で読む この範囲をファイルに出力する

Icon of admin
 デスクワークの合間に別な箱も加工しました。
20231114114454-admin.jpg
 吊るしてミッチャクロンを塗布した後です。

 物はミニカムロック(E1015)入力、C型30A×6出力です。丸端子を取り付ける端子台はありませんが、単相三線、三相四線を切り替えて使えます。
 20年経過しても痛みが無い重装備なC型ボックスに比べたら貧弱ですが、工具と段取りさえ整理しておけば比較的簡単に作れる箱なので寿命が短くてもいいでしょう。サンテナーのB#50に入る小型軽量品ですから機動性重視です。

 次の作業は来週以降になりますが、先行して塗っておけば塗装を十分に乾かすことが出来ます。1日あれば乾きますが、塗料を十分に硬化させるには一週間は放置したいところです。

追記
 黒くしてみた。
20231114192213-admin.jpg

追記
 塩ビに塗装するとシンナーの匂いが抜ける時間が短い様子。36時間経過で匂いがほぼ抜けています。
 木材ですと繊維に浸み込みますし、鉄やアルミだと材の温度が低い傾向があるからかな?
 ラッカーを塗布する際は厚塗りせず軽く捨て吹きする感覚で回数をかけるのが良さそうです。厚塗り2回より捨て吹き5回ってイメージです。我慢が必要になりますが、3回吹いてようやく全体が色付く感じです。捨て吹きの感じなら厚塗りの半分以下の時間で表面が乾くので、回数が多くても塗装時間も少なくて済みます。

#ガチ工作 #器具の製作

2023年6月 この範囲を時系列順で読む この範囲をファイルに出力する

Icon of admin
 python-vlc で音源を流す試験をしました。
 単に再生するだけなら簡単。
 ちょっと難儀したのは再生終了を確定する処理。再生後自動的にリセットされませんので、再生が終了したことを確認して後処理をしないといけません。
 vlc.MediaPlayer.is_playing()は再生中かどうかを把握出来ますが、これだけでは再生が終了したフェーズかわかりません。オレフラグ(下記ではis_playing)を併用して再生前か再生後かを判別します。再生後ならstop()を実行します。きちんとstop()しないともう一度再生が出来ないpython-vlc。
 下記は再生終了を確定する試験として繰り返し再生するモノです。

# -*- coding: utf-8 -*-

import time
import vlc

def play() :
 # 音声ファイルを定義
 play_music = ( [ vlc.MediaPlayer() ] )
 try :
  play_music[0].set_mrl( 'C:/音源.mp3' )
 except :
  return -1
 # 再生ボリューム設定
 play_music[0].audio_set_volume( 60 )
 # フラグ定義
 is_playing = 0  # 再生実行済みフラグ

 # Main Loop
 while True :
  try :
   # 予備睡眠
   time.sleep( 0.0001 )  # Ctl-Cの反応を良くするのに少しsleepを入れるといい
   # 停止中
   if( play_music[0].is_playing() == 0 ) :
    # 未開始で停止中
    if( is_playing == 0 ) :
     play_music[0].play()
     while ( play_music[0].is_playing() == 0 ) : # 再生状態が確定するまで待つ
      time.sleep( 0.001 )
     play_music[0].set_time( 0 )
     is_playing = 1
    # 再生終了で停止中
    else :   # if( is_playing == 1 ) :
     play_music[0].stop()  # 再生終了を宣言してインスタンスをリセットする 主にこれをやりたいがための処理
     is_playing = 0
   # 再生中
   else :
    pass   # 再生中に行う処理は書いていないのでとりあえずpass

  # Ctl-Cで終了
  except KeyboardInterrupt :
   play_music[0].stop()
   break
 return 0

if __name__ == "__main__" :
 play()



 python-vlc便利過ぎ。

追記
 vlc.MediaPlayer.get_length()とvlc.MediaPlayer.get_time()を使って再生が最後まで行ったかチェックしました。
 何曲か試しましたが、概ねlengthの-0.1~-0.2秒で終了しています。vlc.MediaPlayer.get_time()は取得単位の1msecで厳密にカウントされているモノでも無さそうなので表示上の誤差かもしれません。トラック別で音繋がり場合は少し不安がありますが、音のお尻には1-2秒の余白があるのが一般的ですし、そこまで突き詰めるシステムではありませんのでいいかなと。
 画面作りをやって LTC Generator と合わせれば完成が見えてきそうです。
 ウィンドウマネージャーはPython標準のtkinterを使う勉強をしています。書式は違いますが、考え方はHTMLとCSSを使ったweb画面作りに酷似していますので、方言的に翻訳が出来れば何とかなりそうです。ただ、ボタン操作や画面の更新をオブジェクト指向のイベント処理(割り込み)で書くので少し面倒ですし、LTC Generator の制御やvlcの部分はバックグラウンドの常駐処理にしたいのでウィンドウ制御とは別スレッドとなり手間がかかるかも。

#Python #タイムコード
Icon of admin
 オレメモ

 PythonでVLCを使った音楽再生方法を再整理。

 Windows11x64
 Python3.7
 VLC media player ver.3.0.18

 pipでpython-vlcをインストール。
コマンドプロンプト(管理者権限にて)
> pip3 install python-vlc

 pipとはPythonのライブラリを提供してくれるリポジトリのこと。先達に感謝。

 pythonでvlcによる再生。
import vlc

if __name__ == '__main__':
 p = vlc.MediaPlayer()   #vlc.MediaPlayerのインスタンスを作成
 p.set_mrl('sound.mp3')  #インスタンスに音源ファイルを関連付け 相対パスも可能らしいがフルパス指定を推奨
 p.play()         #再生開始

 これだけで音声ファイルが再生されます。

 以下基本的なAPI。
p = vlc.MediaPlayer()       #vlc.MediaPlayerのインスタンスを作成
p.set_mrl('<file_name>')     #インスタンスに音源ファイルを関連付け 相対パスも可能らしいがフルパス指定を推奨 ファイルはVLC media player で扱える物なら何でも。
p.play()             #再生開始 戻り値 0=正常再生/-1=再生出来ない ※ pauseされていれば再生再開
p.is_playing()          #再生中か 戻り値 0=再生していない/1=再生中
p.pause()             #再生中なら一時停止、一時停止中なら再生再開 戻り値無し
p.get_length()          #音源の長さを取得 戻り値 秒数(msec.)
p.get_time()           #音源の最初からの再生位置を取得 戻り値 秒数(msec.)
p.set_time(<msec.>)        #再生再開位置を秒数(msec.)で指定 戻り値無し ※ 再生中やpause()中でないと指定出来ない
p.audio_set_volume(<パーセント>) #0=mute,100=0dB(パーセント指示だと思っていいみたい。100以上も指定可能。)戻り値 0=再生中に設定成功/-1=設定はしたが再生はしていない
p.stop()             #停止 戻り値無し 次回のplay()では最初から始まる
※ 最後まで再生しきっても、stop()をしないと次回のplay()はスタートしない。再生終了で必ずstop()を実行する。
※ 停止中は次の再生開始秒数を指定出来ないので、特定の秒数(msec.)から再生する場合は、play()に続いてset_time(<msec.>)を実行する。ただし、pause()中は指定可能。
p.play()
p.set_time(<msec.>)


 複数の音源ファイルをプレイリストとして扱ってくれるクラスもあるのですが、LTCを作るには少し不便がありそうなため、1曲単位で扱うことにしています。

 vlc.MediaPlayer()のリストを作成する。
p = ( [vlc.MediaPlayer(), vlc.MediaPlayer(), vlc.MediaPlayer()] )
# p[0]、p[1]、p[2] などと使える。

 普通にオフジェクトのリストとして扱える。

 これだけはメモ。
 リストのオブジェクトを追加する。
p.append( vlc.MediaPlayer() )
# 上記に続いた場合は p[3] が追加される


 再生操作のレスポンスはとても良く、タイムラグはほとんど感じない。
 ただ、プレイリスト分のインスタンスを設定するにはメモリに注意かもしれない。

参考
 python-vlcのドキュメント
 ここの「vlc.MediaPlayer」を参照。

#Python
Icon of admin
 LTC Generator のLTC信号を卓(MA dot2)が認識しました。
 ただ、同じ値を送り続けても認識しません。LTCを入力してから認識するまで1秒弱かかるので、カウントを進めずに信号を認識し続ける方法が欲しいのです。
 試しに数フレームの繰り返しを組んでみたところ認識し、数フレームの繰り返しを一定回数行ってから抜ける様にしたところ期待する結果を得ました。
 最初のCUEポイントのマイナス数フレームの位置で2-3フレームの繰り返し待機をし、トリガが立ったらそれを抜ける考え方で良さそうです。
 ともかく、卓が認識したので一安心です。

#タイムコード
Icon of admin
 LTC Generator は30fpsも他のfpsと同様の誤差でした。時間の勘定に期待値が出たので PIC のファームウェアは一応の完成とします。あとは、卓が認識するかです。
 今後はPC側のアプリケーションの製作です。Pythonベースでvlcライブラリを使い、LTCとVLCは同時スタートの疑似シンクです。VLCの現在時からLTCを生成することは難しいからです。途中スタートではLTCの現在時からVLCの開始時を補正して合わせる様にします。
 音声ファイルはプレイリストとしてまとめ、スタートタイム、エンドタイム、ボリューム、連続再生、曲間時間などを個別に設定出来る様にします。複数の音声ファイルを並列で再生する用途は想定しませんので、1トラックのわかりやすいモノを目指します。もちろん、LTCのタイムが被らない様にチェックする機能も大切です。

#タイムコード

2023年4月 この範囲を時系列順で読む この範囲をファイルに出力する

Icon of admin
 教科書に反する使い方なのでツッコミ所はありますが、アイデアがあるなら実験は大事です。
 ビデオカメラのフリッカーは蛍光灯より酷そうだけど・・・。

 調光器が壊れる可能性はありますが、SCRでスイッチングしたらどうなるか試してみたいですねぇ~。
 ダイオードブリッジと大型コンデンサでAC100vから起こしたDC141vを使ったらどうなるんでしょうね。200vの大型コンデンサが余っているので、リップルは気にせず爆発覚悟で試したいかも。
 つか、DC141vをパワーMOS-FETでスイッチングしたら調光できんぢゃね?電源が暴走して400vくらい出すかもだけどwww

 この使い方はLED素子のポテンシャルを100%引き出せませんが、100%でなくてもいいんですよ。費用対効果が成り立って安全が確保出来て十分に明かるければソレでいいのです。
 考えようです。

#LED
Icon of admin
 3Dプリンタの条件が出たようです。
 六角スペーサーを差し込む穴の寸法で難儀してました。M3の六角は5.5mmですから5.6mmくらいの仕上がりにしたいのですが、CAD上で5.6mmとしても仕上がりは5.6mmになりません。今回は5.9mmにして仕上がり5.6mm強でした。ぢゃ0.3mmふかすのが定数かというとそうでもなく、内形か外形かでも違いますし、周囲の肉厚によっても違います。目安にはなるものの試作を繰り返して追い込まなければなりません。
 FDM式の3Dプリンタは溶かした樹脂でプロッタように線を描いていくのですが、描画した樹脂の幅には±0.2mm程度の誤差があるようです。内形寸法では対角で合わせて倍の誤差になりますので、今回の狙い寸法に対しては比率的に大きい値です。ただ幸いなのは、プリントの度に寸法が違うことはほとんど無いことです。誤差ではなく、プリンタとフィラメントの組み合わせによる特性と呼ぶのが正しいのかもしれません。補正設定がCAMにあるかもしれませんので調べてみましょう。

#3Dプリンタ

2023年3月 この範囲を時系列順で読む この範囲をファイルに出力する

Icon of admin
 ライトアップの架台を作っています。

 道路の分離帯みたいなところに生えている桜をライトアップするのですが条件が厳しい。
1)桜の根が傷むから地面にアンカー類は打たないこと。
2)(1)と同じ理由で土壌に加重を掛けないこと。
3)桜の幹に縛り付けるような取り付けをしないこと。
4)歩道、道路にはみ出さないこと。
5)アスファルトやコンクリート、縁石に穴を空けないこと。
6)現状復帰は厳重にすること。
 桜の保全を優先するなら真っ当なご指示なんですが、灯具を宙に浮かすのかい?って話です。

 唯一可能なのは、分離帯を囲む縁石に金具をクランプして荷重を掛けつつ固定する方法。
 しかし、土壌は縁石の上面ギリギリまで攻めており、縁石自体傾いたりしています。
 方針は、
1)縁石と土壌の間に薄い鉄板を打ち込む特殊なコの字クランプを構成する。
2)クランプから架台本体への繋がりには2軸の自在関節を入れる。
 となります。
 言うのは簡単ですが、私が出来る加工と予算の範囲でこんな物を作れるのかいな?
20230314162931-admin.jpg
 仕方ないから作ってます。

#ガチ工作

2023年2月 この範囲を時系列順で読む この範囲をファイルに出力する

Icon of admin
 故障した中華電機のムービングライトは回復しました。
 予想通りRS485のトランシーバーICがダメだったようです。
 ただ、治ったのはいいですが、そもそもナゼ壊れたのか。
 SN75176系が静電気に弱いのは事実ですが、基板間の通信ですから外部配線にさらされることはありませんし、同様のICを使っている受け側は壊れていいませんので、静電気が原因だとしてもどこから回り込んでナゼこれだけなのか。同じ基板に搭載されている他のICは壊れていませんので、起動時の瞬間的な電圧異常が原因だったとしてもナゼこのICだけなのか。他のICはサージ保護が施されているのかもしれませんけれど。
 原因不明なので再発の可能性は十分にあります。他の機体が同様の故障を起こすかもしれません。
 RS485トランシーバーICは10個単位の販売でしたので予備はあります。しばらく様子見です。

追記
 RS485トランシーバーICはSN75176互換の3.3vSOP-8パッケージの品なら使えそうです。今回は全く同じモノを中華電機から仕入れましたが、秋月さんでも互換品が手に入ります。
 静電気にも過電圧にも強いLT1785の姉妹品に3.3vのSOP-8パッケージの物があればいいのですけどね。
 実験で電子ライターの火花を与えたことがありますが、SN75176は即死、LT1785は損傷しませんでした。

追伸2
 LT1785と同等の耐久性を持つ定格電圧3.0~5.5v品がありました。S8パッケージのLTC2862-2(max250kbps)です。
 過電圧耐性±60v、EMI(静電気耐性)1.5kvです。壊そうとしても簡単には壊せないかも。姉妹品のLTC2862-1は高スペックで20Mbpsまで対応しますがオーバースペックです。
 パッケージはS8とありますがSOP-8と同等の様です。
 ネット検索では国内小売りにもAliExpressにも見当たりません。入手性に難ありです。

#照明器具 #電子工作

■当面の課題

花粉症シーズンも一段落したようで重傷者にも笑顔が戻ってきました。私は原始人なので花粉が酷い日でも鼻の中が埃っぽいなぁくらいにしか感じませんけど。
気温の変化が激しいようですので、みなさま健康管理には注意してください。

編集

■全文検索:

複合検索窓に切り替える

■複合検索:

  • 投稿者名:
  • 投稿年月:
  • #タグ:
  • カテゴリ:
  • 出力順序:

■日付検索:

■カレンダー:

2024年5月
1234
567891011
12131415161718
19202122232425
262728293031

■カテゴリ:

■最近の投稿:

最終更新日時:
2024年5月15日(水) 21時10分29秒