11月25日発売 書籍『Arduinoと3Dプリンタでロボットを作ろう』を出させて頂きました!

ATtiny2313/ATtiny4313をArduinoとして動かしてみる!

Arduinoで使われているマイコンチップATmega328PはAtmel(現Microchip)の8ビットAVRマイコンです。
Atmel(アトメル)のAVRマイコンには、ATtinyシリーズと呼ばれる有名なチップもあります。

電子工作を始めた当初、ATtinyを使った多くのプロジェクトを見て興味を持ちメジャーなチップをいくつか入手していたのですが・・・最近になり基板製作を行うようになった事から製作物にATtinyを使うようになりました。

ATtinyシリーズのチップはArduinoと同じAVRマイコンとなり、Arduinoと同じ開発環境(Arduino IDE)を使うことができブートローダーやスケッチを書き込むことによりArduinoとして動作させることが出来ます。

そしてATtinyは非常に多くのチップがリリースされています。
メジャーなもので言えば、8ピンタイプのチップではATtiny45やATtiny85、また14ピンタイプとなるATtiny44やATtiny84などはよく使われているのを見かけます。

ATtiny45やATtiny85は使えるI/O端子の数が6本しかなくArduinoと比べると少し物足りないような気がしますが、Arduinoスケッチを書き込むことによりこのようなミニゲーム機を作ることも出来ます。
8ピンしかない小さなチップですが、Arduinoの開発環境を使いArduinoスケッチを動かすことが出来るのは非常に面白いですね!

【電子工作】ミニAVRマイコンATtiny85で動かすミニゲーム機『Tiny Joypad』互換ボードを作ってみました!【JLCPCB】

またATtiny44やATtiny84では14ピンタイプのチップとなり使えるI/O端子の数が最大12本に増えています。
I2CやSPIデバイスと接続してもまだ使えるI/O端子が残るので、このようなキーホルダーサイズの無線コントローラーの製作も考えています。

ATtiny24/ATtiny44/ATtiny84をArduinoとして動かす基本的な方法!

そして今回は、20ピンタイプとなり使えるI/O端子がさらに増え最大18本となっているATtiny2313ATtiny4313をArduinoとして使う基本的な方法を見ていきたいと思います。

ATtiny2313/4313をArduinoとして動かす基本的な方法!

こちらがATtiny2313です。
20ピンタイプのチップとなり使えるI/O端子の数は最大18本となっています。
ATtiny4313は手元になかったのですが、メモリサイズのみが異なるのでArduinoとして動かす際の手順はATtiny2313と同様となります。(データシート参照)

他の8ピンや14ピンタイプのチップと比べると大きく使えるI/O端子は多くなりますが、アナログ端子(ADC)が搭載されていないなど少し仕様が異なります。

ATtiny2313/ATtiny4313 スペック&ピンアウト

ATtiny2313/ATtiny4313のピン配列を見ておきます。
チップを駆動する電源端子(VCC/GND)を除き最大18本のI/O端子が使えます。

参考 ATtiny2313A/ATtiny4313 DatasheetMicrochip

Arduinoとしてスケッチを書き込み動かす際に分かりやすいようにまとめると、ATtiny2313/ATtiny4313のピンアウトはこのようになります。

ATtiny2313/ATtiny4313はメモリサイズが異なる以外、スペックや仕様はほぼ同じです。
8ピンタイプのATtiny45/ATtiny85、また14ピンタイプのATtiny44/ATtiny84ではアナログ端子(ADC)も使えましたが、20ピンタイプのATtiny2313/ATtiny4313ではADC機能は搭載されていません。

他のATtinyチップに関してはこちらの記事も参考にして下さい!

ミニAVRマイコン『ATtiny85』にブートローダーを書き込みArduinoとして使えるようにしてみる!ATtiny85の基本的な使い方!
ATtiny24/ATtiny44/ATtiny84をArduinoとして動かす基本的な方法!

簡単に仕様をまとめておきます。

ATtiny2313A-20PU
動作電圧DC1.8~5.5V(8MHz動作時2.7V~)
I/O端子最大18本
外部割り込み18
ADCなし
タイマ2ch(8bit×1/16bit×1)
PWM出力4
クロック(インターナル)最大8MHz
外部クロック最大20MHz
Flash Memory(プログラム)2kB
EEPROM128B
SRAM128B
ATtiny4313-PU
動作電圧DC1.8~5.5V(8MHz動作時2.7V~)
I/O端子最大18本
外部割り込み18
ADCなし
タイマ2ch(8bit×1/16bit×1)
PWM出力4
クロック(インターナル)最大8MHz
Flash Memory(プログラム)4kB
EEPROM256B
SRAM256B

ATtinyシリーズのチップにArduinoスケッチを書き込み動かす場合、書き込み装置(ライタ/プログラマ)が必要となります。

USBaspのようなAVRライタがあれば便利ですが、ArduinoボードをAVRプログラマとして機能させることも出来ます。
こちらではArduinoボードを書き込み装置として使う方法で進めていきます。

【電子工作】Arduino(AVRマイコン)のブートローダー書き込みにUSBaspを使ってみる!

Arduinoを書き込み装置として使う準備

ATtiny2313/ATtiny4313のピンアウトの確認ができました。

ATtinyシリーズのチップはISPによる書き込みに対応しているので、Arduinoボードを経由してブートローダーやスケッチを書き込むことが出来ます。
ArduinoをATtiny2313やATtiny4313の書き込み装置として機能させるというものです。

Arduinoを書き込み装置として機能させるための以下準備が必要となります。

Arduinoを書き込み装置として使う準備
  1. ArduinoボードにArduinoISPスケッチを書き込む
  2. ATtinyチップに対応したボードパッケージのインストール

①ArduinoボードにArduinoISPスケッチを書き込む

Arduinoを書込装置(プログラマ)として機能させ、このArduinoボードを経由して各種ATtinyチップにブートローダーやスケッチを書き込む事が出来るようにします。
こちらではArduino Unoを使って行っていきます。

Arduinoを書き込み装置として使う場合、[ArduinoISP]というスケッチを書き込みます。
Arduino IDEの[ファイル]→[スケッチ例]→[11.ArduinoISP]にある[ArduinoISP]を開きます。

このスケッチを書込装置として使うArduinoボードに通常の手順で書き込みます!

これで書き込まれたArduinoボードはAVRライタとして機能します。
ATtiny2313やATtiny4313に限らず接続した各種ATtinyチップにブートローダーやスケッチの書き込みが行えるようになります。

②ATtinyチップに対応したボードパッケージのインストール

次に各種ATtinyシリーズのチップに対応したボードパッケージのインストールです。

Arduino IDEの[環境設定(Preferences…)]から[追加のボードマネージャのURL]に以下URLを追加します。

他のボードマネージャのURLが記載されている場合は新たな行に追加して下さい!

http://drazzy.com/package_drazzy.com_index.json

次に[ツール]→[ボード]→[ボードマネージャ…]に進みます。

[attiny]で検索するといくつかボードパッケージが出てきますが、[ATTinyCore by Spence Konde]を選択しこれをインストールします。
これで各種ATtinyチップにスケッチのコンパイル&書き込みが行えるようになります。

ボードパッケージの内容を確認しておきます。
[ツール]→[ボード]へと進むと先程はなかった[ATtinyCore]という項目が追加されています。

この中にある各種ATtinyシリーズのチップを選択する事により、コンパイル&スケッチの書き込みが行えます。
これで各種ATtinyチップをArduino IDEで扱う準備ができました。

書き込みの際の接続

Arduinoをプログラマ(書込装置)として使う準備が出来ました。
それではATtiny2313/ATtiny4313にスケッチを書き込み動作させてみたいと思います。

ブートローダーやスケッチ書き込みの際はSPI端子(MOSI/MISO/SCK)およびRESET端子、電源端子(VCC/GND)が使われます。
ATtiny2313/ATtiny4313ではこの端子になります。

MEMO
ピン数の異なる他のATtinyチップでは端子の位置が異なってきますが、Arduinoとの接続および以下書き込み手順は同じです!

Arduino UnoのSPI端子は、D11(MOSI)/D12(MISO)/D13(SCK)となります。
またリセットをかけるためのSS(Slave Select)はD10端子を使います。
これら端子を対応したATtinyチップの端子に接続するだけです。

MEMO
他のArduinoボードを使うことも出来ますが、ArduinoはボードによってSPI端子が決まっているので確認して下さい。

Arduinoを書き込み装置として使う場合の接続はこのようになります。

Arduino UnoATtiny2313/ATtiny4313
5VVCC(20番ピン)
GNDGND(10番ピン)
D10RESET(1番ピン)
D11MOSI(17番ピン)
D12MISO(18番ピン)
D13SCK(19番ピン)

MEMO
上記接続図ではArduinoのRESET-GND間に10μF程度の電解コンデンサを入れています。
書き込みがうまく出来ない場合や書き込みが安定しない時は入れて下さい!

ブートローダーの書き込み

まずブートローダーの書き込みです。
ATtiny2313/ATtiny4313の動作にはブートローダーは必要ありませんが、動作速度(クロック周波数)をArduino IDEのデフォルト設定(8MHz)にするために、初めて使う際に1度だけ行います!

MEMO
1MHzで動作させたい場合は必要ありません!

ATtinyチップは初期状態で1MHzでの動作になっていますが、ここで行うブートローダーの書き込み作業を行うことにより8MHz動作に変更することが出来ます。

MEMO
これはATtinyチップに実際にブートローダーを書き込むわけではなく、ヒューズビット(クロック周波数などの各種設定)を変更するために行います。

それではブートローダーを書き込みます。
今回ATtiny2313を使いますが、ATtiny4313でも手順は同じです。

ボード設定等はこのようになります。
ボード設定は[ATtiny2313(a)/4314(No bootloader)]、クロック周波数[8MHz(internal)]を選択。
ArduinoISPを書き込んだArduinoボードを経由して行うので、シリアルポートは[Arduino Uno]、そして書込装置は[Arduino as ISP]を選択します。

これでArduino IDEの設定は完了です。
この設定は次の項目のスケッチを書き込む際も同様です!

あとは[ブートローダを書き込む]を選択すれば、ブートローダーの書き込み(ヒューズビットが変更され動作周波数が8MHzに)が行われます。
[ブートローダの書き込みが完了しました]と表示されれば完了です。

スケッチの書き込み

それではスケッチを書き込み実際に動かしてみます。
ATtiny2313/4313の4番ピン(D2)に接続したLEDを点滅させるこちらのLチカスケッチを書き込んでみます。

スケッチ書き込みの際のArduino IDEの設定および接続は先程のブートローダーを書き込んだ時と同じです。

スケッチの書き込みには[スケッチ]→[書込装置を使って書き込む]を使います。

スケッチを書き込みATtiny2313/4313チップの4番ピン(D2)に接続したLEDが1秒間隔で点滅すれば成功です。

ATtiny2313/ATtiny4313を使った作例

以前Arduinoを使った無線コントローラーを作ったのですが、これがなかなか便利で面白く・・・

【電子工作】Arduinoを使った無線コントローラー(送信機)製作ノート①!KiCadの基板設計から基板発注(JLCPCB)までの話(nRF24L01)

機能を限定したキーホルダーサイズのミニ無線コントローラーの製作も考えています。

SPI接続の無線モジュールでI/O端子を5本、また6個のスイッチをプラスすると12本のI/O端子が使えるATtiny44やATtiny84、さらに付加機能を追加するなら最大18本のI/O端子が使えるATtiny2313やATtiny4313といった構成になりそうです。

プログラム容量(フラッシュメモリー)やSRAMの容量はArduinoと比べると少ないためライブラリの使用など制限を受ける場面も出てくるかもしれませんが、Arduinoほどのスペックは必要なく小型(小規模な回路)に収めたい時などにATtinyシリーズのチップは便利に使うことが出来そうですね!

このようにATtinyシリーズのチップは開発環境にArduino IDEが使えArduinoスケッチを動かすことが出来るので、普段Arduinoを使った電子工作をやられている方はアイデア次第で便利に使える場面も多いと思います!

書き込み基板を自作すると便利です!

Arduinoスケッチを書き込み動作確認が出来ました。

しかし本記事でご紹介したように、開発やテスト段階ではスケッチを書き込む際に毎回ブレッドボードを使いArduinoと接続するのは結構面倒な作業となります。

接続自体はSPI端子およびRESET・電源端子をArduinoの対応した端子と接続するだけと簡単なため、ユニバーサル基板などを使い書き込み用のボードを自作しておくと便利だと思います!

8ピン・14ピン・20ピンの各種ATTinyチップの書き込みで使えるこのようなArduinoシールド基板を作ってみたのですが、かなり便利に使えます!

ATtinyチップのピン数により書き込みの際に使う各端子の位置が異なってきますが、よく使うチップに対応したものや各種ATtinyチップに使えるこのような書き込みボードは簡単なので作っておくと便利だと思います。

【ATtiny】各種ATtinyチップにブートローダーやスケッチを書き込む際に使えるArduinoシールド基板の製作!

Arduino Uno形状のシールド基板(ユニバーサル基板)も販売されているので、上記のようなArduinoISPを使った書き込みシールドは簡単に作れると思います!

またArduinoにはプロトタイプシールドという小規模な回路が組めるシールドが販売されています。
これにICソケットを取り付けて製作されるのもいいかと思います。

【Arduino入門編⑬】テスト環境に便利!Arduino拡張ボード(シールド)プロトタイプシールドを使ってみる!

最後に!

電子工作を始めた頃に多くのプロジェクトでATtinyチップが使われているのを見て各種チップを入手して持ってはいたのですが・・・

Arduinoの扱いに少し慣れてくると使ってみるのは面白く、ArduinoやAVRマイコンの学習用としても最適でアイデア次第で便利に使えそうですね!

コメントを残す