Arduino-STM32 development kit in AVTOKYO 2018 USB memory (for  AVTOKYO 2017 Badge ).

AVTOKYO2019
http://ja.avtokyo.org/avtokyo2018/

で配布する、USBメモリには去年のバッジの開発ツールが入っています。

以下は開発ツール添付のREADME

```

This is development kit for AVTOKYO 2017 Badge.
see https://bit.ly/2zkWXdw
( https://qiita.com/lowlevel/items/5a3642846cfbff7c6e31 )

This kit supported MS-Windows, macOSX and Linux.
Unfortunately, the Linux kit could not be recorded due to capacity limitations.
Please download it.
Or, please come to the low level study meeting booth in AVTOKYO and copy it!
```

マルチプラットフォームでWin/Mac/Linux対応ですが、Linux版は容量の問題で入っていません。ブースで配布します！



# 開発環境のセットアップ
## Windowsの人
Arduino1.8.7_Win.zipを適当な場所に解凍します。中にあるArduinoを実行し、終了します。
en.stsw-link009.zipを解凍し、インストールします。

## Mac OSXの人
arduino-1.8.7-macosx.zip
をインストールし、Arduinoアプリを一度起動して終了します。

ドキュメントフォルダにArduinoフォルダができているので、それを以下のZIPで上書きします。
arduino1.8.7mac-addition-STM32.zip

Arduinoインストール済みフォルダ内に、以下のZIPを解凍し展開します。
arduino1.8.7mac-addition-libraries.zip

## Linuxの人

ZIPを解凍します。中にあるArduinoを一度起動して終了します。
追加で以下の3つの作業を行います。

1.(Arduinoフォルダ)/hardware/Arduino_STM32-master/tools/linux64/install.sh
を実行。
2.77-mm-usb-serport-blacklist.rulesを
/etc/udev/rules.dに配置
3.再起動する。


# 構築ガイド

以下は開発環境の構築方法です。
同じ作業をすることで、自分で開発環境を構築できます。

## Arduino 開発環境をインストールします。
https://www.arduino.cc/
1.8.7

Windowsの人は、ZIP版をダウンロードします。


## Portable環境の設定をします。

Windows,Linuxの人は、ポータブル環境としてインストールします。
インストールせずに、展開したファイルの場所だけで完結して動かすことができます。
ポータブル環境のフォルダを作り、解凍したものをそこに配置して下さい。

Macの人は、普通にインストールします。


# Arduino_STM32 をダウンロードし、展開します
https://github.com/rogerclarkmelbourne/Arduino_STM32

- 展開したものを、Arduinoフォルダ（後述）の中のhardwareに配置し直します。 
- Arduino IDEを起動して、＜ツール＞ー＜ボード＞ーボードマネージャで「Arduino SAM Boards(32-bits ARM Cortex-M3)」を追加します

## Mac OSXのArduino フォルダ
「書類」フォルダ中のArduinoフォルダがあります。
その中に、展開したものを以下のように配置します。
（Arduinoフォルダ）/hardware/Arduino_STM32-master 
先のgithubからZIPでダウンロード→展開したフォルダがArduio_STM32-masterだとすると、（Arduinoフォルダ）に、hardwareのフォルダを作成し、そこにArduino_STM32-masterを入れ、その中にLICENSE,README.md,STM32F1・・・などが入るようにします。

## Windows/ Linuxの人のArduinoフォルダ
Portable環境を展開したフォルダーとなります。

# USBケーブルを使った動作確認
ここで、動作確認

- バッジとPCをmicroUSBケーブルで接続する
- Bボタンを押しながらリセットをする。Bボタンはリセットを離しても2,3秒押しておく
- うまくいくと永続ブートローダーモードになる。永続ブートローダーモードになると青LEDが1秒間に約4回点滅します。
- Arduino IDEで「スケッチの例」の「Blink」を呼び出し、設定を合わせて書込を行う 

# ST-Linkを使う場合

## Windowsの場合は、ST-Linkのドライバを設定します。
http://www.st.com/ja/development-tools/stsw-link009.html
このページから STSW-LINK009 をダウンロード、インストール

## ST-Linkを使った動作確認
ST-Linkを使ってスケッチを書いてみる
接続方法はこちらを確認してください
https://qiita.com/lowlevel/items/0fd3402e0dd4584de65f

​
# ライブラリを設定します。
## OLEDライブラリ
https://qiita.com/lowlevel/items/bbdce97ee2faf4768de3
このページの内容を行ってください
動作確認して、OLEDが動作すればOKです。
​
## EEPROMライブラリ
標準で入っていますが、確認のため
https://qiita.com/lowlevel/items/12c55ce9260e7d369989
このソースコードがコンパイルできるか確認します。
​
## USB compositライブラリ
​
../(ポータブル環境ディレクトリ)/hardware/Arduino_STM32-master/STM32F1/USBHID_stm32f1 
​
フォルダがあれば、削除します。
../(ポータブル環境ディレクトリ)/hardware/Arduino_STM32-master/STM32F1/libraries/USBComposite_stm32f1
​
フォルダを作り、
https://github.com/arpruss/USBComposite_stm32f1
からダウンロードしたZIPを解凍、ここに入れる。
../(ポータブル環境ディレクトリ)/hardware/Arduino_STM32-master/STM32F1/libraries/USBComposite_stm32f1
の直下に、

```

AbsMouse.cpp            USBHID.cpp              usb_hid.c
Consumer.cpp            USBHID.h                usb_hid.h
HIDReports.cpp          USBMIDI.cpp             usb_mass.c
Joystick.cpp            USBMIDI.h               usb_mass.h
Keyboard.cpp            USBMassStorage.cpp      usb_mass_int
```
などがあるようにする。
​
​
https://qiita.com/nanbuwks/items/48756fb8a0e5e4581965
ここのサンプルプログラムを実行し、動作すればOKです。
​