M5Stack社のTimer Camera XをPlatformIOで動かそうとしましたがうまくいかなかったので記録しておきます。
といっても要点は1点のみです。
Timer Camera Xについてはこちらを参照してください。
Arduino IDEでの開発についてはこちらにドキュメントがあります。
このドキュメントに従ってPlatformIOで作成していきます。
PlatformIOはセットアップ済みとして進めていきます。
プロジェクト作成
- PlatfromIOのHOME画面からNew Projectを選択します。
- Nameにプロジェクト名を入れます。LEDを点滅させる例なのでTimerCamLEDとしています。
- BoardでM5Stack Timer CAMを選択します。
- 他はそのままにしてFinishボタンを押します。
Timer-Cam Libraryインストール
LibraryでTimer-Camをインストールします。
- PlatfromIOのHOME画面でLibrariesを選択しTimerCamで検索すると出てきます。
- Timer-Camを選択しAdd to Projectボタンを押します。
- Select a projectと表示されている項目で先ほど作ったプロジェクトを選択しAddボタンを押します。
Build
ドキュメントにあるコードをmain.cppに貼り付けます。
定義が反映されないため生成されたコードから#include <Arduion.h>
を残し他をドキュメントのコードで書き換えます。
#include <Arduino.h>
#include "battery.h"
void setup() {
Serial.begin(115200);
bat_init();
pinMode(2, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(2, LOW);
delay(1000);
}
ここでBuildしてみるとうまくいきました。
Buildは下のステータスバーの✔️マークで行います。
Upload
Buildが成功したのでTimer Camera XにUploadしてみます。
Timer Camera Xとパソコンをケーブルで接続しUploadボタン(→アイコン)を押します。
ここでUploadに失敗してしまいました。通信レートを460800で接続しようとしています。
Arduino IDEで試してみると1500000で接続している様なのでそれが原因でできないかと思われます。
Platform.iniファイルにupload_speed = 1500000
を追加します。(0が5個です)
[env:m5stack-timer-cam]
platform = espressif32
board = m5stack-timer-cam
framework = arduino
lib_deps = m5stack/Timer-CAM@^0.0.2
upload_speed = 1500000
これでUploadしてみると、ようやくうまくいきました。
一応動作した様子もこちらに上げておきます。
まとめ
upload_speedが合ってなくて失敗していただけでした。
Timer Camera Xは本来画像を撮るデバイスなので、そちらも後ほどトライしてみます。
追記
Timer Camera XはPower OFFのボタンがないため、バッテリー切れになるまで点滅を繰り返すため、5分後にdeep sleepに入る様にしました。
#include <Arduino.h>
#include "battery.h"
unsigned long launched_at;
#define SHOUTDOWN_TIME (5 * 60 * 1000)
void setup() {
launched_at = millis();
Serial.begin(115200);
bat_init();
pinMode(2, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(2, LOW);
delay(1000);
if (millis() - launched_at > SHOUTDOWN_TIME) {
while(true) {
esp_deep_sleep(-1);
}
}
}
deep sleepに入ったらONスイッチを押すと動き出します。