{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"オリジナルの作成:2015/12/20\n",
"\n",
"** trinketloaderのブートローダーを、個人で利用するのは問題ありませんが、このブートローダを商品に利用することはできませんので、ご注意ください **"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 16-ワンコイン・マイコンlbedGemma"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## lbedGemmaボード誕生\n",
"8pinoに触発されて、ワンコインで作れるArduino(lbedGemma)を作ってみました。 \n",
"\n",
"### 部品表\n",
"すべての部品は、 秋月 から購入できます。\n",
"\n",
" | 部品名\t | 数量\t | 通販コード\t | 価格\t | 備考 | \n",
" |---|---|---|---|---|\n",
" | ATtiny85\t | 1\t | I-09573\t | 160円\t | | \n",
" | ブレッドボード BB-801\t | 1\t | P-05294\t | 200円\t | P-00315でもよい | \n",
" | ミニBメスUSBコネクタ\t | 1\t | K-05258\t | 200円\t | | \n",
" | 赤色LED\t | 1\t | I-00562\t | 350円\t | 100個入り | \n",
" | 抵抗 75Ω\t | 2\t | R-25750\t | 100円\t | 100個入り | \n",
" | 抵抗 1KΩ\t | 2\t | R-25102\t | 100円\t | 100個入り | \n",
" | ジャンパーワイヤセット\t | 1\t | P-00288\t | 400円\t | 単線ワイヤーでも可 | \n",
"\n",
"### ブレッドボードで動作を確認\n",
"8pinoの回路を参考に最初にブレッドボードでATtiny85を使ったGemmaを組み立てます。 USBとの接続部分は75Ωの抵抗、プルアップとLEDには1KΩの抵抗を使いました。\n",
"\n",
"\n",
"\n",
"完成したブレッドボードは、以下のようになりました。\n",
"\n",
""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Adafruit Gemmaのブートローダの書き込み †\n",
"Adafruit Gemmaのブートローダは、以下のURLで公開されています。\n",
"\n",
"- https://learn.adafruit.com/introducing-trinket/repairing-bootloader\n",
"\n",
"ブートローダの書き込みには、Arduino UNOが必要になります。 今回は、以前作ったArduino UNO(秋月のAE-ATmegaボード)を使用しました。 Arduino UnoのGNDと3.3Vには10μFの電解コンデンサーを差し、ATtiny85とは 以下の様に接続します。\n",
"\n",
" | ATtiny85\t | Arduino UNO | \n",
" |---|---|\n",
" | 8番ピン VCC\t | 5V | \n",
" | 4番ピン GND\t | GND | \n",
" | 1番ピン Reset\t | 10番ピン | \n",
" | 5番ピン PB0\t | 11番ピン | \n",
" | 6番ピン PB1\t | 12番ピン | \n",
" | 7番ピン PB2\t | 13番ピン | \n",
"\n",
"ATtiny85のピンの説明をデータシートから引用します。\n",
"\n",
"\n",
"\n",
""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### ブートローダ書き込み手順\n",
"ダウンロードしたスケッチ(trinketloader)をArduino IDEで開き、Arduino UNOに書き込みます。\n",
"\n",
"シリアルモニターを開き9600 baudにセットし、以下のメッセージが出力されたら、「G」を入力します。\n",
"\n",
"```console\n",
"Trinket loader!\n",
"\n",
"Type 'G' or hit BUTTON for next chip\n",
"```\n",
"\n",
"書き込みの途中で以下の様なメッセージが出力されます。\n",
"\n",
"```console\n",
"Starting Program Mode [OK]\n",
"\n",
"Reading signature:930B\n",
"Searching for image...\n",
" Found \"blankfull.hex\" for attiny85\n",
"\n",
"Setting fuses Set Low Fuse to: F1 -> A000 Set High Fuse to: D5 -> A800 Set Ext Fuse to: 6 -> A400\n",
"Verifying fuses...\n",
"Low Fuse: 0xF1 is 0xF1\n",
"High Fuse: 0xD5 is 0xD5\n",
"Ext Fuse: 0x6 is 0x6\n",
"\n",
"\n",
"Setting fuses\n",
"\n",
"Verifing flash...\n",
"Flash verified correctly!\n",
"Verifying fuses...\n",
"\n",
"Fuses verified correctly!\n",
"*OK!*\n",
"```\n",
"\n",
"ATtiny85をlbedGemma用のブレッドボードに戻し、USBケーブルを接続すると LEDが細かく点滅したら、ブートローダの書き込みが正常に行われています。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Arduino IDEでATtiny85が使かえるようにする\n",
"ハードの準備ができたので、次に開発環境を整えます。\n",
"\n",
"Arduino 1.6から別のハードウェアの環境を簡単にインストールできるようになりました。 私は、1.6.4で動作を確認しています。\n",
"\n",
"- https://www.arduino.cc/en/Main/OldSoftwareReleases#previous\n",
"\n",
"### LED点滅(Blink)で動作確認\n",
"定番のLチカ(Blink)で動作を確認してみましょう。 新しいスケッチを作成し、以下のスケッチをコピーしてください。\n",
"\n",
"```C++\n",
"int led = 1;\n",
"\n",
"void setup() { \n",
" pinMode(led, OUTPUT); \n",
"}\n",
"\n",
"void loop() {\n",
" digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)\n",
" delay(1000); // wait for a second\n",
" digitalWrite(led, LOW); // turn the LED off by making the voltage LOW\n",
" delay(1000); // wait for a second\n",
"}\n",
"```\n",
"\n",
"書き込みの前に、以下の設定にセットされていることを確認してください。 ボード:Adafruit Gemma 8MHz 書き込み装置:USBtinyISP\n",
"\n",
"lbedGemmaのUSBケーブルをPCにセットし、LEDが細かく点滅している間に、 Arduino IDEのファイル→マイコンボードに書き込むを選択してください。\n",
"\n",
"LEDが1秒間隔で点滅したら成功です。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## lbedGemmaボードの作成\n",
"ブレッドボードでの動作が確認できましたので、ユニバーサル基板に組み立てましょう。\n",
"\n",
"いつものようにテクノペンを使って配線をします。\n",
"\n",
"\n",
"\n",
"これに、以下の順で部品を配置します。\n",
"\n",
"- 抵抗をセット\n",
"- 丸ピンソケット\n",
"- LED\n",
"- USB変換モジュール\n",
"- 分割ソケット\n",
"\n",
"完成したボードのは、以下のとおりです。\n",
"\n",
""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## lbedGemmaを動かしてみる\n",
"\n",
"### ArduBlockを使う\n",
"Arduino勉強会/C1-ArduBlockをはじめようで紹介したArduBlockをlbedGemmaで動かしてみます。\n",
"\n",
"ツール→ArduBlockを選択し、以下のスケッチを作成します。\n",
"\n",
"\n",
"\n",
"### スペース・インベーダーを表示\n",
"次に8x88x8マトリックスLEDを使ってスペース・インベーダーのキャラクターを動かしてみましょう。\n",
"\n",
"スケッチは、Ardafruitの以下のURLからダウンロードしてください。\n",
"\n",
"- https://learn.adafruit.com/trinket-slash-gemma-space-invader-pendant/source-code\n",
"\n",
"ATtiny85と8x8マトリックスLEDは、以下の様に接続します。\n",
"\n",
" | ATtiny85\t | 8x8マトリックスLED | \n",
" |---|---|\n",
" | 8ピン VCC\t | VCC | \n",
" | 4ピン GND\t | GND | \n",
" | 7ピン IO#2(SCL)\t | SCL | \n",
" | 5ピン IO#0(SDA)\t | SDA | \n",
" \n",
"ブレッドボードに8x8マトリックスLEDを載せたところ\n",
"\n",
"\n",
"\n",
"実際に動いているところは、以下のURLを参照してください。\n",
"\n",
"- https://www.facebook.com/hiroshi.takemoto.94/videos/vob.100002911051707/909225982517762/?type=2&theater\n",
"\n",
"ワンコインArduinoと言えどもバカにできませんよ!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Arduino IDEが1.6.3以下の場合\n",
"Arduino Gemmaは、Arduino IDE 1.6.4以降からサポートされました。\n",
"\n",
"Arduino IDEが1.6.3以下でAdafruit AVRを使用するために、以下の手順で環境をダウンロードしてください。\n",
"\n",
"- Arduino 1.6.xを起動し、Arduinoメニューから「preferences...」を選択し、設定ダイアログを表示します\n",
"- 下部の「Additional Boards Manager URLs」に以下のURLを指定します。 既にURLが指定されている場合には、カンマの後に追加します。\n",
"```\n",
"https://adafruit.github.io/arduino-board-index/package_adafruit_index.json\n",
"```\n",
"\n",
"- ツール→ボードBoards Mangerを選択します\n",
"- Boards Managerの一覧から、「Adafruit AVR Boards by Adafruit」を選択し、installボタンを押します\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.13"
}
},
"nbformat": 4,
"nbformat_minor": 0
}