# Control Arduino UNO Q via Smartphone Web Dashboard

> Source: <https://www.hackster.io/daniel-d-souza/control-arduino-uno-q-via-smartphone-web-dashboard-ceb1ba>
> Published: 2026-06-25 12:01:42+00:00

The Official Arduino UNO Q is a powerhouse. Unlike traditional microcontrollers, it features a "dual-brain" architecture: a Qualcomm® Dragonwing™ MPU running Linux Debian for heavy AI/processing tasks, and an STM32U585 MCU for real-time hardware control.

But once you deploy this board in a remote location like a smart garden monitor, a ceiling-mounted AI camera, or a remote weather station plugging in a USB-C cable to check its status or change a setting is a massive hassle.

This project shows you how to bridge the two "brains" to create a wireless smartphone dashboard. You will host a lightweight web server on the Linux side that lets you control the STM32's pins and view real-time hardware feedback directly from your phone's browser. No custom apps to install, no cables needed after setup!

DetailsTo make this work, the two processors need to talk to each other.

- The Linux MPU runs a Python web server that serves a clean HTML dashboard to your smartphone over Wi-Fi.
- When you tap a button on your phone, the Python script sends a serial command to the STM32 MCU.
- The STM32, which is constantly listening, receives the command and toggles the hardware (like turning on a relay or drawing a pattern on the onboard 8x13 LED matrix).

This setup means your phone acts as the remote control, the Linux MPU acts as the wireless router/web host, and the STM32 acts as the muscle.

Step 1 — Initial Setup and Wi-Fi ConnectionFirst, we need to get the UNO Q connected to your local network.

- Connect the
[Arduino UNO Q](https://robocraze.com/products/official-arduino-uno-q-sbc)to your PC via the USB-C port. - Power it using a 5V 3A USB-C PD adapter (or your PC, though a dedicated adapter is recommended for full SBC performance).
- Access the Linux terminal via SSH or the serial console.
- Connect to your Wi-Fi using the standard Debian network manager or the Arduino App Lab.
- Once connected, type hostname -I in the terminal to find the board's IP address (e.g., 192.168.1.45). Note this down!

Now we program the real-time MCU to listen for commands from the Linux side.

- Open the
[Arduino IDE](https://www.arduino.cc/en/software)on your PC. - Select the Arduino UNO Q (STM32 side) as your board and select the correct COM port.
- Upload the following sketch. This code listens to the internal serial port for specific characters (1 to turn on the hardware, 0 to turn it off) and prints a heartbeat message back to the Linux side so you know it's alive.

Now we move to the Qualcomm MPU side. We will create a simple Python web server using the Flask library.

- SSH into your Arduino UNO Q's Linux environment.
- Install
[Flask](https://flask.palletsprojects.com/en/stable/)and PySerial by running: pip3 install flask pyserial - Create a new Python file named dashboard.py and paste the code provided below. This script creates a mobile-friendly web page with "ON" and "OFF" buttons.
- Run the script:
[python3](https://www.python.org/downloads/release/python-380/)dashboard.py

This is the best part—no apps to install, no cables needed!

- Make sure your smartphone is connected to the same Wi-Fi network as the Arduino UNO Q.
- Open Chrome or Safari on your phone.
- Navigate to
[http://192.168.1.45:5000](http://192.168.1.45:5000)(replace with your board's actual IP address). - You will see a clean, mobile-friendly dashboard.
- Tap the buttons! You will instantly see the STM32 respond and the onboard hardware toggle.

**Pro-Tips for Deployment**

**Static IP:** To avoid typing a new IP address every time, assign a static IP to your UNO Q in your router's DHCP settings.**Expand It:** You can easily expand this dashboard to read temperature sensors connected via the Qwiic connector, or even trigger the AI vision models pre-loaded in the Arduino App Lab!**Auto-start:** To make the Python dashboard run every time the UNO Q boots, add the python3 /path/to/dashboard.py command to your Linux cron table or systemd services.

[Read more](javascript:void(0))
