This project is inspired by these two YouTube videos: first and second. But the main differences are that it uses CH32V003 microcontroller and all related files are open sourced too. You can also view how it works in SimulIDE.
Read the article about this device (rus) or habr.