KuttyPy — Interactive Playground [ Microcontroller Training Utility ] —


Microcontroller training board for beginners

+ Fancy UI with click-and-explore features.
+ Explicitly displays all registers modified for each operation.
+ Direct Register level access, and tweaking tools.
+ Monitoring utilities built into the bootloader.
+ Upload your own compiled C code, and use as a serial monitor!

The kuttyPy (/kʊtipʌɪ/) Microcontroller training utility allows real-time manipulation of the registers in microcontrollers via a connected computer containing its python library. setReg and getReg function calls act as a real-time debugging and monitoring utility, and combined with Python’s visualization and analytical utilities, this approach has immense pedagogical potential for beginners.

The kuttyPy hardware is an ATMEGA32 microcontroller development board developed by the ExpEYES project, and is currently supported by this software. It contains the kuttyPy firmware, but can also be used to run other programs via its bootloader.



Download the relevant installer

Tested on Windows 7/10 , and Ubuntu 18.04

Installation from source (License: MIT)

  • Install dependencies (Ubuntu 18.04)
    sudo apt-get install python3 python3-serial python3-pyqt5 python3-pyqt5.qtsvg
  • Clone the repository, and run the file
    git clone https://github.com/csparkresearch/kuttypy-gui
    cd kuttypy-gui
    python3 KuttyPyGUI.py

Examples and Features

8 Channel voltmeter, 0-5000 mV [ Without Analog Frontend ]


Simple blink.py example

Screenshot Screencast

Monitor your code’s activity while it executes


Add custom register blocks, twiddle bits, and observe! In this demo, the ADC is read by first setting the bits in the ADCSRA(control and status register), then reading back ADCL(8LSB)+ADCH(2MSB), and also checking the new status of ADCSRA after the operation.

Plotting ADC values using matplotlib

Screenshot Screencast

Screencast Screencast

Plug and play various accessories such as this Hall Sensor, & servo motor.

Seamless switching between the KuttyPy monitor, and user uploaded hex file.

The KuttyPy monitor code is part of the bootloader. This allows users to upload their own Hex files without losing the training utility features.

App Switching

This example shows how to skip back and forth to an LED scanning code (which also prints letters to the serial port) written in C and uploaded.

In the animation, after fiddling a little with the PWM controls on the monitor, the ‘user app’ button is clicked. This triggers the following:

  • Within a few ten milliseconds the user uploaded hex file starts executing
  • The console turns into a serial monitor, and shows any text sent by the user uploaded hex.

The user can switch back to the monitoring utility in a snap!

Persistence of vision


A persistence of vision display made with C code! Write text in thin air using 8 LEDs on PORTB.

Developed by Jithin B.P @CSpark Research, 2018.
Special thanks to Georges Khazanadar for Debianizing efforts.