大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

ラズパイでi2cが使えない?!

株式会社クローバーフィールドの経営理念
著者:國松亜紗子
公開日:2019/05/14
最終更新日:2019/05/14
カテゴリー:技術情報

こんにちは。國松です。

i2c接続のLCDキャラクターモジュールACM1602NIを使ってみようとしたところうまくいかずはまってしまいました。あれこれと調べて何とか動かすことができたので忘れないうちに書いておこうと思います。

まずラズパイでi2cを使うための設定をしていきました。

・デスクトップからi2c通信を有効にする。(設定→Raspberry Piの設定の設定をクリック→「インターフェイスタブ」を開き「i2c」の項目の有効にチェックを入れる)チェックを入れたらOKを押して再起動

・/boot/config.txtにi2c_baudrate=50000を追記する(ACM1602NIを使うための設定)

・/etc/modules に i2c-dev を追記してもう一度ラズパイを再起動

次にi2cを利用するためのツールをインストール

sudo atpt-get -y install i2c-tools python3-smbus

そしてACM1602NIとラズパイを配線してプログラムを実行した所、IOError:[Errno121]Remoto I/O errorと表示されました。エラーの内容を調べたところi2c通信ができておらずデバイスも認識されていないみたいです。

そこで、dmseg | grep i2c で確認してみたところi2c-devしか表示されない。bcm2708が表示されずi2cが使えない状態?のようでした。

ここからはまりにはまりました。『i2c ラズパイ』、『i2c bcm2708』,『i2c ラズパイ 使えない』など色々な検索ワードで調べました。etc/moulesにi2c-bcm2708と追記してみてもダメでした。lsmodでモジュールを確認するとi2c-2708とあるのにデバイスを認識してくれません。そのうちにヒントになりそうな記事「i2c stopped working on 4.14.31」を見つけました。カーネルのバージョンが関係しているみたいです。

原因 Raspbianのカーネルのバージョンが4.14だとデフォルトのモジュールはbcm2835でbcm2708は使えない

解決の為に参考にしたサイト

工作好きな情報系の雑記

Raspbianのカーネルのバージョンの確認

uname -a

今回はカーネルをダウングレードするのではなくカーネルのバージョンはそのままでbcm2708を使えるようにしました。

1, bcm2708モジュールをダウンロード

2,ダウンロードしたファイルを /boot/overlays にコピーする

3, /boot/config.txt ファイルに  dtoverlay=i2c1-bcm2708 を追記する

4, reboot する

dmseg | grep i2c で確認してみたとこ以下のようにbcm2708が表示されました。(小さくて見にくい画像ですみません) 

これで一応、一件落着です。AQM1602NIの使い方(プログラム)については次回にしたいと思います。

 

    上に戻る