全年全月30日の投稿[25件]
2024年8月 この範囲を時系列順で読む この範囲をファイルに出力する
LED-PARの制御基板の不良ですが、なんとなーくですけど、RS485トランシーバーSN75176に施されている入力保護回路が悪さをしているような気がしてきました。RS485の保護回路は抵抗でブリッジしたりツェナーを入れるのが一般的ですが、下手な設計だと単体では動くけれど複数接続するとダメになることもあります。自作のDMX製品ではLT1785一択ですが、保護回路無しでもトラブルに遭遇したことはありません。
で、思ったのですが、RS485トランシーバーをSN75176からLT1785に換装して保護回路を無くしてしまえばいいんじゃないかと。LT1785は電気的耐性が高く中華電器なら安価。パッケージがSOPなので付け替えの難易度は高めですが、悩んでいる時間と現場でのトラブルを考えたらLT1785にした方がいいんじゃないかと思うのです。
DMXの挙動がおかしい基板で試してみましょう。
#器具の修理
で、思ったのですが、RS485トランシーバーをSN75176からLT1785に換装して保護回路を無くしてしまえばいいんじゃないかと。LT1785は電気的耐性が高く中華電器なら安価。パッケージがSOPなので付け替えの難易度は高めですが、悩んでいる時間と現場でのトラブルを考えたらLT1785にした方がいいんじゃないかと思うのです。
DMXの挙動がおかしい基板で試してみましょう。
#器具の修理
2023年11月 この範囲を時系列順で読む この範囲をファイルに出力する
ここ数か月全く進んでいませんが、Art-Netパッチを作っています。
で、思い付く。
回路名のプロファイルを使えたらどうかと。パッチ画面に回路の名称も併記するのです。パッチ操作ではDMXアドレスだけより名称もあった方が扱いやすいと思うからです。仮設現場でも回路名が表示されていればメンテナンス性がいいでしょうし。
あと、パッチマシンはC言語で全部書くのではなく、受送信パッチ処理はC言語で書き、ユーザーフロントエンドの部分はPythonで書いた方が良さそうです。C言語でドライバを作りPythonで操作する感覚です。繋げる部分の記述は面倒っちゃ面倒ですが、C言語とPtyhonで得意分野を分けた方が生産性がいいかもしれません。
#[Art-Net] #器具の製作
で、思い付く。
回路名のプロファイルを使えたらどうかと。パッチ画面に回路の名称も併記するのです。パッチ操作ではDMXアドレスだけより名称もあった方が扱いやすいと思うからです。仮設現場でも回路名が表示されていればメンテナンス性がいいでしょうし。
あと、パッチマシンはC言語で全部書くのではなく、受送信パッチ処理はC言語で書き、ユーザーフロントエンドの部分はPythonで書いた方が良さそうです。C言語でドライバを作りPythonで操作する感覚です。繋げる部分の記述は面倒っちゃ面倒ですが、C言語とPtyhonで得意分野を分けた方が生産性がいいかもしれません。
#[Art-Net] #器具の製作
2023年8月 この範囲を時系列順で読む この範囲をファイルに出力する
今「人工石油」が注目されています。
簡単に安く短時間で灯油や軽油とほぼ同質の油を作る技術です。
この映像の3'40"くらいから細かい説明がありますが、これは面白い製造方法です。
結合が強い二酸化炭素を分解するって発想がまず凄い。
#雑談
簡単に安く短時間で灯油や軽油とほぼ同質の油を作る技術です。
この映像の3'40"くらいから細かい説明がありますが、これは面白い製造方法です。
結合が強い二酸化炭素を分解するって発想がまず凄い。
#雑談
Python でファイル保存するには次の方法がお手軽みたい。
「pythonでlistをファイルに保存し、読み込む方法(numpyも同様!)」
上記内の「pickleを使用する方法(おすすめ!)」です。
ここでは list を保存する方法として書かれていますが tuple でもOK。もちろん、list や dict を含む異なる型をテキトウに突っ込んだ tuple でもOK。Python で一つの変数として扱える状態にしてから pickle.dump でファイルに入れれば何でもいいみたい。読出しは load すれば pickle.dump する直前の状態で変数に格納されます。変数のまんま保存し変数のまんま読み出せるイメージです。
やりたいことは list 型のセットリストと諸々のステータスの保存/読出しです。これらを tuple にまとめれば一括で扱えるみたいです。
ファイル保存は手続きが面倒ってイメージがありましたが、これは楽チンです。
追加オレメモ。
「Pythonでファイル、ディレクトリ(フォルダ)の存在確認」
「Pythonでディレクトリ(フォルダ)を作成するmkdir, makedirs」
「Python ファイルのコピーと移動」
こういった基本的なことが凄く簡単なのは Python のすばらしさ。
この様な操作を整理しているのは、データを他のパソコンに持って行く前提で、音源ファイルをセットリストファイルと同じフォルダに置きたいからです。
pyinstaller を使って実行ファイル化(.exe化)してみました。この状態にすると Python をインストールしていないパソコンでも動きます。操作は簡単ですし中身を隠せていいかも。
モノは試しにアップしてみました。Windows11の64bitでしか試していませんが、64bitならWindows10でも動くと思われます。
LtcPlayer
セットリストの保存機能が未実装のβ版です。モノ好き大好き自己責任でお楽しみください。
LTC の出力には専用インターフェースが必要です。これが無ければ単なる音楽プレーヤーです。
専用インターフェースのことを LTC Generator と呼んでいますが販売するかは検討中です。ノンクレーム返品可で少数販売でしょうか?手作りなので数を作れませんしサポートしきれませんし。
#タイムコード #Python
「pythonでlistをファイルに保存し、読み込む方法(numpyも同様!)」
上記内の「pickleを使用する方法(おすすめ!)」です。
ここでは list を保存する方法として書かれていますが tuple でもOK。もちろん、list や dict を含む異なる型をテキトウに突っ込んだ tuple でもOK。Python で一つの変数として扱える状態にしてから pickle.dump でファイルに入れれば何でもいいみたい。読出しは load すれば pickle.dump する直前の状態で変数に格納されます。変数のまんま保存し変数のまんま読み出せるイメージです。
やりたいことは list 型のセットリストと諸々のステータスの保存/読出しです。これらを tuple にまとめれば一括で扱えるみたいです。
ファイル保存は手続きが面倒ってイメージがありましたが、これは楽チンです。
追加オレメモ。
「Pythonでファイル、ディレクトリ(フォルダ)の存在確認」
「Pythonでディレクトリ(フォルダ)を作成するmkdir, makedirs」
「Python ファイルのコピーと移動」
こういった基本的なことが凄く簡単なのは Python のすばらしさ。
この様な操作を整理しているのは、データを他のパソコンに持って行く前提で、音源ファイルをセットリストファイルと同じフォルダに置きたいからです。
pyinstaller を使って実行ファイル化(.exe化)してみました。この状態にすると Python をインストールしていないパソコンでも動きます。操作は簡単ですし中身を隠せていいかも。
モノは試しにアップしてみました。Windows11の64bitでしか試していませんが、64bitならWindows10でも動くと思われます。
LtcPlayer
セットリストの保存機能が未実装のβ版です。モノ好き大好き自己責任でお楽しみください。
LTC の出力には専用インターフェースが必要です。これが無ければ単なる音楽プレーヤーです。
専用インターフェースのことを LTC Generator と呼んでいますが販売するかは検討中です。ノンクレーム返品可で少数販売でしょうか?手作りなので数を作れませんしサポートしきれませんし。
#タイムコード #Python
2023年7月 この範囲を時系列順で読む この範囲をファイルに出力する
バレエ発表会で道具だけ。転換は休憩の時だけなので緩い現場です。
Python の記述エディタを VSCode に変更しました。
インストールするべき拡張機能は次の通り。
1)Japanese Language Pack for Visual Studio Code(VSCodeを入れたらまず入れるべき拡張機能)
2)Python Extension Pack(拡張機能が3つ6つ入る。この中のPythonだけでもいいらしいけど、全部入れた方が便利だと思う)
こんだけでいいならもっと早く使えばよかったなと。
VSCodeはいいっすね。「オイラ便利だろ!」という主張がほぼ無くサラッと便利。
軽いし、無駄な装飾は無いし、わかりやすいし、こんなバランスが良くてスマートなツールが microsoft 発祥とは意外だったりして。
VSCode はお勧めです。
LTC Player のソースコードを整理しようとしていますが、import した自作ファイルの変数の有効範囲などを改めて確認しています。スマートな記述のためには大事なことです。
試してシミジミ実感したのですが、出来るだけ class で記述した方が可読性が高いですわ。
#Python
Python の記述エディタを VSCode に変更しました。
インストールするべき拡張機能は次の通り。
1)Japanese Language Pack for Visual Studio Code(VSCodeを入れたらまず入れるべき拡張機能)
2)Python Extension Pack(拡張機能が
こんだけでいいならもっと早く使えばよかったなと。
VSCodeはいいっすね。「オイラ便利だろ!」という主張がほぼ無くサラッと便利。
軽いし、無駄な装飾は無いし、わかりやすいし、こんなバランスが良くてスマートなツールが microsoft 発祥とは意外だったりして。
VSCode はお勧めです。
LTC Player のソースコードを整理しようとしていますが、import した自作ファイルの変数の有効範囲などを改めて確認しています。スマートな記述のためには大事なことです。
試してシミジミ実感したのですが、出来るだけ class で記述した方が可読性が高いですわ。
#Python
2023年6月 この範囲を時系列順で読む この範囲をファイルに出力する
そんなこんなで LTC Player の製作は止まっています。進めたいのですが時間だけでなくアタマの容量も不足してます。
PysimpleGUI を筆頭にプログラム環境でどこまで出来るかを探りながらなので、自分でもどう仕上がるかわからんという本音もあります。
最近気づいたのは、sg.FileBrowse() などのボタンとしてレイアウトしなければならない機能は、不可視設定した column に入れ込んでしまえば表示しなくても使えること、ボタンオブジェクトを押したことにする .Click() を使えば他の event から(もちろんメニューからも)読み出せるというものです。PysimpleGUIを使ったことがないとピンとこないことですが、これは PysimpleGUI のレイアウトに自由度を与えてくれます。
追記
.Bind() を使うと細かいキーボード操作を event として取り込むことが出来るらしい。
キー操作をプレスにするかリリースにするかを選べるハズです。この辺りも研究課題です。
#Python
PysimpleGUI を筆頭にプログラム環境でどこまで出来るかを探りながらなので、自分でもどう仕上がるかわからんという本音もあります。
最近気づいたのは、sg.FileBrowse() などのボタンとしてレイアウトしなければならない機能は、不可視設定した column に入れ込んでしまえば表示しなくても使えること、ボタンオブジェクトを押したことにする .Click() を使えば他の event から(もちろんメニューからも)読み出せるというものです。PysimpleGUIを使ったことがないとピンとこないことですが、これは PysimpleGUI のレイアウトに自由度を与えてくれます。
追記
.Bind() を使うと細かいキーボード操作を event として取り込むことが出来るらしい。
キー操作をプレスにするかリリースにするかを選べるハズです。この辺りも研究課題です。
#Python
このところサーバーを作っていました。設置場所は某劇場の舞台事務所です。
インターネットにも行けるごく普通の館内LANを使うのですが、館内のフリーwi-fiと元を同じくする回線です。先の設定がどうなっているのかわかりませんが、ネットマスクの桁数から想像するにフリーwi-fiの回線そのものと思われます。無料で使わせてもらえるので贅沢を言ってはいけませんが、接続しているパソコンと共有しているフォルダは絶対に隠さなければなりません。
となると、必要な通信は通って不必要は通信は遮断するゲートウェイサーバーを構成する必要があります。その他の課題は、ローカルLANをwi-fiにすることです。机の配置の都合でLANケーブルを敷設出来ないからです。
サーバー機の構成は、機体がジャンクのPC、OSはdebian、データストレージはRAID1にしたHDDを2台とバックアップ用のUSB-HDD、wi-fiのアクセスポイントとしてUSBのwi-fiトングです。マザーボードにはLANコネクタが2個あるので、外向きLANと内向きLANを構成してwi-fiトングは内向きのLANとブリッジします。
これまでにも近い構成を何度も組んでいますからすんなり終わるだろと思ったら大間違い。このところのdebianはヴァージョンが上がるごとにセキュリティ対策が増え、設定が微増するのは仕方ないとして、旧来のコマンドが使えなくなったり設定の仕方がちょっとだけ変わるのです。私からすればよくわからん方言となりますので調べるのに時間がかかりました。持った通りに組めましたが、思惑より2日間余計にかかって他の仕事がヤバイ。
おまけというか蛇足ですが、VPNで本社にも繋がる様にしておきました。本社の共有フォルダにアクセス出来れば業務も楽だろうと。
突っ込んだ話ですが、DHCPサーバー、DNSサーバーとしてdnsmasqを使ってみました。簡易的なモノというイメージがありますが、私が組む小規模サーバーにはisc-dhcp-serverやbind9よりも等身大です。複雑な振り分けやルーティングはしませんので機能は十分ですし何よりも設定が分かりやすい。これらはサーバーを作り始めた当初に難儀したところですからこの使い勝手は感激レベルです。一つ問題を上げるなら、起動後、wi-fiトングと内向きLANとのブリッジが完了する前にdnsmasqが起動すると正常に動作しないので、dnsmasqの起動に待ちを入れる必要があったことです。これを見つけるのに少し時間がかかりました。
/etc/resolv.conf を dhcpcd に書きかえらない対策が必要なことも気付くのに時間がかかりました。dnsmasq は自分でルートファイルを持たないために設定が簡単ですが、dhcpでアドレスを受け取る際に得たDNSサーバーの情報で /etc/resolv.conf を書き換えてしまうのです。これをされると自分でDNSサーバーを持っている場合に不都合が出るので、/etc/resolv.conf は書き換え不可にしなければならないのです。dnsmasq にも書き換えしない設定があるようですが、何度やっても書き換えられてしまう。ならば、/etc/resolvconf をOSレベルで書き換えられてない様にすればいい。同様の問題を抱えた先達がいましたので有難くパクらせて頂きました。パーミッションを400にするのかと思いきや、パーミッションより上位のフラグがあって、それを設定するのがいいらしい。# chattr +i /etc/resolv.conf とのこと。+i は書き換え不可のフラグを立てるスイッチです。外すなら -i だそうな。
あと、DHCPクライアントをdhcpcdにしました。RaspberryPiで慣れているのもありますが、旧来の /etc/network/interfaces だけで設定するより何をしてもスムーズ。特にwi-fiトングをアクセスポイントにする hostapd を使うなら dhcpcd 一択と思えるほど快適でした。
書き始めたらキリがありませんが、都度の感想も書き入れた設定記録を残したので、次の製作では参考にしつつ読んで楽しもうと思います。
サーバーの設定は server world さんを参考にしています。
server world
ここの通りにすればちゃんと動きますので、私はここのレシピで基本設定をしてから好みに変更する様にしています。
ただし、セキュリティについては別です。基本はフォルダやファイルのパーミッション、ルーティング、IPフィルタリングですが、ここはそうった解説を書かない方針と見受けらえます。それらについては別途勉強しなければなりません。
#サーバー
インターネットにも行けるごく普通の館内LANを使うのですが、館内のフリーwi-fiと元を同じくする回線です。先の設定がどうなっているのかわかりませんが、ネットマスクの桁数から想像するにフリーwi-fiの回線そのものと思われます。無料で使わせてもらえるので贅沢を言ってはいけませんが、接続しているパソコンと共有しているフォルダは絶対に隠さなければなりません。
となると、必要な通信は通って不必要は通信は遮断するゲートウェイサーバーを構成する必要があります。その他の課題は、ローカルLANをwi-fiにすることです。机の配置の都合でLANケーブルを敷設出来ないからです。
サーバー機の構成は、機体がジャンクのPC、OSはdebian、データストレージはRAID1にしたHDDを2台とバックアップ用のUSB-HDD、wi-fiのアクセスポイントとしてUSBのwi-fiトングです。マザーボードにはLANコネクタが2個あるので、外向きLANと内向きLANを構成してwi-fiトングは内向きのLANとブリッジします。
これまでにも近い構成を何度も組んでいますからすんなり終わるだろと思ったら大間違い。このところのdebianはヴァージョンが上がるごとにセキュリティ対策が増え、設定が微増するのは仕方ないとして、旧来のコマンドが使えなくなったり設定の仕方がちょっとだけ変わるのです。私からすればよくわからん方言となりますので調べるのに時間がかかりました。持った通りに組めましたが、思惑より2日間余計にかかって他の仕事がヤバイ。
おまけというか蛇足ですが、VPNで本社にも繋がる様にしておきました。本社の共有フォルダにアクセス出来れば業務も楽だろうと。
突っ込んだ話ですが、DHCPサーバー、DNSサーバーとしてdnsmasqを使ってみました。簡易的なモノというイメージがありますが、私が組む小規模サーバーにはisc-dhcp-serverやbind9よりも等身大です。複雑な振り分けやルーティングはしませんので機能は十分ですし何よりも設定が分かりやすい。これらはサーバーを作り始めた当初に難儀したところですからこの使い勝手は感激レベルです。一つ問題を上げるなら、起動後、wi-fiトングと内向きLANとのブリッジが完了する前にdnsmasqが起動すると正常に動作しないので、dnsmasqの起動に待ちを入れる必要があったことです。これを見つけるのに少し時間がかかりました。
/etc/resolv.conf を dhcpcd に書きかえらない対策が必要なことも気付くのに時間がかかりました。dnsmasq は自分でルートファイルを持たないために設定が簡単ですが、dhcpでアドレスを受け取る際に得たDNSサーバーの情報で /etc/resolv.conf を書き換えてしまうのです。これをされると自分でDNSサーバーを持っている場合に不都合が出るので、/etc/resolv.conf は書き換え不可にしなければならないのです。dnsmasq にも書き換えしない設定があるようですが、何度やっても書き換えられてしまう。ならば、/etc/resolvconf をOSレベルで書き換えられてない様にすればいい。同様の問題を抱えた先達がいましたので有難くパクらせて頂きました。パーミッションを400にするのかと思いきや、パーミッションより上位のフラグがあって、それを設定するのがいいらしい。# chattr +i /etc/resolv.conf とのこと。+i は書き換え不可のフラグを立てるスイッチです。外すなら -i だそうな。
あと、DHCPクライアントをdhcpcdにしました。RaspberryPiで慣れているのもありますが、旧来の /etc/network/interfaces だけで設定するより何をしてもスムーズ。特にwi-fiトングをアクセスポイントにする hostapd を使うなら dhcpcd 一択と思えるほど快適でした。
書き始めたらキリがありませんが、都度の感想も書き入れた設定記録を残したので、次の製作では参考にしつつ読んで楽しもうと思います。
サーバーの設定は server world さんを参考にしています。
server world
ここの通りにすればちゃんと動きますので、私はここのレシピで基本設定をしてから好みに変更する様にしています。
ただし、セキュリティについては別です。基本はフォルダやファイルのパーミッション、ルーティング、IPフィルタリングですが、ここはそうった解説を書かない方針と見受けらえます。それらについては別途勉強しなければなりません。
#サーバー
2023年5月 この範囲を時系列順で読む この範囲をファイルに出力する
MPLABX-IDEv5.50、XC8_pic-as、PICkit3 の組み合わせでPICが動きました。
今までは古い古いMPLABv8.92を主に使ってきましたが、MPLABXへの引っ越しが終わった感じです。出来るだけ新しいMPLABXを使わないと対応デバイスやら動作クロックの制限があって不便だったのです。
PICに対して行う要点は同じですが、大事なところが微妙に違うのには難儀しました。特に、プログラムメモリアドレスの指定とコンフィゲエーションビットの設定という超重要項目の設定方法が全く違うのには泣かされました。先達の情報に感謝です。
TMR1をコンペアモードで動かして所定の基底パルスが出ています。25fps向けの4,000Hzなので折り返しは250usec.です。オシロスコープにしっかりと波形が出ています。
基本的なところがクリア出来ましたので、試行錯誤で散らかったソースコードを掃除して次のステップです。
追記
音声信号に変換するプリアンプ回路が思った様になりません。
アナログは苦手です。
追記
先達の情報にこんなんがありました。
単電源でアンバランス-バランス変換 その2
単電源でオペアンプを使う際の注意点というか基本が読み取れる回路図です。自分は単電源での使い方を間違って覚えているかもしれません。
試しにブレッドボードで組んでみましょう。
つか、苦手な要素はテストしてから基板作れよっ・・
追記
上記のサイトの回路を参考に、プリアンプ回路の修正基板を描いてみました。オペアンプを搭載するDIP8ピンのパターンに被せる基板です。

全てを作り直してもいいのですが、無駄になる物が多いので、すでに入荷済みの基板にはこの手で使おうかなと。聴くものじゃありませんので多少ノイズが出ても支障ありませんし。
オーダーするのはブレッドボードでのチェックの後にしますケドね。
#PIC #タイムコード
今までは古い古いMPLABv8.92を主に使ってきましたが、MPLABXへの引っ越しが終わった感じです。出来るだけ新しいMPLABXを使わないと対応デバイスやら動作クロックの制限があって不便だったのです。
PICに対して行う要点は同じですが、大事なところが微妙に違うのには難儀しました。特に、プログラムメモリアドレスの指定とコンフィゲエーションビットの設定という超重要項目の設定方法が全く違うのには泣かされました。先達の情報に感謝です。
TMR1をコンペアモードで動かして所定の基底パルスが出ています。25fps向けの4,000Hzなので折り返しは250usec.です。オシロスコープにしっかりと波形が出ています。
基本的なところがクリア出来ましたので、試行錯誤で散らかったソースコードを掃除して次のステップです。
追記
音声信号に変換するプリアンプ回路が思った様になりません。
アナログは苦手です。
追記
先達の情報にこんなんがありました。
単電源でアンバランス-バランス変換 その2
単電源でオペアンプを使う際の注意点というか基本が読み取れる回路図です。自分は単電源での使い方を間違って覚えているかもしれません。
試しにブレッドボードで組んでみましょう。
つか、苦手な要素はテストしてから基板作れよっ・・
追記
上記のサイトの回路を参考に、プリアンプ回路の修正基板を描いてみました。オペアンプを搭載するDIP8ピンのパターンに被せる基板です。


全てを作り直してもいいのですが、無駄になる物が多いので、すでに入荷済みの基板にはこの手で使おうかなと。聴くものじゃありませんので多少ノイズが出ても支障ありませんし。
オーダーするのはブレッドボードでのチェックの後にしますケドね。
#PIC #タイムコード