2013年3月31日

ミニブレッドボードで遊ぶ (温湿度計)

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

秋月電子にて1個150円(2個以上買うと1個あたり150円)で売ってあるミニブレッドボードBB-601
これにどれだけ詰め込めるかという遊びを思いついたので、早速何か簡単なものを作ってみました。

ATmega328P-PU、温度センサ(LM61CIZ)、湿度センサ(HIH4030)、極小キャラクタ液晶、セラロック(16MHz)、抵抗(10kΩ)、コンデンサ(0.1µF)という構成。
#流石に電源まで詰めるのは無理


この状態でUSARTとSPIは空いているので、更に拡張や連携も可能だったり。
温度・湿度センサもデジタル(I2CやSPI)接続の物を利用すれば、もう少し他の物を接続できる。


LCD裏はこんな感じ。
買ってきてすぐは1mmピッチのFFCが付いていますが、何だかんだで扱いにくいので、細めで少し硬いビニル絶縁電線に付け替えました。(自立可能)

このサイズで何か面白いものが出来れば掲載しようと思っているものの、如何せんネタが無いのである(~_~;)

追記:サイズ比較にiPhone4Sの上に載せて1枚。


2013年3月22日

ArduinoISPでUSBasp-Bをアップデート

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

aitendoでUSBasp-Bを買ったものの、Arduino IDEからバージョン古いと怒られる&書き込み速度が遅いのでバージョンアップを試みた時のメモ。

ArduinoISPでUSBasp-Bをアップデートする試みは既にこちらなどで挑戦されているようですが、今のところ成功したという記事は見かけなかったのでチャレンジしてみることに。

1. ArduinoにArduinoISPを焼く
ファイル→スケッチの例→ArduinoISPを選択し、あとは普通にいつもの通り書き込む。

2. Auto Resetの無効化
ArduinoのAuto Resetを無効化するために、ArduinoのRESETとGND間にコンデンサを入れる。(0.1µFとか1µFでOK)
ちなみに、110Ω程度の抵抗をRESET-GND間に入れるというduemilanoveで使える技はUNOでは使えませんでした。

3. ArduinoとUSBasp-Bを接続
USBasp-BのJP3とJP4(3つのジャンパのうち真ん中以外の2つ)をONにしてファームウェア書き換えモードにする。
ArduinoとUSBasp-Bの接続はストレート(ArduinoのMOSIはUSBasp-BのMOSIに、MISOはMISOに接続)
ここで、USBasp-BのRESETはArduinoの10番pinに接続する。
ちなみに、この記事の一番上の写真は間違った接続をしていて、正解はこんな感じ。


ArduinoのICSPコネクタ5番pinはRESET(Arduinoの1番pin)に繋がっているため、USBasp-B側のRESETが(Auto Reset無効化の影響で)うまく効かず、

avrdude: stk500_recv(): programmer is not responding

を吐く原因となります。

4. 書き込み
USBaspのウェブサイトから最新版のファームウェアをダウンロード、展開し、ターミナルから下記コマンドで書き込み。

avrdude -P/dev/tty.usbmodemfd121 -b 19200 -c avrisp -p m8 -U flash:w:usbasp.atmega8.2011-05-28.hex:i

「/dev/tty.usbmodemfd121」は各自の環境に合わせて変更してください。
「usbasp.atmega8.2011-05-28.hex」も最新バージョンが出たらそれに合わせて適宜。

うまく書き込めたら下記の様な結果が返ってくると思います。
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.06s

avrdude: Device signature = 0x1e9307
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "usbasp.atmega8.2011-05-28.hex"
avrdude: writing flash (4700 bytes):

Writing | ################################################## | 100% 5.73s

avrdude: 4700 bytes of flash written
avrdude: verifying flash memory against usbasp.atmega8.2011-05-28.hex:
avrdude: load data flash data from input file usbasp.atmega8.2011-05-28.hex:
avrdude: input file usbasp.atmega8.2011-05-28.hex contains 4700 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 5.41s

avrdude: verifying ...
avrdude: 4700 bytes of flash verified

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

最後にヒューズビット(hfuse)を書き換える。

avrdude -P/dev/tty.usbmodemfd121 -b 19200 -c avrisp -p m8  -U hfuse:w:0xC9:m

これも、うまくいけば下記の様な結果が返ってくる。
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.07s

avrdude: Device signature = 0x1e9307
avrdude: reading input file "0xC9"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.07s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xC9:
avrdude: load data hfuse data from input file 0xC9:
avrdude: input file 0xC9 contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.02s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

以上でバージョンアップ終わり。

Auto Resetの影響を受ける可能性を思いつくまで30分、ICSPの5番pinがRESETに接続されているのを思い出すまで30分...
0x14歳にして脳が衰退し始めていることを思い知らされた1時間でしたorz