ラベル I2c液晶 の投稿を表示しています。 すべての投稿を表示
ラベル I2c液晶 の投稿を表示しています。 すべての投稿を表示

2015年2月18日水曜日

BBBにI2CでLCDつないでみた

BBBも混雑しはじめてきたw

いやー、嫌ですね、技術屋って略号ばっかりで…と言われそうなタイトルですが。とりあえず、いろいろググっていたら、シェルスクリプトだけでI2C液晶が時計になってしまう記事を見かけたので、さっそく試してみました。


まず、i2cの初期化をします。初期化について参考にさせていただいたのはこちらです。
記事はRev.A5AでうちのはRev.Cなのが原因かどうか、少しパラメータなどが違っていました。

まず、P8-17/18ピンのi2c端子I2C1を有効にしますが、その前にポートの状態を調べておきます。


つぎに、ポートを初期化します。
echo BB-I2C1 > /sys/devices/bone_capemgr.9/slots
もう一度ポートの状態を確認します。


良いようです。はい。ここで注意。配線したのはI2C1ですが、今設定して変化したのはi2c-2って書いてある行です。上の記事によれば、1と2の番号とデバイスが入れ替わっているのだとか。よーわからんのですが、Beagleboneにはこういう要素が多いような気がします。ともかく、先人のおかげでハマらないですみました。ありがとうございます。

というわけで、秋月の液晶「 I2C接続小型LCDモジュールピッチ変換キット」をBeagleboneと接続します。GND, 3.3V、あとは10kΩでプルアップしたSDAとSCL。基本これだけでいいのですが、RESET端子を3.3Vにつないでおきます。オープンにしたままだとリセットされないことがあるので。

接続したら、確認します。


液晶のデバイス番号3eが見えますね。秋月の資料には「スレーブアドレスは、0x7Cです」と書いてありますが、これはread/writeビットを最下位に置いて読んでいるためです。これ、メーカーなどによって読み方 / 指定の仕方が違うので悩むんですよね…。ともかくBBBでは3eです。

では、今度はBeagleBone Black のハードウェアハック(5)を参考にしてデジタル時計を動かしてみます。viでコードをコピペするのですが、記事とはi2csetのパス(i2cset=/usr/sbin/i2ctest)と接続しているポート(bus=2)が異なるのでそこは書き換えたのですが…記事の通りでは真っ黒い四角が並ぶだけでした。上記秋月の資料と比較してみると、コントラスト設定値として0x3fが指定されてて液晶が真っ黒になってしまうのと、意味はわからないですがICONってのがOFFになっていること、が原因のようでした。秋月の資料と同じデータ順にして、ばっちり動きました。


スクリプトでこんなことできちゃうんですね。すげー。

改めて、初期化とスクリプト時計の執筆者の方々に感謝申し上げます。おかげさまで今夜はすっきりぐっすり眠れそうです。

ありがとうございました。

2014年8月8日金曜日

MSP430 LauchPad + I2c液晶 + RTC + 3軸加速度センサ



どうもI2Cとは相性が悪いというか、今まで一発で動いたことがありません。今回も散々苦労しました。

・I2Cの信号が出ていない?▶オシロの設定間違い
・I2Cのクロック波形が鈍りすぎ▶プルアップを10kから1kへ
・念のためアドレスを左右にシフトしてみた▶ダメ
・念のため液晶変えてみた▶動いたorz

最近の部品は強いんですが、やっぱり壊れるときは壊れます。しばらく行方不明になっていて、アクリル板の下敷きになっているところを発見された液晶なので、静電破壊でしょうね…。

しかしこのμA単位で動作する低消費電力MCUでプルアップ1kΩ☓2ってのはキツい。LOWの時だけとはいえ6mAなどという大電流が流れるなんて…。ということで10kに戻してみたけど特に問題ありませんでした。それでも0.6mAはかなりの大電流ですが。

とりあえず液晶が動いたので、その後RTC(RTC-8564NB)と3軸加速度センサ(ADXL345)をつないでみました。

例によってRTCが動かず苦労しましたが、これはレジスタの数を間違えていて、一回りしてスタートビットを叩いているつもりが別のレジスタ叩いていた、という軽いボケ。

3軸加速度センサは以前Arduinoで書いたコードをそのまま貼ってすんなり動きました。

というわけで「振動を検知すると超高輝度赤色LEDが点灯するデジタル時計(またかよ)」の出来上がりです。

で、MSP430G2553IN20ですが…Energiaで書いている分には「小さな低消費電力Arduino」として使えるのでお手軽です。同じぐらいお手軽なmbed LPC1114FN28といい感じで使い分けできますね。14ピンのMSP430でEnergiaが動いてくれればLPC810M21FN8よりも使い勝手が良いのですが、見当たらないのが残念。

Energiaのフォーラムを見ていたら、32768hzの水晶を直結してRTCとして使うライブラリが公開されていたので、今度試してみようっと(「今でしょ!」禁止)。