毒食らわば皿まで

RPiと言えばraspbian=debian直系。そしてdebianと言えばPython。今はどうか知らんがひと頃、この方面には厄介な輩が多かった。それにとりたてて興味もなかったので、Pythonには長いこと近づかずにいた。

その後PostgreSQLの関数を書くのにPL/pgSQLではあんまりだと思い、勉強を兼ねてPL/Pythonを使ってみた。が、あれがないこれができないの連続でイライラ、そしてトドメは「三項演算子がない!」でテンション急降下。いちおう動くところまでは持っていったが「これ以上深入りはすまい」と心に誓ったものだ。

あの日から10年。そのRPiをいじっちゃいるがPythonはちょっと、という思いからPHPとCだけでここまで来たが、さすがにそうも言ってられなくなってきた。そこで再度調べてみたら、2.7でその三項演算子がインプリメントされたというではないか。まあ例によって変な書式だが、あるとないとでは大違い。本業の方でもいよいよ無視できないところに来ているし「ここはいっちょ再履修しますか!」という気分に、ようやくなったところ。

ただ、公私あわせこれで日常的に接する言語が9種。「浅く広く」という、俺的には最も忌まわしい状況になりつつある。何するにもCとアセンブラだけだったあの頃が懐かしい … あ、その前にBASIC乱立な時期があったなー。今の状況って、これと良く似ている気が。時代は巡るという事かな。俺にはよくわからん。うーん ….

まだまだLチカ段階だが

世の中を見渡すと、RPiでのサンプルはその殆どがPythonかRubyかCで書かれている。そしてどれもみなループの途中にsleep(1)を挟んで、というやり方。

むろんそれはそれでいいんだが、これだと点灯もしくは消灯させるという動作にかかる時間が考慮されていない。なので正確に言うと「1秒間隔で点灯・消灯」ではなく「点灯・消灯後に1秒待つ」となる。これをキッカリ「1秒毎」とするにはどうすれば良いのか?  今回はそれを、使い慣れたPHPとPHP-GPIOで実践した結果を備忘録がわりに。

答えから先に言うと、1秒間隔でその処理を別スレッドで実行して貰うようにすれば良い(というかそれしかない)。しかし現在のraspbianに含まれるPHP5.4にはこの機能がないので、拡張機能「Ev」をPECLで導入する。あとはEvのマニュアルを参考に、EvPeriodicあたりで。

# ネットに関連情報が少ないのは、PHPでこういう事をする人がいないから?

さて「Lチカを1秒間隔で」ぐらいならこれで充分だが、処理の内容が「データベースにアクセス」とか「リモートホストにデータを送信する」とかになってくると、それが確実に1秒以内に完了するようにするか、さもなくば処理が完了するまで次の処理を行わないようにしなければならない。またこれよりクリティカルなタイミングを要求される局面では、より正確なタイマーと、高い優先度での実行が必要となる。

実はこれ、いま企てているモノでは非常に重要なところでもある。どこまでの精度が必要となるのか、どういう実装とするか、これからじっくり考えることにする。

Super weapon 導入!

superWeaponその昔、ルーペ付きのスタンドでハンダ付けしている奴を見て「あーははは、なさけねー!」と笑い者にしていた俺は、なんてイヤな野郎だったんだろうと思う。先日も書いた通り、視力がここまで低下してはもうプライドがどうこう言っちゃおれない。観念して、そのルーペ付きスタンドを注文した。そんな高いもんじゃなかったし。

それが本日届いたので、組んでみたところ。クリップされているのが鼻炎薬なのは、別にこれを加工しようと考えたわけではない。たまたまそこにあったから(この季節の必需品)。ウ~~~~ン、かっこいい! やる気がモリモリっとキター。今日はしないが。

そういや俺の知人に工具フェチがいて、何も作らないのに部屋中こういうのだらけだった。なんかアイツの気持ちがわかった気がする。ま、次の出番は当分先の予定だが、これならイケそう。楽しみになってきたぞっと!

子供と魔法とわたしと東京文化

昨日は東京文化会館で、マエストロ・オザワの「子供と魔法」を堪能してきた。前半はナタリー・シュトゥッツマンの指揮でベト2。若いオケと
若い曲、それにナタリーさんのヒップ意欲とがマッチしてナカナカ。

# 3楽章に入る前に奏者の配置転換をしたのは音楽塾ならでは?

そしていよいよ後半はラヴェル。オペラ・ドラマティコ形式での上演とあったので歌手もオケもステージで、と思っていたら、休憩時間にピットが沈んでステージには豪華なセットが出現。字幕もついて、普通にオペラだった。

そしてマエストロの無事登場からは、ラヴェルの描いた夢物語の世界にどっぷり。小澤征爾さんの後ろ姿が語り部という感じで、ステージよりもむしろそちらを見ている時間の方が長かったかも。そして静かに幕。

演奏も素晴らしかったが、もうひとつ思ったのは「やはり東京文化の響きが好き!」。ラヴェルに限らず、俺の好きな方面の曲はこういう鳴りでなきゃアカンのよね。またここでシャキッ! とした音が聴きたいという期待感も膨らませてくれた一夜。いろんな意味で楽しかったわホント。

※ 終演後、世界的なフランス人テナー某氏が一人で楽屋口から出てきて、そのままJR山手線へ! すっかり日本慣れしておいでの様子。

工作も好きなわたし

啓蟄を過ぎ、俺の中でも電子工作の虫が久々に蠢きだした。以前TA2020でデジタルアンプを作った時以来だから、実に12年ぶり。尤もあれはキットにガワを被せた程度のものだったので、特に創意工夫があった訳ではない。

Junk!
301F (3.69mm, f/2.2, 1/24 sec, ISO150)
その残骸

 

今回はRaspberry PiのGPIOを使って「ある」事をする(予定)。が、いきなり回路図書いて動かしてができるほどの知識はないので、ここは基本からと所謂「Lチカ」から始める事にした。ブレッドボードも紛失していたので新たに購入。そして取り回しが楽なようにと「ブレッドボード接続T型基板」なるものを注文したのが届いたので開けてみたら、キットだった。いきなりハンダの登場である。

まあハンダ付けは得意な方だったので「しょうがねぇなあ」ですぐに取り掛かろうと思ったら、吸い取り器とスタンドが見当たらない。やむなくペンチで基板を押さえて開始したところが、ここでハマった。見えないのだ、端子が。今やメガネなしでは本も読めない体になっていた俺に、1.0mmのハンダ付けはあまりに困難だった。

ハンダが雑なのはご愛嬌

焦りで手が震え、額からは大粒の汗。それでもどうにか全部の端子(80箇所!)に流し込み、RPiと接続してLEDが点灯するのを見てひと安心。更にピンを#25に繋ぎ変え、WiringPiのgpioコマンドで点灯と消灯も確認。これをスクリプトからやればLチカ完だが、疲れたのでそれはまた明日以降。先は長い。

# この基板挿すには、ブレッドボードが小さかったね …