It's been a while since I posted, and a lot has changed. For one, I now have another kid who will play with this (in a few years...).
As for the project, it's actually coming along nicely. I made those few final changes to the PCB design and ordered a final set of components. I wasn't really expecting it to be the last set (how many times have I said it would be?) but it seems like I'm finally there! I populated the new boards, flashed the firmware and now it works perfectly. Well, it did for about 10 seconds, before there was a nasty grating sound and playback stopped. I had to reset the ESP to get it working again - and then only 10 seconds. I thought it was a hardware problem, as it only appeared when the front panel connector was connected. So I replaced the connector, replaced the cable, I removed the screen and the NFC reader but it still would only play music intermittently. Everything else was working, it was so frustrating.
I decided that perhaps it was my software - even though nothing had changed. So I basically rewrote the whole thing... but still the same issue. It just would not work and definitely not when assembled. Determination is a powerful thing. I rewrote the NFC reader library code but that didn't fix it either. I then decided to remove the NFC from the SPI bus and give it a dedicated I2C bus, but I really didn't want to change the PCBs. I worked out that I could break the existing PCB traces and use the existing chip select as SDA and borrow the DC pin from the display (changing it to 3-wire SPI) and make that SDC for the NFC reader. I swapped the library over to SPI and... it was better. Not great. Not right, but better. What on earth?!
Finally, one sleepless night, I decided to replace the audio library I was using... and it worked. It was that simple. Somewhere along the way, the library became incompatible with the ESP33 arduino-core framework library. All that fiddling and hacking... but it works and I didn't have to make any more PCBs. The back of the front-panel PCB isn't very pretty (I'll post pictures later) but it's finally all working!
I assembled the unit and gave it to my two older kids (3 and 1) and I'm overwhelmed by how much they love it. I've put their favorite songs on it and they're so happy! Even my 1 year old is happy to put the cards in front and dance to her favorite songs (although I am getting slightly bored of Baby Shark...). They use it pretty much every day - very rewarding after all the work. There's still a little software development to be done - but since I built in OTA updates, I don't need to disassemble it to carry on!
I'll post some more pictures later and again when the software is really finished. My last job will be to expand the number of songs, it's amazing how quickly you get bored of listening to the same eight songs...