茱萸note

電子工作の備忘録と旅行の記録

Arduino AVR マイコン 電子工作

Arduinoもどき

投稿日:2016年3月14日 更新日:

Arduinoは普通に買うと高いので、互換品を作ってしまいます。


目次


Arduino高いお

Mega328Pを積んだArduino Unoですら2,940円します.互換ボードなるものも存在しますが,それでも1,000円超えは当たり前です.

Arduinoを使う利点

楽.それに尽きる.タイマーやUSART等,主要なペリフェラルについては予め関数が用意されています.
例えば,シリアル通信をするプログラムの場合,Arduinoなら以下の様な直感的で簡潔なプログラムで済みます.

void setup() {
    Serial.begin(9600);
}

void loop() {
    if(Serial.available() > 0){
        byte incomingByte = Serial.read();
        Serial.write(incomingByte);
    }
}

正規品を使う利点・欠点

利点

  • ない.

欠点

  • 高いので,逝くと損失額がでかい.
  • DCプラグにつなぐ電源の推奨電圧が7~12V.
  • 余計でありがた迷惑な部品が多い.

Arduino互換物に必要なもの

以下,Mega328Pを使った,水晶発振子不要8MHz駆動のArduino互換物を作っていきます.

  • Mega328P
  • コンデンサ …… パスコンとデカップリングコンデンサの他に,0.1μF(パスコンと同じ値).
  • (任意)抵抗 …… 約10kΩと約1kΩ
  • (任意)ダイオード …… 汎用の適当なもの(1N4148等)で良い.
  • USBシリアル変換モジュール …… DTR線が使えるもの.

下準備

Mega328Pにブートローダーを書き込みます.

  1. Arduino IDEのインストールフォルダのarduino-1.x.x\hardware\arduino\avr\bootloaders\atmegaにあるATmegaBOOT_168_atmega328_pro_8MHz.hexをライターを使って普段と同じように書き込む.
  2. 上位(Low)ヒューズビットを0XDABOOTRSTのチェックを付ける.BOOTSZ1024W_3C00),下位(Low)ヒューズビットを0XE2CKDIVのチェックを外す)にする.

USBシリアル変換モジュールとの接続

右図では,USBシリアル変換モジュールとMega328Pとの接続が示してあります.Mega328P周りの配線(電源やパスコン・デカップリングコンデンサ)はいつも通り行なってください.

Arduinoとして使う

ボードの設定をする

Arduino IDEを開いたら,設定をします.

  1. 「ツール>Board>Arduino Pro or Pro Mini」を選択して下さい.
  2. 「ツール>Processor>ATmega328(3.3V,8MHz)」を選択して下さい.電源が5Vでも「3.3V,8MHz」と書いてある方を選択せねばなりません.
  3. 「ツール>シリアルポート」から適切なポートを選択してください.普通『COM3』辺りでしょう.

以上が済んだら,ウィンドウ下部に「Arduino Pro or Pro Mini,ATmega328(3.3V,8MHz)on COM?」と記載されていることを確認して下さい.

ピンの対応

Mega328PのArduinoとしての各ピンの役割は,右図の通りです.例えば,14番ピンの「digital pin 8」を出力にしたいのであれば,pinMode(8, OUTPUT);とすれば良いです.

トラブルシューティング

書き込みができない

stk500_getsync(): not in sync: resp=0x00等のエラー・メッセージが出た場合,以下の可能性があります.

接続が誤っている

TXDとRXDが逆になってはいないか,0.1μFコンデンサの接続は正しいか,ダイオード(任意)の向きは正しいか確認して下さい.

ボードの設定が正しくない

「Arduino Pro or Pro Mini,ATmega328(3.3V,8MHz)on COM?」とウィンドウ下部に表示されているか確認し,間違っていたら再び正しく設定してください.他の設定では動きません.

リセット周りが不安定

リセットピンに繋がっている0.1μFコンデンサの影響で書き込みができないことがあります.コンデンサを短絡させて放電し,再度トライしてください.リセットピン周りのダイオード・抵抗を配線していない場合,しばしばこの現象に見舞われるようです.

ヒューズ設定が正しくない

BOOTRSTのチェックが付いているか,BOOTSZ1024W_3C00になっているか,CKDIVのチェックが外れているか確認して下さい.ヒューズビット値を数値で書き入れた時,下位と上位を逆にしている可能性もあります.

いろいろなArduino

Arduino Mega

Mega2560を積んだモデル.ピン数がとても多く,サーボを大量に使ったり,とにかく沢山ピンが欲しい時に重宝する.Mega2560にはDipパッケージが存在しないので,配線の手間が省けるという意味でもArduino Megaは必要な場合には大いに購入に値する.

Arduino Due

AtmelのARMマイコンであるATSAM3X8Eを積んだ,高性能モデル.クロック周波数80MHz位で動く.8ビットマイコンに比べて圧倒的性能.配線の手間は勿論だが,高機能になればなるほど煩雑になりがちなプログラムもArduinoである以上非常に簡潔に済む.ただし,マイコンの動作電圧が3.3Vであるので,ピンに5Vとか加えた段階で御臨終する.それなりにお高いので取り扱いは慎重に……

Arduino Yun

Linuxチップ搭載.強そう

Intel Edison

Arduinoではないが,名前の通りIntelのAtomプロセッサーを積んだモジュール.遂に電子工作で気軽にIntel CPUが使える時代が来た.

-電子工作
-, , ,


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Alexa で ESP8266 を操作する方法【Alexa×Arduino 検討】

Alexa を搭載した Amazon Echo 等を使って ESP8266(Arduino)を操作する方法を検討します。

C言語でのマイコンプログラミングのお作法

マイコンのプログラムをC言語で書く際に心がけるべきこと、知っておくべき知識について述べます。

Raspberry Pi をスマートリモコン化! Alexa で部屋の照明を操作する【Alexa×Raspberry Pi その2】

Raspberry Pi に赤外線LED・赤外線受光モジュールを付けて、Raspberry Pi を学習リモコン・スマートリモコン化します。そして、Raspberry Pi を AWS IoT 連携させて Alexa で部屋の照明を操作します。

権限のない環境でvirtualenvを入れる

sudoが使えない、root権限のない環境でvirtualenvを入れます。

STM32F042でAVRプログラマを作る

秋月で販売しているSTM32F042K6T6でAVRプログラマを作ります.