SSブログ

Raspberry Pi 4Bだって [Raspberry Pi]

つい昨日、Raspberry Pi 4Bというのが発表された。それを知ったのでちょっと書かずにはいられない。

4Bは3B+から比べるとCPUコアがCortex-A53からA72に、クロックが1.4GHzから1.5GHzに、GigEがちゃんとギガビットのスループットに、4つのUSBのうちふたつがUSB3になった。4k30pディスプレイが2台も繋がるらしいけど、Raspberry Piユーザにそんな人っているのかな....

続きを読む


nice!(0)  コメント(0) 

kernel4.19でのsysfs [Raspberry Pi]

先日、rpi-updateでRaspbianのkernelが4.14から4.19にアップデートされた。rpi-updateを起動するとこんな警告が出る。
#############################################################
WARNING: This update bumps to rpi-4.19.y linux tree
Be aware there could be compatibility issues with some drivers
Discussion here:
https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=224931
##############################################################
Would you like to proceed? (y/N)
いいかと聞かれてもこの時点で判断のしようがないので「y」を入力することになる。このままいくと「4.19.30-v7+」とかになる。

ところがこれで動かなくなるのが出た。sysfs経由でgpioのBCM3を監視して変化があったら(具体的にはプッシュボタン長押し)シャットダウンするようにsystemdのサービスとして書いたのが
sh: echo: I/O error
で動かない。どこが問題かというと
    system("echo both > /sys/class/gpio/gpio3/edge");
が失敗している。system()はCユーティリティ関数で、processをforkしてshを起動して引数文字列をshのコマンドとして実行するというもの。stdlib.hにプロトタイプがあって、ランタイムの一部になっている。シンプルなんだけどシグナルや入出力の処理をちゃんとしてくれるので、僕はしょっちゅう使っている。

このコードはGPIOのBCM3ピンに変化があったら知らせてもらう、というもの。edgeファイルにraising、falling、bothを書き込むと、その変化があるとファイルシステム経由で検出できる。

ところが、edgeが書き換わらずに「none」のまま
$ uname -a
Linux vega 4.19.23+ #1203 Tue Feb 19 23:10:40 GMT 2019 armv6l GNU/Linux
$ cat /sys/class/gpio/gpio3/edge 
none
$  
になってしまう。他の単純なGPIOの読み書きは問題なさそうで、このedgeだけがうまくいかない。またsystem()ではなく、普通にedgeファイルをopen()してwrite()しても書き変わらない。

その前のkernelだと同じコードが動いて
$ uname -a
Linux sirius 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l GNU/Linux
$ cat /sys/class/gpio/gpio3/edge 
both
とちゃんと書き換わってる。rpi-updateの警告にあるurlを見てもそれらしい情報がない。ググってもこれだという情報に行きあたらない。

僕はこれが動かないと非常に困る、というようなものではないけど、少し不便なのと、せっかく書いたのが動かなくなるのはやっぱり面白くない。

誰かご存知ありませんか?
nice!(0)  コメント(0) 

また1日無駄にした [Raspberry Pi]

こないだのHiLetgoの降圧型DC-DCコンバータの電流源への改造が思っていたよりうまくいって、あのあともずっとDPSSレーザは機嫌よく動いているので、同じ伝(デン)でちょっとしたデモ用の電流源を追加作製しようと思った。ほぼ同じものを作るつもりであまり考えずにサクっとやろうと思った。ところがそこに落とし穴があって、丸一日無駄にすることになった。これを読んでくれてる人の反面教師として詳細を書くことにする....

続きを読む


nice!(0)  コメント(2) 

残りのHiLetgoを使う [Raspberry Pi]

こないだHiLetgoの降圧型DC-DCコンバータ電源をLEDドライブ用に使ってみた。今のところちゃんと動いている。光らせたいLEDはもうない。しかし光らせたい半導体レーザはある。532nmのいわゆるDPSS(Diode Pumped Solid State)レーザで、赤外の半導体レーザの光でNd:YVO4結晶を叩いて1064nmを発振させてその光をKTP結晶で半分の波長(倍のエネルギー)にするもの。最近はパッケージはすごく小さく扱いも簡単になってる。HiLetgo電源はまだ2個余っているので、それに使ってしまおうと思った。

532nmのDPSSレーザのうち最もシンプルなものは単体の半導体レーザのような光強度モニタ用のフォトダイオードを内蔵していない。そこで光出力を制御するためには出てきた光を少しだけ横取りしてその強度の値でフィードバックする必要がある。また、ポンプ用の赤外の半導体レーザは可視半導体レーザと同じように過電流に弱い。LEDなんかに比べると注意が必要になる。

そんなことから、赤外のレーザは定電流駆動して、さらに外側のループで緑光出力を制御するためにその電流値を増減させるというドライブの仕方が普通だろう。僕が使おうとしているレーザのポンプ用赤外レーザは定格が300mAでそのときの電圧降下が2.0Vぐらいのものである。

このレーザを例によってRaspberry Piから制御することを考えた。そのために余ったHiLetgoの電源を定電流ドライブに改造する(改造といっても、人間で言えば本郷猛を仮面ライダーに、と言うよりは性転換手術のようなものである)。レーザそのものは2万円以上するもので、それを1個300円しない、どこまで性能があって信頼性があるのかわからないHiLetgoの電源でドライブしようと言うのは、かなり大胆な勇気のいることである(特に僕みたいな貧乏人にとっては)。まあしかし、この付近の波長で直接発振する半導体レーザはあるけどハイパワーのものを一個だけくださいというと数十万円取られる。それを考えるとかわいいものである。

それに綺麗で立派な箱に入ったいかにもエラそうな専用電源も、中を開けてみれば似たようなチャチい部品が並んでいることが多い。ハイエンドオーディオなんかでも似たようなことがあるらしい。とりあえず僕の場合、長期信頼性は必要ないので試してみることにする。今回は破壊的な(非可逆の)改造になる....

続きを読む


nice!(0)  コメント(0) 

HiLetgoってなんだ? [Raspberry Pi]

知ってる人は知ってるんだろうけど、中国のメーカでHiLetgoというところがある。最近Amazonの例の頓珍漢な「おすすめ」にときどき現れるようになって僕は知った。

最初僕は中国の昔ながらのパチモンメーカだと思って敬遠してたんだけど、製品の多くがボードレベルの部品で、トップページを見て、あ、これはAdafruitのパクリだ、と思った(Digi-KeyMouserといった似たような、より古いブランドもあるけど、まず頭に浮かんだのがAdafruitだった)。主力のボード製品はAdafruitとそっくりに、その昔トラ技に載っていたような「ちょっとしたお役立ち回路」的なものが大量にある。ボード製品はArduinoを初めから想定していたり、そうでなくても比較的簡単に繋ぐことができるようなものがたくさんあったりする(言及はないけど、多くはI2C接続なので、仕様さえわかればRaspberry Piにも繋がるはずである)。それ以外にも単なるユニバーサル基板やケーブルから、USB接続のロジアナ、はてはなぜかカプトンテープまである(おっとそれはAdafruitにもあった。こんなとこまでパクってるということか)。

Adafruitが教育にも配慮されていて、子供達に楽しみながら勉強してもらおうという姿勢を持っている(それがときどきウザかったりする)けど、HiLetgoにはそういう構えた考えは微塵もなさそうである。Adafruitが素人にも親切なのと対称的に、HiLetgoのほうは製品ページによっては仕様がはっきりしなかったり、ピン配置はおろかピンに何の信号が出てるのかもわからなかったりして、知ってる人なら見りゃわかるだろ、という姿勢がありありとしている。

しかし、それよりもなによりも、とにかくめちゃくちゃ安い。Adafruitでは面白そうなボードがあっても日本から手配しようとすると案外高価になってしまって、部品だけ集めて手ハンダするかという気になってしまうけど(以前のPCM5102Aを積んだRaspberry Pi用オーディオ出力ボードAdafruitにもある。最近は個人輸入でなくても手に入るようになったけど、ちょっと前までは部品を集めるのに比べてかなり割高感があった)、HiLetgo製品は全く違う。Amazonで出てくるのだけ見ても、似たような部品を使った同じような仕様の他社製品と比べると、ヘタをすると一桁安いんではないか、と疑ってしまって、使われている半導体の型番を調べたりしてしまいそうになる。日本で部品を小売から集めたら、同じ部品を使ったHiLetgoボードの方がたいてい安くなるだろう。どうやって作ってるんだろうか。

ということで、僕も試しに使ってみることにした....

続きを読む


nice!(0)  コメント(0) 

半日無駄になった [Raspberry Pi]

macOSをホストに、A/DとD/AコンバータをつないだRaspberry PiにWi-Fiで接続してアナログデータを読み書き表示するようなのを書いた。なんだか似たようなものばかり書いてるような気がする。ところが今日は動く動かない以前の問題で悩んだ。わかればつまらない原因だったんだけど、これで半日潰してしまった。残り時間が少ないというのに....

続きを読む


nice!(0)  コメント(0) 

Raspberry Piで(もうひとつの)フルカラーLED - 追加 [Raspberry Pi]

忘れてた。FullColorLEDをRaspberry Piで光らせたソース(pigpioライブラリ経由)をgithubにあげた。バージョンコントロールシステムは昔からCVSやSVNを使ってきたけど、凄く便利で役に立った、という感じはあまりなかった。巨大なプロジェクトをマネージするなんてことはないし、結局一人で書くことが多かったのと、スタイルの違い、というか性格にもよるとは思う。また使い方も悪かったのかもしれない。どうしてもほんの一手間の手続きが面倒になった。

Xcodeにgitが組み込まれて敷居が下がって、例えば微妙に機能の違う二つの測定機を書かないといけなかったときにブランチが便利だった。でもローカルだけでリモートにリポジトリをあげようとは思わなかった。Xcodeデフォルトのgit設定ではローカルの絶対パスからなにから全部リモートに上げてしまう。情報統制のための手間をかけるぐらいなら、ローカルのリポジトリをディレクトリとして共有(これまではDropboxが速くて便利だった)したほうが漏れの心配もなく安全だった。

でも何かを公開しようと考えると、githubは便利だということがわかってきた。他に僕にとって都合のいい方法がみつかるまで、これからgithubを使うことにしようと思う。

今回はちゃんとREADME.mdを書いた。日本語がわかる人はこっちのブログの方がいいだろうと思ってgithubのは英語にした。怪しいところもいっぱいあるけど意味はわかるだろうと思う。きれいにするための時間を割くぐらいなら別のコードを書くほうがいい。

ということで、ソースも見てやってください。ArduioではなくRaspberry PiでフルカラーLチカできますよー、ぴかぴかだけじゃなく色がくるくるできますよー。みんなが得意なPythonじゃなくてCだけど。
nice!(0)  コメント(0) 

Raspberry Piで(もうひとつの)フルカラーLED - その2 [Raspberry Pi]

こないだの続き。実際に光らせた。ぱっとみなんか動いてそうだけど、ちょっと変なところに気がついた....

続きを読む


nice!(0)  コメント(0) 

Raspberry Piで(もうひとつの)フルカラーLED [Raspberry Pi]

世間はクリスマスで、近所では浮かれ電飾がピカピカして、おそらく今頃はそういったうちの中では皆、敬虔にバッハのオラトリオBWV248でも聞いているんだろうと他人事ながら想像している。

ところで、このところずっと新しい開発製品のデモを来年の展示会に向けて準備しているけど、また例によって手作り感満載、見た目はごちゃごちゃした黒いかたまりの隅っこからレーザ光が出る、というようなものになってしまいそうなので、すこし色っぽくしたいと思っていた。もう3年前になるけど「マイコン内蔵」フルカラーLEDをRaspberry Piで光らせたことがあって、これで少し色気と浮かれ気分を黒い塊に追加しようと思った。

その時買った秋月通商のサイトを見ると新しい別の「IC内蔵の5mmRGBフルカラーLED」というのがあった。データシートを見るとやはり数珠つなぎのできるRGB3色が1パッケージに入ったものだけど、通信方式が違っている(それ以前にメーカが違ってるんだけど、出どころは同じに思える)。こんどのはタイミングはすごく緩いけど、データを3値で与えないといけない。なんとも好き勝手なことを考えるものだ。その思考の跡がわかるような気がして面白い。ウェブではあまり光らせた情報がなさそうなので、また例によって手に入れてRaspberry Piでドライブできるようにしようと考えた。

忙しいと言いながら、また全然余計なところに時間を費やしてしまう...

続きを読む


nice!(0)  コメント(0) 
共通テーマ:blog

リンカのライブラリ探索 [Raspberry Pi]

macOS上にRaspbianのクロス環境を作って、XcodeのエディタなどのUIを使えるようにしたんだけど、外部のライブラリをリンクするときによくわからないことが起こっていた。仕事にも使ってるのでかなり困って悩んでた。

例えばlibxml2をリンクするとgcc(linaroのもの)だと問題ないのに、新しいclangを使うとうまくいかない。エラーの内容を見ると、
/usr/local/raspbian-sdk/prebuilt/bin/arm-linux-gnueabihf-ld: warning: libdl.so.2, needed by /usr/local/raspbian-sdk/prebuilt/bin/../../sysroot/usr/lib/arm-linux-gnueabihf/libxml2.so, not found (try using -rpath or -rpath-link)
/usr/local/raspbian-sdk/prebuilt/bin/arm-linux-gnueabihf-ld: warning: libicui18n.so.57, needed by /usr/local/raspbian-sdk/prebuilt/bin/../../sysroot/usr/lib/arm-linux-gnueabihf/libxml2.so, not found (try using -rpath or -rpath-link)
.....
どうやらlibxml2が依存しているライブラリが見つからない、と言っているようである。でもちゃんとあるのになんでかなあ、と思っていた。これは僕が最近のLinuxのリンクのメカニズムをちゃんと理解していないせいだった。とりあえずエラーを出さずに済ます方法はわかったんだけど、複雑ですごく難しい....

続きを読む


nice!(0)  コメント(0) 

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。