Hiwonder robots do not share one universal programming environment. Depending on the exact controller and product configuration, a Hiwonder robot may use WonderCode block programming, micro:bit MakeCode, embedded Python or MicroPython, full Python on Linux, C, C++, Static TypeScript or JavaScript-style MakeCode, OpenCV, ROS or ROS2.
The same language name can also refer to different runtime environments. A Python file executed on an ESP32 controller is not equivalent to a Python program running on Raspberry Pi OS, Ubuntu or an NVIDIA Jetson platform. Libraries, APIs, upload methods and available computing resources differ substantially.
The correct programming path therefore starts with five questions:
- What is the exact robot model?
- Which controller or computer does it use?
- Which kit configuration is selected?
- Which operating-system image or firmware is installed?
- Which official documentation branch matches that hardware?
This guide explains the main Hiwonder programming environments, separates languages from frameworks and hardware platforms, maps representative robot families to their supported software routes and provides learning paths for beginners, embedded developers, computer-vision learners and ROS users.
Disclosure: OpenELAB sells or distributes Hiwonder products. This guide focuses on technical compatibility and learning requirements rather than assuming that every product supports every advertised programming method.
Compatibility notice: Capabilities can differ by controller, hardware revision, kit version, operating-system image, accessories and software release.
Last technically reviewed: July 2026.
Quick Answer: What Languages Can Hiwonder Robots Use?
Depending on the model and controller, Hiwonder robots may support:
- Embedded Python or MicroPython on ESP32 and similar microcontrollers
- Full Python on Raspberry Pi or NVIDIA Jetson Linux systems
- Python inside ROS or ROS2 for robot nodes and applications
- C and C++ for embedded control, Linux applications and ROS development
- Arduino-style C/C++ through the Arduino IDE on compatible controllers
- WonderCode, Hiwonder’s Scratch-style block-programming environment
- MakeCode Blocks on compatible micro:bit products
- MakeCode Static TypeScript, commonly displayed as JavaScript
- MakeCode Python or Static Python on compatible micro:bit projects
Hiwonder robots may also use OpenCV, ROS and ROS2, but these are libraries or robotics frameworks rather than programming languages.
| Programming direction | Technology | Typical projects | Compatibility requirement |
|---|---|---|---|
| Visual programming | WonderCode or MakeCode Blocks | Sequences, loops, conditions, sensors and basic robot actions | Requires the correct product extension, controller and software package |
| Embedded Python | MicroPython or Hiwonder embedded Python workflows | Servos, sensors, gait control and embedded robot behavior | Runs on a microcontroller; desktop Python libraries are generally unavailable |
| Linux Python | Full Python on Raspberry Pi or Jetson | OpenCV, camera processing, robot control, networking and automation | Requires the correct Linux image, drivers and model-specific libraries |
| Embedded C/C++ | Arduino IDE and board-specific libraries | Motors, servos, sensors, serial communication and firmware-level logic | Requires the correct controller board package and official libraries |
| MakeCode text programming | Static TypeScript/JavaScript or MakeCode Python | Classroom projects and progression from blocks to text | Applies to compatible micro:bit configurations, not every Hiwonder robot |
| ROS development | ROS1 and/or ROS2 with Python, C or C++ | Mapping, localization, navigation, LiDAR, depth cameras and robot integration | ROS version depends on the exact model, controller and system image |
Core rule: Select the robot by controller and project requirements before selecting the programming language.
Programming Languages, Platforms and Frameworks Are Different
Product pages often place Python, Arduino, Raspberry Pi, ROS and OpenCV in one feature list. These terms describe different parts of the development stack.
| Category | Examples | Role |
|---|---|---|
| Programming languages | Python, MicroPython, C, C++, Static TypeScript | Used to write robot behavior and application logic |
| Visual environments | WonderCode, MakeCode Blocks | Allow programs to be assembled graphically |
| Controller ecosystems | Arduino, ESP32, micro:bit, Raspberry Pi, NVIDIA Jetson | Determine processing power, operating system, interfaces and development tools |
| Libraries | OpenCV, MediaPipe and model-specific robot libraries | Provide reusable perception or robot-control functions |
| Robotics frameworks | ROS and ROS2 | Organize robot software, drivers, communication, navigation and perception |
| Configuration formats and tools | YAML, launch files, terminal commands and package managers | Configure and operate advanced robot systems |
Arduino is a hardware and software ecosystem rather than a programming language. ROS is a robotics framework rather than a language. OpenCV is a computer-vision library. Raspberry Pi and NVIDIA Jetson are computing platforms.
The Three Main Python Environments
“Supports Python” is not precise enough to determine compatibility. Hiwonder robots use at least three distinct Python routes.
| Python route | Runtime | Representative products | Typical use |
|---|---|---|---|
| Embedded Python or MicroPython | ESP32 or another microcontroller | Tonybot, MechDog, miniHexa and the ESP32 CoreX application controller used by xArm AI | Servos, sensors, motion commands and embedded robot behavior |
| Full Python on Linux | Raspberry Pi OS, Debian or Ubuntu | TonyPi, MasterPi and Raspberry Pi vision platforms | OpenCV, camera processing, networking and higher-level robot applications |
| Python inside ROS or ROS2 | Linux plus ROS middleware and robot packages | MentorPi, JetRover, JetAuto and ROSOrin configurations | Nodes, topics, mapping, navigation, perception and system integration |
Code cannot be assumed to transfer directly between these environments. A library written for Raspberry Pi Linux may not run on an ESP32, and a ROS2 node may depend on packages unavailable in a normal Python installation.
WonderCode: Hiwonder’s Scratch-Style Environment
WonderCode is Hiwonder’s graphical programming environment for supported robots. It uses Scratch-style blocks, but it is not the same as opening the standard MIT Scratch website and connecting any robot.
WonderCode projects require:
- A supported Hiwonder model
- The correct product extension
- Required USB drivers
- A compatible controller connection
- The correct upload or download process
What Learners Can Practice
- Sequences and action groups
- Loops and conditional logic
- Variables
- Servo and motor control
- Sensor thresholds
- Gripper movements
- Robot gait commands
- Light, sound and display responses
Representative Products
Official WonderCode learning paths are available for representative products such as:
- xArm AI
- Tonybot
- MechDog
The blocks, libraries and upload processes remain model-specific. A Tonybot project should not be assumed to run on MechDog or xArm AI without modification.
Computer compatibility: The reviewed WonderCode and Hiwonder Python Editor tutorials are primarily Windows-oriented and commonly use .exe installers, COM ports and CH340 serial drivers. macOS and Linux users should verify official support before purchasing a controller-dependent kit.
MicroPython and Embedded Python
MicroPython is a lightweight implementation of Python designed for microcontrollers. It provides Python-style syntax while operating within substantially lower memory and processing limits than a Raspberry Pi or desktop computer.
On compatible Hiwonder robots, programs are normally edited on a computer, transferred to the embedded controller and executed by that controller.
Representative Products
- Tonybot: ESP32 humanoid with embedded Python, WonderCode and Arduino routes
- MechDog: ESP32 quadruped with MicroPython, WonderCode and Arduino projects
- miniHexa: ESP32 hexapod with formal MicroPython, Arduino and Scratch learning paths
- xArm AI: uses an ESP32 CoreX application controller alongside a separate servo controller
xArm AI Uses Two Controllers
xArm AI should not be described as a single-controller ESP32 robot.
Its architecture includes:
- An MM32F103CBT6 servo controller for bus-servo movement and stored action groups
- An ESP32-based CoreX controller for application logic, sensors, expansion modules and embedded programming
The two controllers communicate with each other. Code downloaded to CoreX controls the application layer while the servo controller manages lower-level arm movement.
Best Uses for Embedded Python
- Servo and gait control
- Sensor input
- State machines
- Simple control loops
- Embedded automation
- Users who prefer Python-style syntax over Arduino C++
Important Limitations
Embedded Python should not be treated as unrestricted desktop Python. Packages such as full desktop OpenCV, PyTorch and many Linux libraries cannot normally run directly on the microcontroller.
Full Python on Raspberry Pi Robots
Raspberry Pi-based Hiwonder robots use a Linux environment and can run full Python together with OpenCV, networking tools and product-specific robot libraries.
TonyPi and TonyPi Pro
TonyPi and TonyPi Pro focus on Raspberry Pi, Python, OpenCV and humanoid motion.
Representative projects include:
- Color recognition and tracking
- Tag recognition
- Visual line following
- Face detection
- MediaPipe-based interaction
- Action and gait control
These products should not be described as ROS2 mapping platforms.
MasterPi
MasterPi combines a Raspberry Pi, a Mecanum-wheel chassis, a camera and a compact robotic arm.
Representative projects include:
- Mecanum movement
- Color sorting
- Target tracking
- Visual line following
- Robotic-arm control
- Object transport under controlled conditions
MasterPi’s main programming route is Python and OpenCV rather than LiDAR mapping or ROS2 navigation.
MentorPi
MentorPi is a separate Raspberry Pi 5 route designed around ROS2, LiDAR and mobile-robot navigation. It should not be grouped with TonyPi and MasterPi as though they share the same project set.
Arduino, C and C++
Arduino projects normally use C/C++-style sketches together with board-specific libraries and the Arduino IDE.
Arduino development is useful for:
- Direct sensor and actuator control
- PWM and servo timing
- Serial communication
- I2C and other peripheral buses
- Embedded state machines
- Controller-level secondary development
Representative Arduino-Compatible Products
- xArm AI through its supported controller environment
- Tonybot
- MechDog
- miniHexa
- Other compatible Arduino and ESP32 education kits
When Arduino Is Preferable
Choose Arduino-style development when the main objective is embedded electronics, firmware, direct peripheral control or understanding the hardware layer.
Choose Python when readability, computer vision, data processing or faster application development is more important.
micro:bit MakeCode, Static TypeScript and MakeCode Python
Microsoft MakeCode is a separate classroom development ecosystem associated with micro:bit and other supported hardware.
MakeCode provides:
- Blocks for visual programming
- Static TypeScript, often displayed as JavaScript in the editor
- MakeCode Python or Static Python
These text environments are designed for MakeCode. They should not be treated as identical to unrestricted browser JavaScript, Node.js, CPython or MicroPython.
How MakeCode Python Works
MakeCode Python supports a Python-like subset designed to map into the MakeCode toolchain. It is intended for educational progression between blocks and text rather than general-purpose desktop software development.
Hiwonder Compatibility
MechDog documentation includes a micro:bit MakeCode learning path for the Ultimate Kit or another compatible expansion configuration.
The required hardware may include:
- A micro:bit board
- A compatible adapter board
- Connection cables
- Kit-specific structural parts
These components are not included with every MechDog package.
JavaScript and C Support on MentorPi T1
Hiwonder’s current MentorPi T1 product specifications list Python, C, C++ and JavaScript among its programming languages.
MentorPi T1 is a Raspberry Pi 5 tracked robot that uses ROS2 Humble in a Docker-based environment. Its project scope can include LiDAR, navigation, computer vision and AI applications, depending on the selected camera and controller package.
The presence of JavaScript in the official specification does not mean every ROS2 tutorial is implemented in JavaScript. Buyers should check which official examples, APIs or user-interface projects use each listed language.
OpenCV: Computer Vision Through Python or C++
OpenCV is a computer-vision library rather than a programming language.
On Hiwonder robots, it is commonly used through:
- Python on Raspberry Pi
- Python or C++ on NVIDIA Jetson
- ROS or ROS2 vision packages
Typical OpenCV Projects
- Color recognition
- Color sorting
- Target tracking
- Line following
- Tag or QR-code recognition
- Image filtering
- Camera-based arm positioning
A camera-equipped robot is not automatically compatible with every OpenCV project. The correct camera driver, operating-system image, project package and robot API must match the selected version.
ROS and ROS2 Programming
ROS and ROS2 are robotics frameworks and software ecosystems. They are normally used with Python, C or C++, together with Linux tools and configuration files.
A ROS project may involve:
- Nodes
- Topics
- Services
- Actions
- Launch files
- YAML configuration
- Coordinate transforms
- Device drivers
- Visualization and simulation tools
Typical ROS Projects
- Teleoperation
- LiDAR mapping
- Localization
- Autonomous navigation
- Path planning
- Depth-camera perception
- Robotic-arm integration
- Multi-sensor systems
ROS1 and ROS2 Depend on the Exact Configuration
JetRover, JetAuto and ROSOrin should not be described as though every configuration runs both ROS1 and ROS2.
- Legacy Jetson Nano environments may include ROS1 resources.
- Jetson Nano Docker, Orin Nano, Orin NX and Raspberry Pi 5 environments may use ROS2.
- Current JetAuto Orin courses use ROS2 workflows.
- ROSOrin buyers should follow the documentation for the selected controller and image.
The correct description is:
ROS1 and/or ROS2 support depends on the exact robot model, controller, operating-system image and documentation branch.
MentorPi M1/A1 and MentorPi T1 Are Different Routes
MentorPi M1 and A1
MentorPi M1 and A1 are Raspberry Pi 5 ROS2 mobile-robot platforms. Depending on the configuration, they support:
- ROS2
- Python and C++
- OpenCV
- LiDAR mapping
- Localization
- Navigation
- Monocular or depth-camera perception
Depth-camera functions apply only to matching depth-camera variants.
MentorPi T1
MentorPi T1 uses a tracked chassis and a Raspberry Pi 5 platform. Official specifications list:
- ROS2 Humble in Docker
- Python
- C
- C++
- JavaScript
- LiDAR
- Monocular or depth-camera configurations
M1/A1 and T1 should therefore have separate compatibility entries rather than being merged into one generic MentorPi row.
Programming Support by Representative Robot Family
The following table summarizes representative routes. It does not mean that every kit or hardware revision provides identical support.
| Robot family | Controller | Programming route | Main learning focus | Compatibility warning |
|---|---|---|---|---|
| xArm AI | MM32F103CBT6 servo controller plus ESP32 CoreX | Embedded Python, WonderCode and Arduino/C++ | Arm motion, sensors, actions and embedded development | CoreX and the servo controller perform different roles |
| Tonybot | ESP32 | Embedded Python, WonderCode and Arduino/C++ | Humanoid motion, sensors and optional interaction modules | Not the same software platform as Raspberry Pi-based TonyPi |
| MechDog | ESP32; optional micro:bit route | MicroPython, WonderCode, Arduino/C++ and MakeCode on compatible configurations | Quadruped gait, sensors and classroom interaction | micro:bit requires the correct kit or expansion hardware |
| miniHexa | ESP32 | MicroPython, Arduino and Scratch-style programming | 18DOF gait, inverse kinematics and sensors | It is not an official ROS robot |
| TonyPi / TonyPi Pro | Raspberry Pi 5 | Full Python and OpenCV | Humanoid vision, tracking, line following and MediaPipe | Do not assume ROS2 mapping support |
| MasterPi | Raspberry Pi 5 | Full Python and OpenCV | Mecanum movement, visual sorting and arm control | Not a native LiDAR-mapping platform |
| MentorPi M1 / A1 | Raspberry Pi 5 | ROS2, Python, C++, OpenCV and Linux tools | LiDAR, mapping, localization and navigation | Camera and controller contents vary by configuration |
| MentorPi T1 | Raspberry Pi 5 tracked platform | ROS2 Humble in Docker; Python, C, C++ and JavaScript listed | Tracked navigation, LiDAR, vision and AI projects | Confirm which official examples use each listed language |
| JetRover | Raspberry Pi or NVIDIA Jetson, depending on configuration | ROS1 and/or ROS2, Python, C++, OpenCV and Linux | Navigation, chassis comparison, LiDAR and perception | ROS version depends on controller and system image |
| JetAuto | Raspberry Pi or NVIDIA Jetson, depending on configuration | Current Orin routes use ROS2 with Python/C++, OpenCV and Linux tools | SLAM, navigation, vision and mobile-robot control | Legacy and current images should not be mixed |
| ROSOrin | Raspberry Pi or NVIDIA Jetson, depending on version | ROS2-oriented Python/C++, OpenCV and Linux development | Advanced perception, navigation and mobile manipulation | Follow the exact controller-specific documentation |
How to Choose a Learning Path
| Learning goal | Recommended stack | Representative direction | Main prerequisite |
|---|---|---|---|
| Learn coding concepts visually | WonderCode or MakeCode Blocks | xArm AI, Tonybot, MechDog or compatible micro:bit kits | Correct software extension and drivers |
| Move from blocks to embedded text code | MicroPython or Arduino C++ | Tonybot, MechDog, miniHexa or xArm AI | Basic variables, loops and hardware concepts |
| Learn Linux Python and OpenCV | Full Python and OpenCV | TonyPi or MasterPi | Linux basics, camera setup and Python |
| Learn embedded electronics | Arduino IDE, C and C++ | ESP32 and Arduino-compatible robots | Basic circuits, sensors and serial communication |
| Learn introductory ROS2 navigation | ROS2, Python/C++, OpenCV and Linux | MentorPi M1/A1 or T1 | Linux, networking and terminal skills |
| Study advanced SLAM and Jetson AI | ROS1 and/or ROS2, Python/C++, OpenCV and Linux tools | JetRover, JetAuto or ROSOrin | Matching image, LiDAR or camera and ROS experience |
How to Start Programming a Hiwonder Robot
- Identify the exact product variant. Record the complete model, controller, memory and included sensors.
- Find the matching official documentation branch. Do not use instructions for a different controller generation.
- Confirm the required computer. Check Windows, macOS or Linux support for the programming tool.
- Install the required drivers. This may include USB serial drivers, camera drivers or network configuration.
- Use the supplied firmware or system image. Avoid replacing the official environment before confirming that the original examples work.
- Run a basic motion example. Confirm power, communication and actuator control.
- Test one sensor or camera example. Verify the hardware before combining several modules.
- Save the working configuration. Record firmware, OS image, ROS version, package versions and documentation links.
Compatibility Checks Before Buying
- Controller: Confirm ESP32, micro:bit, Raspberry Pi, Jetson or dual-controller architecture.
- Kit version: Camera, voice, LiDAR, depth-camera and micro:bit hardware may be optional.
- Operating-system image: Raspberry Pi and Jetson products may depend on a manufacturer-provided image.
- ROS version: Do not assume a ROS1 tutorial works with a ROS2 image.
- Computer compatibility: Some embedded tools are primarily Windows-oriented.
- Included controller: Some packages exclude the Raspberry Pi, Jetson board or storage device.
- Programming terminology: “Python” may mean MicroPython, full Linux Python or ROS Python.
- Source-code branch: Use the code package for the exact robot and hardware revision.
- API compatibility: Similar function names do not mean libraries are interchangeable.
Frequently Asked Questions
What programming languages can Hiwonder robots use?
Depending on the model, Hiwonder robots may use MicroPython or embedded Python, full Python on Linux, C, C++, Arduino-style C/C++, Static TypeScript or JavaScript-style MakeCode and MakeCode Python. Advanced platforms may use Python, C or C++ inside ROS or ROS2.
Can every Hiwonder robot use Python?
No. Many products offer a Python-oriented path, but the runtime differs. Embedded Python on an ESP32 is not equivalent to full Python on Raspberry Pi or Jetson.
Is MicroPython the same as Python on Raspberry Pi?
No. MicroPython is optimized for microcontrollers and supports a smaller library environment. Raspberry Pi normally runs full Python on Linux.
Can every Hiwonder robot use Scratch?
No. WonderCode is available only for supported products with the correct extensions and controller software.
Is MakeCode Python the same as MicroPython?
No. MakeCode Python is part of the MakeCode toolchain and uses a supported Python subset. It is not identical to MicroPython or desktop CPython.
Is MakeCode JavaScript normal JavaScript?
MakeCode uses Static TypeScript and commonly displays the text editor as JavaScript. It is designed for the MakeCode environment rather than unrestricted browser or Node.js development.
Is Arduino a programming language?
No. Arduino is a hardware and software ecosystem. Arduino sketches normally use C/C++ syntax and board-specific libraries.
Is ROS a programming language?
No. ROS and ROS2 are robotics frameworks. Applications commonly use Python, C or C++ together with Linux tools, packages, nodes and configuration files.
Is OpenCV a programming language?
No. OpenCV is a computer-vision library used through languages such as Python or C++.
Which Hiwonder robots are suitable for embedded Python?
Representative directions include Tonybot, MechDog, miniHexa and the CoreX application controller used by xArm AI.
Which robots are suitable for full Python and OpenCV?
TonyPi and MasterPi are representative Raspberry Pi platforms for full Python and OpenCV. Other Raspberry Pi and Jetson products may also support OpenCV through different project packages.
Which Hiwonder robots are suitable for ROS2?
MentorPi provides an educational ROS2 route. Current JetAuto, JetRover and ROSOrin configurations cover more advanced navigation and perception, but support depends on the selected controller and image.
Does every JetRover support the same ROS version?
No. ROS1 and ROS2 availability varies by controller, generation and system image.
What languages does MentorPi T1 support?
Official product specifications list Python, C, C++ and JavaScript. The platform uses ROS2 Humble in Docker. Check the official tutorials to determine which projects use each language.
What should I check before buying a Hiwonder robot?
Confirm the exact model, controller, kit configuration, included sensors, operating-system image, ROS version, computer requirements and matching official documentation.
Final Recommendation
The best programming route depends more on the controller and project than on the robot’s physical appearance.
- Choose WonderCode or MakeCode Blocks for introductory logic.
- Choose MicroPython or embedded Python for readable microcontroller programming.
- Choose Arduino C/C++ for direct hardware and embedded control.
- Choose full Python and OpenCV for Raspberry Pi vision projects.
- Choose ROS2 with Python, C or C++ for mapping, navigation and integrated robot systems.
- Choose Jetson and advanced ROS platforms when depth vision, accelerated AI or demanding multi-sensor processing is required.
No programming-language list is sufficient by itself. The final decision should be based on the exact controller, operating-system image, documentation branch, included hardware and intended project.
Related Hiwonder Robots by Programming Path
The following OpenELAB products represent block coding, embedded programming, full Python/OpenCV and ROS development routes.
Official Technical Sources
- Hiwonder xArm AI documentation
- Hiwonder Tonybot documentation
- Hiwonder MechDog documentation
- Hiwonder miniHexa documentation
- Hiwonder TonyPi documentation
- Hiwonder MasterPi documentation
- Hiwonder MentorPi M1/A1 documentation
- Hiwonder MentorPi T1 specifications
- Hiwonder JetRover documentation
- Hiwonder JetAuto ROS2 documentation
- Hiwonder ROSOrin documentation
- Microsoft MakeCode Python documentation
- Microsoft MakeCode for micro:bit
- MicroPython
- ROS
- OpenCV
- Arduino language reference
