DS18B20 水温計

暑いです. 自分が暑いのはエアコンでなんとかなりますが,5匹しかいないとはいえ家の水槽の熱帯魚は温度が上がりすぎると死んでしまうので,水温を管理しないといけない季節になってきました. 今の熱帯魚たちは去年の秋頃からいるので,夏を越せるかどうか心配です.

水槽にはRaspberry Pi Zero を使った定期撮影カメラをそばに置いてあるので,せっかくなのでこれを使って水温の監視をはじめてみました.

防水の温度センサとしては,DS18B20 をステンレスの容器に入れて簡単に防水にしたものがよく売られているようなので,これを1つ買って,Raspberry Pi ZeroのpHAT にしてみました. 1-Wire接続なので,調整も必要なくすぐに使えます.

基板としては,aitendoのRaspberry Pi向けユニバーサル基板 を,Pi Zeroのサイズに切って使いました.カッターで両面に溝を何度も切って折ると,わりと綺麗に折れました. GPIOを1つしか使わないので,上にさらにpHATを載せられるよう,スタック可能な2x20のピンソケットをつけています.

センサーから出ている銅線は,赤色がVCC, 緑色がGND, 黄色が信号線のようなので,赤色を3V3, 黄色をGPIO4, 緑色をGNDにつなぎ,GPIO4は3V3に4.7kΩでプルアップをするだけの配線です.

あとは,raspi-configで,1Wire interfaceを有効にしてあげると,

$ cat /sys/bus/w1/devices/28-000008a19563/w1_slave
ab 01 4b 46 7f ff 05 10 92 : crc=92 YES  
ab 01 4b 46 7f ff 05 10 92 t=26687  

と,t=26687ということで26.687℃であることがわかります. これをmosquitto_pubでMQTTサーバに投げてあげるシェルスクリプトをcronで回せば監視の仕掛けの出来上がりです.

プローブを水中に入れて,しばらく様子見です.あまり温度が上がるようなら,Nature Remoを使ってエアコンで室温を下げるような仕組みにしようかなと思います.

John Snow Pub

ゴールデンウィークの直前にイギリス、ロンドンに出張したので、飛行機の時間までに疫学の聖地、John Snow Pubでお昼を食べてきました。

John Snow1854年のロンドンでのコレラ流行時に、まだコレラの病原体が何であるかは不明であったにもかかわらず、井戸の場所と患者の発生頻度の関係から、飲料水が何らかの原因であるという結論を得たそうです。これが現在まで続く疫学の始まりとされています。

もっとも患者が多かった場所であるBroadwick streetには、John Snowの名前がついたJohn Snow Pubがあります。2011年に訪れた時は、近くに井戸の形の記念碑もあったのですが、現在は付近の工事のため撤去されてしまっているようです。

2011年に撮影した写真はこちら。この時は朝だったのでパブは開いておらず、外観のみ撮影して帰りました。

パブの中に入ると、John Snowの肖像はもちろん、コレラ流行関係の資料も掲示されていました。

そして、Epidemiologyをやっているんだよ、と店員さんに言うと、それなら記帳していくといいよ、と、John Snow Societyというところが設置しているサインブックを出してくれたので、記帳してきました。

ハンバーガーもビールも美味しかったですよ。ついつい長居してしまいました。

せっかく訪問をしたので、当時Snowが作成した患者の分布の地図と、現在のロンドンのOpenStreetMapをLeafletで重ねて表示してみました。

John Snow map on 1854 Cholera Outbreak at London, overlaid on current OpenStreetMap

ロンドンの街の地図は1854年当時からほとんど変わっていないんですね。

おまけ:ヨーロッパ限定のこれもゲット。

さらにおまけ:

Oxford StreetのSelfridgesの中にあるCarphone warehouseで限定発売されていたBlackBerry KeyOne. 日本語ロケールもちゃんと入ってました.

メリークリスマス

今年のクリスマスは、イルミネーションをいくつか作ってみました。

まずはこちら。フルカラーLEDを118個つなげたテープです。職場の入り口ドアに飾り付けをしてみました。

LEDTape

これはフルカラーLEDでおなじみのNeoPixelのテープです。Adafruitのドライバ で、Arduinoからは簡単に制御できます。今回はArduino UNOで、このドライバのサンプルが派手で気に入ったので、そのまま使っています。シリアル制御なので、信号線は1本だけだから配線は難しくはないです。ESPr Developer でも制御できそうなので、そのうち無線で色を制御するようなこともやってみようかなと思います。

LEDとはいえ、100灯以上ですからそれなりに電流を使います。そのため、電源は注意して選ぶ必要があります。60灯でも3A以上使うようですから、今回は余裕をもって、以前別の目的で購入した 5V 10A switching power supplyFemale DC Power adapter - 2.1mm jack to screw terminal blockから電源をとり、AWG20ぐらいの太めのケーブルで配線しました。あとパスコンとか、マイコンとテープの間に入れたほうがいい抵抗値などもドライバのソースコード中にコメントとして記載されていたので、近い値の手持ち部品から入れてみました。

次にこちら。導電性マーカーを使った光るカードです。イラストに2箇所LEDが組み込まれていて、ボタン電池で光ります。

IlluminationCard

これは基本的には【AgIC】電気が通る回路マーカー スターターキット を作っただけで、子供達に絵をかいてもらいました。ただ、貼り付けるLEDはキットに入っていたもののかわりに、前に購入したものがあったのでこちらを使いました。なかなか複数のLEDを安定して光らせることができず苦労しましたが、気のせいかもしれませんがマーカーで回路を書いてすぐ後より、作成してからしばらく置いた後のほうが電流が安定しているような気がします。

次に、赤外線リモコンで制御できる走るトナカイそりです。

RunningDeer

こちらは超小型で積み重ねができるArduinoであるMicroduino の新製品、Itty Bitty City についてきたトナカイそり工作キットで作りました。Microduinoは以前からよく使いますが、昨年からmCookie という、磁石でモジュール同士を連結することができ、またレゴブロックにも簡単にくっつけることができるシリーズが出ています。今回のキットはすぐに作り始めることができる8つの作例の綺麗なマニュアルがついたもので、電子工作部分は非常に簡単に作ることができます。とはいえArduinoなので、Arduino IDEに接続してスケッチを書き込む部分は通常通りです。まだ出たばかりであるためか、スケッチの書き込みがエラーになってうまくできなかったので、コアのマイコンモジュールをキット付属のものではなく、以前買ってあったCoreUSBモジュールに変更して、こちらのUSBポートからスケッチを書き込むことで、無事書き込みを行うことができました。思わぬところでモジュール構造のメリットが出た形でした。

最後は簡単ですが、Littlebitsを使った光るキャンディケーンです。

CandyCane CandyCane2

単にLight Wire Bitを、段ボールで作ったキャンディケーンに巻きつけただけです。それだけだと少しつまらないので、Oscillator Bitを間に挟んで、点滅するようにしています。思ったよりもライトワイヤが暗く、暗いところではぼーっと点滅しますが明るい部屋では目立たないものになってしまいました。電池で動くので、むしろハロウィンの仮装の一部に使うほうがよかったかもしれません。

それでは、よいクリスマスになりますように。

サイズ

ひしもち?

6S Plus, mini, Air2, MacBook 12inch, Pro

iPad Proはたしかに,これぞタブレット,というサイズで良いです.iPad Proがあると,iPad Airを使う機会はやはり減ります.
でも,MacBook 12インチより大きいというのはちょっとやりすぎかもしれない.MacBook 12インチは,デスクトップの代わりにはなりませんが,出先で小さいと思ったことはあまりなく,実に良いサイズです.

iPad Proのサイズがあると,普通のiOSアプリだとちょっと画面の使い方がもったいなく感じます.iPad Pro専用アプリでこそ活かされるタブレット,なのかもしれません.

Smart Keyboardがあるとはいえ,iOSがそれほどキーボードを活かせる機能を持っていないので,あくまでも今の所,ですが,安心して仕事をしたいときにはiPad ProよりもMacBook 12inchを持って出ます.Officeがあるとはいえ,メールの添付ファイル作成の自由度などの点で,やはりMacOSがあった方が安心です.

ただ,電子書籍リーダーとしての使い勝手は,特に専門書が多い場合,iPad AirよりもiPad Proの方がいい感じです.画面が大きい方がコンテンツに集中しやすい,ということはあるのかもしれません.

「R言語徹底解説」

Rの解説書の中で、おそらく最もディープな内容の名著の翻訳「R言語徹底解説」 をご恵贈いただきましたので、ご紹介します。

表紙写真

原著者は ggplot2, dplyr を始め、本当に色々な、革新的なパッケージを作られている Hadley Wickham 氏です。Hadley先生の作るパッケージは、本書でも説明されているような演算子オーバーロードや非標準評価の仕組みを駆使しているので、一見するとRとは違う言語のように見えてしまう文法を使うことができ、非常に効率的な書き方ができるのが特徴かなと思います。

ただ、実は個人的にはggplot2もdplyrも今まではあまり積極的には使ってきませんでした。古典的なRの文法に慣れてしまっているので、これらのパッケージの関数群と、これらのパッケージの外の関数やデータを組み合わせるのが面倒だったのが理由の一つでした。では、本書を読むのは敷居が高いかというと....

それは全く違います。この本は、パッケージの使い方や、パッケージを使ったプログラミングのやり方を説明する本ではなく、Rの標準の機能を使っていかにして良いRプログラムを書くか、ということを詳細に突き詰めた本だからです。

Rプログラミングについては、本書から入門するのはちょっと勧められませんが、逆に本書さえあれば、他の本を参照する必要は全くありません。というのも、一つ一つのトピックについて、常に深くその挙動を掘り下げて解説してくれているからです。

例えば、データフレームについて、普通の本では各列には数値か文字列のベクトル(本書的には、「アトミックベクトル」)を入れるところまでしか説明しないと思うんですが、本書ではあえてそこにリストを入れる方法まで説明されています。これは、Rをインタラクティブに使って、自分のデータをちょっと解析してみよう、というユーザーにはあまり必要のない知識かもしれません。しかし、今後も繰り返し使うことができる、汎用的な関数を作成したり、作成した関数を自分以外の、すなわち自分が想像もしなかったような突拍子もない使い方をするかもしれないユーザーにも使ってもらおう、とした時には、このような情報が非常に役立ちます。今までであれば、Rの公式マニュアルだけでもわからず、ソースコードまで丹念に読みとかなければわからなかった挙動が、本書1冊だけですんなりと理解でき、不可思議だったエラーの原因についても理解できるのは素晴らしいことです。

よって、本書はRで「プログラミング」をする人にとってのバイブルと言っても良いでしょう。本書の各章の冒頭では、クイズ形式でその章を飛ばしてもいいのかどうかの質問がありますが、それにならって、こんな風に書いてみます。

以下のうち、知らないことがあったら、本書を読むべきでしょう:

  • x[-which(y)]はx[!y]と等価ではない
  • "`" (Backtick) の意味
  • ある変数がS4オブジェクトであることを判定する方法
  • 環境とリストの違い
  • apply系関数に与える関数には、try()をつけるべき
  • 自分で書く関数の内部では、sapply()は使わずvapply()を使うべき

もっとたくさんありますが、最初の第I部で書かれている内容だけでこれだけ挙げることができます。Rで単に自分のデータの処理をする、というところから進んで、Rでプログラミングをする、という場合には、文字通り必携の書といっていいでしょう。