ATtiny202 が小さくて安くて良い!ということで物自体の購入からLチカまでやってみました。ArduinoIみたいにつかえるので便利ですよ。ガンプラに組み込んでLED光らせたりとか楽しそうなので、次の記事でガンプラ光らせます!
ATtiny202とは?
アトメル社が製造していたマイコンで、現在はマイクロチップ・テクノロジー社が買収して製造販売しています。
もっと詳しいお話は、ネットにたくさんあるので割愛しますが私は以下の点が気に入って使っています。
- 安い
- 小さい
- Arduino IDEでコーディングできる
- Codeでもコーディングできる(PlatformIO)
- AVRシリーズとしての情報が多い
なんといってもその価格の安さが素晴らしいです。2024/07現在一つ70円で手に入り、小さくてガンプラや鉄道模型、ハンドメイド作品なんかに組み込むのが簡単です。
さすがに低価格なため、メモリーが少ないので大きなライブラリを使ったコーディングには向きませんが機能を絞って実装すればそれなりに満足できるものが出来上がると思います。
公式サイト
https://www.microchip.com/en-us/product/attiny202
Lチカに必要な物
- Attiny202
- ブレイクアウト基板
- LED
- 抵抗
- 電源(電池)
- ブレッドボード
- ジャンプワイヤー
- シリアル変換モジュールとUSBケーブル
- PCかMac等々での開発環境
必要な情報
公式Githubのに概ね必要な情報が記載されていますが、全部読むのは面倒なので必要な箇所だけかいつまんで読めば良いかと思います。必要であればネットで検索すればでてきます。
ATtiny202のデータシート
http://ww1.microchip.com/downloads/en/DeviceDoc/ATtiny202-402-AVR-MCU-with-Core-Independent-Peripherals_and-picoPower-40001969A.pdf
入手方法
Attiny202はamazonで購入するのが難しそうです。おすすめは秋葉原の秋月電子!1つ70円!
もちろんネットでも買えますし、他の電子工作系のネットネットショップでも購入できます。
マルツオンラインでも購入可能ですが少々お高いかもしれません。
基板にすでに取り付けてあって便利な商品も秋月電子で販売されています!これ便利 百円なんでお得です
ハンダごてはこれが便利です、一時期は入手も困難なハンダごてでしたが供給も安定したようです。
ハンダ台は必須です。これないと作業中にはんだごての置き場にこまってしまいます。とはいいつつ厚めの木の板に釘を2本打ってその間に針金を渡して自作というのもありですね。以下のリンクの商品は私も使っています。はんだこての掃除もできて重さもあって便利です。
ハンダ自体はできれば直径0.8mmと0.6mmがあればいいですね。商品リンクでは巻いてる商品ですが、ペン型のものが使いやすいと思います。
はんだ用ブローケースという入れ物に入れ替えるのもいいですね。(昨今、エコ商品としてブローケースに入れての販売ではなく、詰め替え用ハンダのように販売しているパターンが多いですね。)
ピンアサイン
ピンアサインは本家のGithubから持ってきました。重要なのはVCC、GND、6番目のUPDIですね。コーディングの時はオレンジ色の番号かPA〜で指定していきます。
Attiny202への書き込み準備
自分がプログラムの書き込み用に使っているのはFTDIのFT232RQ実装しているシリアル変換モジュールです。
秋月電子でも販売しています。一千円は越えていますがAttiny202だけではなく他のマイコンでも使えるしすぐ壊れるものですので一つ買っておくといいでしょう。
アマゾンならこういうのでもいいでしょう。
回路組み立て UPDIの場合
ATtiny202はUPDI接続で電源2本と通信線1本の計3本繋げるだけで書き込みができる簡単仕様なのでシリアル変換モジュールにそれをつなげて書き込みできます。
以下に資料は示しますが、frezingで作成した回路図そのままで組み立てれば問題ないと思われます。
自分は書き込み用の自作ボードで書き込んでいますが、ATtiny202素のままでSOP8ソケットを使ってのボードとATtiny202ブレイクアウト基板にピンをつけたものに書き込むボードの二種類を準備しておきました。
というのも、ATtiny202の小ささを活かして強度等は落ちますがATtiny202の足に直接半田付けして回路作成?立体ハンダ?したかったのでSOP8ソケット版も作ってみました。
関連資料
USB Serial Adapter
With internal 1-2k resistor on TX
This is the case in 90% of USB serial adapters.
Ideal:
internal resistor in adapter: 2.2k >= Ra
-------------------- To Target device
DTR| __________________
internal Rx |--------------,------------------| UPDI---\/\/---------->
Tx---/\/\/\---Tx |-------|<|---' .--------| Gnd 470 ohm (100 ~ 1k)
resistor Vcc|---------------------------------| Vcc
typ 1-2k CTS| .` |__________________
Gnd|--------------------' If you make a 3-pin connector, use this pinout
--------------------
or
-------------------- To Target device
DTR| __________________
internal Rx |--------------,------------------| UPDI----------------->
Tx---/\/\/\---Tx |-------|<|---' .--------| Gnd
resistor Vcc|---------------------------------| Vcc
typ 1-2k CTS| .` |__________________
Gnd|--------------------'
--------------------
回路図 シリアル変換モジュール- ATtiny202
シリアル変換モジュール側の4端子とATtiny202の3端子を繋げるだけで書き込みできます。
自作DIP版・直付用書き込みボード
それぞれのボード左上のソケットにシリアル変換モジュールを差し込んで、下のピンソケット・SOP8ソケットにATtiny202をセットしてArduino IDEからブートローダーやプログラムを書き込めるようにするボードを自作しておきました。
ブレッドボードで再現してもOKです。
回路組み立て jtag2updiの場合
加筆中
Arduino IDEでAttiny202を使えるようにする
Arduino IDEでATtiny202をプログラミングするために以下の手順を踏みますが、他のマイコン(例ESP32等々)と同じ手順で行います。
最新のバージョンでダンロードしましょう、後述の説明は古いバージョンで記載していますが最新バージョンでも大きな差はないでしょう。
Setting→追加のボードマネージャーURL(右の小さなボタン)
表示されたウィンドウの最下部行に以下のURLを追加
http://drazzy.com/package_drazzy.com_index.json
ツール→ボード→ボードマネージャを選ぶ
ボードマネージャの入力蘭に『megatiny』と入力し表示されるmegaTinyCoreの最新バージョンを選択してインストールボタンを押す
ツール→ボードからATtiny4112/402/212/202を選択
ChipからATtiny202を選択
シリアルポートから接続に使うシリアルポートを選択する
接続に使うシリアル変換モジュール名が出ている場合が多いです
書き込み用のボードにシリアル変換モジュールとATtiny202をセットする
最後にブートローダーを書き込むを選択
画面下部分に赤字で作業進行状況が流れるので「ブートローダーの書き込みが完了しました。」の表示を確認する。表示されずエラーになったらSTEP4までのいずれかを再確認する。完了すればプログラムの書き込みも可能になっています。
プログラミングと書き込み
ファイル→スケッチ例→Blinkを選択します
“LED_BUILTIN”の単語の箇所三箇所を1に書き換えます
試しに、スケッチ→検証・コンパイルを選択して コンパイルエラーがないことを確認します
書き込み機に接続していることを確認して、スケッチ→マイコンボードに書き込む を選択します
以下のサンプルコードの様に書き換えます。
/*
Blink
Turns an LED on for one second, then off for one second, repeatedly.
Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
the correct LED pin independent of which board is used.
If you want to know what pin the on-board LED is connected to on your Arduino
model, check the Technical Specs of your board at:
https://www.arduino.cc/en/Main/Products
modified 8 May 2014
by Scott Fitzgerald
modified 2 Sep 2016
by Arturo Guadalupi
modified 8 Sep 2016
by Colby Newman
This example code is in the public domain.
https://www.arduino.cc/en/Tutorial/BuiltInExamples/Blink
*/
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(1, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(1, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(1, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
ボードへの書き込みが完了しました。と表示されれば成功です。失敗した場合は接続やコードの再確認をしてください。
結果
下の回路図のように接続します
以下の様にLEDが点滅すれば成功です。おつかれさまでした。
コメント