AKBONE2020 とは?
はんだ付けのトレーニングキットです。日本Androidの会秋葉原支部ロボット部にて、毎年電子工作のトレーニングキットを作っていますが今年のバージョンははんだづけの練習のためのキットを作成しました。
特徴
- はんだづけ初心者向けに、練習しながら簡単にイルミネーションマイコンを作ることができます。
- LEDストリップ付属、クリスマスに向けての工作などに応用できます
- Arduino の互換機として使用でき、簡単にプログラムを作って楽しむことができます。
- 中心部分は小さい部品が既に組み立て済みの格安ボードを使います。 LGT8F というマイコンを使い、本家の Arduino と同じように電子工作を楽しむことができます。
- GROVE端子がついていて、市販のいろんなセンサーなどをつなげることができます。
- 圧電スピーカーがついていて、音を出すことはもちろん、音センサーとしても使えます。
- タッチセンサー端子付き。バナナなどをつないでみましょう。
- 安い! 勉強会用の頒布価格は送料込みで¥800です。
- はんだづけはじめての方に、チャレンジがしやすくなっています。
キット構成
きっと構成の詳細、組み立て方はこちら
「AKBONE2020 ではんだづけをはじめよう」
https://note.com/nanbuwks/n/n7a8f31cf9781
注意:2021年以降に購入された方は、内容が改訂となっています。以下の記事の方をご覧ください。
「AKBONE2020 (Ver.20210114) ではんだづけをはじめよう」
https://note.com/nanbuwks/n/n4dcc76416cf5
機能紹介
GPIOをインラインで出しているので、ブレッドボードでの実験がしやすくなっています。
直接PCなどにつなげることができます。
USBシリアルは着脱式です
スピーカーです。これは音センサーとしても使用できます。
micro:bit をまねて、ワニ口ケーブルがつなげられるようにしました。
LEDストリップをつないで、光らせたところです。
GROVE端子。
SEEEDSTUDIOの、Grove 温度センサモジュールをつないだところ
技術資料
ポート割当
端子 | ピン | Arduinoプログラム上の機能 | LGT8F328SSOP20上のピン番号 | LGT8F328SSOP20信号名 |
---|---|---|---|---|
GROVE1 | 黄(G1-1) | A5(D19) | pin20 | PC5/ADC5/SCL |
GROVE1 | 白(G1-2) | A4(D18) | pin19 | PC4/ADC4/SDA |
GROVE1 | 赤(G1-3) | VCC | pin4 | VCC |
GROVE1 | 黒(G1-4) | GND | pin5 | GND |
GROVE2(G2L)*1 | 黄、または緑*2(G2L-1) | D8 *3 | pin11 | PB1/ICP1/CLK0/OC1A/SPSS |
GROVE2(G2L)*1 | 白(G2L-2) | D11 | pin12 | PB3/MOSI/OC1B/OC2A |
GROVE2(G2L)*1 | 赤(G2L-3) | 3V/5V切り替え | ||
GROVE2(G2L)*1 | 黒(G2L-4) | GND | pin5 | GND |
サウンドデバイス | スピーカー/音センサ | A1(D15) | pin18 | PC1/ADC1 |
タッチセンサ | J6 | A0(D14) | pin17 | PC0/ADC0/OC0A |
タッチセンサ | J7 | GND | pin5 | GND |
13ピンインラインポート | A5 SCL | A5(D19) | pin20 | PC5/ADC5/SCK |
13ピンインラインポート | A4 SDA | A4(D18) | pin19 | PC4/ADC4/SDA |
13ピンインラインポート | A1 | A1(D15) | pin18 | PC1/ADC1 |
13ピンインラインポート | A0 | A0(D14) | pin17 | PC0/ADC0/OC0A |
13ピンインラインポート | 13 | LED_BUILTIN(D13) | pin14 | PB5/SCK/AC1P |
13ピンインラインポート | 12 | D12 | pin13 | PB4/MISO |
13ピンインラインポート | 10-11 | D11 | pin12 | PB3/MOSI/OC1B/OC2A |
13ピンインラインポート | 8-9 | D8 *3 | pin11 | PB1/ICP1/CLK0/OC1A/SPSS |
13ピンインラインポート | 7 | D7 | pin10 | OC2B/ACXN/PD7 |
13ピンインラインポート | 3PWM | D3 | pin3 | DA0/INT1/ICP3/OCB/PD3 |
13ピンインラインポート | 2 | D2 | pin2 | AC0O/INT0/OC3B/PD2 |
13ピンインラインポート | GND | GND | pin5 | GND |
13ピンインラインポート | VCC | VCC | pin4 | VCC |
5ピンSWDポート | SWC | D29 | pin15 | PE0/ADC6/ACXP/SWC |
5ピンSWDポート | RST | リセット | pin1 | RESETN/OC3A/PC6 |
5ピンSWDポート | SWD | D30 | pin16 | PE2/ADC7/AC1N/AVREF/SWD |
5ピンSWDポート | VCC | VCC | pin4 | VCC |
5ピンSWDポート | GND | GND | pin5 | GND |
シリアルポート | TXD | TXD(D6) | pin9 | OC0A/OC3A/AC0P/TXD/PD6 |
シリアルポート | RXD | RXD(D5) | pin8 | OC0B/T1/RXD/PD5 |
マイコン基板上の青LED | 13 | LED_BUILTIN(D13) | pin14 | PB5/SCK/AC1P |
*1 GROVE2(G2L) 端子は AKBONE2020 初期バージョンだと3ピンLED端子になっていて、G2L-1線が省略されています。
*2 LEDストリップ用に添付しているGROVEケーブルは電源電圧の違いによる事故を防ぐため、標準色とは異なる色を添付しています。
*3 ピン割当は、 hardware/LGT/avr/variants/standard/pins_arduino.h で定義されていますが、定義は D9 であるにもかかわらず実際には D8 で動作するようです。
LGT8F328SSOP20 データシート
(公式ページ)
http://www.lgtic.com/lgt8fx8p/#
回路図
(AKBONE2020 (Ver.20210114~20211224) )
基板アートワーク
(AKBONE2020 (Ver.20210114~20211224) )
3Dビュー
(AKBONE2020 (Ver.20210114~20211224) )
パーツリストと原価
プログラム
LED 点滅 ( Lチカ )
青LEDが1秒ごとにで点滅します
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
LEDストラップテストプログラム
NeoPixelのサンプルコードのPIN番号を6から8に変更しているだけです。
// NeoPixel Ring simple sketch (c) 2013 Shae Erisson
// Released under the GPLv3 license to matサンプルコードはch the rest of the
// Adafruit NeoPixel library
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
// Which pin on the Arduino is connected to the NeoPixels?
#define PIN 8 // On Trinket or Gemma, suggest changing this to 1
// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 16 // Popular NeoPixel ring size
// When setting up the NeoPixel library, we tell it how many pixels,
// and which pin to use to send signals. Note that for older NeoPixel
// strips you might need to change the third parameter -- see the
// strandtest example for more information on possible values.
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define DELAYVAL 500 // Time (in milliseconds) to pause between pixels
void setup() {
// These lines are specifically to support the Adafruit Trinket 5V 16 MHz.
// Any other board, you can remove this part (but no harm leaving it):
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
// END of Trinket-specific code.
pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
}
void loop() {
pixels.clear(); // Set all pixel colors to 'off'
// The first NeoPixel in a strand is #0, second is 1, all the way up
// to the count of pixels minus one.
for(int i=0; i<NUMPIXELS; i++) { // For each pixel...
// pixels.Color() takes RGB values, from 0,0,0 up to 255,255,255
// Here we're using a moderately bright green color:
pixels.setPixelColor(i, pixels.Color(0, 150, 0));
pixels.show(); // Send the updated pixel colors to the hardware.
delay(DELAYVAL); // Pause before next pass through loop
}
}
これをコンパイルするには、NeoPixelライブラリをインストールする必要があります。
AKBONE2020ポータブル開発環境を使っている場合は NeoPixel ライブラリは既にインストールされています。そうでない場合は、以下のようにしてインストールします。
「スケッチ」-「ライブラリのインクルード」-「ライブラリの管理」でライブラリマネージャを起動します。
検索で NeoPixel で検索し、「Adafruit NeoPixel」を選んでインストールします。
書き込みできたらグリーンが光ります。
エモいLEDストラップのサンプルプログラム
確認できたら他のプログラムも試してみましょう。きれいなサンプルプログラム
「ファイル」-「スケッチ例」-「カスタムライブラリのスケッチ例」-「Adafruit NeoPixel」で「srandtest」を使うときれいな表示がなされます。
先程と同じように
// Which pin on the Arduino is connected to the NeoPixels?
#define PIN 6 // On Trinket or Gemma, suggest changing this to 1
を以下に変更します。
// Which pin on the Arduino is connected to the NeoPixels?
#define PIN 8 // On Trinket or Gemma, suggest changing this to 1
うまくいったので、そのままデコレーションに使った例です。
スピーカ
以下のサンプルスケッチを呼び出します。
File > Examples > 2.Digital > toneMelody
以下の箇所の 8 を AKBONE 用に15に変更してください。
tone(8, melody[thisNote], noteDuration);
noTone(8);
タッチセンサ
int sensorPin = A0;
void setup() {
Serial.begin(115200);
}
void loop() {
int value = analogRead(sensorPin);
Serial.println(value);
tone(15, value);
delay(100);
noTone(15);
}
パラポレピレパレ・・・と鳴っているのが、 14/A0 と GND リードにタッチすると音が止まります。