ESP32 devkitにobnizOSをインストールする方法


[obniz](https://obniz.com)はobnizBoardのこと、と思われがちですが、実は自分の好きなデバイスをobniz化することができます。
obniz化することで、node.jsやブラウザからデバイスの制御ができるようになります。

今回はそのobniz化（obnizOSのインストール）をESP32　devkitCでやってみます。


### 準備

必要なもの

- obniz.com上のアカウント
- [ESP32 devkitC](https://akizukidenshi.com/catalog/g/gM-11819/) 1個
- node.js/npm

### obniz_cliのインストール
obnizOSはobniz-cliというcliツールでインストールします。

obniz-cliはnode.jsのパッケージ管理サービスであるnpmにて配布されています。そのため、node.js/npmをPCにインストールする必要があります。

![スクリーンショット 2021-07-08 17.12.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227015/32e81c87-f79e-d58a-f464-2bd3ff78307d.png)


npmよりobniz-cliをインストールします。

```terminal
MacBook-Pro-5:~ kido$ npm install -g obniz-cli 
```

インストールできているかの確認は下記コマンドで、バージョンが表示されればOKです

```terminal
MacBook-Pro-5:~ kido$ obniz-cli  --version
version 0.7.2
```




obniz.comのアカウントでログインします

```terminal
MacBook-Pro-5:~ kido$ obniz-cli  signin
✔ Authenticated.
✔ Sign in as "koheikido@cambrianrobotics.com"
MacBook-Pro-5:~ kido$
```

自動でブラウザが開くので、認証ボタンを押してください

![スクリーンショット 2021-07-08 17.50.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227015/eb12840d-b091-78d7-0ca2-b573f44009e9.png)


シンプルなテキストの画面がでたら完了です

![スクリーンショット 2021-07-08 17.50.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227015/eded6621-0e85-0bc5-56bb-ae24e626fadb.png)

ターミナルに戻るとこういう表示になっています。

```
MacBook-Pro-5:~ kido$ obniz-cli  signin
✔ Authenticated.
✔ Sign in as "koheikido@cambrianrobotics.com"

```


### 書き込み

ESP32 devkitCをPCにつなぎます。
![IMG_4139.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227015/47338efa-e4f1-95cc-ff7e-e8273f78e230.jpeg)


つないだdevkitCがPCに認識されているか確認しましょう

```terminal
MacBook-Pro-5:~ kido$ ls /dev/tty.*
/dev/tty.Bluetooth-Incoming-Port    /dev/tty.SLAB_USBtoUART
/dev/tty.MALS                       /dev/tty.SOC
/dev/tty.SE03-serialport-1          /dev/tty.usbserial-14410

```

デバイスを抜き差しして何度か試し、つないでいるときだけ出てきた項目がdevkitCです。
自分の場合は`/dev/tty.SLAB_USBtoUART`でした


obnizOSを書き込みます

```terminal
obniz-cli os:flash-create --hardware esp32w
```

どのデバイスかを聞かれるので選択します
![スクリーンショット 2021-07-08 18.05.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227015/a948ed83-554c-0854-16f5-886b6bc64ecf.png)


しばらく待っていると、書き込みが完了します

![スクリーンショット 2021-07-08 18.05.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227015/2d595805-c600-54d5-80bd-cfc7eab5f19c.png)



無事に成功したら、obniz.comの開発者コンソール内にもデバイスができていることを確認します
![スクリーンショット 2021-07-08 18.06.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227015/294dad2f-9016-c00d-7a68-664b2b799997.png)



### obnizOSのwifi設定
PCにせっかくデバイスを繋いでいるので、そのままwifiの設定もしてしまいましょう。
  ※PCに繋がなくとも、[スマホからwifiの設定も可能](https://obniz.com/ja/doc/reference/obnizos-for-esp32/settings/setting-via-browser)です
  
  
 ```terminal
MacBook-Pro-5:~ kido$ screen /dev/tty.SLAB_USBtoUART 115200
 ```
  
  もしくは
  
```terminal
MacBook-Pro-5:~ kido$ miniterm.py /dev/tty.SLAB_USBtoUART 115200
```
  
 
  で接続します。シリアル通信のツールは screen / miniterm / cu など色々あるのでお好みで。（Arduino シリアルモニタなどのGUIツールでも大丈夫です。） 
  
  自動でWiFiスキャンし、どれに接続するかを聞いてきますので、指示に従って入力します。
  
```terminal
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:664
load:0x40078000,len:9056
ho 0 tail 12 room 4
load:0x40080400,len:5076
entry 0x40080638

obniz ver: 3.4.5
obniz id: 54969624
WirelessLAN MAC Address: 3C71BF9A1374
WiredLAN MAC Address: 3C71BF9A1377
Press 's' to setting mode
Input char >>

Wi-Fi Scanning...

obniz is now AccessPoint. Access Below
 SSID: obniz-54969624
 open the page http://192.168.0.1/ from browser


--- Nearby SSID List ---
   ID : SSID
-   0 : wicket_home
-   1 : TP-Link_E3F9
.
.
.

-  16 : -- Other Network --



Enter SSID-Pass
--- Select SSID Number ---
Input number >> 0
--- Password ---
Input text >>

--- select Network ---
0:DHCP(default)
1:Static IP
Input number >>

--- Proxy Setting ---
0:Proxy disable(default)
1:Proxy enable
Input number >>
Wi-Fi Connecting SSID: wicket_home
Connecting Cloud
Online
 
 ```
 
 最後に `online`と出ればOKです
 
 クラウド上からもonlineが確認できます

 ![スクリーンショット 2021-07-08 18.46.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227015/0f6db1bb-1a14-0b25-e9ef-574776b413e9.png)

 
これですべて完了です。
ESP32 DevkitCをobniz Deviceとして動かす 準備が整いました。