Files
kedia/main/boards/zhengchen-cam/custom-emojis
2026-06-17 15:02:16 +08:00
..
2026-06-17 11:16:45 +08:00
2026-06-17 15:02:16 +08:00

Custom Emojis

Put your custom PNG files in png/ and custom GIF files in gif/.

The filename without extension is used as the emotion name. Directory names are not part of the emotion name, so png/neutral.png is loaded as neutral.

The display code looks up images by names such as:

  • neutral.png or neutral.gif
  • happy.png or happy.gif
  • sad.png or sad.gif
  • angry.png or angry.gif
  • thinking.png or thinking.gif
  • confused.png or confused.gif
  • surprised.png or surprised.gif
  • shocked.png or shocked.gif
  • sleepy.png or sleepy.gif
  • relaxed.png or relaxed.gif

Recommended minimum set:

  • neutral
  • happy
  • thinking
  • sad
  • angry

Fatigue reminder:

  • Add wakeup.gif or wakeup.png to make the idle-fatigue reminder show a custom idol animation.
  • The reminder defaults to wakeup when camera drowsiness is detected, then waits 60 seconds before it can trigger again.
  • Optional NVS settings in namespace fatigue:
    • enabled (bool, default true)
    • camera_enabled (bool, default true)
    • camera_debug_preview (bool, default true; shows the sampled frame with the eye ROI box)
    • camera_interval_sec (int, default 3)
    • camera_closed_samples (int, default 2)
    • silence_enabled (bool, default false)
    • idle_timeout_sec (int, default 12)
    • listening_timeout_sec (int, default 12)
    • cooldown_sec (int, default 60)
    • emotion (string, default wakeup)
    • message (string, default Chinese wake-up line)
    • sound_asset (string, optional OGG filename in the assets partition)

If an emotion-specific image is missing, the firmware falls back to neutral before using the built-in icon.

For Zhengchen CAM boards, the build packages both subdirectories:

  • Put static/default faces in png/, such as png/neutral.png.
  • Put animated/special actions in gif/, such as gif/wakeup.gif.
  • If both folders contain the same emotion name, PNG wins. For example, png/neutral.png is used before gif/neutral.gif.

After adding or replacing files, run a full flash so the assets partition is updated:

idf.py flash