Tired of pressing the three keyboard keys to type “UwU” each time Juichi wanted to greet his nerdy friends’, he made this handy keyboard emulator. To add to the novelty, he also integrated an RGB mood light, added sound effects when the button is pressed, and enabled it to become a PC connected speaker. We caught up with Juichi to learn more.
Tell our readers a little about yourself, Juichi.
I am a third year Electrical Engineering student at the University of Queensland. My main passion is making useless anime related gadgets and high voltage electronics such as tesla coils.
We noticed many high voltage related projects on your YouTube, which we’ll discuss with you in the future. Tell us the motivation behind your giant 3D printed keyboard.
I love making pointless gadgets, and my motivation for this one, in particular, was a challenge to build something as dumb as possible for the UwU community. Unfortunately, I haven't had enough courage to upload it on r/uwu subreddit, but will consider it when I get published.
Be brave. We think you should post it. For our readers unfamiliar with what UwU means, can you explain this?
UwU is an popular internet meme/emote, and is often used when depicting smugness or happiness amongst the weeb community. Similar variations include "OwO" which often is used with the phrase "What's this?"
The worldwide weeb community is huge. For our readers who are unfamiliar with this term, it’s a community of anime and manga fans. What parts does your project use and how does it all work?
An Arduino Leonardo Pro Micro acts as a USB device, and a DFPlayer Mini plays MP3 files whenever the button is pressed.
Does it just work on Windows or can it work on Mac too?
Since Arduino Leonardo Pro Micro is an emulated USB device, it can work with MAC OS devices too if the correct driver is installed (tested on MacBook and worked).
Brilliant! We assume the addition of the speaker and amplifier is for added fun? What noises does your project generate?
The purpose of the speaker is to play cute anime girls saying "UwU" (multiple sound effects played at random). The speaker is driven by the integrated 1W amplifier inside DFPlayer Mini which communicates with the Arduino. The high quality speaker and passive radiator can be used as an everyday speaker to play music with decent bass (BOSE speaker is total overkill for this project, but I used what I had.
We see it also doubles as a mood lamp? Tell us about the RGB LED and how that works.
The Arduino Leonardo Pro Micro also controls the WS2812B LED strip with a single digital pin. The LED strip plays flowy rainbow animation when IDLE and when it's playing music. It flashes white when the button is pressed.
Tell us about the code. Was this your code or a remix?
I referenced code from a few sources:
https://circuitjournal.com/how-to-use-the-dfplayer-mini-mp3-module-with-an-arduino
https://stackoverflow.com/questions/59394851/how-to-create-a-rainbow-wave-on-led-strip-using-arduino
Libraries include:
SoftwareSerial.h, used for serial communication with DFPlayer Mini.
DFRobotDFPlayerMini.h, used for controlling the DFPlayer Mini
FastLED.h, used for controlling the WS2812B strip
Keyboard.h, enables keyboard function through USB port.
We assume it would be easy enough to modify the code so the switch can trigger other functions on the computer?
A single line of code can be modified to type whatever the user desires. It can be used as a hotkey for shortcuts. The MP3 files inside the SD card can also be changed to play any sound effects or music with no changes to the code (>5 SFX, 1 music).
Maybe a switch to quickly hide a game when you should be studying? Ha ha. How did you go about designing the 3D model, and what 3D printer did you use?
The design was hand drawn first with calipers and pencil. The CAD was done using CREO Parametric.
I used an entry level 3D printer Ender 3 V2 to print using PLA. Due to its shape, warping from the print surface was problematic, so glue was applied to the print bed before commencing printing for better adhesion.
Do you have the code and 3D print files available if any of our readers want to make something similar for themselves?
The code is available on GitHub, and print files are available on Thingiverse for free.
Code: https://github.com/Juntendo11/UwU-keyboard
CAD (UwU ver):
https://www.thingiverse.com/thing:5269500
CAD (OwO ver):
https://www.thingiverse.com/thing:5269545
(I provided an unengraved version so that they can customise it if they wanted to.)
Awesome. Is there anything else we haven't covered that our readers should know if they want to build one for themselves?
The circuit has a voltage divider as I heard RX of the DFPlayer cannot tolerate 5V. Also, there is an internal pull-up resistor that must be used for the pin that is connected to the switch.
I hope makers can see past the silly nature of my build, and use it for more useful purposes. To change the engraving on the keycaps, free CAD software such as Blender can be used to change what you want to type.
I would classify the project as intermediate. Although the project is not complicated, the building process may take some time. For instance, the print time can be over 24 hours, and you need time to wire it all up in the tight space.
For good sound quality using the passive radiator, I recommend a good seal so the enclosure is airtight. Also, since I used a BOSE speaker and passive radiator, it is quite hard and expensive to find the exact model. Users may need to change the CAD design around so that it can be much more accessible, such as Jaycar’s AS3000 speaker.
The project does require a 3D printer, and some CAD knowledge to customise, however, a regular Jiffy box or household container could be used instead if you don’t have access to a 3D printer.
Great! Thank you for sharing your project with us.
Parts Required: | Jaycar | ||
---|---|---|---|
1 x Arduino-compatible Leonardo Pro Micro 5V | - | ||
1 x Momentary Switch | SP0717 | ||
1 x DFPlayer Mini | - | ||
1 x microSD card (Up to 32GB with FAT16, FAT32 file system) | - | ||
1 x Speaker and radiator | XC4390 | ||
30cm x WS2812B LED Strip | RR0560 | ||
1 x 330Ω Resistor* | RR0568 | ||
1 x 680Ω Resistor* | RR0572 | ||
1 x 1kΩ Resistor* | WC7724 | ||
1 x USB Cable with Micro USB Plug | HP0825 | ||
OPTIONAL | - | ||
4 x Rubber Feet | - | ||
10g x Felt or Cotton (to improve sound quality) |