Raspberry Pi(7) 温度センサーとI2C通信・・・で詰まる

Raspberry Pi(7) 温度センサーとI2C通信・・・で詰まる

前回はSPI通信を行い、今回はI2C通信の演習を行います。

で、I2C通信ってなんだ?

フィリップス社で開発されたシリアルバスである。低速な周辺機器をマザーボードへ接続したり、組み込みシステム、携帯電話などで使われている。

~中略~

I2C で使われているのは、抵抗でプルアップされた双方向のオープンコレクタ信号線が2本だけである。2本の信号線は、シリアルデータ (SDA) とシリアルクロック (SCL) からなる。 電圧は最高で +5V までで、よく使われるのは +3.3V だが、他の電圧でも構わない。
出典: フリー百科事典『ウィキペディア(Wikipedia)』

他にもいろいろ調べてみて、自分なりに解釈したのは、個々のスレーブがアドレスが振ってある。SPI通信と違って、シリアルデータ(SDA)とシリアルクロック(SCL)の2線だけで通信でき、回路がシンプルにできる。そして、それぞれにプルアップ抵抗が必要。と。

まあ、荒々しいシロウト解釈なので、それなりで、流してください。

では、i2c通信ができるように設定します。

・I2Cモジュール無効化の解除

terminalから次のコマンドを打ち込んで、

でてきたファイル内の以下の行をコメントアウト。
blacklist i2c-bcm2708

#blacklist i2c-bcm2708

・I2Cモジュールの読み込み

terminalから次のコマンドを打ち込んで、

でてきたフィルの最後尾に次の行を追加。
i2c-dev

・必要なパッケージのインストール

terminalから次のコマンドを打ち込んで、

あとは再起動で設定終了と。

 

では、デバイスの方へ。
今回新たに用意するものはこれら。

ADT7410温度センサーモジュール
LCDモジュールピッチ変換キット

これらをそれぞれはんだ付けするわけですな。

いざ!はんだ付け!!

ふむふむ、ADT7410温度センサーは意外とすんなり。こんな感じ。

次にLCDの方!

なんか、細かくないすか??

 

ブレッドボードにつける方のはんだ付けはまあ、いいとしよう。
LCDをつける方は約2㎜x5mm面積で、はんだ付けする箇所が1㎜間隔で9箇所ある。。

失敗したら、また買うのか?
送料入れたらいくらになるの?
もったいないから、ついでになんか一緒に買う?

 

考えても始まらない。
やるしかない。です。

 

 

んん、細かい。目の焦点が厳しい。
そして、緊張でこて先が震える。

LCDの足?が長くて邪魔だ!!

なんか、熱しすぎた??


 

 


。。

とりあえずこんな感じ?
こんな感じで許してください。。

それでは最初のADT7410温度センサーのみを取り付けて、

terminalからプログラムを走らせます。

 

?

??

こんな文章が。

bus = smbus.SMBus(1)
IOError: [Errno 2] No such file or directory

ちなみにプログラムは勉強がてらすべて手打ちしていまして、どこか構文ミスったのかも。
プログラム確認の前に、デバイスを認識しているか確かめます。

以下のコマンドをterminalから入力。

その結果がこれ。

Error: Could not open file ‘/dev/i2c-1’ or ‘/dev/i2c/1’: No such file or directory

はい、そもそもデバイス認識できていません!
はんだ付けミスったのかな?
電源落として、ADT7410温度センサーをよく見ても、特別失敗している様子はないです。
配線の確認しても本の通りです。

なんなんだ?

また古いからなんかあるのか?

なんなん?
一体何時間かけるんだ・・・

 

 

仕方ないので、再びいろいろネットの世界に飛び込み探します。

 

エラーメッセージをそのまま検索。

ほほー、同じようなエラー出してるヒト、ヒットすますね~
なんとかなりそう。

調べた中で、一番丁寧に説明されてたのが、こちらのサイト

Raspberry Pi の I2C を有効化する方法 (2015年版)

まずは、Rasberianとファームウェアのアップデート。
このワタシが使ってるRaspberry Piが古いせいか、全部で2時間ほどかかりました。。

次にraspi-configからI2Cの有効化。
これは、なんかすでに”enable”と使える状態でした。

最後に設定ファイルの手動設定
/boot/config.txt の末尾に以下の内容を追記。

そして再起動。

 

いや、なんか、時間かかったし、いろいろ確認するのもあれになってきたから、そのままterminal起動して、手打ちしたプログラムは置いといて、
サンプルプログラムをそのまま走らせました。

できた!!

部屋の温度は22℃くらい!!