Morse WebUI on Arduino UNO Q – Web → Python → MCU with realistic Morse timing

Hello everyone,

I would like to share a completed and stable project built around the Arduino UNO Q, combining a Web interface, Python logic on the Linux side, and real-time audio generation on the MCU side.

The goal was to explore the UNO Q architecture and to implement a realistic Morse code player, both visually and acoustically.

Overview

  • A Web interface (HTML / CSS / JavaScript) allows entering text and adjusting Morse speed.

  • A Python application running on the UNO Q Linux side exposes a simple HTTP API and manages a request queue.

  • The Python layer communicates with the MCU via the Arduino Bridge.

  • The MCU decodes the text and plays Morse code on a Modulino Buzzer, using standard Morse timing.

The project supports multiple browser tabs without collisions thanks to a queue mechanism on the Python side.

Architecture :

Web Browser
↓ HTTP (WebUI)
Python (Linux – UNO Q)
↓ Bridge.call("morse_play")
Arduino UNO Q MCU

Modulino Buzzer

Features

  • Adjustable speed (5–30)

  • Visual Morse representation (dots and dashes)

  • Realistic audio timing

  • Thread-safe queue handling

  • Clean and simple Web UI

The Morse timing and audio output have been validated by ear (I was a Morse instructor many years ago), which was important to me for this project.

Repository

GitHub repository with full source code, documentation, and screenshots:

https://github.com/philippe86220/morse-webui-unoq-buzzer-modulino

This project is intended as a reference implementation and a learning example for anyone interested in the UNO Q architecture or Web → MCU integration.

Best regards.

3 Likes

Update:

I noticed that a small part of the code was missing at the end of a few files due to a copy/paste issue.

The repository has been updated and is now complete.

Thanks to those who already checked it out.

Thanks for sharing! That should help beginning Amateur radio ( ham radio ) operators and more advanced ones to keep there skills.

1 Like

Thanks for the kind feedback, much appreciated.

Beyond Morse practice itself, one of the main goals of this project was to demonstrate the full UNO Q architecture, showing how a Web interface interacts with the Linux core, which then communicates with the MCU (STM32) via the Bridge.

In that sense, it is meant as much as an architectural example of a WebUI running on the Linux core and communicating with the MCU via the Bridge, as a Morse training tool.

Thanks for the hard work in putting everything together and making the system work. The project would benefit university students if it were presented in a tutorial format in the forum -- step by step, showing "do this and get this result.”

Thank you for the suggestion.

I have now added a detailed tutorial explaining the overall architecture and data flow of the project
(WebUI → Linux → MCU), with step-by-step experiments and validation.

The tutorial focuses on system design and interaction between layers rather than code line-by-line, which is intentionally kept readable in the repository.

LIEN_VERS_TUTORIAL.md

Steps 2 and 3 (WebUI availability and API experiments) are optional validation experiments.
They were fully implemented and tested during development to verify the complete execution path.

Thank you again for the feedback — any further comments, corrections, or clarifications are very welcome!

1 Like