- ESP32 configured
- E-Ink display working
- First UI rendered
- yes I know, I have soldered pins in a wrong direction (fixed it later)
- First enclosure top cover printed
- Learned enclosure is too small for PCB
- Screw holes tested, quite small
- Fits well, but it sits on top of the PCB, needs to be made slightly over the edge
- Fits well, but still I need to adjust the "back" part to have a good grid for the PCB + edges
- almost perfect, maybe will adjust the site a bit more
- In the future, I might make it deeper
- first button input succeeded!
- and don't forget, BUTTONS HAVE ORIENTATION!
BUTTON PRESSED BUTTON RELEASED
- then I conected the display as well and added a function which refreshes the display
- when I know clikc on the button, the screen refreshes

- first button connected to pin 0
- gui refreshment
- renamed happiness to fun so in gui is displayed F instead of second H
- the button now feeds the monster by 10 until its back to 0
- I have updated the gui to look a bit cleaner and polished, obviously its not final yet
- I had to also rename happines to fun so there are not 2 H displayed, it was quite confusing
- I am considering to change it later to something like HUN, ENG, FUN, AGE or just use icons
- I have connected two more buttons and added them on pins 8, 9 and 10
- Feed button was removed and function in code as well, currently the code only prints out which button was pressed
- LEFT
- MIDDLE
- RIGHT
- later, I might add more buttons, but currently this works fine
- added interaction with gui when button is pressed, for example
- press left button => feed the Monster,
- hunger is decreased by 10
- press middle button => play with the Monster
- fun is increased by 10
- hunger is increased by 10
- energy is decreaased by 5
- press right button => Monster sleeps
- fun is decreased by 5
- hunger is increased by 5
- energy is increased by 10
- press left button => feed the Monster,
- Added flash storage system
- It was quite easy actually so I am happy for that
- Saving is performed after a button is pressed
- Would like to also add an autosave every 5 minutes
#### Audio System
-
Soldered speaker to MAX98357A amplifier.
-
Wired amplifier to ESP32-C3.
-
Created audio module (audio.hpp and audio.cpp).
-
The speaker produces buzz instead of clear tone and I have no idea why, maybe wrong I2C config
-
Wiring to ESP:
MAX98357A ESP32-C3 VIN 3.3V GND GND DIN GPIO0 BCLK GPIO1 LRC (WS) GPIO20 SD - GAIN - SPK+ Speaker + SPK- Speaker -
- finally managed to implement clear sound with a specific configuration
- the problem was not the HW but the config for the audio, wiring can stay as it is
- you can hear one beep sound when you power the device

- I have decided to switch to a new ESP32 module, the ESP32-S3 mostly because of more GPIO pins which I will need for accelerometer.
- Currently waiting for the module to arrive (approx. 2 weeks)
- added basic menu when middle button is pressed
- user can navigate using left button, right button and middle button to confirm

- I have added more polished menu system and made the code more readable and organized
- Settings are still mock, but I will implement them later - the user should be able to turn off the sound and change Monster name
- Next focus is monster logic
- I have added basic monster logic, the monster has different states and moods
- There are few different options
- States:
- None,
- Playing,
- Eating,
- Sleeping,
- Dizzy,
- Sick,
- Injured,
- Dead,
- Moods:
- Happy,
- Normal,
- Hungry,
- Tired,
- Bored,
- Sad,
- Critical
- Currently it needs to be tested, but not all of them are implemented, for example Dizzy logic will be added when accelerometer is added
- I am trying to add species, starting with slime, Blob
- I have added new menu entry "Info" which displays more info about the Monster itself - Name, Species and Status
- the status is currently None, because the monster is alive and healthy, I don't want to add there short term status, only the long term ones
- In a future I want to add an option to reset the monster
- I also increased the sleep and entertainment gain, because it was too low
- It has been some time since I last worked on this project, but the new ESP finally arrived!
- I tried switching to the new ESP32-S3 Super Mini board, but what a pain that was!
- After about 3 hours of debugging, arguing with ChatGPT, and almost losing my mind, AI decided that I should create a custom configuration for this board since none of the available ESP32-S3 configs in PlatformIO were working. So here we go.
- The best part is that it works! Or at least I can see the === MONBIT === log.
- The question is whether it's going to work with all the peripherals connected, but that's a TODO for now.
Just a quick note: I wanted to use AI as little as possible, but yeah... here we go.
If you are interested for the custom configuration, I have created a repo for it: ESP32-S3 Super Mini config for PlatformIO




















