AVR USI-TWI Slave使用例:キャラクタLCD-I2C化アダプタ Ver.2
2017年8月
AVRのUSI機能をTWI化した記事「AVR USI-TWI Master使用例」
ではマスター側を紹介しました。本記事ではスレーブ側を紹介します。
USI機能をTWI化する
「キャラクタLCD-I2C化アダプタ(プリント基板)」
ではI2Cスレーブデバイスを作成しました。そこで使用したATtiny20が現在は入手困難なため、
比較的入手性がよくて大袈裟なスペックではないATtiny44Aで置き換えました。
ATtiny44AにはI2C機能がないのでUSI機能をTWI化し、I2Cスレーブ機能を実装しています。
具体的な方法はアプリケーションノートで公開されています(「AVR USI-TWI Master使用例」内リンクを参照)。
ソフトウェア
開発環境: Windows10/64bit, AtmelStudio7
上記は USI-TWI Slaveのソース(I2Cスレーブデバイスのファームの一部)です。
本記事ではこれを使い、キャラクタLCDモジュールをI2C接続できるようにしました。
キャラクタLCD-I2C化アダプタ
特徴
- 3.0~5.0Vで動作します。I2Cの動作速度は標準モード(100kHz)です。
- スレーブアドレスは0x3C。パッドのハンダショートにより0x3Dに変更できます。
- プルアップ抵抗は内蔵していません。プルアップ抵抗付きセンサーモジュールとそのまま同時利用できます。
- 電源逆挿し保護回路あり。VCCとGNDをうっかり逆に接続しても保護回路が本デバイスを破壊から守ります。
- ボリュームでコントラスト(文字の濃さ)が調整できます。
- スイッチでバックライトのオン/オフが切り替えられます。
- 立てて使うことができます。また4隅のネジにより自作ケースへの取り付けも簡単です。
使用方法
本アダプタ独自のAPI/ライブラリは下記よりダウンロードできます。
ATmega328Pをマスターデバイスとして表示デモを行います。SCL/SDAには10kΩ程度のプルアップ抵抗が必要です。
Arduino用のライブラリは特に用意していません。
自作する場合、I2C接続でHD44780互換コントローラにコマンドとデータを送信(4ビットモードで操作)するプログラムを作成すればOKです。
開発環境: Windows10/64bit, AtmelStudio7
回路図
動作の様子
マスターデバイスから温湿度センサーの値を受け取り、表示しています。
おまけ
ATtiny44A書き込み台
動作テスター
◆ ◆ ◆
ATtiny44AにUSI-TWI Slave機能を実装しました。I2Cのマスターから送信されたセンサーの値を受信し、キャラクタLCDに表示することができました。
I2C接続のディスプレイといえば近年、小型OLEDが比較的安価に入手できるようになり、「定番ディスプレイ」の座が交代しそうな勢いです。
しかしOLEDは基本的にグラフィックディスプレイ。シンプルに文字情報を表示したい場合はキャラクタLCDの方が便利です。
(C) 『昼夜逆転』工作室