# Blockly Nucleo F303RE (08 Blockly)

NUCLEO F303REの

一時ディレクトリは `--mode=production` を指定した場合は OS 固有のディレクトリ/cq-interface-blockly になります。未指定の場合は `tmp` ディレクトリになります。

一時ディレクトリはアプリケーション終了時に削除されます。

## デバイス構成

- マイコンボード:[NUCLEO-F303RE（ST マイクロエレクトロニクス）](https://www.st.com/ja/evaluation-tools/nucleo-f303re.html)
- ブザー:[PKM13EPYH4000-A0（村田製作所）](https://akizukidenshi.com/catalog/g/gP-04118/)
  - PWM/D3
- サーボモータ:[SG-90（Tower Pro）](https://akizukidenshi.com/catalog/g/gM-08761/)
  - PWM: PWM/D6
- I2C 温湿度気圧センサ：[BME280（ボッシュ）](https://akizukidenshi.com/catalog/g/gK-09421/)
  - SCL: SCL/D16(PB8)
  - SDA: SDA/D14(PB9)
  - SDO: GND (= I2C address: 0x76)
- シリアル・カメラ: [Arducam Mini モジュール（2 メガピクセル）（Arducam）](https://www.switch-science.com/catalog/3780/)
  - SCL: SCL/D16(PB8)
  - SDA: SDA/D14(PB9)
  - SCK: SCK/D13
  - MISO: MISO/D12
  - MOSI: MOSI/D11
  - CS: PB1

## プログラムの実行環境

Python および STLink が使用可能な環境で使用してください。

## 開発環境

- Node.js
- Yarn

## 初期化

```sh
yarn
```

## コンパイル

```sh
yarn compile
```

## 実行

```sh
yarn start
```

## パッケージ化

Windows 用の例は以下です。dist ディレクトリに出力されます。

詳細は [electron-builder の公式ドキュメント](https://www.electron.build/)を参照して下さい。

```sh
yarn compile --mode=production
yarn electron-builder --win --x64
```

## ディレクトリ構成

ディレクトリと主要なファイル構成は以下の様になっています。

```txt
├─ app/ : Electronで実行するJavaScriptやHTMLファイル
│   ├─ prj-tmp/: PlatformIO でビルドするプロジェクトのテンプレート
│   ├─ index.html: メイン画面を構成するHTML
│   ├─ style.css
│   └─ noimg.png
├─ resources/platformio-core
│   └─ get-platformio.py: PlatformIO coreのインストールスクリプト
├─ src/ : TypeScriptの開発ディレクトリ
│   ├─ common/ : main, preload, renderer共通API
│   ├─ main/
│   │   ├─ main.ts
│   │   └─ tsconfig.json
│   ├─ preload/
│   │   ├─ preload.ts
│   │   └─ tsconfig.json
│   ├─ renderer/
│   │   ├─ @types/
│   │   │   └─ global.d.ts
│   │   ├─ blocks/ : ブロック定義
│   │   ├─ generators/ : Blockly→C++変換
│   │   ├─ renderer.ts
│   │   └─ tsconfig.json
│   └─ tsconfig.base.json : tsconfig.jsonの共通設定
├─ package.json
└─ webpack.config.js
```
