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

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

or 管理画面へ

タグ「器具の製作」を含む投稿[71件](5ページ目)

Icon of admin
 「ftd2xx.py」ですが、Open DMX USB を認識しました。
 テストで使ったのは次のコード
### ftd2xx test ###
import ftd2xx as ftd

if __name__ == '__main__' :
 try :
  d = ftd.open( 0 ) # Open first FTDI device
  d.setDataCharacteristics
  print( d.getDeviceInfo( ) )
  d.close( )
 except :
  print( 'No Device' )
  exit( )

### 実行結果 ###
{'type': 5, 'id': 67330049, 'description': b'FT232R USB UART', 'serial': b'B000T33S'}

 実行結果は期待値を得ています。「ftd2xx.dll」を通じて FT232RL とやり取りが出来ていると思われますので、Open DMX USB として動かせそうな気がします。
 今後は「ftd2xx.dll」の解説書とソースコード読みながら解明していきましょう。

#器具の製作 #Python
Icon of admin
 以下を参考に少し試してみました。
「Programming FTDI devices in Python: Part 1」

 Open DMX USB や FT232RL が実装されたデバイスが手元にありませんので何ともですが、pip で ftd2xx をインストールするとVSCode ではそれらしい関数の候補が出ます。候補が出るということはアクセスできる可能性が高いという事です。
> pip install ftd2xx
 pywin32 もインストールされます。

 「ftd2xx」のサイト見ますと、「ftd2xx は、ctypes を使用した FTDI の D2XX DLL の単純な Python ラッパーです。」とあります。
 システムコールを直球で使えるってことだと思われます。

「jlbrogdon/dmx_controller」
 ここで使われている関数とは呼び出す文言が違いますが、VSCode で表示される関数の候補にはそれと思われる関数が存在しています。

 明日以降になりますが FT232RL が実装されたデバイスを繋げた状態で色々テストしてみましょう。
 今考えているアイデアでいけるなら Open DMX USB の制御が Python で完結します。

 これはいいかも
「Ftd2xxドライバー説明」
 本家の資料では理解出来なかったことが分かりやすく書いてあります。欲しかった資料そのものです。
「ftd2xx.py」
「xiangruili/RTBox_py」

 これらの資料で行けそうな予感がムクムク。
 ENTTEC 純正の Open DMX USB と DMXチェッカーを事務所に置いてきたことを後悔。
 すでに帰宅して呑んでいるので取りに行けませんので明日以降ですね。

 それにしても、敷居が高いと思っていた DLL をここまで簡単に使えるとは予想外です。
 ドライバに対する DLL があれば、少なくともC/C++なら簡単にアクセスが可能で、それを単純なラッパーにしてしまえば Python からストレスなくアクセス出来てしまうのです。
 この辺りの手段は手にしたいですねぇ~。

#Python #器具の製作
Icon of admin
 「PyOpenDmxUsb」の「DMXServer.cs」を読むと「FTD2XX.dll」をコールしているがわかります。
 ならば、C++ 化することは可能っぽいです。先日書き込みした C/C++ による Python ライブラリ化を参考にすれば作れるかも。
 C#のコードを Python ライブラリ化してもいいのでしょうけど。

 ちなみに DoctorMX については C/C++ の世代変わりの壁で対策がわかりません。
 kuwatecさんが公開されているのは VC6 世代のコードようですが、C++はその後の時代に多くの改変がされているらしいのです。

#器具の製作 #C言語 #Python
Icon of admin
 ENTTEC 純正の Open DMX USB を入手しました。
 しかし、先日調べたネタではデバイスの認識すらしません。README.md を読み返したところRaspberryPi用でした。動かなくても仕方ない。

 調べ直したところGitHubに次の様なモノがありました。
「PyOpenDmxUsb」
 README.md を読む限り、Windows 上の Python で Open DMX USB を扱う代物のようです。
 使い方が少し難しいようですが、調べてみる価値はありそうです。

追記
「PyOpenDmxUsb」
 は予想外に簡単でした。
1)pip で pywin32 をインストール
> pip install pywin32
2)GitHub からダウンロードしたファイルを メインの Python ソースがあるフォルダにまとめる。
 ・フォルダ「PyOpenDmxUsb-master」内の「C#」フォルダにある「DMXServer.exe」。
 ・フォルダ「PyOpenDmxUsb-master」内の「Python」フォルダにある「DMXClient.py」。

 あとは、サンプルプログラムを参考にソースを書きます。
from DMXClient import DMXClient
import time

dmxClient = DMXClient("PODU")
dmxClient.connect()

while True :
 for i in range( 256 ) :
  try :
   dmxClient.write([1, i, 2, i])
   time.sleep( 0.1 )
  except KeyboardInterrupt:
   dmxClient.close()
   break
 break

 DMX の アドレス001とアドレス002をカウントしていくだけの動作を確認出来ました。
 コマンドコンソールか PowerShell から DMXServer.exe を起動してから上記の Python コードを実行します。
> .\DMXServer -n PODU
 この後、別コマンドコンソールから Python コードを実行します。

 DMXServer.exe を起動してから本プログラムを実行する手順が少し面倒だし Python らしくない。
 出来ることなら Python モジュールとして import して使えるようにしたいと思います。
 DMXServer.exeのC#ソースが付属しているので、これを参考に Python モジュールを作れたらいいのかな?

#器具の製作
Icon of admin
 「Open DMX USB」をオリジナルのアプリで使うことを考えていきますと「DoctorMX」も使えたらなと思ってしまいます。
 開発・販売元のクワテックさんでは DoctorMX を使うためのライブラリとサンプルコードを公開してくださってます。C/C++ 向けですが、サンプルコードは私でも読めるので扱えるかもしれません(その昔は全く理解出来ませんでした。ちょっと感動。)。
 小屋卓のPC版を作るかはともかく、DoctorMX と Open DMX USB の扱い方を習得しておくのはいいかもしれません。

 2023年9月現在、クワテックさんから DoctorMX の Python ライブラリの提供はありません。リクエストしたら作ってくれそうな気もしますが、まずは自力で解決を目指しましょう。工夫や努力もせずに安易なリクエストをされるのは私も嫌ですしね。

「PythonからC言語の関数を呼び出す(基本編)」

追記
 上記がコンパイル出来るか試みましたがエラーを吐いて終わらない。
 「error: Unable to find vcvarsall.bat」とのこと。
 なんじゃこりゃ!?
 環境は VSCode の上で gcc です。
 日本語サイトには直球な解決策は見つかりませんでしたが、某英語サイトに「Microsoft Visual C++ Build Tools」を入れたら解決するとの書き込み。

Microsoft Visual C++ ビルド ツールをインストールする

システムに Microsoft Visual C++ がインストールされていない場合、または古いバージョンがインストールされている場合は、Microsoft Visual C++ Build Tools をダウンロードしてインストールできます。Microsoft Visual C++ Build Tools には、Windows 上で C++ コードをビルドするために必要な環境変数とツールが含まれています。

Microsoft Visual C++ Build Tools をインストールする手順は次のとおりです。

1:Visual Studio Build Tools Web サイトに移動します。
2:インストーラーをダウンロードして実行します。
3:「C++ ビルド ツール」ワークロードを選択します。
4:「インストール」をクリックします。


 開演時間になったのでお試しはお預けですが、2時間ほど悩んでいたので期待感大。

#Python #器具の製作
Icon of admin
 FT232RLで一般的なシリアル通信以外のことをするにはドライバを直接叩かないといけないらしい。250kbps 送信と長い長い BreakTime を生成するには OS のシリアルを叩いても不可能ですからね。
 FT232RL のメーカーである FTDI のサイトに D2XX Programmer’s Guide がありました。これが理解出来ればいいのでしょうが全く理解出来ません。

 Open DMX USB の Python ライブラリが落ちていました。これなら理解できます。
「PyFtdi」
 次の使用例はとてもわかりやすい。
「jlbrogdon/dmx_controller」
 細かい例外対策まで仕上げるには PyFtdi の API documentation を熟読しなければなりませんが、本丸が見えればナンとかなりそうな気分になります。
 PyFtdi の世代の問題なのか、少し手直しをしないとエラーになります。
 ・・・注意:READMEを読み返したらコレは RaspberryPi 向けに書いたモノだとか。動かなくても不思議はありません。

 Open DMX USB の回路図はこちらがわかりやすい。
「菅工房 Open DMX USB」

 汎用の FT232RL 基板を使うならここが参考になります。
「Open DMX USB コントローラによる DMX512制御」
 汎用の FT232RL にほんの少し設定を加えるだけで Open DMX UASB として使えます。FT232RL の電気特性は UART なので RS485 に変換する必要はあります。

 忘れちゃいけない本家。
「ENTTEC Open DMX USB」
「D2XX Programmer's Guide」

 習作ですので急ぐつもりはありませんしアイデアだけで終わるかもしれませんが、Open DMX USB を扱えたら応用の幅がありそうな予感はあります。テンキーでガツガツ打てて、MIDI でクロスフェーダーやサブマスターまで組めたらいいかなと。
 ホール卓のPC版ってのもネタとして面白いかも。「KOYATAKU」とでも名付けます?。ホール卓の基本構成をパソコンで構成してフリーウェアにしたらメーカーさんに嫌がられるでしょうけど、10年間違いなく動くのがメーカーさんのクウォリティであって、ここを真似するのは絶対不可能な領域です。

#器具の製作
Icon of admin
 「Open DMX USB」について考えていたのは移動中アタマが空いていたからです。
 学園祭への機材レンタルで搬送をしていたのですが、片道1時間半くらいかかるので考え事をするには丁度良い時間でした。

 そんな中で Art-Net Patch も思い出す。余りに難しく、数日アタマを全振りしないと進められないネタのために止まっています。
 ミキサー(マージ)、プリディレイ(入力に施す)、プリプロファイルカーブ、パッチ、ポストプロファイルカーブ、ポストディレイ(出力に施す)が主な機能ですが、これらの処理(エフェクターと呼称)は参照して計算、参照して計算、参照して計算をひたすら繰り返します。一つ一つはとても簡単な処理ですが、タイミング良く群のデータを短時間で処理しないといけないので構成が難しく、僅かな無駄が後からボディブローの様に効いてきます。

 年齢が年齢なので経験量に対し学習量が少ないなぁ~と思いつつも、オブジェクト指向やマルチスレッドなどが普通に使える様になってきますと今までと違った構成がアタマに浮かんできます。全体を一度に見ると難しい処理ですが、構成を分解・整理すれば分割したライブラリとして進められるんじゃないかと。
 厄介なのはミキサーとディレイですが、これらを実現するには最大遅延時間分の過去を送信元分保存しておく必要があります。このデータ構成を良く考え、エフェクターの出入りを一般化して進めれば機能単位での製作が可能になりそうな気がします。

 目的に対しその環境や言語をどう使えばいいか具体的な見込みを付けてからデータ構造と処理アルゴリズムの本構成を考えることが大切だと思う今日この頃。
 開発のプロからしたら当たり前過ぎることなんでしょうけど。

#[Art-Net] #C言語 #器具の製作
Icon of admin
 LTC Generator のファームウェアもボチボチ製作開始です。初期設定から整理を始めています。
 まずはPICとプリアンプの確認を兼ねてパルス出力のテストプログラムからでしょうか。これが思惑通りにならないと何も始まりません。
 30fps向けの2,400bpsと25fps向けの2,000bpsです。実際は倍の4,800Hzと4,000Hzのパルス生成です。
 生成にはTMR1をコンペアモードで使います。
 TMR1はタイマと呼ばれるもので、CPUクロックなどをキーにした自動カウンターです。時間の計測に使えます。
 コンペアとはタイマが指定の値になったらタイマの値を初期化しつつフラグを立てる機能です。一定の周期を得られます。
 周期を動的に調整して1時間あたりの総カウント数を出来るだけ正確にしようというのが今回の肝です。

#PIC #器具の製作 #タイムコード
Icon of admin
 LTC Generator の基板をハンダ付け。
 表面実装部品の取り付けはオーブントースターを用いたリフローです。手順が決まれば簡単です。
 リフローに関する過去記事
20230522221900-admin.jpg 202305222219001-admin.jpg
 当たり前ですが、KiCADで描いた3D図のままです。
 Windows11がCOMとして認識しましたので、Pythonでシリアル通信が出来るハズです。
 この後はPICのファームウェアを書きます。MPLABX-IDEも使えるようにしましたので地道に書いていきます。

 基板に書いた抵抗値が一部間違ってました。
 データは修正しましたが、次の製作では注意が必要です。

#電子工作 #器具の製作 #タイムコード
Icon of admin
 LTC Generator の部品も揃いました。
 次のオフでリフローをやって組んでみます。
 まずはFT232RLをパソコンで認識出来るところまで早々に確認したいです。

#電子工作 #器具の製作 #タイムコード

■当面の課題

桜のライトアップの季節です。花粉症の季節でもあります。
自分は平気ですが、花粉症の部下は死にそうな顔をしています。

編集

■全文検索:

複合検索窓に切り替える

■複合検索:

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

■日付検索:

■カレンダー:

2023年9月
12
3456789
10111213141516
17181920212223
24252627282930

■カテゴリ:

■最近の投稿:

最終更新日時:
2024年5月2日(木) 08時23分44秒