2011/08/16

自作Sanguino

自作Arduinoの兄貴分?にあたる、Sanguinoを作ってみました。

sanguino.cc

Sanguinoとは@マイクロファン ラボ

SanguinoとArduinoの違いは、下記の通りです
(公式のものを翻訳しました)

・atmega644Pを使用しています。
・合計で32本のIOピンがあります。
・8本のアナログ入力ピンがあります。
・6本のPWM対応ピンがあります。
・64KBのフラッシュメモリーを利用できます。
・4KBのRAMがあります。
・2KBのEEPROMがあります。
・ブレッドボードで作れます。
・100%オープンソースです。

ブレッドボードにICや水晶振動子を取り付けた後、ブートローダーを書き込もうとしましたが、AVR ISP MkIIがUbuntuで認識されていないようです。

いろいろと探してみたところ、ここに解決策がありました。

AVR ISP MkIIをUbuntu11.04で使用する方法;
1./etc/udev/avrisp.rules を作成します。
2.avrisp.rules内に、以下のように記載します。

SUBSYSTEM!="usb_device", ACTION!="add", GOTO="avrisp_end"

# Atmel Corp. JTAG ICE mkII
ATTR{idVendor}=="03eb", SYSFS{idProduct}=="2103", MODE="660", GROUP="dialout"
# Atmel Corp. AVRISP mkII
ATTR{idVendor}=="03eb", SYSFS{idProduct}=="2104", MODE="660", GROUP="dialout"
# Atmel Corp. Dragon
ATTR{idVendor}=="03eb", SYSFS{idProduct}=="2107", MODE="660", GROUP="dialout"


LABEL="avrisp_end"


3.保存した後は、下記コマンドを実行します。

cd /etc/udev/rules.d
sudo ln ../avrisp.rules 60-avrisp.rules
groups
Restart udev
sudo restart service udev


4.念のため再起動しておきます。



これでAVR ISP MkIIが使えるようになったので、次はブートローダーの書き込みです。
Burning the Sanguino Bootloader@replapwiki

上記のサイトにあるように、下記コマンドを実行すると書き込みができます。


wget http://sanguino.googlecode.com/files/Sanguino-0018r1_1_4.zip
unzip Sanguino*zip
sudo avrdude -patmega644P -cavrispmkII -Pusb -U flash:w:Sanguino/bootloaders/atmega644p/ATmegaBOOT_644P.hex


Sanguinoのブートローダーが書き込めたので、次にArduinoのソフトのほうでスケッチを書き込めるようにします。

参考にしたのは下記ページ。
Software For Linux@sanguino.cc

1.googleCodeからSanguinoのファイルをダウンロードして展開します。
2.ArduinoのHardwareフォルダに放り込みます。(私はapt-getからArduinoをインストールしたので、/usr/share/arduino/hardware/ に放り込みました)
3.Ubuntuの場合は、board.txtを若干修正する必要があります。

     sanguino.upload=stk500
    を
    sanguino.upload=arduino

そのあと、Arduinoを再起動すればOKです。

Sanguino


今はまだそんなにIOピンが必要な訳ではないんですが、とりあえず作ってみました。
Arduino用のラベルが便利だったので、Sanguino用のラベルも作りました。
ラベルは別館に保存してますので、ご自由にどうぞ。

ではまた。


2 件のコメント:

  1. 初めて質問させていただきます
    久といいます
    SanguinoにはAtm1284を5V16MHzにて動作させています
    IDEは1.0.3で当方のPCはWIN8.1です
    さて、文字を大きくさせて表示のために、グラフィックLCDを
    SPIで使用しました。
    データを収集するために、SDカード(5V仕様で基板のなかで
    3.3Vに落としています)を取り付けたところ、カードが、
    動きません
    SDカードの配線は下記の通りです
    Sanguino グラフィックLCD Sanguino
    CS D2(3) SCL D7(8)
    SCK D7(8) SI D5(6)
    MOSI D5(6) VDD 3.3V
    MISO D6(7) VSS GND
    VCC 5V LEDA 200Ω 3.3V
    GND GND /CS D4(5)
    /RST D3(4)
    D/I D1(2)

    ( )内はピン番号を表します
    グラフィックLCDはaitendoのCH1284 SPIタイプのものです
    グラフィックLCDを全て外して、サンプルプログラムの
    CardInfoを実行しましたがカードが分からない旨の
    コメントが表示されます
    海外のFAQを見てみましたが、配線については何もないので
    チンプンカンプン(最も機械訳ですが)でした
    基板の目的は
    リナックスのINA226PRCを繋いで電流、電圧、および
    稼働時間(RTC8564)を計測しそのデータをSDカードに保存したいと
    思っています
    SDカードのところがうまくいかないのでよろしくお願いします
    UNOのサンプルプログラムではSDカードを動かすときは
    pinMode(10, OUTPUT);
    を入れるようにありますが、これはSanguinoではどうすれば
    良いのでしょうか

    動かす方法有ればご教授ください

    返信削除
  2. 久です
    前の問い合わせで抜けていました

    #include
    //#include // 温度センサー(ADT7410)のテスト
    #include
    #include
    #include

    //#define SENSOR_ADRS 0x49 // 温度センサーデバイスのI2Cアドレス
    //
    #define TSP400_baud_rate 9600 // Serial
    #define U8GLIB_CS 4 // U8GLIBのCS
    #define SD_CS 2 // SDカードのCS

    U8GLIB_NHD_C12864 u8g(7, 5, 4, 1, 3); // SPI Com: SCK = 7, MOSI = 5, CS = 4, A0 = 1, RST = 3

    でセットしコンパイルをしマイコンに書き込むと
     avrdude done. Thank you.
     
    と表示されますが、PCの画面上には
    Card failed, or not present
    (カードに障害があるか、存在しない)
    と表示されます
    しかし、SDカードに書き込んである他のデータは
    リーダーで読込表示は出来ます

    すみません。同上エラーは表示されますがSDカードには
    データが書き込まれていましたが、今度はLCDに文字が
    表示されなくなりました

    SDの取り外しに電源を落としただけなのですが??
    書き込みをしているようなので
    pinMode(SD_CS, OUTPUT) ; // 出力に
    でいいのですかね
    SD取り外しに専用のプログラムを作成してみますが
    どなたか同様の事象が出た方はいらっしゃいませんでしょうか
    なおブレッドボードで組んでいます

    自己解決とは行きませんがSDカードのプログラムを実行させると
    LCDは表示しなくなることが分かりました
    SPIでCSが違えば動くと思ったのですが・・・
    この件は取り下げます お忙しいなか申し訳ありませんでした

    返信削除