This starter kit combines the EG800Z series QuecDuino development board with more than twenty sensors and actuators.
The QuecDuino Starter Sensor Experiment Kit is an all-in-one development platform designed for beginners, makers, and educational use. It inherits the ease of use of the Arduino open-source hardware ecosystem and integrates Quectel's cellular connectivity technology, making it easier to turn IoT ideas into working products without complex setup.
Product features:
- IoT-ready development: Unlike a traditional Arduino Uno, this kit includes built-in network connectivity so your code can access the Internet directly without relying on a PC or an additional Wi-Fi module.
- Industrial-grade stability: Built on a Quectel industrial-grade module, it supports a wide operating temperature range from -35 degrees C to 85 degrees C, making it suitable for both learning and industrial prototype validation.
- Rich sensor ecosystem: The kit includes dozens of sensor peripherals for learning and experimentation, with hardware combinations that map well to real IoT development scenarios.
This repository contains UniRTOS-based demo projects for the QuecDuino Starter Sensor Experiment Kit.
For more information about development on the UniRTOS platform, visit the UniRTOS Documentation Center.
| No. | Module | Description |
|---|---|---|
| 01 | LED Module | Basic GPIO output control example. It uses high and low levels to turn the LED on and off, making it a fundamental digital output practice for embedded beginners. |
| 02 | Single Button Module | Basic GPIO input detection example for button press and release handling, suitable for learning button state recognition. |
| 03 | RGB LED Module | Demonstrates red, green, and blue color mixing. |
| 04 | Microphone (MIC) Module | Detects ambient sound intensity. |
| 05 | Buzzer Module | Buzzer control example for simple fixed-tone alert sounds. |
| 06 | Water Level Detection Module | Resistive liquid detection sensor for water level measurement, water presence detection, and leakage alarm scenarios. |
| 07 | Reed Switch Module (KY-025) | Magnetic reed switch that triggers an on/off signal when a magnet approaches. |
| 08 | Obstacle Detection Module (KY-032) | Infrared reflective digital detection module for short-range obstacle detection, line tracking, obstacle avoidance, and limit triggering. |
| 09 | Mini Reed Switch (KY-021) | Mini magnetic reed switch module, a passive switch controlled by a magnetic field, commonly used for door contact detection, position sensing, and limit triggering. |
| 10 | Photoresistor Module (KY-018) | Light-dependent resistor sensor that converts light intensity changes into electrical signal changes through resistance variation. |
| 11 | Flame Detection Module (KY-026) | Detects flames or open fire by sensing infrared light emitted by a flame and outputting a digital level for fire alarms and fire source detection. |
| 12 | Magic Light Cup Module (KY-027) | Combined tilt-sensing and LED module with a built-in mercury switch and bright LED, suitable for tilt detection, posture-triggered interaction, and status indication. |
| 13 | Tilt Switch Module (KY-020) | Posture-sensing digital switch, also known as a ball switch or tilt sensor, commonly used for tilt detection, anti-tip protection, posture triggering, and alarms. |
| 14 | Ultrasonic Module (HC-SR04) | Distance measurement sensor based on ultrasonic reflection, often used for mobile robot ranging, obstacle detection, and liquid level measurement. |
| 15 | Human Touch Module (KY-036) | Capacitive touch sensor that detects contact by changes in capacitance, enabling touch switch and touch key functionality as a replacement for mechanical buttons. |
| 16 | Digital Tube Module (JY005) | Single-digit seven-segment display module for showing digits 0-9 and simple symbols, widely used for counting, timing, status display, and maker projects. |
| 17 | Laser Transmitter Module (KY-008) | Semiconductor laser transmission module that efficiently converts electrical energy into laser output for applications such as ranging, lidar, optical communication, and laser indication. |
| 18 | Mercury Switch Module (KY-017) | Mercury switch module commonly used for tilt alarms, anti-tip protection, posture detection, and trigger control. |
| 19 | Temperature & Humidity Sensor (AHT20) | Temperature and humidity sensor module equipped with humidity-sensitive and thermal-sensitive elements for measuring environmental temperature and humidity. |
| 20 | Analog Piezoelectric Vibration Sensor | Analog piezoelectric ceramic vibration sensor module for detecting vibration, impact, or sound waves by outputting a corresponding analog signal under pressure or vibration. |
- A Quectel Pico development board. The examples below use this board as the reference platform.
- A USB data cable (USB-A to USB-C).
- A Windows PC.
- unirtos-toolchain.exe: Toolchain installer for compilation. Download here.
- Python: Required for running unirtos-cli. Version 3.9 or later is recommended.
- Git: Used by unirtos-cli to pull the SDK and library source code. Version 2.20 or later is recommended.
- unirtos-cli: The UniRTOS command-line tool for pulling the SDK and quickly creating projects.
- USB driver: Required for the PC to recognize the module's USB ports. Download here.
- QFlash.exe: Firmware flashing tool for downloading UniRTOS-generated firmware to the module. Download here.
- EPAT tool: Log capture tool provided by the chipset vendor, used to inspect module runtime logs and analyze application behavior. Download here.
- QCOM tool: COM port utility provided by Quectel for sending and verifying AT commands. Download here.
Before building and flashing firmware, make sure the software environment is fully configured. Refer to the UniRTOS Quick Start.
Open a new PowerShell window and run:
unirtos-cli ls-demosThe output is shown below:
unirtos-cli ls-demos [-f] [-j] [-d <project-dir>]- Function: Outputs the list of remote demos and their available versions.
- Parameters:
| Parameter | Description |
|---|---|
| -f, --force | Force an update of <unirtos_root>/demos/manifests without waiting for the default 1-hour update interval. |
| -j, --json-output | Output the result in JSON format. |
| -d, --project-dir | Starting directory. The command searches upward from this directory for env_config.json. If found, it uses the unirtos_root path defined there; otherwise it uses the default path ~/.unirtos. |
Continue in the PowerShell window and run:
unirtos-cli new -r unirtos_helloworld_demos -d E:\unirtos_demosAfter the command completes, the tool automatically downloads the helloworld example from the official demo repository and creates a new project.
The output is shown below:
unirtos-cli new [-r] <project-name> [-v <version>] [-d <project-dir>] [-f]- Function: Creates a new project. Two modes are supported: create from a template, or create directly from an existing remote demo.
- Parameters:
| Parameter | Default | Description |
|---|---|---|
| project-name | Required | Project name only. Path separators are not allowed. This option cannot be used together with -r. |
| -r, --from-demo | Disabled | Create a project from an existing remote demo. |
| -v, --version | Omitted | Specify the version of the remote demo. Formats such as 1.0.0 and v1.0.0 are supported. This option can only be used together with -r. If omitted, the latest version is used automatically. |
| -d, --project-dir | . (current directory) | Specify the base directory for the project. The final project path will be /. |
| -f, --force | Disabled | Force an update of <unirtos_root>/demos/manifests before creating the project from a demo. This option can only be used together with -r. |
Open a PowerShell window, enter the created project directory, which is the path specified by the -d option in the unirtos-cli new command, and run:
unirtos-cli env-setupAfter execution, unirtos-cli pulls the SDK from the remote source to the local machine based on the default configuration in env_config.json. By default, the SDK is stored at C:\Users<username>.unirtos. When the same SDK version is required later, the locally cached copy is reused and does not need to be downloaded again.
The output is shown below:
unirtos-cli env-setup [-d <project-dir>]- Function: Pull the specified SDK version and all required dependencies to the local storage directory according to env_config.json.
- Parameters:
| Parameter | Default | Description |
|---|---|---|
| -d, --project-dir | . (current directory) | Project directory containing env_config.json. |
After the environment has been prepared, a VS Code workspace file is automatically generated in the project directory. Open this file to load both the current project and the downloaded SDK into the same workspace, which makes it easier to inspect SDK headers and related components during development.
Go to the directory of the newly created project, as shown below:
unirtos_helloworld_demos-1.0.0/
├── CMakeLists.txt // CMake build script
├── env_config.json // Environment configuration file used by unirtos-cli
├── hello_world.c // Application source code
├── README.md // Application documentation
└── unirtos_hel....code-WorkSpeace // VS Code workspace file
The default path is C:\Users<username>.unirtos, and the downloaded SDK is located in the sdk directory under this path. The figure below shows SDK version 1.0.1:
Directory tree:
├─cmake // CMake-related configuration files
├─qos_applications/ // Application examples and business logic
│ ├─app_init // App-layer initialization files
│ └─unirtos_std // AT-side related features
├─qos_components/ // System components and middleware
│ ├── components/ // Optional functional components
│ └── system/ // System services, drivers, and protocol stacks
├─qos_kernel/ // Platform kernel adaptation projects
│ └── eigen_718/ // Typical platform adaptation
└─qos_tools // Build and debugging tools
│ └── python/ // Python tools for build, configuration, and packaging
├─build.sh // One-click build script
├─CMakeLists.txt // Main UniRTOS CMake project file
├─Kconfig // Main configuration entry for macro control dependencies and constraints
└──...
If you are using a module other than EG800ZCN_LA, update the command to match the actual target model, for example EC800ZCN_LF. The following example builds firmware for EG800ZCN_LA. Open a PowerShell window in the project directory and run:
unirtos-cli build -m EG800ZCN_LA -v EG800ZCNLAR01A01_OCPU_20260625Wait for the build to complete. The end of the log will indicate whether the firmware was built successfully, as shown below:
unirtos-cli build [-d <project-dir>] [-j <jobs>] [-m <module>] [-v <version>]- Function: Invokes the UniRTOS toolchain to build the current external application.
- Parameters:
| Parameter | Default | Priority | Description |
|---|---|---|---|
| -d, --project-dir | . (current command path) | - | Project directory. |
| -j, --jobs | 4 | CLI > env_config.build.jobs > 4 | Number of parallel build jobs. |
| -m, --module | env_config.build.module | CLI > env_config.build.module | Module name, for example EG800ZCN_LA. |
| -v, --version | Application root directory name | CLI > env_config.build.version > application root directory name | Firmware version string. |
The firmware package is generated under qos_build\release in the project directory.
Open QFlash and click Load FW Files:
Choose the .hbinpkg file from the qos_build\release folder of the corresponding project.
Power on the device by holding the power button, then open Device Manager. Under Ports (COM & LPT), find Quectel USB AT Port and record the COM port number:
Open QCOM, select the AT port identified in Device Manager, enter AT, and verify that the firmware responds with OK.
Click Device Communication, select the serial device, and click Open:
Select the Quectel USB DIAG Port channel shown in Device Manager, then click OK to view the log output:
Click Database State and select the database file to match the log database:
Select the DBG/comdb.txt file from the custom version folder under qos_build\release, then click Update:
In the UniLogViewer tab, click Stop to stop log recording:
Use Ctrl+F to search for hello world, then click Find Previous to locate the hello world application logs:























