タグ別アーカイブ: LCD

CIMG2378

I2C接続可能なLCD/ACM1602の使いこなし

Raspberry piにLCDモジュールを接続する場合にその選択肢は案外少ないものです.
まずは3.3Vで動作する事。Raspberry Pi の少ないDIOピンを節約したいのでバスインターフェイスではなくシリアルインターフェイスで接続できるのが望ましい。表示文字数も少ないよりも多い方が良いな。と言う事で選定したのがACM1602.

さっそく秋月電子で購入
CIMG2378

Raspberry piのI2Cを有効にするための諸設定は済んでいるものとして。
I2Cの2線SDAをSCLそしてVccとGNDを接続。

シェルから以下のコマンドを投げてみる。

pi@raspberrypi ~ $ sudo i2cdetect 1

しかし、呼べども答えず。返事を返してくれるデイバイスは誰もいません。

I will probe file /dev/i2c-1.
I will probe address range 0x03-0x77.
Continue? [Y/n]
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

接続を一通り確認したり、他のI2CデバイスとRaspberry Piとが通信できている事を確認し行き詰まった。
そこでGoogle検索の出番。ひたすら調べた結果次の事が判明。

  • デフォルトの通信速度では通信がつまずくことがある
  • Write専用で一度でもReadを掛けるとモジュールがフリーズする。製品に添付の資料にも明記しているが、Readを掛けた時の状態に付いては記載がない。

一つ目については通信スピードを落とせば同じバスに繋がるデバイスもそのスピードダウンの影響を受けるがまあよしと考えられる範囲ですが、二つ目については一度でもi2cdetectを掛けるとACM1601はフリーズ状態になりその都度モジュールの電源再投入して立ち上げ直す必要になるのです.Raspberry Pi本体のシステムをリスタートする必要はないのですが、やはり使いにくいことには変わりないですね。

一応I2Cの通信スピードを変更する手順について書き留めておきます。

sudo modprobe -r i2c-bcm2708
sudo modprobe i2c-bcm2708 baudrate=50000
sudo i2cdetect 1

この時点ではもちろんACM1602からの返答は有りません。ここでLCD電源を一度オフにしてオン ※1
これ以降はi2cdetectを掛けないでくださいね。するとまたACM1602がフリーズに落ちますので。
無事ACM1602が使えるようになっているはずなので、I2Cを通じて制御コマンドを渡して動作を確認してください。

通信速度をデフォルトのままだとI2Cでコマンドを渡した時にPythonなら「IOError: [Errno 5] Input/output error」が出ます。
上記コードをその都度シェルから入力するのが面倒だ、この設定をデフォルトにしたい場合は、/etc/modprobe.d/i2c.conf というファイル(ファイル名は .conf で終わっていれば何でもよい)を作って以下のように書いておけば良いようだ。

options i2c_bcm2708 baudrate=50000

でもi2cdetectを不用意に投げないようにご注意を

結論。秋月で買えるACM1602(I2Cインタフェイスキャラクターディスプレイ LCD 3.3V)はRaspberry pi との組み合わせでは使いにくい.

それからI2Cを使う場合sudo権限が必要なので、実行するPythonスクリプトなどはsudo権限を使って実行することを忘れずに。

LCDモジュールの取り扱いをもっと簡単に出来ないか、複数のI2Cデバイスをぶら下げた時に安心してi2cdetectを投げられるようにならないか。そういった悩みを解消するのに、i2cインターフェイス基板が便利かもしれませんね。
i2cインターフェイス基板
デジタルIOも拡張でき、アナログ入力にも対応。Raspberry piを使った電子工作を便利にする事だと思います.

I2Cinterface説明図5

LCDキャラクターディスプレイモジュール比較

一般的に入手が容易なLCDキャラクターディスプレイモジュールの比較を紹介します。

1)超小型LCDキャラクタディスプレイモジュール(16×2行バックライト・オレンジ)
SD1602HUOB(-XA-G-G)

○小型
○バックライトが明るく見やすい
☓LCD上部にFFCがあり、ケースへの収まりが悪い

基板上のピンは直列16ピン

2)LCDキャラクタディスプレイモジュール[16×2行][バックライト付白抜き]
[SC1602BBWB-XA-GB-G]

○黒い枠があり、ケースへの収まりが良い
○青色のバックライトは明るく、日中でも目立つ
△(1)のモジュールよりもサイズが大きい

基板上のピンは2列x7ピン=14ピン

3)LCDキャラクタディスプレイモジュール(16×2行バックライト付)
[SC1602BSLB(-XA-GB-K)]

暗所で撮影

明るい場所で撮影

(2)のバックライト違いだが見え方は随分異なる

○黒い枠があり、ケースへの収まりが良い
○バックライトは弱いが日中の視認性は良い
△(1)のモジュールよりもサイズが大きい

基板上のピンは2列x7ピン=14ピン

いずれのモジュールもマイコンとの接続には複数のピンを接続する必要がある。ブレッドボードなどでの試作では配線が手間になることも。モジュールとの接続をコネクタ化した汎用的な基板を作っておくと試作検討もすっきりと進みます。
オリジナル基板について

CIMG2356

AVR LCD board

概要

本品はATMELATmega48A/48PA/88A/88PA/168A/168PA/328/328PマイコンとLCDキャラクターディスプレイモジュールSC1602相当品(インターフェースIC:HD44780コンパチブル)とを接続便利にした基板です。ISP端子用のランドにピンヘッダを取り付けることで、AVR ISPmkIIプログラマーと接続ができます。AVRマイコン、LCDキャラクターディスプレイを接続する評価ボードとして簡単に使うことができます。
発振子、LED電流制限抵抗、スイッチ用プルアップ抵抗、LCDキャラクターディスプレイ接続のためのパターンが用意されておりますので、試作時の面倒な配線作業が少なく済みます。LCDキャラクターディスプレイよりひとまわり大きい基板サイズなので、コネクタを介してスタックすることが出来ます。電源供給は市販のACアダプターまたは電池を接続します。
ArduinoIDEでの開発が出来、Arduino互換ボード、Arduino学習用としてもご利用できます。 続きを読む

I2Cinterface説明図.006

I2Cインターフェイス基板 LCD16x2付き (キット)

概要

Raspberry Piなど小型で安価なLinuxボードが市販されるようになりました。これらボードはGPIOを搭載しセンサーやアクチュエーターの制御を容易にします。そしてPICやAVRといったマイクロコントローラーよりもプログラミングをずっと容易にし、インターネットとの親和性も大変良く、電子工作としても製品組み込みとしてもいま大きく注目を集めています。

しかし、実勢に実機を使って細かく検討していくといくつかの問題点も見えてきます.

  • Raspberry Piの表示デバイスとしてLCDを使うと接続に多数の信号線が必要となり、Raspberry Piの数少ないGPIOをそれだけで消費してしまう。
  • なんといっても多ピンあるLCDとの配線はめんどう
  • I2C接続できるLCDもあるが種類が少ない(例)秋月電子通商で販売されているI2C接続小型LCDモジュール AQM0802Aが接続できるそうだが、表示が8×2で物足りない
  • 16×2表示できるLCDACM1602NI-FLW-FBW-M01もあるが、実際に試したところRaspberryPiからではコントロールするには制限が有ることがわかった。
  • Raspberry Piにはアナログ入力が無い。ADC用IC(MCP3204など)を使う必要が有る。(Beaglebone Blackにはアナログ入力があるがMax1.8Vと制約が有る)
  •  SPI デバイス、I2Cデバイス、シリアル通信を複数接続するとあっという間にGPIOが足りなくなる
  •  アナログ出力、ハードウェアPWMが1チャンネルしか無い。

そこでこれらの不満を解消するためのインターフェイス基板の提案です. 続きを読む

LCDモジュールSC1602キャラクター表

LCDモジュールSC1602互換で用いられるキャラクターコード表を示します.
下位4ビット\上位4ビットで表します。

0 1 2 3 4 5 6 7 8 9 a b c d e f
0 0 @ P ` p α p
1 ! 1 A Q a q ä q
2 2 B R b r β θ
3 # 3 C S c s ε
4 $ 4 D T d t μ Ω
5 % 5 E U e u δ ü
6 & 6 F V f v ρ Σ
7 7 G W g w γ π
8 ( 8 H X h x
9 ) 9 I Y i y ¬ y
a * : J Z j z j
b + ; K [ k { ×
c , < L ¥ l | ¢
d - = M ] m } £ ÷
e . > N ^ b 濁点 η
f / ? O _ o 半濁点 ö

i2cinterface99.py / i2cインターフェイスボード用Pythonライブラリー

I2CでLCD,LED,デジタルIO,アナログIO,圧電スピーカーを制御可能なインターフェイスボード”I2Cインターフェイス基板 LCD16x2付き (キット)“および”I2Cインターフェイス基板 LCD20x4付き (キット)“のPython用ライブライーについて説明します。

準備

raspbian OSのI2Cを有効化してください。

sudo raspi-config

Advenced Options からI2Cを有効にします。
PythonからI2C制御するためのライブラリーをインストールします。

$ sudo apt-get install python-smbus

使用方法

import i2cinterface99 #ライブラリーの読み込み
ii =  i2cinterface99.i2cinterface99() #モジュールの初期化
ii.led(1,1) #メソッドの呼び出し

Functions

led()
LEDの明滅
setSound()
圧電スピーカーからの発信音のパラメータ設定
sound()
圧電スピーカーからの発信音オンオフ
setPinMode()
IOピンの入力/出力設定
digitalWrite()
デジタル出力オンオフ切り替え
digitarRead()
デジタル入力
analogWrite()
アナログ出力値設定
analogRead()
アナログ入力
lcdInit()
LCD制御の初期化
lcdClear()
LCD表示のクリア
lcdSetCursorMode()
カーソルの設定、明滅設定
lcdPrint()
LCDへの文字列の表示
lcdWrite()
LCDへ文字コードで書き込み
lcdSetPosition()
LCDの表示位置を指定
lcdDisplay()
LCDの表示/非表示設定
lcdScroll()
表示の左右スクロール
lcdAutoScroll()
オートスクロールの有効/無効
reset()
I2C通信のコマンドバッファのリセット

ダウンロード

i2cinterface99.py20140109

専用ハードウェア

本ライブラリーは「I2Cインターフェイス基板 LCD16x2付き (キット)」を制御するためのものです。
製品についての詳しい情報はこちらでご覧ください.
I2Cインターフェイス基板 LCD16x2付き (キット)

CIMG2356

AVR I/O Board

  • ブレッドボードじゃなくて、作品として仕上げたい。電子部品をしっかりと固定したい
  • 小ロットで作りたいがオリジナルでプリント基板を作るにはちょっと予算がない
  • 作品を複数個作りたい。でもArduinoじゃ値段が高い
  • LCDの配線が面倒。LCDシールドは高価だ
  • LCDをケースへの固定するのは案外面倒なもの
  • AVR StudioじゃなくArduino IDEからプログラミングしたい
  • MacでATmegaにプログラムを書き込みたい

このような不満を解消し、あったらいいなをかなえるため、汎用ボードを用意しました。

概要

本品はATMELATmega48A/48PA/88A/88PA/168A/168PA/328/328PマイコンとLCDキャラクターディスプレイモジュールSC1602相当品(インターフェースIC:HD44780コンパチブル)とを接続便利にした基板です。ISP端子用のランドにピンヘッダを取り付けることで、AVR ISPmkIIプログラマーと接続ができます。AVRマイコン、LCDキャラクターディスプレイを接続する評価ボードとして簡単に使うことができます。
発振子、LED電流制限抵抗、スイッチ用プルアップ抵抗、LCDキャラクターディスプレイ接続のためのパターンが用意されておりますので、試作時の面倒な配線作業が少なく済みます。LCDキャラクターディスプレイよりひとまわり大きい基板サイズなので、コネクタを介してスタックすることが出来ます。電源供給は市販のACアダプターまたは電池を接続します。
ArduinoIDEでの開発が出来、Arduino互換ボード、Arduino学習用としてもご利用できます。

仕様概要

ATmegaシリーズ 28Pin DIP ナロー300milに対応
ISP端子(AVR ISPmkiII対応)
SC1602 ピンコンパチ
LCDコントラスト調整半固定抵抗ランド
外部クリスタル
LED用電流制限抵抗 X2
外付けSW用プルダウン抵抗 X3
圧電サウンダー用ランド
他入出力用信号,Vcc,GNDを各4ch

上記取り付け用ランドを基板上に配置

外観

CIMG2356

基板部品面

CIMG2358

部品実装例
本基板だけでもLED、スピーカー、スイッチを実装することで、評価・検討用、学習用、小ロットの製品のマイコンとして利用することが出来ます。

CIMG2359

LCDおよびAVRISP mkIIとの接続例


製品への組み込み例
基板4隅のφ3穴にスペーサーを立てることで、筐体への取り付けが容易に行えます。LCDモジュールと一体化したことでメカ設計および組立が容易になります。

基板仕様

  • 構成層数 2層(両面)
  • 外形寸法 105.0 mm x 40.0 mm
  • 表面処理 半田レベラー
  • レジスト印刷 両面 緑色
  • シルク印刷 白
  • 板厚 1.6mm
  • 板材 FR-4

外形参考図

回路図

avrboard2

IO情報

avrboard6

 

組み立て参考

avrboard4

avrboard5

ボード上配置図


コネクタ・ピンアサイン表


ATmega > Arduino ピンアサイン読み替え表

購入方法

CIMG2356

販売商品。基板のみの販売につき、部品は実装されておりません。
価格:600円/1枚(税抜、送料込)

お求めはインターネットショッピング99で