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
wakeupafter 12 seconds of idle time or listening silence, then waits 60 seconds before it can trigger again. - Optional NVS settings in namespace
fatigue:enabled(bool, defaulttrue)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