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.pngorneutral.gifhappy.pngorhappy.gifsad.pngorsad.gifangry.pngorangry.gifthinking.pngorthinking.gifconfused.pngorconfused.gifsurprised.pngorsurprised.gifshocked.pngorshocked.gifsleepy.pngorsleepy.gifrelaxed.pngorrelaxed.gif
Recommended minimum set:
neutralhappythinkingsadangry
Fatigue reminder:
- Add
wakeup.giforwakeup.pngto make the idle-fatigue reminder show a custom idol animation. - The reminder defaults to
wakeupwhen camera drowsiness is detected, then waits 60 seconds before it can trigger again. - Optional NVS settings in namespace
fatigue:enabled(bool, defaulttrue)camera_enabled(bool, defaulttrue)camera_debug_preview(bool, defaulttrue; shows the sampled frame with the eye ROI box)camera_interval_sec(int, default3)camera_closed_samples(int, default2)silence_enabled(bool, defaultfalse)idle_timeout_sec(int, default12)listening_timeout_sec(int, default12)cooldown_sec(int, default60)emotion(string, defaultwakeup)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 aspng/neutral.png. - Put animated/special actions in
gif/, such asgif/wakeup.gif. - If both folders contain the same emotion name, PNG wins. For example,
png/neutral.pngis used beforegif/neutral.gif.
After adding or replacing files, run a full flash so the assets partition is updated:
idf.py flash