激安Arduinoの作り方2

秋月でmega328Pが250円だ。2台目からは自作で安く済ませる作戦。

1台目のarduinoは持っていて2台目に3000円出したくない。
生AVRを買ってきて完成品にarduinoを埋め込む方法。
macです。

1台目は完成品をオススメします。
http://www.switch-science.com/products/detail.php?product_id=3
やっぱりDuemilanoveが無難。

激安Arduinoの作り方1→http://www15.atwiki.jp/arduino/pages/35.html


材料


AVR mega328P

mega8=200円、88p=250円、168p=230円なので328pで良いと思う。(価格は2009/11/1現在)


FT232RL USBシリアル変換モジュール 950円

  • ブートローダを焼くためのAVRライタとして使う
  • その後はarduino書き込み用アダプタとして使う(DTRで自動リセット)
  • デバッグ用のシリアル通信アダプタとして使う

Duemilanoveを改造して使うこともできるんだけど何かと不便なので1個ほしい。


ジャンパ(todo)

  • J1 3ピンの方
外側2つをショートしてる。意味は(todo)

  • J2 2ピンの方
USBから電源供給する→ショート
USBから電源供給しない→はずす(1ピンだけにつけとくとなくさない)


ドライバ

http://www.ftdichip.com/Products/FT232R.htm
VCPとD2XXの2種類あり、両方インストールします。

  • ブートローダ書き込み、fuse書き込み等、AVRライタとして使うとき
VCPを無効にしてD2XXを使います。

  • arduinoスケッチのアップロード、デバッグ用シリアル通信アダプタとして使うとき
VCPを有効にしてVCPを使います。
/dev/tty.usbserial-A9005bvIの様な名前の普通のシリアルポートです。

使い方の詳細→ BitBang Mode AVR-Writer on Mac http://www15.atwiki.jp/arduino/pages/23.html


ブレッドボード&配線材


最低この大きさのが必要。
http://akizukidenshi.com/catalog/g/gP-00285/

完成品は超小規模でユニバーサル基板にするのも面倒な場合、これも良いです。
http://akizukidenshi.com/catalog/g/gP-00315/


Arduino 017



オプション

  • パスコン
  • リセット用コンデンサ



FT232RL+ブレッドボードでブートローダを焼く



bootloaderのバージョン

  • 1MHz RC : 省電力
  • 8MHz RC : 普通
  • 16MHz XTAL : Arduino標準
3パターンあればいいかな。
(todo 1MHz版は必要か?消費電力/電池の持ち時間がどれぐらい違うのか。むしろもっと遅いクロックのバージョンがいい?)


bootloaderを作る

8MHz内蔵RC発振の設定。

# /Applications/Arduino.app/Contents/Resources/Java/hardware/bootloaders/atmega/Makefile
# =======================================================================
# mega328p_default_fuse: [l:62,h:D9,e:7]
# (mega328p 8MHz RC)
# FUSE: -e -U lfuse:w:0xE2:m -U hfuse:w:0xDA:m -U efuse:w:0x07:m
atmega328p_8MHzRC: TARGET = atmega328p_8MHzRC
atmega328p_8MHzRC: MCU_TARGET = atmega328p
atmega328p_8MHzRC: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' -DBAUD_RATE=19200 -DDOUBLE_SPEED
atmega328p_8MHzRC: AVR_FREQ = 8000000L
atmega328p_8MHzRC: LDSECTION  = --section-start=.text=0x7800
atmega328p_8MHzRC: $(PROGRAM)_atmega328p_8MHzRC.hex
 
#/Applications/Arduino.app/Contents/Resources/Java/hardware/boards.txt
atmega328p_8MHzRC.name=Arduino ATmega328P_8MHzRC
atmega328p_8MHzRC.upload.protocol=stk500
atmega328p_8MHzRC.upload.maximum_size=30720
atmega328p_8MHzRC.upload.speed=19200
atmega328p_8MHzRC.build.mcu=atmega328p
atmega328p_8MHzRC.build.f_cpu=8000000L
atmega328p_8MHzRC.build.core=arduino
 
# ---- 
$ cd /Applications/Arduino.app/Contents/Resources/Java/hardware/bootloaders/atmega
$ rm ATmegaBOOT_168_atmega328p_8MHzRC.hex; make atmega328p_8MHzRC
$ sudo kextunload /System/Library/Extensions/FTDIUSBSerialDriver.kext
$ ~/tmp/mac_bitbang/avrdude-5.3.1/avrdude -C ~/tmp/mac_bitbang/avrdude-5.3.1/avrdude.conf -c diecimila -p m328p ¥
   -vv -B 4800 -e -U lfuse:w:0xE2:m -U hfuse:w:0xDA:m -U efuse:w:0x07:m
$ ~/tmp/mac_bitbang/avrdude-5.3.1/avrdude -C ~/tmp/mac_bitbang/avrdude-5.3.1/avrdude.conf -c diecimila -p m328p ¥
   -vv            -U flash:w:ATmegaBOOT_168_atmega328p_8MHzRC.hex:i
$ sudo kextload /System/Library/Extensions/FTDIUSBSerialDriver.kext
 
 

不安定な場合、MAX_TIME_COUNTを調整する必要があるかもしれない
http://hp.vector.co.jp/authors/VA000177/html/ATmega328PA4CEfuse.html

BAUD_RATEは57600だと安定しなかった(8MHz RC)


スケッチ転送

  • ArduinoIDEでBlinkをひらく。
  • Tools -> Board でデバイス選択。
  • Tools -> Serial Port でシリアルポートを選択。
  • 転送ボタンを押す。
  • 上手いタイミングでリセットをかける。(AVRの1ピンとGNDをちょこんとショートさせる。)


自動リセット回路

FT232RLのDTR----0.1uF(104)----RESET
と接続すればArduino IDEからスケッチをアップロードするときに自動リセットがかかる。
(タイミングと運が良ければ。)



参考URL

fuseが168と328で入れ替わっている件、リセット祭の件が地雷です。

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2009年11月01日 12:19
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。