I2Cで温度センサをつないでみる

仕事でI2C接続をさんざん使っていながら、自分の手で直接接続したことがなかったので、初心に帰ってここから。

 

ラズパイマガジンの初心者用部品セットに入っていたADT7410を接続する。

ついに半田付けをする日がきた。ピンヘッダを付けるだけだが。

 

昔、半田付けがうまくできなかったトラウマがあるので(だからソフトウェアに走ったという話もある)、「半田付け コツ」でぐぐると、出てくる。。。 すごい世の中になったものだ。

www.murata.com

 

村田製作所の教えに従い、半田こての先をきちんと清浄したおかげか、8秒のリズムに忠実に従ったおかげか、自分史上もっともきれいな半田付けに成功。テスターでチェックしたが隣同士のショートもしていない。

f:id:ken_miyashita:20160821112508j:plain

さて、ハードウェアの準備は整った。あとはソフトなのだが、2冊の本で利用しているpythonライブラリが異なるので面倒だな。

  • ラズベリーパイ超入門
    pythonでRPiモジュールを利用して説明していた。GPIOを利用するLチカはこれで動作したが、この本ではI2Cの制御にAdafruit_ADS1x15など、独自のモジュールを提供している。手元の温度センサーを直接制御するには不都合。
  • ラズパイマガジン2016/6
    秋月でこのマガジンとペアになっている部品群をまとめて購入したので、pythonコードもこちらの本を参考にすれば問題ない。が、wiringpiがインストールできない。

そうすると、今後も考えるとラズパイマガジンの環境にそろえた方がよさそうだ。wiringpiをなんとか使えるようにしよう。

 

% sudo apt install wiringpi

では「最新だ」と言われるので、どうもネイティブのwiringpiは入っているのだが、それをpythonから使うpythonパッケージがうまく見つけられていないようだ。

 

きちんと本家からもってきてビルドするのが正しいのか?

pypi.python.org

 

いや、ここにあるようにpipでスマートに入れられる、はず。やってみよう。

raspi.tv

 

どうもよく分からないが、python2.7に対しては wiringpi が動作した。python3では駄目。上記のインストールをする前から実は python2.7 では動作していたのかもしれないので何とも言えないなあ。

 

ん? 以下のブログを参考にしてもう一度やってみよう。

E.S.C. — Raspberrry PiにWiringPi2 を(python3)

うまくいった。

どうもpython2.7とpython3.4が併存していると面倒だな。まあ、とにかくpython3でもwiringpiが動作した。

 

では、ラズパイマガジンに従ってソフト環境の準備を続ける。

  • wiringpiをpythonから使えるようにする。
  • apt-get install libi2c-dev
  • Raspberry PiインターフェイスとしてI2Cを有効化
  • ADT7410の全機能を使うためのお呪い
  • wiringpiを利用したサンプルコードを実行

 root権限で実行しないと wiringpi.wiringPiSetup() が失敗する、ということがIDLE上で実行していると見えずはまりかけたが、コンソールから実行すればきちんとエラーが出ていた。

温度表示成功。

が、あまり変化がないので盛り上がらないな。