Raspberry Pi使い方のパターン [Raspberry Pi]
仕事では一難去ってまた一難で苦しんでるんだけど、それとは別に工場に入れるために新しい設備を作らないといけない。今日も1日天気が悪かったのでずっと家で仕事してた。
設備の方は、例によって手作り感満載のもの。その設備にもまたRaspberry Piを使おうとしていて、その基板むき出しなのが見た目が悪いと周りからは思われているようである。そして(前の会社ならいざ知らず、見た目にかける金なんかないはずなんだけど)見た目が悪いと信頼性がない、精度が低い、と思う人もいるようである。知ったことか、機能優先。それ以上のことを僕にやらすなよ。
ところでこれまで10台を超えるRaspberry Piを会社の設備に使ってきて、なんとなくパターンが決まってきた。
SPIバスやI2CバスにA/DやD/Aをぶら下げて、バスごとにスレッドを起こして、そのスレッドの中ではループを回してA/DやD/Aを叩いて、データはパイプ経由で本体ループに集めて、本体ループはクライアントであるmacOSとTCP/UDP経由でやりとりして、という感じ。
新しい設備ができるとRaspberry Piを買って、基板をはんだ付けして、ソフト書いて、ということをそのたびにやってる。似たような使い方とは言ってもそれぞれ必要な回路は違ってるので、毎回はんだ付けはしょうがない(僕がやると目がしょぼしょぼしてうまくいかないので、大きな会社にいるんだったら外注したり、若い奴がいたらそいつに振るんだろうけど)にしても、毎回ソフトを0から書くのはバカらしくなってきた.....
設備の方は、例によって手作り感満載のもの。その設備にもまたRaspberry Piを使おうとしていて、その基板むき出しなのが見た目が悪いと周りからは思われているようである。そして(前の会社ならいざ知らず、見た目にかける金なんかないはずなんだけど)見た目が悪いと信頼性がない、精度が低い、と思う人もいるようである。知ったことか、機能優先。それ以上のことを僕にやらすなよ。
ところでこれまで10台を超えるRaspberry Piを会社の設備に使ってきて、なんとなくパターンが決まってきた。
SPIバスやI2CバスにA/DやD/Aをぶら下げて、バスごとにスレッドを起こして、そのスレッドの中ではループを回してA/DやD/Aを叩いて、データはパイプ経由で本体ループに集めて、本体ループはクライアントであるmacOSとTCP/UDP経由でやりとりして、という感じ。
新しい設備ができるとRaspberry Piを買って、基板をはんだ付けして、ソフト書いて、ということをそのたびにやってる。似たような使い方とは言ってもそれぞれ必要な回路は違ってるので、毎回はんだ付けはしょうがない(僕がやると目がしょぼしょぼしてうまくいかないので、大きな会社にいるんだったら外注したり、若い奴がいたらそいつに振るんだろうけど)にしても、毎回ソフトを0から書くのはバカらしくなってきた.....
macOS上のRaspbianクロス環境(付け足し) [Raspberry Pi]
A/Dコンバータの通信最適化 [Raspberry Pi]
最近僕は、アナログ電圧の入出力をしたくてRaspberry Piを使うことが多くなってる。そのためにはA/D、D/Aコンバータを使う。大昔、僕が会社に入ったばかりの頃は、Analog Devicesなんかのパラレル入出力のチップを苦労して使っていたけど、最近Raspberry Piを使うようになってからは接続が簡単で速くて安いのでMicrochip Technology社のMCP3204/8とMCP4922ばっかりになった。どちらも負電位は扱えなくて、カタログ上のアナログ精度はそれなりなんだけど、実力は結構高いと僕は思う。
どちらもSPI経由でRaspberry Piと接続できて、外部回路はほとんど必要ない(Raspberry Piでは、最高速を狙わないでVCC=3.3Vで駆動すれば外付けは何も要らない)。ちょっと実験したいことができて、さくっと片付けようとすると非常に便利である。ありがたい。最近の若い人は恵まれているよな。こんな便利なものが簡単に手に入るんだから。
D/AであるMCP4922のほうは最高クロック周波数が20MHzまで動くけど、さすがにA/DのMCP3204/8は2MHzで、一桁違う。またD/Aはデータ入力はちょうど2バイトだけど、A/Dは最短で20ビット必要で、SPIの使い勝手のせいでバイト単位に丸めると3バイト食ってしまう。ちょっとでもD/Aのスピードに近づけようと思った.....
どちらもSPI経由でRaspberry Piと接続できて、外部回路はほとんど必要ない(Raspberry Piでは、最高速を狙わないでVCC=3.3Vで駆動すれば外付けは何も要らない)。ちょっと実験したいことができて、さくっと片付けようとすると非常に便利である。ありがたい。最近の若い人は恵まれているよな。こんな便利なものが簡単に手に入るんだから。
D/AであるMCP4922のほうは最高クロック周波数が20MHzまで動くけど、さすがにA/DのMCP3204/8は2MHzで、一桁違う。またD/Aはデータ入力はちょうど2バイトだけど、A/Dは最短で20ビット必要で、SPIの使い勝手のせいでバイト単位に丸めると3バイト食ってしまう。ちょっとでもD/Aのスピードに近づけようと思った.....
macOS上のRaspbianクロス環境「決定版」 [Raspberry Pi]
Raspberry Pi用のクロスコンパイル環境にこの人の作ってくれたツールチェインとクロスコンパイラを使ってEclipseでRaspbian用のIDEにしてきた。Linaroのクロスコンパイラを使ってツールチェイン全体を構築している。
しかしもうすでに4年前のタイムスタンプで、glibcとかのバージョンがRaspberry Piにインストールされてるのに比べると齟齬が大きくなってきた。
ツールチェインにない新しいライブラリを追加しようと思っても僕がlinuxのライブラリの構造をよく知らないせいで、リンクできない、シンボルが見つからない、バージョンが違う、ということになってしまう。
ということで代わりのものを探していた。macOS用となると非常に限られるけど、素晴らしいものを教えてくれてる人がいた。 この人やこの人に従ってやってみるとちゃんとできた。これをEclipseで動かせるようにした。これこそmacOS上のRaspbianクロスコンパイルIDE環境の決定版である。その特徴は
ありがとうzw3rktechさんとSungjin Hanさん、そしてwelzelsさん!
今回は長くなるけど具体的なインストールの仕方なんかの話をするので、macOSでRaspberry Pi向けの開発をしている人はぜひ試してほしい。そしておそらくWindowsでも同じことをすれば完全に同じネイティブなクロス環境ができるはずである。僕自身は関係ないけど.....
しかしもうすでに4年前のタイムスタンプで、glibcとかのバージョンがRaspberry Piにインストールされてるのに比べると齟齬が大きくなってきた。
ツールチェインにない新しいライブラリを追加しようと思っても僕がlinuxのライブラリの構造をよく知らないせいで、リンクできない、シンボルが見つからない、バージョンが違う、ということになってしまう。
ということで代わりのものを探していた。macOS用となると非常に限られるけど、素晴らしいものを教えてくれてる人がいた。 この人やこの人に従ってやってみるとちゃんとできた。これをEclipseで動かせるようにした。これこそmacOS上のRaspbianクロスコンパイルIDE環境の決定版である。その特徴は
- コード生成にLLVM+clangとgnuのbinutils
- Raspbianのライブラリ群がそのままツールチェインに使える
- EclipseをIDEとして使用
- すべてが現在アクティブなプロジェクトなので環境を最新に維持できる
ありがとうzw3rktechさんとSungjin Hanさん、そしてwelzelsさん!
今回は長くなるけど具体的なインストールの仕方なんかの話をするので、macOSでRaspberry Pi向けの開発をしている人はぜひ試してほしい。そしておそらくWindowsでも同じことをすれば完全に同じネイティブなクロス環境ができるはずである。僕自身は関係ないけど.....
光パワーメータアプリ [Raspberry Pi]
連休中にたくさんアプリを書いた。何のためかというとほとんどが例の試作用のもの。ハードウェアに依存しないところをゴリゴリ書いて、会社に出てからハード依存部分を書いてデバグする。前も書いたように、できればSwiftにしたかったんだけど、時間がかかってしまうのでObjetive-Cになってしまった。これを最後にしたいけど、どうなるか。
たまたま、ここで披露できるような、まとまりがあって、あまり大きくなくて、面白そうな部分のあるのができた。光パワーメータアプリ。他のはたくさんのハードウェアが絡んでごちゃごちゃしてるのでちょっと無理だけど、これは独立性があるのでわかりやすい。
どんなものかというと、そもそも半導体レーザの出力調整に汎用のハンディパワーメータ(こんなやつ)を使っていたけど、他の人が使っていると取り合いになってしまう。僕はだいたいがわかればいいので精度は$\pm$20%ぐらいで十分。ということでちゃんとしたやつは他の人に渡して、自分用に作ることにした....
たまたま、ここで披露できるような、まとまりがあって、あまり大きくなくて、面白そうな部分のあるのができた。光パワーメータアプリ。他のはたくさんのハードウェアが絡んでごちゃごちゃしてるのでちょっと無理だけど、これは独立性があるのでわかりやすい。
どんなものかというと、そもそも半導体レーザの出力調整に汎用のハンディパワーメータ(こんなやつ)を使っていたけど、他の人が使っていると取り合いになってしまう。僕はだいたいがわかればいいので精度は$\pm$20%ぐらいで十分。ということでちゃんとしたやつは他の人に渡して、自分用に作ることにした....
温度センサLMT01を使う [Raspberry Pi]
去年暮れから1月中ごろにかけて2ヶ月ほどずっと計算して過ごしたあと、原理試作にGOが出て評価装置の設計をしていた。それが2月初めひと段落してそれに使う部品、ほとんどが汎用品だけど合計600点ほどをThorlabsシグマ光機Edmund中央精機をはじめ小物はAmazonまで9社に一気に発注した。汎用品なのに納期に2ヶ月かかるようなものもあるし、原理試作レンズが上がってくるのが4月中ごろなので、こんどは回路図を描いて半田付けを始めた。
ずっとスイッチが入ったままの状態で4ヶ月目に突入する。やはりときどき役に立つ夢を見た。メカ設計をしていたときは光軸高さを低くするアイデアを思いついたし、つい先日回路図を描いていたときはオペアンプの数を減らす工夫を夢で見た。専門分野でなくてもこういうことがあるというのは面白い。ずっと同じことを考え続けてるわりに寝不足感や疲労をあまり感じない。残業はせずにうちに帰れば酒飲んでさっさと寝る、というのがたまたまいい方向になってる、ということだという気もする。
ここ何日か出社したらずっと半田ごてを握っていて、今日は副社長に「そこまでしなくても」と言われた。ようするにそんな誰でもできるようなことをしていないで、何かもっと意義のあることをしろ、と言うのである。しかし「妊婦が10人いても赤ん坊が1ヶ月でできるわけではない」ということわざ(違うか)の通り、律速段階を早める手段は今時点ではないので、全く他のことをするしかない。
もちろんしなければいけないことはあるけど、それこそ僕じゃなくてもできることで、たまたま今の会社では僕しかいないだけ。僕としてはそんなことをするくらいなら、いまやってることを細部まで詰めておきたい。巨費を投じた大企業の研究開発でも半田付けが一箇所ヘボだったせいで何ヶ月も遅れる、ということは有りえる。他所に投げると見えなくなるし、もし問題が出たらそのときは責任追及はできても時間を取り返すことはできない。
そもそもが、そんな大プロジェクトではなく、単なる思い付きから始まったものなので、それに見合った進め方をさせてほしい、というのが僕の気持ち。まあ、そうは言わなかったけど。
いやいや、今日はそんなことをここに書きたかったのではない。評価系を設計する中で温度制御の必要性が出てきて、どうしたものか、と考えていたときに出会った素子について。これ、結構面白いよ....
ずっとスイッチが入ったままの状態で4ヶ月目に突入する。やはりときどき役に立つ夢を見た。メカ設計をしていたときは光軸高さを低くするアイデアを思いついたし、つい先日回路図を描いていたときはオペアンプの数を減らす工夫を夢で見た。専門分野でなくてもこういうことがあるというのは面白い。ずっと同じことを考え続けてるわりに寝不足感や疲労をあまり感じない。残業はせずにうちに帰れば酒飲んでさっさと寝る、というのがたまたまいい方向になってる、ということだという気もする。
ここ何日か出社したらずっと半田ごてを握っていて、今日は副社長に「そこまでしなくても」と言われた。ようするにそんな誰でもできるようなことをしていないで、何かもっと意義のあることをしろ、と言うのである。しかし「妊婦が10人いても赤ん坊が1ヶ月でできるわけではない」ということわざ(違うか)の通り、律速段階を早める手段は今時点ではないので、全く他のことをするしかない。
もちろんしなければいけないことはあるけど、それこそ僕じゃなくてもできることで、たまたま今の会社では僕しかいないだけ。僕としてはそんなことをするくらいなら、いまやってることを細部まで詰めておきたい。巨費を投じた大企業の研究開発でも半田付けが一箇所ヘボだったせいで何ヶ月も遅れる、ということは有りえる。他所に投げると見えなくなるし、もし問題が出たらそのときは責任追及はできても時間を取り返すことはできない。
そもそもが、そんな大プロジェクトではなく、単なる思い付きから始まったものなので、それに見合った進め方をさせてほしい、というのが僕の気持ち。まあ、そうは言わなかったけど。
いやいや、今日はそんなことをここに書きたかったのではない。評価系を設計する中で温度制御の必要性が出てきて、どうしたものか、と考えていたときに出会った素子について。これ、結構面白いよ....
I2SによるAudio出力 - その8 [Raspberry Pi]
また今日から工場に来ている。今の会社で光学屋は僕一人で、今たまたまいろんなところから案件が来て僕がボトルネックになっている。ところで全然話は違うんだけど、日馬富士がやめちゃうのはさみしいなあ。安馬時代の十両優勝した後ぐらいからのファンだったのに。日本的シンボルだらけの「日馬富士」という四股名を襲名(とは言わないのか)したとき、親方の強烈な期待を表してるなあ、と思ったのが、ほんのついこないだのような気がする。
まあ、それはどうでもよくて、こないだ一応完成したD/Aコンバータとshairport-syncを乗せたRaspberry Piで古いアクティブスピーカをAirPlayスピーカに改造した話にオチがついた....
まあ、それはどうでもよくて、こないだ一応完成したD/Aコンバータとshairport-syncを乗せたRaspberry Piで古いアクティブスピーカをAirPlayスピーカに改造した話にオチがついた....
I2SによるAudio出力 - その7 [Raspberry Pi]
使ってないBoseの小型アクティブスピーカにI2S入力のD/Aとshairport-syncをRaspbianに乗せて、AirPlayスピーカとして生き返らせよう、という話の最終回。
前回半田付けした回路を箱に詰めてちょこちょことsystemdのserviceを書いてまとめる。これでとりあえずAirPlayスピーカは出来上がりとする....
前回半田付けした回路を箱に詰めてちょこちょことsystemdのserviceを書いてまとめる。これでとりあえずAirPlayスピーカは出来上がりとする....
I2SによるAudio出力 - その6 [Raspberry Pi]
I2S入力のD/Aとshairport-syncをRaspbianに乗せて、使ってないBoseの小型アクティブスピーカをAirPlayスピーカとして生き返らせよう、という細工の話。
これまで何回かやってきたけど、前回まででは何も作っていない。DACも仕様を調べただけだし、shairport-syncもとりあえず動かしただけ。今日からはphysicalに基板を半田付けしてスピーカに繋がるようにする....
これまで何回かやってきたけど、前回まででは何も作っていない。DACも仕様を調べただけだし、shairport-syncもとりあえず動かしただけ。今日からはphysicalに基板を半田付けしてスピーカに繋がるようにする....
I2SによるAudio出力 - その5 [Raspberry Pi]
I2S入力を受けるD/Aコンバータを使ってRaspberry Piから古いアクティブスピーカをAirPlay出力に対応させる細工をやってる。前回はRaspbian用のI2Sドライバをインストールして動作確認した。
今回はAirPlay互換サーバであるshairport-syncについて....
今回はAirPlay互換サーバであるshairport-syncについて....