Major site overhaul: resources hub, content migration, new blog posts, forms

- Redesign /resources as sectioned hub with category pages
- Migrate 645 Squarespace CDN images to local /images/content/
- Create 9 new news/blog posts with event photos
- Fix blog post slugs (rename gibberish filenames)
- Rename Design Blog to Design Blogs across site
- Remove education page, replace with Platform in nav
- Redesign rover repair request form with dynamic rover entries
- Add school search combobox to contact, store, and repair forms
- Extract shared KNOWN_SCHOOLS data
- Make /rover-expansion-3d-printing dynamically pull from MDX
- Add related resources sections to product pages
- Fix homepage broken /quote links to /store
- Store page: sample kit cards, inline quote builder, mailing list opt-in
This commit is contained in:
Tim Hadwen
2026-03-01 17:14:05 +10:00
parent 707c49dd3f
commit ae3ae18585
1212 changed files with 2477 additions and 6948 deletions

View File

@@ -1,47 +1,38 @@
---
title: "How to Connect and Control the Micromelon Rover with OpenMV"
date: "2024-12-11"
categories: ["Guides"]
categories: ["Advanced Guides"]
tags: []
excerpt: "The Micromelon Rover comes with an expansion header that allows for the connection of various additional devices. In this guide, we will show you how to connect an OpenMV and use it to control the Rover via the UART. Our goal is to have the Rover det"
featuredImage: "/images/resources/getting-started-with-open-mv-and-the-micromelon-rover.png"
---
![](https://images.squarespace-cdn.com/content/v1/60a43bf842d7b601064a8828/64f48cfe-3659-4df2-bc52-a6fd7955c5ec/Untitled_2023-Oct-27_12-29-29AM-000_CustomizedView6839643846_png.png)
![](/images/content/7f94b1-untitled_2023-oct-27_12-29-29am-000_customizedview6839643846_png.png)
The Micromelon Rover comes with an expansion header that allows for the connection of various additional devices. In this guide, we will show you how to connect an OpenMV and use it to control the Rover via the UART. Our goal is to have the Rover detect objects using the OpenMV and drive towards them.
If you're not familiar with UART, please refer to the “How to use UART” guide:
[
How to use UART
](getting-started-the-micromelon-rover-uart)
If you're not familiar with UART, please refer to the “How to use UART” guide:[How to use UART](getting-started-the-micromelon-rover-uart)
## Hardware Setup
For the hardware setup, you will need to connect the Rovers RX and TX pins to the OpenMV. You will also need to connect the 3.3V and GND pins to power the device. You can find the Rovers header pinout and an example wiring diagram below:
![](https://images.squarespace-cdn.com/content/v1/60a43bf842d7b601064a8828/d8d56175-6268-4994-926b-ea7a29a7304e/Rover+pinout.png)
![](/images/content/0c946e-rover-pinout.png)
![](https://images.squarespace-cdn.com/content/v1/60a43bf842d7b601064a8828/623ac677-84bf-45f7-87c0-0d81ab832a00/OpenMV2_bb.png)
![](/images/content/a7cfb8-openmv2_bb.png)
To attach the OpenMV to the rover, head over to Printables or Thingiverse, and download the OpenMV clip for the rover. To assemble, simply use 2 M3 (8 - 10mm), and screw the OpenMV onto the clip. Then, click the clip onto the front of the rover.
[
Printables: OpenMV Clip
](https://www.printables.com/model/639389-micromelon-openmv-attachment)
[Printables: OpenMV Clip](https://www.printables.com/model/639389-micromelon-openmv-attachment)
[Thingiverse: OpenMV Clip](https://www.thingiverse.com/thing:6284234)
[
Thingiverse: OpenMV Clip
](https://www.thingiverse.com/thing:6284234)
## Rover UART Initialisation
```
`When programming the OpenMV, we recommend using the OpenMV IDE. It has built-in camera calibration functionality and makes it easy to flash the OpenMV. Since the OpenMV is programmed using MicroPython, you can store all the code for this project in a Python file inside the IDE. The MicroPython documentation provides a good overview of many of the libraries that will be used.
When programming the OpenMV, we recommend using the OpenMV IDE. It has built-in camera calibration functionality and makes it easy to flash the OpenMV. Since the OpenMV is programmed using MicroPython, you can store all the code for this project in a Python file inside the IDE. The MicroPython documentation provides a good overview of many of the libraries that will be used.
Whenever you're working with OpenMV Python files, the code has three key elements. The first step is to import any necessary libraries, constants, and global variables. By default, the sensor, image, and time libraries will be imported. You will also need to import the pyb library, which gives you the ability to use specific device functionality, such as sending UART packets.`
```
Whenever you're working with OpenMV Python files, the code has three key elements. The first step is to import any necessary libraries, constants, and global variables. By default, the sensor, image, and time libraries will be imported. You will also need to import the pyb library, which gives you the ability to use specific device functionality, such as sending UART packets.
```
import sensor, image, time
@@ -90,11 +81,11 @@ def arm_rover(state):
Uploading this code to the Arduino should cause the Rover to enter the correct mode. You will know it worked if the Rover's LCD reads "Expansion Mode" where the bot ID used to be.
![](https://images.squarespace-cdn.com/content/v1/60a43bf842d7b601064a8828/8bf8f587-4ec9-4865-86d9-13a24c816c20/PXL_20230116_053413066.jpeg)
![](/images/content/627b1d-pxl_20230116_053413066.jpeg)
## **OpenMV Setup**
![](https://images.squarespace-cdn.com/content/v1/60a43bf842d7b601064a8828/c44f6292-77b1-4a60-bb24-9f95839f8592/PXL_20230116_065526008.jpg)
![](/images/content/b69387-pxl_20230116_065526008.jpg)
Now that the Rover is ready to receive commands over UART, let's set up the OpenMV. When mounting the OpenMV for object tracking, a slight downward angle is useful. You can use the Micromelon 3D printed mount for this purpose.
@@ -222,7 +213,7 @@ Using this threshold, we can then track objects of this colour using OpenMVs
To initialise the camera, the following code can be used.
![](https://images.squarespace-cdn.com/content/v1/60a43bf842d7b601064a8828/baf41de2-6499-41e1-a6d4-11a5529973d6/Screenshot+2023-01-16+at+7.07.30+pm.png)
![](/images/content/4a8e06-screenshot-2023-01-16-at-7.07.30-pm.png)
```
sensor.reset() # Reset and initialise the sensor