<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
	<title><![CDATA[ 全年3月9日の投稿［6件］ - 電装工芸日記 - 舞台照明機器の製作とか - ]]></title>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi</link>
	<description><![CDATA[ 今年は開発案件を進めたい ]]></description>
	<language>ja</language>
	<copyright>Copyright 2026</copyright>
	<lastBuildDate>Tue, 21 Apr 2026 06:51:15 +0900</lastBuildDate>
	<generator><![CDATA[ <!-- てがろぐ Version: -->Powered by <a href="https://www.nishishi.com/cgi/tegalog/" target="_top">てがろぐ</a> Ver 3.4.0 ]]></generator>
	<!-- BEGIN ENTRIES -->
	<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　開発や製作は調光ユニットの作り直しもあります。 ]]></title>
	<description><![CDATA[ 　開発や製作は調光ユニットの作り直しもあります。<br />　LitePuterさんのDX1220を2台入れた14Uの物が数台ありますが、しばらく前にパッケージしたのでアナログ信号のコネクタを付けていました。今となっては不用ですし代わりにスプリッターを入れておきたい。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e5%99%a8%e5%85%b7%e3%81%ae%e8%a3%bd%e4%bd%9c" class="taglink" title="器具の製作">#器具の製作</a>  -- Posted by 電装工芸 〔138文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=1025</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=1025</guid>
	<category>tegalog</category>
	<pubDate>Sun, 09 Mar 2025 13:02:03 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　RaspberryPi4BのACT-LEDをGPIOに出力… ]]></title>
	<description><![CDATA[ 　RaspberryPi4BのACT-LEDをGPIOに出力してみました。<br />　/boot/config.txtに設定を追加します。<br />　以下はGPIO24(18番ピン)に出力する設定です。他のピンでも動くと思います。<br /><br /><span class="decorationF deco-code">$ sudo vi /boot/config.txt<br /> # 末尾&#91;all&#93;の後に次を加えます。<br /> <b class="decorationB">dtparam=act_led_gpio=24</b></span><br /><br />　再起動すると基板上の緑のLEDの挙動がGPIO24に出ます。<br /><br />　やりたいことはUSB電源の制御で、カーネルが読み込まれたらONにし、カーネルが落ちたらOFFにしたいのです。再起動においてUSBデバイスをリセットするためにUSB電源を一度落とすことが目的です。<br />　更に設定を追加してACT-LEDを常時点灯にすると求める動作を得られるようです。<br /><br /><span class="decorationF deco-code">$ sudo vi /boot/config.txt<br /> dtparam=act_led_gpio=24<b class="decorationB">,act_led_trigger=default-on,act_led=on</b></span><br /><br />　起動後にカーネルが読み込まれるとGPIOがHになり、シャットダウンもしくは再起動でカーネルが落ちるとLになります。それぞれのタイミングも良さそうです。<br />　今日はLEDで出力を見ただけですが、実際にリレーを動かすならプルダウンした上にトランジスタ等でバッファする必要があるでしょう。<br /><br />　RaspberryPiのUSB電源はスクリプトで制御可能ですし、リレーを動かすだけならGPIOを操作すればいいのですが、各種モジュールが読み込まれる前に電源を投入し、各種モジュールが落ちてから電源を切りたいので意味が違います。<br />　カーネルが落ちたらUSB電源も落ちればいいのですが、RaspberryPiのUSB電源はPWR-LEDの標準動作と同じ挙動っぽいので、今回はACT-LEDを用いることにします。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%52%61%73%70%62%65%72%72%79%50%69" class="taglink" title="RaspberryPi">#RaspberryPi</a> -- Posted by 電装工芸 〔810文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=530</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=530</guid>
	<category>tegalog</category>
	<pubDate>Thu, 09 Mar 2023 23:18:13 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　インターカムのパワーサプライは３台完成。出来る限り見た目も… ]]></title>
	<description><![CDATA[ 　インターカムのパワーサプライは３台完成。出来る限り見た目も良くしたのでそれっぽく見えます(自画自賛)。<br />　本業も忙しいのですが、この調子で棚上げ課題を済ませたいところです。<br /><br />　次は「裸族のパイ」です。<br />　HDDケースの<a class="url" href="https&#58;//www.century.co.jp/products/crch35u3is3.html" target="_blank" title="https&#58;//www.century.co.jp/products/crch35u3is3.html">「裸族のカプセルホテル」</a>の中にRaspberryPiを入れてサーバー機にするものです。<br />　筐体の改造などは終わっていて、RaspberryPiのACT信号によるUSB電源の制御を残すだけなのでそれほど難しくないハズです。<br />　「裸族のパイ」は自宅サーバーの省電力化のためにも必要なので速やかに進めたいところです。<br /><br />追記<br />　せっかくなのでパワーサプライの記念撮影<br /><img class="embeddedimage" src="https&#58;//www.densokogei.jp/tegalog/images/20230309080952-admin.jpg" alt="20230309080952-admin.jpg"> <img class="embeddedimage" src="https&#58;//www.densokogei.jp/tegalog/images/202303090809522-admin.jpg" alt="202303090809522-admin.jpg"> <img class="embeddedimage" src="https&#58;//www.densokogei.jp/tegalog/images/202303090809521-admin.jpg" alt="202303090809521-admin.jpg"><br />　ケーブルに隠れていますが、３枚目の写真の右側にターミネーターを実装した分岐基板があります。<br />　以前から使っているパワーサプライはXLRコネクタの内側端子にターミネータの部品を直接ハンダ付けしていますが、見た目も悪いし機械強度も不安なので、この基板に換装しようと思います。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e9%9b%bb%e5%ad%90%e5%b7%a5%e4%bd%9c" class="taglink" title="電子工作">#電子工作</a><br /> -- Posted by 電装工芸 〔439文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=529</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=529</guid>
	<category>tegalog</category>
	<pubDate>Thu, 09 Mar 2023 00:08:50 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　Art-Netを受信した後、送信元別だった受信値をミックス… ]]></title>
	<description><![CDATA[ 　Art-Netを受信した後、送信元別だった受信値をミックス(HTP)する方法。<br /><br />　numpy.maxを用いれば簡単<br /><br />　受信値を３次元のnumpy.arrayで保存します。<br />　３次元のnumpy.arrayはエクセルでイメージするとわかりやすいかなと。<br /><br />　１スロットの受信値は0-255の数値で、これが横方向(行)に512個並んだ状態をユニバースとします。<br />　これをルート別に縦方向(列)で並べます。ここまでは縦横の１枚のシートです。<br />　この１枚を送信元別のシートとし、レイヤーとして重ねます。もちろん、スロットアドレスとルートは同様にします。<br /><br />　あとはレイヤーを串刺しで最大値を得ればHTPでミックスしたルートとスロットの２次元のnumpu.arrayを得られます。<br /><br />　numpyをnpの名前でimportし、３次元のnumpy.arrayをan_cache_senders_route、最大値の２次元のnumpy.arrayをan_cache_htpとすると次の様になります。<br /><br />an_cache_htp = np.max( an_cache_senders_route, axis=0 )<br /><br />　こんな感じの１行で計算出来ます。axis=0は最大値を得る次元方向の指示です。３次元なら、axis=2は横で、axis=1は縦で、axis=0は奥行という指示です。<br /><br /><br />　以下、ちょいとオレメモ<br /><br />　受信値、付随するデータ<br /><br />an_bytes　　　　　　　　　 受信したArt-Netパケットのデータ(type=bytes、別途デコード必要)<br />an_sender_ipaddress　　　　受信したArt-Netパケットの送信元IPアドレス(type=string、４つのドット切り10進数 IPv4の一般的な表記)<br />an_received_datetime　　　 受信された時点でdatetime.datetime.now()により取得した日時(type=datetime.datetime)<br /><br />　処理の処理を指示するデータ<br /><br />an_universes2route　　　　 対象ユニバースの１次元配列　　　　　　　　　　　( Net, Subnet, Universe )&#91; ルート &#93;<br /><br />　受信値を処理、管理するデータ<br /><br />an_ipaddress_senders　　　 送信元のIPアドレスの１次元配列　　　　　　　　　IPアドレス &#91; 送信元 &#93;<br />an_datetime_senders　　　　送信元ごとの最終受信日時の１次元配列　　　　　　最終受信日時 &#91; 送信元 &#93;<br />an_datetime_senders_route　送信元ごとにルートの最終受信日時の２次元配列　　最終受信日時 &#91; 送信元, ルート &#93;<br />an_cache_senders_route　　 送信元とルートごとに受信値を保存する３次元配列　受信値 &#91; 送信元, ルート, スロットアドレス &#93;<br />an_cache_htp　　　　　　　 次の処理へ渡す処理済み受信値の２次元配列　　　　受信値 &#91; ルート, スロットアドレス &#93;<br />　※ &#91; &#93;内はインデックスの要素(&#91;３次元目,２次元目,１次元目&#93;)<br />　※ 同名のindexは同じ値になるように設定<br /><br />＃an_ipaddress_senders から an_sender_ipaddress と同じIPアドレスを持つ&#91; 送信元 &#93;のindex配列を得る<br />list( zip( *np.where( an_ipaddress_senders == an_sender_ipaddress ) ) )<br />　※ 受信した際に重複しない様に送信元情報を保存してインデックスを発行し、送信元別に日時と受信値を保存するために使う。<br />　※ ただし、対象のユニバースを送って来ない送信元は無いものとする。早い段階でフィルタしないと後が面倒。<br /><br />＃an_datetime_senders から現在日時より１秒以上前の日時を持つ&#91; 送信元 &#93;のindexの配列を得る<br />list( zip( *np.where( an_datetime_senders &lt; ( datetime.datetime.now() - datetime.timedelta( seconds=1 ) ) ) ) )<br />　※ 送信元の存在を確認するために使う。１秒間受信が無い送信元は無いものとする。<br /><br />＃an_datetime_senders_route から現在日時より１秒以上前の日時を持つ&#91; 送信元, ルート &#93;のindexの配列を得る<br />list( zip( *np.where( an_datetime_senders_route &lt; ( datetime.datetime.now() - datetime.timedelta( seconds=1 ) ) ) ) )<br />　※ ユニバースの存在を確認するために使う。１秒間受信が無いユニバース(=送信元,ルート)はゼロデータにする。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a> <a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%41%72%74%2d%4e%65%74" class="taglink" title="Art-Net">#&#91;Art-Net&#93;</a>  -- Posted by 電装工芸 〔2108文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=181</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=181</guid>
	<category>tegalog</category>
	<pubDate>Wed, 09 Mar 2022 17:40:30 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　PICでDMX512を出力する際、面倒なのがBreakTi… ]]></title>
	<description><![CDATA[ 　PICでDMX512を出力する際、面倒なのがBreakTimeです。<br />　一般的なUARTでDMX512の様に長いBreakTimeが使われることは無いためか、PICにはそのような機能がありません。何らかのチカラ技で作らないといけません。<br /><br />　私が最終的にたどり着いた方法は、<br /><br />１）USARTが出力されるI/Oピンをプルダウンしてアイドル・ローにしておく。<br /><br />２）BreakTimeは0x00の空送信で作る。ただし、0x00送信でもStopBit(H)が発生するので、以下(3)の方法で消す。<br /><br />３）BreakTimeの空送信が始まってからStopBitが始まるまでの間(Lが続く間)にTRIS(I/Oピンの入出力方向を決めるフラグ)を入力に切り替える。入力にするとI/Oピンがハイインピーダンス(Z)になり、プルダウンされているためRS485ドライバに届く信号はLを維持する。<br /><br />４）BreakTimeの時間に相当する空送信する。<br /><br />５）BreakTimeの終わりというか次のフレームの送信開始前に0x00を送信してTRISを出力に切り替える。0x00送信のStopBitがMarkAfterBreakとなる。ただ、MarkAfterBreakは少し長い方が安定するので、0xCO(b11000000)などのMSB詰めの数値を使ってMarkAfterBreakを長くしてもいい。<br /><br />　といった内容です。<br />　これならタイマー処理をせずにBreakTimeを作れます。<br /><br />　BreakTimeを表すデータをBreakTimeZero、BreakTimeZeroの始まりのバイトをBreakTimeNose、最後をBreakTimeTailと勝手に呼んでますが、RaspberryPiからのSPIデータをBreakTimeTailから始まるモノにしておけばPIC側の処理は凄く簡単です。<br /><br />０）RaspberryPiからRESET信号(実際にはCSを用いる)をPICに送り、PICはこれを見て送信カウンタをクリアしてUSART.TXピンのTRISを入力に切り替えておく。アイドル・ロー。<br /><br />１）SPIの最初のバイト(BreakTimeTail)を受信したら、USARTに渡して送信し、3bit分待ってからUSART.TXピンのTRISを出力に切り替える。以下、受信値を１バイト送信するごとに送信カウンタをインクリメントする。<br /><br />２）512スロットを送信した後のバイトはBreakTimeNoseになる。ただ、PICのUSARTは1ワード分のキャッシュを持っているので、BreakTimeZeroの２バイト目をUSARTに渡した後(BreakTimeNoseが送信開始された後)、3bit分待ってからTRISを入力に切り替えてBrakTimeとする。送信制御は送信カウンタを用いる。<br /><br />３）以下、SPIのデータが終了(RaspberryPiからのCSで確認)したら、送信カウンタをクリアしてSPIを受信待機にする。=&gt;(1)に戻る。<br /><br />４）BreakTimeZeroを送信する前にSPIが終わってしまったらエラー。TRISを入力に切り替えてBrakTimeにしておくなど、エラー処理を行う。<br /><br />５）TRISの切り替えの前に3bit分待つのは、次の送信バイトの受け入れがStopBit中に可能になるからです。<br /><br />　こんな感じかな。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e9%9b%bb%e5%ad%90%e5%b7%a5%e4%bd%9c" class="taglink" title="電子工作">#電子工作</a>  -- Posted by 電装工芸 〔1420文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=180</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=180</guid>
	<category>tegalog</category>
	<pubDate>Wed, 09 Mar 2022 12:07:54 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　SPIでレガシーDMXを出力する回路の基本要素は揃いました… ]]></title>
	<description><![CDATA[ 　SPIでレガシーDMXを出力する回路の基本要素は揃いました。PICをプログラムして実験する段階です。<br />　本業が忙しくなってしまったので棚上げですが、PICの基本設計は進めましょう。<br />　PICは12F1822を使います。PIC12とありますが、PIC16系の８ピン版と思っていい製品です。<br /><br />　ピンアサインは次の通りです。<br />　拡張ミッドレンジPICにはモジュールのアサインピンをある程度切り替えられる機能があります。<br />　TRISとはI/Oピンの入出力方向を設定する要素です。<br /><br />　　VDD<br />　　VSS(GND)<br />　　RA0 TX_Pilot_LED　TRIS-OUTPUT（汎用I/Oとして使い、送信が行われるとLEDを点灯させます）<br />　　RA1 SPI.SCK　TRIS-INPUT<br />　　RA2 SPI.SDI　TRIS-INPUT<br />　　RA3 DMX.RESET　TRIS-INPUT<br />　　RA4 USART.TX　TRIS-OUTPUT（ただし、BreakTimeを作るためにINPUTにすることがあります）<br />　　RA5 CSC1　TRIS-INPUT（クロックの設定は優先順位が高いので、TRISはどちらでも機能します）<br /><br />　これには隠れたコツがあります。<br />　SPIを使うならSPI.SDOがあります。使わないI/Oですがどこかにアサインしなければなりませんので、USART.TXと同じRA4にアサインします。被って出力がおかしくなりそうですが、SPIよりも優先順位が高いUSART.TXが出力されますから大丈夫。逆だったら困りましたけどね。<br /><br />　クロック発信子には<a class="url" href="https&#58;//akizukidenshi.com/catalog/g/gP-03922/" target="_blank" title="https&#58;//akizukidenshi.com/catalog/g/gP-03922/">クリスタルオシレータ（８ＭＨｚ）ＳＧ－８００２ＤＣ（３．３Ｖ）</a>を使います。普段はPIC１個に対し水晶発振子を１個使うのですが、今回は同じクロックレートで動く複数のPICを１枚の基板に載せますので、部品点数を減らす意味も含めてこれを使います。PICのI/Oピンも減るし。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e9%9b%bb%e5%ad%90%e5%b7%a5%e4%bd%9c" class="taglink" title="電子工作">#電子工作</a>  -- Posted by 電装工芸 〔829文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=179</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=179</guid>
	<category>tegalog</category>
	<pubDate>Wed, 09 Mar 2022 09:58:01 +0900</pubDate>
</item>

	<!-- END ENTRIES -->
</channel>
</rss>

