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

今年は開発案件を進めたい

or 管理画面へ

タグ「RaspberryPi」を含む投稿[68件](3ページ目)

Icon of admin
 ここ最近、中華電機からのお届け物が速い。
 これまでは「お届け予定日」から数日以内に届けば良い方で、下手すりゃ数週間遅れることも珍しくありませんでした。
 何がどう変わったのかわかりませんが、最近は予定日よりも早い。
 数日前に届いた物は予定より半月も早い。好印象を持たせるためのふかした予定日だったとしても、DHLなどを使わずに1週間で届いたのですから間違いなく速い。

 てなわけで、RaspberryPiCM4が入荷しました。小さいとは聞いていましたが、思った以上に小さい。
 半導体不足で入手難でしたから現物を見るは初めてです。箱を見た瞬間、あまりの小ささにRaspberryPiのロゴが入ったノベルティが送られてきたのか?、やられたのか?と思ったくらいです。
 灯を入れてチェックする時間はしばらく取れそうにありませんが、想像が広がる楽しい一品です。

#RaspberryPi #中華電機
Icon of admin
 追い込まれる程ではありませんが、本業がジンワリと忙しくなってきました。開発はボチボチペースで進めます。

 ANSIエスケープシーケンスを使った画面表示の試作をしています。フリッカーを起こさないコツがわかったので表示が安定しています。
 ただ、罫線の表示で少し疑問。解決はしたのですが不思議。
 罫線素片はASCIIコードに含まれていませんのでシステム標準のUTF-8を使います。文字列リテラル"\u2500"とすれば横線が表示されます。"\u"は続く数値がUTF-8の文字コードであることを示すエスケープで"2500"は文字コードです。
 不思議なのは、同じ文字列リテラルを16進数で表すと"\xE2\x94\x80"となることです。最初の"\xE2"はエスケープ文字なのでヨシとしても、続く"\x94\x40"がよくわからない。何らかの理由でオフセットしているのは確かですが、オフセット値が中途半端です。また、この表記だとビッグエンディアンなのでリトルエンディアンのRaspberryPiでナゼ?という疑問もあります。罫線素片のコード領域の起点を0x2500から0x9480に置き換えればいいだけなのですが、どうしてこうしたのでしょう。Rasbianが動くRaspberryPiに限った話なのかはわかりませんが動くように使うしかありません。

 ということで、テキストのコンソール画面に罫線表示も出来る様になりました。
 試作プログラムは不器用なベタ書きですが、ウィンドウマネージャもどきの関数ライブラリにしてみようと思います。

#C言語 #RaspberryPi
Icon of admin
 RaspberryPi4Bが正価で入手出来たと先日書きました。国内はまだの様ですが、中国からRaspberryPiCM4も正価で入手出来ました。
 CM4は組込み用途に特化し過ぎているために単体では何も出来ませんが、用途に合わせてインターフェースボードを作ればコンパクトでスッキリしたハードウェアを構成出来ます。
 いずれオリジナルのインターフェースを作ってみたいと思っていますが、とりあえずはEtherNetが2口付いた既製品と共にCM4をオーダー。
 ArtNet-PatchはCM4を用いて作りたいのです。プログラミングには4Bを使っていますが、製品にするにはちょっと違うので。

#RaspberryPi #[Art-Net]
Icon of admin
 RTCを装着したRaspberryPiは正常のようです。
 今後製作する装置にもRTCを装着したいのですが、電池切れをどうやって拾うか思案中です。

 socketの実験は連休中に時間が取れず未対応です。
 Art-Netの受信と送信を1台でこなすにはIPアドレス的には同じゾーンで装置は別という変な構成になります。その上、broadcastで受けてbroadcastで送るというこれもまた変な構成です。ですので、コピペで使える先例がありそうでありません。
 RaspberryPiのPythonでは成功していることですから可能だと思いますが、C言語のsocketの方が設定すべきパラメータが多いため、Pythonには無かった設定をどうするかが難問なのです。難しいというより、「ネットワークデバイスを指定してbroadcastで通信する」という前提の先例が少なく、沢山のデータシートを継ぎハギしないと見えないことが多いために苦心しているところです。

#RaspberryPi #C言語 #[Art-Net]
Icon of admin
 RaspberryPiにRTC(リアルタイムクロック)を入れているのに起動の度に時間がずれる。
 チェックしたところRTCモジュールの電池がダメになっています。定格3.3vのところ0.6vしかない。
 RTCのチップはDS3231ですが、電池には充電タイプのLIR2032(LRではなくLIR)を使えばいいらしい。
 amazonにあったのでポチる。先ほど届いたので取り付けたところRTCの機能が回復。
 Art-Netエンジンのテストプログラムを書いていて気持ち悪かったのでスッキリしました。

追記
 時刻合わせは
$ sudo ntpdate ntp.nict.jp
 ネットワーク経由で現在時を取得し、
$ sudo hwclock -w
 DS3231に書き込みます。
 この手順をした後、電源を完全に切ってから起動すると時刻が合っているハズです。
 時刻が初期化されてしまうならDS3231の電池がNGかと。

#RaspberryPi
Icon of admin
 秋月電子通商さんでRaspberryPi4Bが販売されていました。
 特需ですぐに無くなってしまう?
 お金は辛いですが、とりあえず3個発注しました。

#RaspberryPi
Icon of admin
 RaspberryPiをアップデートしたらネットワーク関連が動かなくなった。
 起動パレードを見ると「Failed to start DHCP Client Daemon.」と出る。

 このサイトの通り手直ししたら治った。

 抜粋すると次の通り。

$ sudo nano /etc/systemd/system/dhcpcd.service.d/wait.conf

Change from:
[Service]
ExecStart=
ExecStart=/usr/lib/dhcpcd5/dhcpcd -q -w

To:
[Service]
ExecStart=
ExecStart=/usr/sbin/dhcpcd -q -w


 wait.confを訂正するってことです。

#RaspberryPi
Icon of admin
 このところ現場続きで先の現場の準備もままならないところですが、気分転換で少しづつやってます。

 GPIOに繋げたテスト用のLEDを目視した範囲なので確実とは言えませんが、act_ledはカーネルの動作中を表す信号として使えそうです。
 pwr_ledとact_ledの挙動ですが、通電直後(再起動では一度終了した時)はデフォルト設定に戻っており電源パイロットとSDカードのアクセスランプとなっていますが、カーネルが起動して各種ドライバが読み込まれる前にcmdline.txtに書かれた設定がされます。GPIOも通電直後は初期化されており、Hi-ZかGNDになっているようでHは出力しません。
 つまり、act_ledをdefault-onにしてGPIOにオーバーライトすればカーネルが起動している時に点灯するLED、すなわちカーネルが起動していることを表す信号となるようです。
 電源が入った直後は端子の状態は不安定ですからワンショットが出るかもしれませんけどね。

 ならば、この信号を受けてUSBポートの電源を入り切りするようにすればいい。
 GPIOの信号を抵抗とコンデンサの時定数回路で受けて起動時ノイズの除去と遅延(0.5秒前後)を与え、シュミットトリガを通してヒステリンス特性とし、トランジスタを介してリレーを動かします。
 USBポートの電源は、ケースからの出力にキーストーンモジュールを使っていますので、バラシてケーブルを割り込ませます。
 懸念は、このオフ時間でUSBハブが再起動リセットされるかです。3-4秒はあるので行けると思いますが、確実なリセットになるかは試さないとわかりません。

#RaspberryPi
Icon of admin
 裸族のパイ&裸族のカプセルホテルはUASドライバを外すことで一応の改善が見えました。ベンチマークも本体に内蔵のHDDとほぼ同じ値を出します。
 ただ、USBハブをかますとそうはいきません。一見正常に起動してもアクセスが恐ろしく遅かったり、不安定でコンソールすら立ち上がらないことがあります。
 構成として裸族のカプセルホテル(外付けHDD)とLANアダプタを取り付けたいのですが、1本のUSB3.0でやりくりするにはUSBハブが必須なのでなんとかしたい。

 さて、何が原因か。

 まず考えられるのはUSBハブの電力不足。RaspberryPiのUSBポートは電力供給が弱いらしいのでUSBの電源を別取りしたところ、半分以上の確率で起動は失敗しますが、起動が成功した際にはアクセス速度が劇的に改善します。解決の決定打ではありませんが、これはこれで必要な対策です。

 正常に起動する時とそうでない時の違いを考えてみると、USBハブに電源が入った状態でRaspberryPiを起動すると(リブートも)ダメで、RaspberryPiが起動し始めてからUSBハブを挿すと正常に動くことが多い。ならばと、RaspberryPiが起動し始めて起動ログの表示が見え始めた直後にUSBハブの電源を入れたところ100%の確率で正常に起動することがわかった。リブートもシャットダウンログの表示が止まったところでUSBハブの電源を落とし、以下同様にすると正常にリブートが完了します。
 要するに、RasberryPiがカーネルを読み込んだ直後にUSBハブの電源を入れれば(再投入すれば)良いとなります。

 ただ、起動の度に手作業でやるのは現実的ではないし、何よりも遠隔のリブートでは不可能です。
 さて、どうする。

 方法として考えられるのは上記のタイミングを得る信号をRaspberryPiから取り出すこと。
 ・・・こんなこと出来るのか?

 RaspberryPiには基板上にLEDが付いていて、電源パイロットランプとSDカードのアクセスランプになっていますが、設定を変えることで違う状態情報も表せます。オーバーライドしてGPIOに出力することも出来ます。
 このLEDは前者がpwr_led(赤)、後者がact_led(緑)と呼ばれますが、これをGPIOに出力して丁度良いスイッチソースにならないでしょうか。
 ちょっと試験しただけなので大丈夫とは言い切れませんが、act_ledの設定をdefault-onにしてGPIOに出力すると期待するモノになりそうです。通電直後と再起動のシャットダウン直後は消灯から始まり、起動ログの表示が始まると点灯、シャットダウンが完全終了すると消灯します。これは欲しいタイミングではないのか?
 そもそもはパイロットランプですが、GPIOに出力するなら単なる信号であり、バッファを入れればリレーを動かすことが出来ます。過渡期にチャタリング的なノイズはあると思いますが簡単なパッシブ回路で何とかなるかな?。

 カーネルが起動している時を把握したいと思っていたので、この方法はなんとか手にしたいと思います。
 腰を据えて試す時間はしばらくありませんケドね。

#RaspberryPi
Icon of admin
 RaspberryPiのUSB3.0にストレージに繋ぐと不安定になるらしい。実際不安定だったので調べたところ、故障ではなくそういうものらしい。
 アクセスを速くするためのUASと呼ばれる方法が原因らしく、このドライバがデバイスに当たらないようにすると改善するらしい。ドライバが当たらないとオーソドックスなドライバに置き換わり安定するとか。ならば最初からそうして欲しい。速くても不安定ぢゃ意味がない。

 設定方法は次のサイトが簡素でわかりやすい。
Raspberry Pi で USB接続のSSDが不安定な場合の対処法

 今課題なのは、裸族のパイにノーマルの裸族のカプセルホテルを接続すると不安定になることの対策です。
 HDDが4スロットでも良いのですが、RAID1を組むとストレージは2組です。出来れば3組使いたいので、裸族のカプセルホテルを増設して8スロットにしたいワケです。
 不安定だったので増設の裸族のカプセルホテルは外してありますが、内蔵の4スロットは上記の設定で安定度が増したので、接続テストをしたいですね。

追記
 現場上がりで帰宅して裸族のカプセルホテルの接続テストしました。なんだか圧倒的に普通に動きます。
 これまでは何だったのか、費やした数時間に何の意味があったのか、鼻クソほじり乍ら遠い目をしてしまいそうな程です。
 UASが機能すればUSB3の真価を引き出した高性能を得られるのかもしれませんが、カーネルが落ちる程の未完成品なら意味はありません。
 ちなみに、裸族のカプセルホテルのプロダクトIDは個体が違っても同じでした。ですので、追加の設定作業はありません。

#RaspberryPi

■思ってみた

春ですねぇ~。
花粉症の部下は死にそうですが、暖かいってのはいいことです。

編集

■全文検索:

複合検索窓に切り替える

■複合検索:

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

■日付検索:

■カレンダー:

2023年2月
1234
567891011
12131415161718
19202122232425
262728

■カテゴリ:

■最近の投稿:

最終更新日時:
2025年4月29日(火) 20時16分48秒