2012年8月30日木曜日

ミニ液晶ディスプレイ

ストロベリーリナックスのミニI2C液晶モジュール(8x2行)は,ピンピッチが 1.5 mm つまり 1.27mm は狭すぎ 2.54mm は広すぎ,というユニバーサル基板にない?間隔で容量やや大きめ 1μF のコンデンサを3個つける必要があり,固定用のLEDピンは幅広なので 3mm ほどの穴を開けねばならず,少々面倒だが,ソフトウェアは同社の 16x2 行 I2C ディスプレイと同じ(ST7032i コントローラ)で動くリーズナブルなディスプレイ.
コントラストの値は少し小さめ(22 等)がよいようだ.
2 mm の基盤に足を広げてさして回路をつけたが,折れたりとれたりしないか不安になる.1x0円ぐらいでブレイクアウトボードがあればいいのに.ついでに I2C 3.3V/5V 変換チップの場所もついていればもっといいのに.

2012年8月26日日曜日

ATmega644/1284 Arduino variation "Quaranta"

リアルタイムクロック装備,イーサネット,DES (いまさら)対応 NFC RFID (Mifare/FeliCa 同時対応)リーダ認証機能およびログ機能つきのプロトタイプをつくっていたらArduino Duemillnove/UNO のプログラムメモリが足りなくなった.主に Ethernet のせい.とても FAT の読み書き用コード,DESの暗号化と復号化ルーチンのスペースはない.RAMもバッファでいっぱいいっぱいだろう.
それで Arduino Mega にうつそうかと思ったらボードが大きすぎるしSPIとI2Cのピン位置が違うのでISPコネクタでSPIを使うタイプのシールドしか使えない.当然「互換ボード」の類はバスのライブラリがないとかプログラミングをウェブのフォームでさせられるとか,Windows でやらんといかんとか,イーサネットの専用シールドがいるとかで,もっと無理.
フラッシュRAMとかI/Oの規模は 644 でいいのだが Sanguino はピン配置の互換性を無視しているし新 IDE の対応など更新もとまっているのでやっぱり使えない.それでむかし 644p を mega 用ユニバーサルシールドにくっつけた自家製ピン互換ボードを使用することにする.しかたがないので自家製 hardware variation ファイルを作った.
github.com/una1veritas/Arduino/tree/master/hardware
Ethernet もSD Card も WIZ812 モジュール,Adafruit モジュールで外付けすることにする.Arduino 標準ライブラリはいろんな人の作ったライブラリをまとめていて古い部分もあるので,CS でデバイス選択をするしくみなどで手直しが必要になる. RTC も SRAM もつないで,まったく SPI バス祭り.

2012年8月24日金曜日

Old Arduino Ethernet Shield あるいは W5100 のワナ

Arduino Ethernet Shield に使われている W5100 チップは TCP/IP を手軽にしてくれるありがたいチップだが,SPI slave としての挙動が普通ではない・・・Slave select されていない(/SCS が high)状態でも MISO 出力がアクティブ(非ハイインピーダンス状態),つまり他の slave の信号がよめなくなるらしい.
よく Ethernet Shield が SPI を使うので他の SPI デバイスは使えなくなります,という説明を見たが,そんなはずはないわけで.単なるチップのバグではないか.
Ethernet Shield も V5 などからはアプリケーションノート W5100_AN_SPI.pdf のおすすめに従い,/SCS から SEN に not ゲートをかましている.

ひどい.どおりでいろいろ動かないわけだ.