この記事は?
ESP32 は、Wi-Fi と Bluetooth 内蔵の Espressif 社製マイコン。
それを、組み込み開発色々対応の強力な VSCode 拡張である PlatformIO で動かした、という日記です。
ちょっとだけハマった箇所があったので、その内容と対処の記録をメインに記事を書きました。
環境メモ
- OS: Linux Mint 21.2 Victoria 64 bit
- Visual Studio Code 1.83.1
- PlatformIO v3.3.1
- Core 6.1.11
- Home 3.4.4
- ESP32-WROOM-32
どこの何を買ったか忘れたなんて言えない・・・
プロジェクト作成
Board 選択しようとしたところ、それらしきものがいくつかあります。
とりあえずチップを見てみます。
適当に通販のサイトの写真とかを探してみると、'ESP32-C3' というのも見かけました。一方僕の手元のボードでは 'C3' とかの表記は無し。
適当に C3-DevKitC で進めてみたら、書き込みで This chip is ESP32 not ESP32-C3.
というエラーを返されました。'Dev Module' で進めたら動きました。どうやらチップの型表記から判断できそうです。[ハマったとこ その1]
Board 選択がなんとかなったので続き。Name や Location は任意で。Framework はここでは Arduino を使います。(Espidf を知らないから・・・)
ESP32 は Arduino でも開発可能です (Wi-Fi や Bluetooth も使える)。ただし、機能をフルで使うには純正環境の Espidf が必要です。
udev のインストール
詳しくは公式ページで。(丸投げ)
udev は、Linux におけるデバイス管理ツール、らしいです。(今回存在を初めて知った)
上の設定をしていない状態では、(自分の環境では) 「Please install ...」とメッセージが出て、書き込みに失敗しました。(コンパイルは通る) [ハマったとこ その2]
コード
訳あって単純に SPI を送信するコードが必要だったので、適当に SPI 信号を送り続けるコードを作成。常に同一数字じゃつまらないので 0〜255 を順に送る形に。
#include <Arduino.h>
#include <SPI.h>
uint8_t i = 0;
void setup() {
SPI.begin();
SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0));
pinMode(22, OUTPUT);
digitalWrite(22, HIGH);
}
void loop() {
digitalWrite(22, LOW);
SPI.transfer(i);
digitalWrite(22, HIGH);
i++; // 255+1 でオーバーフロー
delay(500);
}
感想
Arduino IDE で開発しようとするとボード追加のための設定が必要になりますが、PlatformIO だとプロジェクト作成以降は必要な設定を自動でやってくれてとても楽でした。(初回はプラットフォームダウンロードのため少々時間がかかる)
入力補完とかもあるので、これで Arduino IDE をリストラにした人も多いかと。ちなみに僕はリストラしました。