ESP32のためのブロックプログラム(調査中)

ESP32 を Arduino 環境で動かす + 追加プログラムでブロックプログラム。

# Scratch Look

Scratch のようなもの。

画面はScratch1.4

![image](https://qiita-image-store.s3.amazonaws.com/0/139524/fd8410a0-ca9e-6c18-c2a9-f8764ec637a4.png)


- 同じ感覚で扱える
- マルチプラットフォーム。
 - 最低、 Windows/OSX/Linux 対応
- OSS
 - メジャーライセンスが望ましい

## ESP32 対応のために

初期化だとかお定まりの処理が、ブロック１つおくと実現できるようにしたい。

- Wi-Fi に接続するブロック
- センサーの値を取得するブロック
- サーバにプッシュするブロック

これを組み合わせて、１分ごとに実行できるようなものがカンタンにできるようになる。
キッズの教材にももちろん、オトナのラピッドプロトタイプにも使えるようにしたい。

# 候補

- ArduBlock
- mBlock

# ArduBlock


本家
http://blog.ardublock.com/
![image](https://qiita-image-store.s3.amazonaws.com/0/139524/d8e737d6-4d40-5643-7f4b-f32972d9dc8b.png)
コード
https://github.com/taweili/ardublock



独自に作ったキッズバージョン

![image](https://qiita-image-store.s3.amazonaws.com/0/139524/3127c74e-f164-62c3-0a13-dc64f5c50861.png)



- Arduino IDEへのプラグインの形となる
- 新しいボードについても、Arduino IDE さえ対応できていれば ArduBlock も基本動く
- センサの写真が乗る![image](https://qiita-image-store.s3.amazonaws.com/0/139524/46dfa88b-e0ec-a833-2c89-bd940eb97669.png)

- ブロック編集ペインにおいて、拡縮できないのが不便
 - ブロックの面積が大きいので、ループが深いとすぐ編集ペインでの見通しがかなり悪くなる。
- Scratch よりはかなり使い勝手が変わる
- 公式ページが更新されていない。
 - エラーが出てたりリンクが切れてたり
 - 紹介するにはツライ

## ビルド
別記事に書きました

http://qiita.com/nanbuwks/items/dde4270eade41f8b75ec


# mBlock

mBot の製品用に開発されたっぽい
![image](https://qiita-image-store.s3.amazonaws.com/0/139524/02e71f67-11b6-7ec0-d510-4caf94a212af.png)


公式ページ
http://www.mblock.cc/
コード
https://github.com/Makeblock-official/mBlock


Arduinoモードにするとこうなる
![image](https://qiita-image-store.s3.amazonaws.com/0/139524/e7ab7533-53d7-4ebe-6fd9-428d13b103e3.png)

- ソフトウェアパッケージ内部にArduino開発環境を持っている
 - 内部でこれを呼び出しているらしい
 - Arduino開発環境のバージョンはは1.6.5
- ボード対応が限られている
 - ![image](https://qiita-image-store.s3.amazonaws.com/0/139524/4e49352c-fdc2-58bb-c01a-9c17103d1a12.png)
 - 追加するにはコード変更が必要
- ブロックに写真などはつかない
 - ![image](https://qiita-image-store.s3.amazonaws.com/0/139524/555a1bae-b4de-59d3-ad60-b9d46c750b70.png)
- ブロックの種類は限られている
 - 配列変数などは使えないようだ
 - ブロック追加などは Extension を書いて行う
 - http://www.mblock.cc/posts/create-extensions-for-mblock
- extension の共有場所
 - http://www.mblock.cc/extensions/
- Scratchの使い勝手にかなり近い

## ビルド
In Ubuntu 16.04.1 LTS (AMD64).

https://github.com/Makeblock-official/mBlock.
よりversion 4.0 をダウンロード


scratch 2.0 App 版に 機能追加分を electron で作っているらしい。

以下のようにしてビルド

```

sudo apt install nodejs npm
sudo npm cache clean
sudo npm install n -g
sudo n stable
sudo ln -sf /usr/local/bin/node /usr/bin/node
npm run rebuild-serialport
npm install --save ribuild-hid
npm install --save hid
npm install --save bluetooth
npm install --save electron
npm install --save-dev electron-rebuild
npm install --save-dev node-hid
npm install --save-dev express
```

起動したが

```

npm start

```

ここで止まってしまう

![image](https://qiita-image-store.s3.amazonaws.com/0/139524/5d2ef8ac-0983-4897-05a1-d5a153d137c9.png)


node および npm の version:

```

$ npm -v
4.2.0
$ node -v
v7.10.0
```

4.0 は mBlock 4.0.0 for Linux だとか Support (tested in) 64-bit とある。
stable版として 3.4.5 があるがこちらは electron ではなく、Linux などでは動かない感じ。

# どちらを選択するか？

ArduBlockを選択した。これは ArduBlock が優れているというよりは、 mBlock の使用に無理があるという理由から。

mBlockの4.0はExtension機能がまだ入っていないので、ブロック追加はソース変更が必要。
mBlock はボード対応が限られている、配列変数が使えない、など、ソースにかなり手を加えることが前提。
ソース触ることができれば mBlock も可能性があるが、現時点でビルドできないので
- トラブルシュート
- ボード対応増やす
- ブロック対応増やす
のは工数かかって得策ではない。


# 引き続き、調査中