Final project finalized concept | Handdrawn shape guessing using AI

Let me walk you through my journey of planning an Arduino integration for my existing Python-based drawing application. TBH the Arduino implementation isn’t complete yet, but the documentation and planning phase has been fascinating!

The Current State: A Digital Drawing Assistant

Before diving into the Arduino part, let me elabroate about the current state of the application. My app is built with Python and PyQt5, featuring:

      • A digital canvas for freehand drawing
      • Color selection and brush size options
      • An AI assistant that can recognize what you’ve drawn (with a fun, playful personality)
      • The ability to save, load, and organize drawings

The AI assistant is my favorite part—it has this quirky personality that makes drawing more entertaining. It’ll say things like “That’s obviously a circle! Van Gogh would approve!” or “I’m as lost as a pixel in a dark room. Can you add more detail?” of course the hardest part was to actually come up with those lines.

 

The Arduino Part

The next phase of development involves adding physical controls through an Arduino. Here’s what I’m planning to implement:

      • Joystick control for moving the digital cursor and drawing
      • Physical buttons for clearing the canvas, changing colors, and triggering the AI assistant
      • Visual and audio feedback to enhance the experience

The beauty of this integration is how it bridges the digital-physical gap.  I am trying to reach the peak of interactivity that I can think of, and I think having an interactive AI system is as far as I can, with my current knowledge, achieve and implement.

Vision of the structure

app,py/

├── main.py (needs to be updated)
├── arduino_integration.py (not yet there)
├── test_arduino.py (not yet there)
├── config.py

├── core/
│ ├── __init__.py
│ ├── conversation.py
│ ├── drawing_manager.py
│ ├── recognition.py
│ ├── tts.py
│ └── arduino_controller.py (not yet there)

├── data/
│ ├── __init__.py
│ ├── database.py
│ ├── history.py
│ └── user_settings.py

├── ui/
│ ├── __init__.py
│ ├── main_window.py
│ ├── canvas.py
│ ├── toolbar.py
│ ├── settings_dialog.py
│ └── training_dialog.py

├── Arduino/
│ └── DrawingAI_Controller.ino (not yet there)

└── sounds/ (not set, only palceholders)
├── connect.wav
├── disconnect.wav
├── clear.wav
├── color.wav
└── guess.wav

Challenges

I want to have the joystick and buttons on a  plain wooden plank and in a container to hold it in place, and the buttons not on a breadboard but actually on a physical platform that makes everyting looks nicer, to be honest i am so lost with that, but we will see how things go.

Leave a Reply