I2Cで温度センサをつないでみる
仕事でI2C接続をさんざん使っていながら、自分の手で直接接続したことがなかったので、初心に帰ってここから。
ラズパイマガジンの初心者用部品セットに入っていたADT7410を接続する。
ついに半田付けをする日がきた。ピンヘッダを付けるだけだが。
昔、半田付けがうまくできなかったトラウマがあるので(だからソフトウェアに走ったという話もある)、「半田付け コツ」でぐぐると、出てくる。。。 すごい世の中になったものだ。
村田製作所の教えに従い、半田こての先をきちんと清浄したおかげか、8秒のリズムに忠実に従ったおかげか、自分史上もっともきれいな半田付けに成功。テスターでチェックしたが隣同士のショートもしていない。
さて、ハードウェアの準備は整った。あとはソフトなのだが、2冊の本で利用しているpythonライブラリが異なるので面倒だな。
- ラズベリーパイ超入門
pythonでRPiモジュールを利用して説明していた。GPIOを利用するLチカはこれで動作したが、この本ではI2Cの制御にAdafruit_ADS1x15など、独自のモジュールを提供している。手元の温度センサーを直接制御するには不都合。 - ラズパイマガジン2016/6
秋月でこのマガジンとペアになっている部品群をまとめて購入したので、pythonコードもこちらの本を参考にすれば問題ない。が、wiringpiがインストールできない。
そうすると、今後も考えるとラズパイマガジンの環境にそろえた方がよさそうだ。wiringpiをなんとか使えるようにしよう。
% sudo apt install wiringpi
では「最新だ」と言われるので、どうもネイティブのwiringpiは入っているのだが、それをpythonから使うpythonパッケージがうまく見つけられていないようだ。
きちんと本家からもってきてビルドするのが正しいのか?
いや、ここにあるようにpipでスマートに入れられる、はず。やってみよう。
どうもよく分からないが、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上で実行していると見えずはまりかけたが、コンソールから実行すればきちんとエラーが出ていた。
温度表示成功。
が、あまり変化がないので盛り上がらないな。