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


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


キットの基板です。


マイコン基板です。これは既に組み立て済みです。

機能紹介

マイコンの動作電圧、 3.3V/5V 選択できます

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/#

回路図

基板アートワーク

3Dビュー

パーツリストと原価

プログラム

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