
TimerCamera シリーズは ESP32-D0WDQ6-V3 をベースにしたカメラモジュールで、8MB の PSRAM、3MP カメラ (OV3660) を搭載しています。DFOV は 66.5°(TimerCamera-F は 120°)で、最大 2048x1536 解像度の写真を撮影できます。ステータス LED と RESET ボタンを備え、超低消費電力設計が特長です。RTC(BM8563)により、スケジュールによるスリープとウェイクアップが可能です。
ESPHome の最新設定例はこちら
ESPHome Builder を開き、右下の NEW DEVICE をクリックして新しいデバイスを作成します。

ポップアップで CONTINUE をクリックします。

New Device Setup を選択し、新しい設定ファイルを作成します。

新しい設定ファイルに名前を付けます。

デバイスタイプはデフォルトのまま ESP32 を選択します。

Encryption Key を控え、SKIP をクリックして進みます。

作成された設定カードで EDIT をクリックして編集します。

設定ファイルを開き、次を追加・変更します。
psram:
mode: quad
speed: 80MHz
i2c:
- id: bsp_i2c
sda: GPIO12
scl: GPIO14
- id: cam_i2c
sda: GPIO25
scl: GPIO23
esp32_camera:
name: OV3660 Camera
external_clock:
pin: GPIO27
frequency: 20MHz
i2c_id: cam_i2c
data_pins: [GPIO32, GPIO35, GPIO34, GPIO5, GPIO39, GPIO18, GPIO36, GPIO19]
vsync_pin: GPIO22
href_pin: GPIO26
pixel_clock_pin: GPIO21
reset_pin: GPIO15
resolution: 640x480
jpeg_quality: 10ここではデフォルトの画像設定を使用しています。変更したい場合は ESPHome の設定例を参照してください。
esphome:
name: timercamera-x
friendly_name: timercamera-x
...
on_boot:
then:
# read the RTC time once when the system boots
bm8563.read_time:
...
time:
- platform: bm8563
i2c_id: bsp_i2c
# repeated synchronization is not necessary unless the external RTC
# is much more accurate than the internal clock
update_interval: never
- platform: homeassistant
# instead try to synchronize via network repeatedly ...
on_time_sync:
then:
# ... and update the RTC when the synchronization was successful
bm8563.write_time: 起動時に RTC の時刻を読み込み、Home Assistant に接続後は Home Assistant の時刻と自動で同期します。
output:
- platform: ledc
id: blue_led
pin: GPIO2
light:
- platform: monochromatic
output: blue_led
name: "Blue LED"
restore_mode: RESTORE_DEFAULT_ON青色 LED は通電後にデフォルトで点灯します。Home Assistant からオン/オフや明るさを制御できます。
switch:
- platform: gpio
id: bat_hold_pin
name: "Battery Hold Pin"
pin: GPIO33
restore_mode: RESTORE_DEFAULT_ONGPIO33 はバッテリー使用の制御に用います。High のまま保持するとバッテリー駆動します。デフォルトで High が維持されます。このスイッチをオフにして外部電源が無い場合、デバイスはシャットダウンします。
TimerCamera-X と TimerCamera-F にはバッテリーが内蔵されています。GPIO38 の ADC 値を読み取り、電圧から概算の残量(%)を算出できます。
sensor:
- platform: adc
pin: GPIO38
attenuation: 12dB
name: "Battery Voltage"
id: battery_voltage
update_interval: 10s
filters:
- multiply: 1.51
- platform: template
id: battery_percent
name: "Battery Percentage"
unit_of_measurement: "%"
accuracy_decimals: 0
lambda: |-
float voltage = id(battery_voltage).state;
float min_voltage = 3.350f;
float max_voltage = 4.150f;
if (voltage <= min_voltage) return 0.0;
if (voltage >= max_voltage) return 100.0;
float percent = ((voltage - min_voltage) / (max_voltage - min_voltage)) * 100.0;
return percent;BAT_HOLD_Pin(GPIO33)が High に保持されている場合のみです。HOLD を保持しない場合、バッテリー駆動にならず ADC 値は非常に低くなります(< 1 V)。外部 USB 給電があり HOLD も High の場合、表示される電圧は充電電圧です。編集後、右上の SAVE と INSTALL をクリックし、ポップアップで Manual Download を選択します。

ビルド完了後、Download をクリックし、Factory Format を選んでファームウェアをダウンロードします。

USB Type‑C ケーブルでホストに接続し、ESPHome Web を開いて CONNECT をクリックします。

続いて INSTALL をクリックし、先ほどビルドしたファームウェアを選択して書き込みます。

再度 INSTALL をクリックしてフラッシュを開始し、完了まで待ちます。

書き込み後、起動時に自動で Wi‑Fi に接続します。Settings -> Device & services を開き、デバイスを確認して Add をクリックすると追加できます。

ダッシュボード例:

カメラエンティティをクリックすると、ライブプレビューを表示できます。

左が TimerCamera(TimerCamera‑X)、右は魚眼レンズを採用する TimerCamera‑F の表示例です。