matlabでArduinoからデータを持ってくるII ① ESP32（Arduino）のアドオンをインストール

　matlabのバージョンが上がるとともに、利用できるマイコン・ボードは増えています。matlab R2020aからArduinoマイコン・ボードにESP32 DevKitが追加されました。
![m101.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/c7e5fcae-d751-35b2-e695-4efded9b6058.png)
　ESP32はリビジョンEが最新で最終版です。今回利用したのは初期のバージョンです。ESP32シリーズは、改良したESP32-S3などに移行中です。
　　[ＥＳＰ３２－ＤｅｖＫｉｔＣ　ＥＳＰ－ＷＲＯＯＭ－３２開発ボード](https://akizukidenshi.com/catalog/g/gM-11819/)
![IMGP1410.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/81be0ace-6d74-acfc-ca9e-f4a8b9655ec0.png)


### 環境

- matlab home License R2022b update1
- MATLAB Support Package for Arduino バージョン21.1.0
- Windows 10 Pro 22H2　メモリ40Gバイト

### ピン配置
![esp32_devkitc_pinout_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/fde1da04-38f1-a4b0-0965-1d04b1c8cd31.png)

### Arduinoのアドオンをインストール
　メニューのホームをクリックし、右端のほうにあるアドオンをクリックします。
![m101.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/3952f8dc-12fd-689f-a84d-66f9a2ffd734.png)

　検索欄にarduinoを入れた結果です。MATLAB Support Package for Arduino Hardwareをクリックします。
　インストールをクリックします。
![m103a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/e96706c0-1a01-bf88-3a84-76cd176363a5.png)

　クリックしていくと、ダウンロードとインストールが始まります。
![m104.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/6bc4af41-7a7b-2685-edd5-e9ac304eb402.png)

　今すぐセットアップを選びます。Arduinoマイコン・ボードは、PCとUSBケーブルでつないでおきます。

![m105.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/2a6ffcaa-0f07-a681-ddc1-9062dffdbc94.png)

　途中で、USBドライバのインストールをしてよいかと聞かれるので、次へをクリックします。
![m106.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/85a91d92-2033-3b11-4c90-ea28915f123c.png)

　実際につないで続けるかと聞かれるのでYesのまま次へをクリックします。
![m107.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/f4019907-7d87-2731-23f9-f5a27d9ee035.png)

　接続方法を聞いてくるので、USBを選択し、次へをクリックします。
![m108.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/6ebcb145-2a6b-29fa-1af9-cb2ad20a75b7.png)



　ボードを選択します。
![m109.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/88c011c0-7580-cafa-9dea-54852acb6085.png)
　COMポートを選択します。
　アップロードするライブラリを聞いてきます。I2CとSPIにチェックをしました。Programをクリックします。
![m110.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/0500ef2f-773a-ad69-a08e-cb1f88e4a46b.png)

　途中で、timeoutをしたので、BOOTボタンを押すようにと出るのでそうします。押したままです。
![m111.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/fb2fdc5e-208c-20d2-da51-f12b581a4696.png)

　次のパネルが出ると、BOOTボタンから手を放し、OKをクリックします。
![m112.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/e8846845-128e-dedf-bc9e-0bdaf42edfa0.png)

　インストールが成功しました（画面とり忘れた）。
　接続テストをします。
![m113.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/d2603436-e6e5-b52d-8b74-a195170b5e8f.png)

　timeoutのパネルが出ます。BOOTボタンを押し、次のパネルが出たらリリースしますが、失敗します。
![m114.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/6d257c59-c2a3-6429-9e9d-1bc00ef2f542.png)

　気にせずに次へを押し、終了します。

### I2Cでプログラミング
　ここでも、書き込み時にtimeoutが出ます。対応方法は同じですが、こちらの方の記事[ESP32のプログラム書込みを安定させる](https://qiita.com/h_nari/items/b971e615688d69bb3564)を参考にし、EN-3.3V間に0.1uFを入れたら、timeoutは起こらなくなりました。

![m201.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/8625d9fe-166b-bc8e-0549-94cd25619e8e.png)
　I2Cバスには温度センサTMP117をつなぎました。


```matlab
clear
a = arduino('COM3', 'ESP32-WROOM-DevKitC', 'Libraries', 'I2C')
addrs = scanI2CBus(a)
tmp117 = device(a, 'I2CAddress', '0x48');

TemperatureRegister   = 0x00;
ConfigurationRegister = 0x01;

Ctrl_OUT = [0x00, 0x60]; % Continuous conversion,Conversion cycle=000,averaging=11 is 64...1sec
writeRegister(tmp117, ConfigurationRegister, Ctrl_OUT, 'uint8');

for i=1:10
    RegisterData = readRegister(tmp117, TemperatureRegister, 2);
    temperature =  double(bitshift(uint16(RegisterData(1)), 8)) + double(RegisterData(2));
    temperature = bin2dec(append('0b',dec2bin(temperature),'s16'))* 0.0078125;  % 2's complement R2020a
    fprintf(' temperature is %.5f \n', temperature);
    pause(2);
end
```

### トラブルシューティング
　matlabのバージョンを上げると、既にインストールしているアドオンのバージョンも最新になります。
　しかし、今回、設定アイコンが消えていました。なので、一度アンインストールして、再度インストールをしました。
![m301.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/d5e5f4da-172f-6100-e0b3-d7b9bc0a9248.png)

##### timeout
　ESP32ボードは、数十種類が市販されています。なので、挙動はみな同じではないと思います。また、BOOTボタンのないボードもあります。