6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AVRマイコン ATtiny13aとボタン電池でLチカ

Last updated at Posted at 2021-06-10

はじめに

  • 前からずっと気になってたが、いつも在庫切れだったATtiny13Aをゲットした。
    • Raspberry Pi、Arduino UNO/Nano、ESP8266/32、M5Stackと一通り使い、気になっていたのがこの8ピンの小さいマイコン。
    • 普段Arduinoとして使ってるのは、ATmega(ATmega328とか)で、こっちはちっちゃくて省電力なATtiny。
    • ボタン電池で駆動でき、Arduinoでも開発できると言うことなので、とりあえずLチカまでやってみた。
  • 最終的にこんなにシンプルな構成で回路が組めたので、忘れない内にメモしておく。

IMG_3561D.jpeg

ATtiny13A-PU

IMG_3564.jpeg

  • Atmel社製の1個85円の超安価な8bitマイコン。
    • 電源電圧:1.8~5.5V。
    • GPIO:6個
    • ADC, PWMが使える。
    • 現在、秋月で1個85円
  • CR2032のボタン電池で動かせるので、用途を絞ればかなりコンパクトに作れる。
  • AVRはPICと比較されるみたいだが、PICみたいに専用のライターが無くても、Arduinoをライターにして書き込むことが出来る。
    • (ちなみに、PICはまだ使った事がない。。。)

開発環境

  • MacOSX Catalina
  • Arduino IDE 1.8.15

書き込み環境の構築

  • 最初にArduinoを書込みデバイスにする。
    • 今回はどの家庭にも必ず1つはあるArduino Unoを使用する。

IMG_3562D.jpeg

  • Arduino IDEを起動
    • ボードはArduino Unoを選択。

スクリーンショット 2021-06-09 23.29.22.png

  • スケッチ例 --> 11. ArduinoISP --> ArduinoISPを開いて書き込む。
    • これで手持ちのArduino Unoがライターになった。

スクリーンショット 2021-06-09 23.28.21.png

これでライターの準備は完了。
次はATTiny13のプログラムを用意していく。

ATTiny13用のボード設定

ボードマネージャへの追加

  • 引き続き、Arduino IDEで以下のURLを「追加のボードマネージャのURL」に追加。
    • https://mcudude.github.io/MicroCore/package_MCUdude_MicroCore_index.json
  • ここで注意。
    • 最初、ググって見つけた別のライブラリを使ったところ、古いArduinoでしか使えない物だったらしく、一応書き込めるがdelay();が指定した時間以上の動きだったり、期待通りに動かなかった。
    • こっちのライブラリは素直で特に問題も無く使用できたので、Arduino IDE 1.8.15あたりを使う場合はこちらが良い。

スクリーンショット 2021-06-09 23.17.09.png

  • ツール -> ボード --> ボードマネージャを開き、attinyで検索。
    • MicroCoreが出てくるのでこれをインストールする。

スクリーンショット 2021-06-09 23.20.14.png

  • ツール -> ボード --> MicroCore --> ATtiny13を選択。

スクリーンショット 2021-06-09 23.21.25.png

配線

スクリーンショット 2021-06-09 20.48.32.png

Arduinoとの接続はこんな感じ。

Arduino Uno ATtiny13
5V 8:VCC
GND 4:GND
D10 1:PB5
D11 5:PB0
D12 6:PB1
D13 7:PB2

また、ATtiny13の1,4ピンに10uFのコンデンサを入れておく。

IMG_3563D.jpeg

コード

blink.c
#define PIN 3
#define DTIME 1000
#define DTIME2 100

void setup() {
  pinMode(PIN, OUTPUT);
}

void loop() {
  digitalWrite(PIN, HIGH);
  delay(DTIME);
  digitalWrite(PIN, LOW);
  delay(DTIME);
  digitalWrite(PIN, HIGH);
  delay(DTIME2);
  digitalWrite(PIN, LOW);
  delay(DTIME2);
  digitalWrite(PIN, HIGH);
  delay(DTIME2);
  digitalWrite(PIN, LOW);
  delay(DTIME2);
  digitalWrite(PIN, HIGH);
  delay(DTIME2);
  digitalWrite(PIN, LOW);
  delay(DTIME);
}

書込み

  • ツール --> 書込装置 -> Arduino as ISPを選択。
    • AVR ISPじゃないので注意。
  • 書き込みは1秒前後でサクッと終わる。
    • 自分の場合、3回中、2回は書き込みに失敗するので、何度かリトライする必要がある。
    • もしかしてRESET/GNDに電解コンデンサ挟んでるせいかも?

スクリーンショット 2021-06-09 23.23.01.png

動作確認(Lチカ)

  • PB3/GNDに抵抗とLEDをつないでLチカ。
  • 電源はCR2032を使用。

まとめ

  • 初めて使ったけど、ATtinyお手軽コンパクトでなかなか良い。
    • 用途を限定すれば、ボタン電池で小さいおもちゃが作れちゃう。
    • PWMとかADCとか使えるので、後で試したい。
  • 実はこのATtiny、米粒AVRと呼ばれるATtiny10なんてのがあるらしい。
    • 次回秋月で買い物する時はぜひこれ買っとこう。

参考資料

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?