はんだ付けトレーニングキット AKBONE2020

# AKBONE2020 とは？

はんだ付けのトレーニングキットです。日本Androidの会秋葉原支部ロボット部にて、毎年電子工作のトレーニングキットを作っていますが今年のバージョンははんだづけの練習のためのキットを作成しました。

# 特徴

- はんだづけ初心者向けに、練習しながら簡単にイルミネーションマイコンを作ることができます。
- LEDストリップ付属、クリスマスに向けての工作などに応用できます
- Arduino の互換機として使用でき、簡単にプログラムを作って楽しむことができます。
- 中心部分は小さい部品が既に組み立て済みの格安ボードを使います。 LGT8F というマイコンを使い、本家の Arduino と同じように電子工作を楽しむことができます。
- GROVE端子がついていて、市販のいろんなセンサーなどをつなげることができます。
- 圧電スピーカーがついていて、音を出すことはもちろん、音センサーとしても使えます。
- タッチセンサー端子付き。バナナなどをつないでみましょう。
- 安い！ 勉強会用の頒布価格は送料込みで￥800です。
- はんだづけはじめての方に、チャレンジがしやすくなっています。

# キット構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/0291e35c-dab1-0e94-fa1d-03580e8b9c4b.png)

きっと構成の詳細、組み立て方はこちら
「AKBONE2020 ではんだづけをはじめよう」
https://note.com/nanbuwks/n/n7a8f31cf9781
注意：2021年以降に購入された方は、内容が改訂となっています。以下の記事の方をご覧ください。
「AKBONE2020 (Ver.20210114) ではんだづけをはじめよう」
https://note.com/nanbuwks/n/n4dcc76416cf5

![IMG_20201112_104614881.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/091e774d-3b66-0da2-a577-e613b5987ff5.jpeg)
キットの基板です。


![IMG_20201112_110254910.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/56591e45-b3bc-b0a6-9100-8416d37f96ee.jpeg)
マイコン基板です。これは既に組み立て済みです。

# 機能紹介

マイコンの動作電圧、 3.3V/5V 選択できます
![IMG_20201112_172307417.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/c078d909-10e6-68f7-a69d-43f0c9ce6d39.jpeg)

GPIOをインラインで出しているので、ブレッドボードでの実験がしやすくなっています。

![IMG_20201115_150013723.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/55df1cab-faa0-7f26-ca34-eb67417e8db6.jpeg)


直接PCなどにつなげることができます。

![IMG_20201112_142157999.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/8f6e96ec-671e-aff5-606f-6a85feae8699.jpeg)

USBシリアルは着脱式です

![IMG_20201112_132109811.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/4df61b03-b588-fe53-76da-8a2b337aaa53.jpeg)

スピーカーです。これは音センサーとしても使用できます。

![IMG_20201115_145011884.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/58277c6e-59b3-ed13-1198-6743a5a50bc4.jpeg)




端にあるポートはタッチセンサとして使えます。
![IMG_20201115_145844678.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/cdb9f9dd-e2d5-4bbf-5884-7509a5d2e77d.jpeg)


micro:bit をまねて、ワニ口ケーブルがつなげられるようにしました。


![IMG_20201115_130420784.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/050098b3-d477-b879-7ebe-3beecc55c45f.jpeg)

LEDストリップをつないで、光らせたところです。

![IMG_20201113_001150243.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/206eac6c-1c0c-a00b-def2-c49cd89dec55.jpeg)

GROVE端子。

![IMG_20201113_004559582.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/384d3134-a6bb-4f65-80aa-c64d4b3b7e84.jpeg)

SEEEDSTUDIOの、Grove 温度センサモジュールをつないだところ
![IMG_20201115_145001443.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/2fb383bc-bdbf-e911-fdc4-b2a563e5ca13.jpeg)

# 技術資料

## ポート割当

|端子|ピン|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/#


http://www.lgtic.com/upload/lgt8fx8p/LGT8FX8P_databook_v1.0.4.pdf

https://github.com/dbuezas/lgt8fx/blob/master/docs/LGT8FX8P_databook_v1.0.5-English.pdf

## 回路図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/252a1beb-07f1-09d3-4193-baa98d77fee8.png)

(AKBONE2020 (Ver.20210114~20211224) )
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/d3b3e00a-2454-13ae-ab15-8b8b528e429e.png)


## 基板アートワーク
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/5d8f9d7f-c54f-61b6-f7e6-db0bd0c4cc92.png)

(AKBONE2020 (Ver.20210114~20211224) )
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/40ba0e2b-e2ec-44a9-154e-55c19cb836d5.png)


## 3Dビュー
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/488d3c35-37f2-ecc1-91a4-3cbc806cdef5.png)
(AKBONE2020 (Ver.20210114~20211224) )
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/74aaaa28-53d8-9c39-e683-8d36172901a9.png)

## パーツリストと原価

https://docs.google.com/spreadsheets/d/12_VB5hwpKIDuy83jXUkLx01XgicvceNg0H_hhULlCSM/edit?usp=sharing

# プログラム

## 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 ライブラリは既にインストールされています。そうでない場合は、以下のようにしてインストールします。

「スケッチ」-「ライブラリのインクルード」-「ライブラリの管理」でライブラリマネージャを起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/a9cfe035-9c92-7338-a7e9-0c2298d3b332.png)


検索で 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

```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/6296020c-d13f-e107-e975-049ad34cce9b.png)

うまくいったので、そのままデコレーションに使った例です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/ea8d65d2-590e-c763-6fe5-645b302a0095.png)


# スピーカ

以下のサンプルスケッチを呼び出します。

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 リードにタッチすると音が止まります。