秋月の I2C接続キャラクタLCD を Raspberry Pi に接続

組み込み
スポンサーリンク

秋月のI2C接続キャラクタLCDを Raspberry Pi 使う方法を紹介します.

P-05693

Rasberry Pi と LCD モジュールを接続しようとした場合,一般的な LCD モジュールは,I/O 電圧が 5V だったりインターフェースがパラレルだったりするので,ちょっと苦労することになります.

その点,この LCD モジュールは,3.3V での I2C で制御できるので,直結することができます.

スポンサーリンク

問題点

ただし,一つ大きな欠点があります.それは,I2C の標準モード(Standard Mode) である 100kHz に対応していないこと.

データシートにの Clock Frequency の規定としては 100kHz とあるので一見問題無いようにみえるのですが,その下にある Clock Low Period が 5.2us と規定されており,100kHz Duty 50% 時の値である 5us を上回ってしまっています.

ACM1602NI仕様

解決策

これを解決する方法としては,以下の2つあります.

  • I2C の周波数を下げる
  • LCD モジュールのファームを書き換えて 100kHz に対応させる

周波数を下げる場合,ドライバのロード時に引数で周波数を指定すればOK.例えば 50kHz にする場合,このページにあるように,下記のようにします.

ただし,この方法だと 100kHz 対応しているデバイスとの通信も遅くなってしまうので,あまり嬉しくありません.

そこで,以降ではファームを書き換える方法について説明します.

ファームの書き換え

基本的には,下記のページで紹介されているファームを書き込めば OK です.

I2C LCD ACM1602NI用プログラム(解析資料)
http://www.ne.jp/asahi/air/variable/picmel/applications/ACM1602NI/

ただ,私もそうでしたが,PIC の書き換えを行ったことがない人にはこれだけだとちょっとハードルが高いので,以降では少し詳しく手順を紹介します.

  1. ファーム書き換え用のツールである PICkit3 を入手します.秋月では4,500円しますが,AliExpress とかを使って個人輸入すれば送料込みで 2,000円未満で済むのでお勧めです.
    AliExpress PICkit3

  2. 書き込みソフトである,PICkit 3 Programmer App and Scripting Tool を Microchip のページからダウンロードしてインストールします.

    Downloads Archive
    http://www.microchip.com/pagehandler/en-us/devtools/dev-tools-parts.html

    ソフトを動かすには,.NET framework version 4.00 が必要になりますので,適宜こちらもダウンロードします.

  3. LCD モジュールと PICkit の間を下記のように接続します.

    PICkit3との接続

    余談ですが,接続に使用するケーブルは,AliExpress のJumper wire Dupont cableとかを利用するとリーズナブルです.

  4. パソコンと PICkit3 を USB ケーブルで接続し,PICkit 3 Programmer を起動します.
  5. 「Device」として PIC16F689 を選択します.
    PICkit3デバイスの選択
  6. [File]→[Import Hex] をクリックして,書き換え対象のファームを読み込みます.
    ファームは,以下のいずれかがお勧めです.

    I2C LCD ACM1602NI用プログラム(解析資料)のファーム
    「プログラムダウンロード」の場所からファイルをダウンロードし,中に含まれる dist/default/production/lcd_i2c_16f68x.X.production.hex がファーム.
    上記をもとに私の手元でビルドしたファーム
    ACM1602NI.zip

    機能としては上記と変わりませんが,電源 ON すると,自動的に「Initializing…」と表示されるようにしてあります.実際になにか作るときの見栄えが良くなるかと思います.ソースの変更点については同封してある diff.txt を参照ください.

  7. Write ボタンをクリックしてエラーが出なければ書き換え完了.
  8. Raspberry Pi 等と接続してやれば,普通に動作します.

    例えば,下記のコマンドを入力すると,「ABCabc」と表示されます.

コメント

  1. icoca より:

    ご存知だと思うのですが念のため。
    AliExpressのPICKIT3はコピー品です。

  2. 部農会長 MEGA MAX より:

    サイト主様
    大変参考になるページをありがとうございます。
    こういうページがあると私みたいな素人には大変参考になります。

    早速ですが、大切な注意点がひとつ抜けているとおもいます。

    3のところで PIC KitのVDD端子をLCDのVDDにつながないといけないのに、
    その結線が書かれていませんです。

    結果そのため表示がうまく出来ませんでした。
    それは知り合いの社長が教えてくださいました。

    あとは大丈夫です。ありがとうございました。

  3. 部農会長 MEGA MAX より:

    管理人様 早速の対応ありがとうございます。
    助かります!
    これでUECS-PIで表示が出来そうです。

  4. […] なやまして,あれこれ,くぐりましたがその原因にやっと行き着くことがで きました。やはり先達は,すごい。なんと,ACM1602NIは,I2Cの標準通信速度の要件をみたしていなかっ たのです […]