LED18チカをArduino Uno→Pro Mini→ATmega328で作る
みんなArduinoのことを「高い、高い!」と言うのだけれども、Arduinoでの開発の目標をATmega328で作ることにすると安くなるよー、ていうのをやります。
Arduino Unoによる18LEDチカ
現在標準的なArduinoとされているArduino Unoで18個のLEDによるLチカをします。
部品リスト
価格は執筆時点での価格です。基本的に秋月電子通商通信販売で購入できるパーツを選定しています(送料に注意)。大田区から秋葉原に行くと運賃が送料よりも高くなるのでビバ通販、ヤマト運輸バンザイです!
部品名 | 価格(税込) |
---|---|
ブレッドボード EIC-102J ジャンプワイヤー付 | 600 |
ブレッドボード・ジャンパーコード(オス-オス)セット | 220 |
ブレッドボード用マイクロBメスUSBコネクタDIP化キット | 200 |
USBケーブル Aオス-マイクロBオス 1.5m A-microB | 120 |
カーボン抵抗(炭素皮膜抵抗) 1/4W 470Ω (100本入) | 100 |
小型赤色LED BR2222S(200個入) | 200 |
Arduino Uno Rev3 | 2,940 |
------------- | ---- |
計 | 4,380 |
akizukidenshi-ogp-injector.dtpwiki.jp
akizukidenshi-ogp-injector.dtpwiki.jp
akizukidenshi-ogp-injector.dtpwiki.jp
akizukidenshi-ogp-injector.dtpwiki.jp
akizukidenshi-ogp-injector.dtpwiki.jp
akizukidenshi-ogp-injector.dtpwiki.jp
プログラム
const int pins[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, A0, A1, A2, A3, }; void setup() { for ( int i = 0; i < 18; i++ ) { pinMode( pins[i], OUTPUT); } } void loop() { for ( int i = 0; i < 18; i++ ) { digitalWrite( pins[i], HIGH); delay(100); } for ( int i = 0; i < 18; i++ ) { digitalWrite( pins[i], LOW); delay(100); } }
ブレッドボード上での実体配線図
この配線では、電源はブレッドボードに配置してあるMicroUSBから取り、Arduino側には電源をつなぎません。Arduinoの5VピンにUSBのVBUS(5V)、GNDピンにUSBのGNDをつなげてあげることで、Arduinoが動きます。
Arduinoへプログラムを転送する場合は、安全のためブレッドボード側のUSBケーブルはいったん外しましょう。
プログラムを転送してLチカが確認できたら、ArduinoのUSBケーブルを外し、ブレッドボード側のMicroUSBコネクタに電源を供給し、PCが無くてもLチカが動くことを確認できればOKです。
作例
Arduino Unoは持っておらず、その前のバージョンのArudino Duemilanoveで作例となります。
Arduino UnoをArduino Pro Miniに置き換えて18LEDチカ
ブレッドボード上でプロトタイピング(試作品を作ること)するためのArduino Pro Miniで、実際にブレッドボード上でプロトタイピングしてみました。
Arduino Pro Miniは、Arduino Unoなどで使われているMCU、ATmega328の表面実装タイプが使われており、標準的なArduinoで作られたアプリケーションのArduino部分を置き換える用途に最適です。
- 出版社/メーカー: スイッチサイエンス
- メディア: エレクトロニクス
- クリック: 4回
- この商品を含むブログ (1件) を見る
ただし、小型化するために、PCとのUSB通信を担う部分はオミットされていますので、試作中は、別途FTDI USBシリアル変換アダプターなどを使って、プログラムを転送する必要があります。
FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)
- 出版社/メーカー: スイッチサイエンス
- メディア: エレクトロニクス
- この商品を含むブログを見る
アプリケーションとして完成してしまえば、通信アダプターの部分を取り外して、そのまま実用使用してもよいです。
部品リスト
価格は執筆時点での価格です。なお、秋月電子には純正のArduino Pro Mini 5Vが売っていなかったので、スイッチサイエンスからの調達となります。
部品名 | 価格(税込) |
---|---|
ブレッドボード EIC-102J ジャンプワイヤー付 | 600 |
ブレッドボード・ジャンパーコード(オス-オス)セット | 220 |
ブレッドボード用マイクロBメスUSBコネクタDIP化キット | 200 |
USBケーブル Aオス-マイクロBオス 1.5m A-microB | 120 |
カーボン抵抗(炭素皮膜抵抗) 1/4W 470Ω (100本入) | 100 |
小型赤色LED BR2222S(200個入) | 200 |
Arduino Pro Mini 328 5V 16MHz | 1,243 |
FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き) | 1,512 |
------------- | ---- |
計 | 4,195 |
ブレッドボード上での実体配線図
作例
Arduino Pro MiniをATmega328に置き換えて18LEDチカ
Arduinoを使った工作の最終目標の一つとして、ArduinoをATmega328に置き換えてしまうというものがあります。だって、みんな「高い、高い」と言っているArduinoですが、工作ごとに3,000円ぐらいするArduino製品を組み込んでいたら、そりゃあ高いですよね。一方、ArduinoではなくてATmega328を使えば、250円で済んじゃいます。
なお、Pro MiniからATmega328に置き換える場合は、GPIO11ピンから13ピン(SPIで使うピン)の位置が同じ位置になるように置き換えると置き換えがしやすいです。
プログラムの書き込みについて
ATmega328をArduino化してプログラムを書き込む方法は複数ありますが、別のArduinoに書き込み用プログラムを書き込んで、それを使ってATmega328に書き込む方法もあります。
「びんぼうでいいの」に生AVRマイコンを載せたままArduino化(ICSP) - M.C.P.C. (Mamesibori Creation Plus Communication)
なお、ATmega328のArduino化する場合、「8MHz(内部RC発振)」というモードで書き込むと、余計なパーツが必要なくなるのでお勧めです。
部品表
部品名 | 価格(税込) |
---|---|
ブレッドボード EIC-102J ジャンプワイヤー付 | 600 |
ブレッドボード・ジャンパーコード(オス-オス)セット | 220 |
ブレッドボード用マイクロBメスUSBコネクタDIP化キット | 200 |
USBケーブル Aオス-マイクロBオス 1.5m A-microB | 120 |
カーボン抵抗(炭素皮膜抵抗) 1/4W 470Ω (100本入) | 100 |
小型赤色LED BR2222S(200個入) | 200 |
AVRマイコン ATMEGA328P-PU | 250 |
積層セラミックコンデンサー0.1μF10個入2.54mm | 100 |
------------- | ---- |
計 | 1,830 |
※これものすごいマジックが含まれていて、ATmega328を書き込むための機材の値段が入っていないことに注意! でも、ATmega328の書き込みには、Arduino UNO/Arduino Pro MiniなどのArduinoとして動いている製品が利用できます(この過程に進む人は当然持っているはずなんで……)。
ブレッドボード上での実体配線図
ATmega328のDIP版は、28ピンの300milパッケージとなっていて、表面実装パッケージを使っているArduino Pro Miniよりも専有面積は小さい。実はATmega328でArduino Pro Miniの機能のほとんどを持っているのです。では、Arduino Pro Miniの基板上では何をやっているのかといえば、安定した電圧の電源の生成、セラミック発振子によるクロックの提供、リセットスイッチの実装などです。これらをオミットしたり別回路で解決できれば、ATmega328に置き換えることができます。
今回の場合は、リセットスイッチとセラミック発振子をオミット、定電圧電源はUSBコネクタからの定電圧5V電源の供給、となり、置き換えられる条件がそろったことになります。
ATmega328のVCCとGNDの間に配置している積層セラコン0.1μFは、おまじないのバイパスコンデンサ(パスコン)ですが、これがないとノイズで動作が狂ってくることがほんとによく発生するので、兎に角これをやっておくことをお勧めします。
作例
まとめ
- Arduinoのシールドが使えるタイプは、シールドを使ったり作ったりするときに使おう
- ブレッドボード上で試作するときは、ブレッドボード上に載せる用途で作られているArduino Pro Miniを使おう
- 試作してうまく動いたら、ATmega328に置き換えてみよう
番外編
Intel Edison kit Arduinoでもやってみました。
この場合、Intel Edison kit for Arduinoの5Vに外部から電圧を入れても、Edisonは稼働しません!
作例の場合、ブレッドボード側のMicroUSBコネクタを外して、Edison側から給電しています。