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

**URL:** <https://forum.arduino.cc/t/morse-webui-on-arduino-uno-q-web-python-mcu-with-realistic-morse-timing/1428138>\
**Category:** Showcase\
**Created:** [January 30, 2026, 5:09pm UTC](https://forum.arduino.cc/t/morse-webui-on-arduino-uno-q-web-python-mcu-with-realistic-morse-timing/1428138 "2026-01-30T17:09:06Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![philippe86220](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/philippe86220/32/733778_2.png) [@philippe86220](https://forum.arduino.cc/u/philippe86220)\
**Post date:** [January 30, 2026, 5:09pm UTC](https://forum.arduino.cc/t/morse-webui-on-arduino-uno-q-web-python-mcu-with-realistic-morse-timing/1428138/1 "2026-01-30T17:09:06Z")

</div>

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](https://github.com/philippe86220/morse-webui-unoq-buzzer-modulino/tree/main)

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.

---

<div class="post-metadata">

**Author:** ![philippe86220](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/philippe86220/32/733778_2.png) [@philippe86220](https://forum.arduino.cc/u/philippe86220)\
**Post date:** [January 30, 2026, 7:41pm UTC](https://forum.arduino.cc/t/morse-webui-on-arduino-uno-q-web-python-mcu-with-realistic-morse-timing/1428138/2 "2026-01-30T19:41:39Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![gilshultz](https://avatars.discourse-cdn.com/v4/letter/g/67e7ee/32.png) [@gilshultz](https://forum.arduino.cc/u/gilshultz)\
**Post date:** [January 30, 2026, 10:20pm UTC](https://forum.arduino.cc/t/morse-webui-on-arduino-uno-q-web-python-mcu-with-realistic-morse-timing/1428138/3 "2026-01-30T22:20:00Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![philippe86220](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/philippe86220/32/733778_2.png) [@philippe86220](https://forum.arduino.cc/u/philippe86220)\
**Post date:** [January 31, 2026, 7:47am UTC](https://forum.arduino.cc/t/morse-webui-on-arduino-uno-q-web-python-mcu-with-realistic-morse-timing/1428138/4 "2026-01-31T07:47:28Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![GolamMostafa](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/golammostafa/32/239011_2.png) [@GolamMostafa](https://forum.arduino.cc/u/GolamMostafa)\
**Post date:** [January 31, 2026, 8:27am UTC](https://forum.arduino.cc/t/morse-webui-on-arduino-uno-q-web-python-mcu-with-realistic-morse-timing/1428138/5 "2026-01-31T08:27:53Z")

</div>

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.”

---

<div class="post-metadata">

**Author:** ![philippe86220](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/philippe86220/32/733778_2.png) [@philippe86220](https://forum.arduino.cc/u/philippe86220)\
**Post date:** [February 1, 2026, 8:12am UTC](https://forum.arduino.cc/t/morse-webui-on-arduino-uno-q-web-python-mcu-with-realistic-morse-timing/1428138/6 "2026-02-01T08:12:27Z")

</div>

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](https://github.com/philippe86220/morse-webui-unoq-buzzer-modulino/blob/main/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!
