I'm looking for some help and guidance on some new things/skills I need to learn in order to bring an idea in my head to life.
Basically, I found this cute robot car accessory called a Dasai Mochi. I thought that it would be cool if I could create something similar on my own using an Ardunio + a small oled display. I've seen some other people do it, but the results were kind of mixed and didn't offer directions on how they did it. I do not have much experience in this; only one small project a few years ago where I used an Ardunio Uno to control a string of lights with fun effects.
I was playing The Last Descendant and there is this really cute hovering robot that gives you supplies for your weapons. I had a thought... essentially, I want to have the ability to 3d print cool robot models with a slot to put in this custom oled screen on which I can create custom face animations. I'm a graphic designer, so I think I can create some custom gifs as long as I can get help with getting it coded and displayed on a screen.
Things I need to figure out:
What hardware do I need in order to create this project? I would like it to be as small form as possible (so that it can fit within some sort of model), but I think I might run into an issue with storage for these custom graphics I want. Is an Arduino Nano efficient? Some sort of display, like an SSD1306 oled (1-1.5 inches in size). I have limited experience with wiring and stuff, so anything else I'm missing let me know.
Any specific software? I need to do some more research, I did see some videos about how to put animated gifs on a screen, so something to help me create the art + something to create code from the art. I read something about an Image to C Array Convertor... maybe that?
If I get 1 and 2 figured out, then I need to learn how to model and 3d print things. My local library has 3d printers that anyone can use, so I think that is my best option because I don't want to drop $600 on a good printer at the moment. I've done 3d model for woodworking projects, but never for something like this.
Just trying to the idea out of my head, and now I need good resources for the parts that I need to research and learn. Any help/direction would be helpful.
This video that uses Wokwi Animator to generate a bunch of code, but that doesn't help me so much with custom graphics; it's pulling from an existing library of icons. https://www.youtube.com/watch?v=o3PhC_VJdXo
I would use an ESP32 C3 mini for footprint, memory capacity, speed and built-in Bluetooth and WiFi. OLED (I2C) for the face and WS2812 individual 5050 (5mm x 5mm), not the strips, for the blinky lights. For power, something rechargeable with a battery-management (overcharge/undercharge protection). Does the robot have more functions than face and lights?
Wokwi is a playground for you to practice. Your imagination and your willingness to learn will determine your custom graphics. Ask anything.
Thanks so much for the reply. To clarify, I'm not trying to mimic the entire Dashi thing, just really the screen/face animations of it. I like that it has sort of a "idle" state and then it'll do random animations. That's what I want to reproduce. I'm going to design an entire "body" or model that the screen/board will be able to fit into. So I do not need the flashy lights, but it's good to know those exist though.
The esp32 does seem pretty cool, has more memory, and smaller. Do you think it would be able to handle a 128x64 screen? That was what I was looking at from one of the resources I found.
I need to get some inspiration screenshots in here.
Okay, that's super cool. So you used something to make my logo into a bitmap I see lol.
Do you think it's possible to have multiple animated bitmaps saved that are called upon in the code at random, like I described in my previous post? I need to find some resources for that.
Well good, that resource I found ended up being helpful then! Was pretty easy to follow, made a simple animation that I designed in Photoshop.
Probably dumb question... but can this same code be used on the esp32? Or would I need to figure out how do something similar with different code? I have a feeling the esp32 is a better way to go because it can do more complex stuff. If I ever happen to want to upgrade to better displays (like the tft displays), I want that flexibility.
Any reasons on why switching to that would be helpful? Just looking for whatever is most user friendly to start. Like jumping into using Linux instead of using Windows first kind of thing lol.
Got ya, so just a little bit different for wiring.
You mentioned power before, do you have recommendations for this? Seems like we're pretty good on the board/display. I've seen some small lithium ion batteries on adafruit, is that what you were referring to? How would I connect that to the esp32-c3 board?
Okay, so I need to figure out the coding first, and then estimate the power needed to run my finished code? I'm guessing I would need to actually wire it physically and then measure it with a multimeter or something?
You could measure current in series from power supply to project for accuracy (in a quiet state, and in most-active state), or find the datasheets and calculate. Use "max" multiplied by "time" to get "amp-hour." For example, a 10,000mAh battery with a 500mA load could last 20 hours. You may find the power requirement will push you away from batteries into mains power (down-converted to 5VDC with a simple smartphone transformer/wall-wart.
Sounds like I should just use a usb-c cable and plug in into a wall wart then. I can always investigate other options down the road.
Figured out the esp32-c3 wiring to the oled, so that's fixed.
The coding is going to be the hard part for me. Always easy to find a tutorial for one specific thing, like I used to make the animated face on loop. But I want to expand upon that and I have no idea how to get started; or if it is even possible. Unless I do one very large gif with all of the face "options" and have that loop.
It would be cool if I could have one gif repeat for awhile, then throw in a random gif to play once, then back to the repeating gif. I don't know the correct terminology in order to search for it.
Here is a "timing" simulation... it measures in milliseconds, but can easily be adapted to seconds. You could generate a random value of "x" seconds to see when the next appearance of the random gif shows.
You already have... and almost anything you can imagine is possible... now that you have a start, identify what you want to add.
By the way; Neopixels have three LEDs, each consuming about 15mA, so that equals 45mA per Neopixel. I think I found a reference to the OLED current consumption at 15mA (sounds low, but that is the value on the "OLED 1306 datasheets" I found). I use the USB/transformer method for all my projects, because none are industrial sized.
[edit]
Regarding the winking face animation. You could use the timing shown in the "eventTiming" simulation and a random value to have the "wink" occur at another random interval.
A series of micropython/arduino videos
Here is a sim for your OLED when it is in "idle" mode...
Sorry to revive this post. I finally got all of the actual parts and starting playing with the real version of this. I first tried the esp32-c3 mini with the SSD1306 display and everything worked perfectly transitioning from the wowwiki test. But I don't love the display. I bought a TFT ST7789 display because the resolution was 240x240 which fit better for my project. It obviously requires different wiring and libraries to get it to work. I'm just attempting to show simple text on the display to start, but I can't get anything to show up. I don't know if it's my wiring, or something to do with my setup files. It appears to be in a constant state of rebooting. I recently learned about strapping pins and I'm unsure if that might have something to do with it?
This is basic code that I'm trying to use in Arduino.