まごころせいじつ堂

浜町庄金 研究開発  マイコンで遊んでばっかりで

I2C

I2C EEPROM実験基板

 秋月C基板の半分サイズのD基板をさらに半分に切ってI2C EEPROMの実験基板を作った。24LC256や24LC64などをテストできる。

 端子は左からSCL,SDA,Vcc,GND。Groveの並びに合わせてある。I2Cバスのプルアップ有無とアドレスの指定が可能。ライトプロテクトはなし。
2015I2CEEPROM1

2015I2CEEPROM2



 ArduinoのI2C Scannerで動作テスト。i2c_scanner(Arduino playground)
24LC256を使ってアドレスのジャンパ線を設定することにより、0x50〜0x57に変化することを確認。

 テストは熾火研究所*電子工作室さんのブレッドボードシールドを作ってやってみた。これ便利よ。
もういっそのこと… で、『ブレッドボードシールド作ってみた』(熾火研究所*電子工作室)

2015breadboard1


2015breadboard2


 読み書きテストはまだ。

I2C接続のジョイパッド

 MICROCHIPのI/OエキスパンダMCP23008を使って簡単なジョイパッドをC基板で作ってみた。
MCP23008は8本のGPIOをI2C経由で制御できる。上位のMCP23017は16本制御できるが、ジョイパッドに必要なスイッチは上左下右ABなのでMCP23008を選択した。
 C基板のちょうど収まりのよい位置にタクトスイッチを配置してメッキ線でぜんぶ配線。上の方にI2C端子を出す。Groveの並び(SCL/SDA/Vcc/GND)に合わせる。
2014joypad1

     回路図はあとで整理するけどもほぼ見たまんま。

MCP23008
1 SCL Groveコネクタ1 SCLへ 3.3KΩプルアップ
2 SDA Groveコネクタ2 SDAへ 3.3KΩプルアップ
3 A2 Vdd
4 A1 Vdd
5 A0 Vdd
6 *RESET 10KΩプルアップ
7 NC
8 *INT NC
9 Vss
10 GP0 ジョイパッドUp
11 GP1 ジョイパッドLeft
12 GP2 ジョイパッド Down
13 GP3 ジョイパッド Right
14 GP4 ジョイパッド Trigger A
15 GP5 ジョイパッド Trigger B
16 GP6 NC
17 GP7 NC
18 Vdd

Groveコネクタ3 Vdd
Groveコネクタ4 Vss 

 マイコンボードはArduino Leonardoと互換のSeeeduino Liteを使用した。これはボード上にGrove端子(I2C,Serial)が付いていてそのまま接続できる。今回Seeeduino Lite用のドライバや定義ファイル(board.txt)は使わずにArduino Leonardoとして使っている。 

2014joypad2

   さて、I2Cの制御はどうしようかなと探していたらMCP23008用のライブラリがあった。これをArduino IDEにインストールしておく。
https://github.com/adafruit/Adafruit-MCP23008-library 

 動作テスト用のスケッチはこちら。
https://gist.github.com/houmei/4c5c3db0579f5b12a71e

 押したスイッチに対応してU L D R A B の記号が表示される。これでハードの動作確認ができた。

続きの予定:
・回路図描く
・コネクタを追加し、ATARI(MSX)仕様のジョイスティックをつないでみる。





 

メモ:マイコン関係のリンク色々

 ブラウザのタブ整理。主にtwitter経由で知ったものをあとで読むつもりで貯めていたものです。

ArduinoをAVRライタとして使う
Arduino ISPを使う 
FT232Rモジュール利用 AVR TPIライター

Arduinoのライブラリを作るときの参考:
Arduinoの各種ライブラリ  
自作ライブラリの作り方 
 
開発環境:
embedXcode
MPIDE: One IDE to rull them all. (For Arduino and its varients anyway) 
Emuduino Emu(lator) + (Ar)duino Arduinoエミュレータ
ブラウザでArduinoプログラミング 
ino使うとCUIでArduinoをビルドできて便利

Arduinoで.hexファイルを出力する方法について
Issue 493: .hex export option 

I2C関連:
ArduinoでI2C通信をやる際のメモ
I2C block for ArduinoIO simulink package
ストロベリー・リナックスの低電圧I2C液晶をArduinoで使う
I2C液晶のArduinoライブラリ


その他:
V-USB Virtual USB port for AVR

Arduino + イーサネットシールド + LCDでFacebookページの「いいね数カウンター」をつくる
デザイナーがやる、はじめての電子工作(1):暗くなったらArduinoから自動的につぶやくおやすみメッセージ
参考)部屋の明るさをツイッターでつぶやいてみよう!

WIZ820ioをつかってみました

sparkfun OpenLog

AVRとZ80でCP/Mの改良 

Free Online Design Tools from Aspen Labs and Digi-Key Give Engineers an Edge in Online Printed Circuit Board Design 

メモ:秋月電子で買えるRTC(RealTimeClock)

データロガーを作ろうとしてるけど、タイムスタンプも欲しいよねということで調べた。秋月電子ではDIP基板に載せてモジュール化したものが2種類ある。

リアルタイムクロック(RTC)モジュール RTC-8564NB 
RTC-4543SA使用32kHz出力シリアルRTC基板モジュール RTC-4543SA

大きな違いは、RTC-8564NBがI2C、RTC-4543SAは独自シリアルI/Fでマイコンと通信する点。

RTC-4543SAはまだ実験してないのでメモ:
■[電子工作][プログラミング]RTC-4543(RTC-4543SA/SB)を使う(後編) (99円のへたれ日記!) 
シリアル出力リアルタイムクロック(RTC-4543SA)を使ってみた (明日から本気だす(´・ω・`))

RTC-8564NBはArduinoで実験してみた。
2012RTC

RTCモジュール上の端子にハンダを盛ってSDA,SCL信号はモジュール内でプルアップする。
スケッチについてはエレキジャックの記事を参照した。
リアルタイムクロックの最近のブログ記事 (エレキジャック・フィジカルコンピューティング)
RTC-8564NBモジュール(1)
RTC-8564NBモジュール(2)

Arduino1.0.2では以下のソースを一部修正。
ardsens090010.txt

Wire.send()はWire.write()に、Wire.receive()はWire.read()に書き換えが必要。
実行するとシリアルに時刻が出力される。そのままでは値がおかしいので
t213000[enter]
d121113[enter]
と入力すれば 2012年11月13日 21時30分00秒と設定される。

ところで、Arduino UNOではSCL,SDA端子がAnalog A5,A4の端子と一緒なので同時には使えない(@maris_HYさんありがとうございました)。
[SCL=A5,SDA=A4]
Arduino LeonardoではAREF端子の上のほうにSDA,SCL端子が増えている。Arduino UNO R3では互換のためにSDA,SCL端子はあるけどA4,A5の端子がそのまま引き出してあるだけ。ということでアナログ6ポートと同時に使うためにはLeonardoが必要。
が、手持ちのバニラシールドはこの増設部分が半分ずれてるのよね。ということでR3対応のものを取り寄せ中。
Arduino用バニラシールド基板ver.2(白) (スイッチサイエンス) 

記事検索
プロフィール

hardyboy

カテゴリ別アーカイブ
月別アーカイブ
QRコード
QRコード
  • ライブドアブログ