今年買ったボード: ESP32-S2-DevKitM-1-N4R2

今年、MicroPython用に買ったボードシリーズ。

[ESP32-S2-DevKitM-1-N4R2 ESP32-S2-MINI-2開発ボード 4MB](https://akizukidenshi.com/catalog/g/g118287/)

2024年1月9日 秋月電子通商で購入

![IMG_1590.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106817/1bf86225-89c6-9cdb-853d-c952f5f0e428.jpeg)

![IMG_1591.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106817/2de92b51-b035-9197-3bb4-098c7efa901f.jpeg)

コアが１つで、Bluetooth も無し。なので、ESP32-S3ボード持っていれば要らんだろうという気もしますが、動作確認用に購入。

# ファームウェアダウンロード

以下から最新安定版の v1.24.1 をダウンロード。

https://micropython.org/download/ESP32_GENERIC_S2/

# ファームウェアのインストール

ファームウェアインストールには Raspberry Pi 5 で esptool.py を利用。

```bash
$ esptool.py --chip esp32s2 --port /dev/ttyUSB0 erase_flash
esptool.py v4.8.1
Serial port /dev/ttyUSB0
Connecting....
Chip is ESP32-S2FNR2 (revision v1.0)
Features: WiFi, Embedded Flash 4MB, Embedded PSRAM 2MB, ADC and temperature sensor calibration in BLK2 of efuse V2
Crystal is 40MHz
MAC: 70:04:1d:fb:de:fc
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 16.5s
Hard resetting via RTS pin...
$ esptool.py --chip esp32s2 --port /dev/ttyUSB0 write_flash -z 0x1000 ESP32_GENERIC_S2-20241129-v1.24.1.bin 
esptool.py v4.8.1
Serial port /dev/ttyUSB0
Connecting....
Chip is ESP32-S2FNR2 (revision v1.0)
Features: WiFi, Embedded Flash 4MB, Embedded PSRAM 2MB, ADC and temperature sensor calibration in BLK2 of efuse V2
Crystal is 40MHz
MAC: 70:04:1d:fb:de:fc
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Flash will be erased from 0x00001000 to 0x0015dfff...
Compressed 1427792 bytes to 935495...
Wrote 1427792 bytes (935495 compressed) at 0x00001000 in 82.2 seconds (effective 138.9 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
```

# 起動テスト

mpremote で REPL に入れるかチェック。

```bash
$ mpremote
Connected to MicroPython at /dev/ttyUSB0
Use Ctrl-] or Ctrl-x to exit this shell
(Ctrl-Dでソフトウェアリブート)
>>> 
MPY: soft reboot
MicroPython v1.24.1 on 2024-11-29; Generic ESP32S2 module with ESP32S2
Type "help()" for more information.
>>> 
```

# 簡単プログラミング

内蔵の RGB-LED (NeoPixel) を色を変えながら光らせてみる。

[ここ](https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s2/esp32-s2-devkitm-1/user_guide.html#pin-layout)を参照すると、NeoPixel は GPIO18 に繋がっている。

rgb_led_sample.py

```python
from time import sleep_ms
from machine import Pin
from neopixel import NeoPixel

pin = Pin(18, Pin.OUT)  # 内蔵 RGB-LED は GPIO18
np = NeoPixel(pin, 1)
while True:
    for c in range(8):
        r = ((c & 0b100) >> 2) * 16
        g = ((c & 0b010) >> 1) * 16
        b = (c & 0b001) * 16
        np[0] = (r, g, b)
        np.write()
	sleep_ms(500)
```

mpremote を使って、MicroPythonのファイルシステムにコピー。

```bash
mpremote cp rgb_led_sample.py :main.py
```

![rgb_led_sample.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106817/e1de5ae8-b201-2c69-78f6-6fc50dc956c7.gif)

# 余談

同じ日に ESP8266後継とか言われていた ESP8684 のボードも購入している。こちらの MicroPython サポートはまだで。

[ESP8684-DevKitM-1-H4 ESP8684-MINI-1開発ボード 4M](https://akizukidenshi.com/catalog/g/g118289/)

![IMG_1594.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106817/39b3f710-174e-36eb-6f65-6b12e0bd5441.jpeg)