# Building the high-resolution, motorized OpenFlexure Microscope (v7) using the Rodeostat kit

**URL:** <https://accelerated-discovery.org/t/building-the-high-resolution-motorized-openflexure-microscope-v7-using-the-rodeostat-kit/231>\
**Category:** Tools\
**Tags:** open-source, ac-training-lab\
**Created:** [June 21, 2024, 4:26pm UTC](https://accelerated-discovery.org/t/building-the-high-resolution-motorized-openflexure-microscope-v7-using-the-rodeostat-kit/231 "2024-06-21T16:26:47Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![sgbaird](https://yyz1.discourse-cdn.com/flex003/user_avatar/accelerated-discovery.org/sgbaird/32/341_2.png) [@sgbaird](https://accelerated-discovery.org/u/sgbaird)\
**Post date:** [June 21, 2024, 4:26pm UTC](https://accelerated-discovery.org/t/building-the-high-resolution-motorized-openflexure-microscope-v7-using-the-rodeostat-kit/231/1 "2024-06-21T16:26:47Z")

</div>

One of the tools we’ve been looking to build with the AC Training Lab is an OpenFlexure microscope. Rodeostat recently began selling [a kit version](https://iorodeo.com/products/openflexure-microscope-kit), and one of the AC summer students has started to build it!

 ![1718987161151142405570866141165](https://canada1.discourse-cdn.com/flex003/uploads/accelerated_discovery/original/1X/6106f69110d1b1ed8df7e9b7b1b5be9ff9f842d2.jpeg)

---

<div class="post-metadata">

**Author:** ![sgbaird](https://yyz1.discourse-cdn.com/flex003/user_avatar/accelerated-discovery.org/sgbaird/32/341_2.png) [@sgbaird](https://accelerated-discovery.org/u/sgbaird)\
**Post date:** [June 21, 2024, 9:25pm UTC](https://accelerated-discovery.org/t/building-the-high-resolution-motorized-openflexure-microscope-v7-using-the-rodeostat-kit/231/2 "2024-06-21T21:25:54Z")

</div>

End of day 1 and it’s already looking like the hardware build is complete 💯. Still some electronics and installation to go I think.

 ![PXL_20240621_211415549](https://canada1.discourse-cdn.com/flex003/uploads/accelerated_discovery/original/1X/4f2efcb10f0d2e906c0bd2b56ac90437ded95d25.jpeg)  
 ![PXL_20240621_211411541](https://canada1.discourse-cdn.com/flex003/uploads/accelerated_discovery/original/1X/785d4e2cbdaf8cb468ff0e2eb057b18ff1caa4b2.jpeg)

Kudos to the summer student, OpenFlexure, RodeoStat, and Open Science Shop for making this a seamless experience so far.

---

<div class="post-metadata">

**Author:** ![sgbaird](https://yyz1.discourse-cdn.com/flex003/user_avatar/accelerated-discovery.org/sgbaird/32/341_2.png) [@sgbaird](https://accelerated-discovery.org/u/sgbaird)\
**Post date:** [June 24, 2024, 5:03pm UTC](https://accelerated-discovery.org/t/building-the-high-resolution-motorized-openflexure-microscope-v7-using-the-rodeostat-kit/231/3 "2024-06-24T17:03:25Z")

</div>

Hardware, electronics, and firmware complete!

 ![17192485124277178942797476676243](https://canada1.discourse-cdn.com/flex003/uploads/accelerated_discovery/original/1X/c2c4925c258a341a0f22c6334b1ac81f942c489a.jpeg)

---

<div class="post-metadata">

**Author:** ![sgbaird](https://yyz1.discourse-cdn.com/flex003/user_avatar/accelerated-discovery.org/sgbaird/32/341_2.png) [@sgbaird](https://accelerated-discovery.org/u/sgbaird)\
**Post date:** [June 25, 2024, 4:05pm UTC](https://accelerated-discovery.org/t/building-the-high-resolution-motorized-openflexure-microscope-v7-using-the-rodeostat-kit/231/4 "2024-06-25T16:05:41Z")

</div>



---

<div class="post-metadata">

**Author:** ![kenzo](https://avatars.discourse-cdn.com/v4/letter/k/94ad74/32.png) [@kenzo](https://accelerated-discovery.org/u/kenzo)\
**Post date:** [June 25, 2024, 6:55pm UTC](https://accelerated-discovery.org/t/building-the-high-resolution-motorized-openflexure-microscope-v7-using-the-rodeostat-kit/231/5 "2024-06-25T18:55:41Z")

</div>

Building and setting up the Open Flexure microscope with the IO Rodeo kit was straightforward without major difficulties. There weren’t any missing parts and almost everything needed including tools was in the kit. There was even preloaded software on all of the hardware that required software upload which was very helpful. The instructions were clear, especially with the help of IO Rodeo’s complementary instructions. The build process was mainly physical. The assembly of anything electronic was done at the end. The main challenge is figuring out if it was done without mistakes. There isn’t much feedback until you test it for the first time. The build and setup for me took 2 days or around 13 hours.

The challenging steps I remember are steps 3, 5, and 11. Step 3, “Prepare the main body”, is the only step that requires external tools (listed in instructions, flush cutters for example). Once you get those it is quite straightforward. Step 5, “Assemble the actuators”, has many confusing and difficult steps and instructions. [This page](https://build.openflexure.org/openflexure-microscope/v6.1.5/docs/#/index), which I just found and didn’t know about while making it, seems to be quite helpful for this step as it outlines it clearly, however, it is made for an earlier version of the microscope. The step where you put the light oil on the actuators is quite unclear. It is also unclear how the actuators are supposed to look/work. After getting further into the build process I understood that the actuators tightened and loosened the parts to move around the stand, but it would be great if that was explained earlier in the instructions to clear more doubt about how the actuators were supposed to look. Attaching the feet to the actuators requires a good amount of physical force which I didn’t know, so the first one took a bit to attach. Step 11, “Complete the wiring”, was quite difficult because you need to work with electronics and the instructions link for them on IO Rodeo doesn’t work from the other assembly instructions page. [Here](https://blog.iorodeo.com/openflexure-microscope-electronics-assembly/) is the working link. Also, the instructions never say to insert the small SD card into the Raspberry Pi. There were also many minor challenges I faced throughout the process.

I learned a lot while assembling the Open Flexure microscope. I learned how to set up a Raspberry Pi as I have never worked with one before. I learned that mechanisms with bendy parts can still be quite precise. I also learned how to assemble this type of kit build with instructions. Overall, I learned a good amount, the build process was generally very intuitive, and I would be happy to build more from Open Flexure in the future.

Here are some pictures it took, some pictures of the final product, a video of it calibrating, and a video of 40x zoom on a piece of plastic  
 ![2024-06-24_14-34-40](https://canada1.discourse-cdn.com/flex003/uploads/accelerated_discovery/original/1X/1bcb033520d31e02aa9ccffe9cd2c60947a75ffc.jpeg)  
 ![2024-06-24_14-50-02](https://canada1.discourse-cdn.com/flex003/uploads/accelerated_discovery/original/1X/c2ce868092e0c4aa424d46306667a9049e5e6cd6.jpeg)  
 ![2024-06-24_14-50-11](https://canada1.discourse-cdn.com/flex003/uploads/accelerated_discovery/original/1X/23bf7e957eb9e8652c233b1152df8bbbe15ee4a5.jpeg)  
 ![2024-06-24_14-50-19](https://canada1.discourse-cdn.com/flex003/uploads/accelerated_discovery/original/1X/0edf3cfa2a6f6a1e99dc6f69dd412da1acd46fc6.jpeg)  
 ![2024-06-24_14-50-34](https://canada1.discourse-cdn.com/flex003/uploads/accelerated_discovery/original/1X/ff80be8698019fe2238712f91a041fa4cca8b81d.jpeg)  
 ![2024-06-24_14-50-39](https://canada1.discourse-cdn.com/flex003/uploads/accelerated_discovery/original/1X/4c683d4b79ff2158d83a02c3ef8850c7e0622e7c.jpeg)

 ![image_67187457](https://canada1.discourse-cdn.com/flex003/uploads/accelerated_discovery/original/1X/7bfd3837e67599a48d1c0191b7451734f3053acf.jpeg)  
 ![image_67162625](https://canada1.discourse-cdn.com/flex003/uploads/accelerated_discovery/original/1X/1b3c943444e213c8318662d99cf094797edf2246.jpeg)  

  
[IMG\_0911.MOV - Google Drive](https://drive.google.com/file/d/1wBLyDKeHJlvfmqeEslPpqqyv5aknrRON/view)

---

<div class="post-metadata">

**Author:** ![sgbaird](https://yyz1.discourse-cdn.com/flex003/user_avatar/accelerated-discovery.org/sgbaird/32/341_2.png) [@sgbaird](https://accelerated-discovery.org/u/sgbaird)\
**Post date:** [June 25, 2024, 7:47pm UTC](https://accelerated-discovery.org/t/building-the-high-resolution-motorized-openflexure-microscope-v7-using-the-rodeostat-kit/231/6 "2024-06-25T19:47:13Z")

</div>

One of the next pieces will be to work on image stitching with programmatic control via Python using the following OpenFlexure package:

> **[OpenFlexure / openflexure-stitching · GitLab](https://gitlab.com/openflexure/openflexure-stitching)**
>
> GitLab.com

possibly using Fiji’s Image Stitching extension:

> **[Image Stitching](https://imagej.net/plugins/image-stitching)**
>
> The Stitching plugin (2d-5d) reconstructs big images/stacks from tiled input images/stacks, optimizing for the best overlap.

Some related resources:

- [OpenFlexure Programming Clients](https://openflexure.org/software/programming-clients/)
- [Stitching images - #12 by dgrosen - Request Help - OpenFlexure Forum](https://openflexure.discourse.group/t/stitching-images/194/12)
- [Stacking and scanning what software - General - OpenFlexure Forum](https://openflexure.discourse.group/t/stacking-and-scanning-what-software/1330)
- [https://forum.image.sc/](https://forum.image.sc/) (forum that is all things scientific imaging/microscopy)
- [ImageJ and Python](https://imagej.net/scripting/python), specifically [GitHub - imagej/pyimagej: Use ImageJ from Python](https://github.com/imagej/pyimagej)
- [Stitching OFM images (YouTube, 11 min)](https://www.youtube.com/watch?v=Qqbl_wfDiiY)
- [image-stitching · GitHub Topics · GitHub](https://github.com/topics/image-stitching) (e.g., [Meshroom](https://github.com/alicevision/Meshroom), [OpenStitching](https://github.com/OpenStitching/stitching), but mostly geared towards panoramas and not necessarily microscopy images)
- [stitching\_tutorial/docs/Stitching Tutorial.md at master · OpenStitching/stitching\_tutorial · GitHub](https://github.com/OpenStitching/stitching_tutorial/blob/master/docs/Stitching%20Tutorial.md)
- [Image Composite Editor (ICE)](https://www.microsoft.com/en-us/research/project/image-composite-editor/) by Microsoft (retired, no longer supported), and an [unofficial CLI interface to ICE](https://github.com/danice/ICEAutomation)
- [OpenCV: Images stitching](https://docs.opencv.org/4.x/d1/d46/group__stitching.html)
- [Microscope image stitching package in Python - Announcements - Image.sc Forum](https://forum.image.sc/t/microscope-image-stitching-package-in-python/55721)
- [ImageJ plugin in Python? - #9 by karlduderstadt - Development - Image.sc Forum](https://forum.image.sc/t/imagej-plugin-in-python/73101/9)
- Microscopy-specific packages
  - [GitHub - labsyspharm/ashlar: ASHLAR: Alignment by Simultaneous Harmonization of Layer/Adjacency Registration](https://github.com/labsyspharm/ashlar) (CLI seems fine, Python API not documented, some nice example images, somewhat active maintenance)
  - [GitHub - yfukai/m2stitch: MIST-inspired microscope image stitching package](https://github.com/yfukai/m2stitch) (minimal instructions/docs, Python API, seems inactive)
  - [GitHub - usnistgov/MIST: Microscopy Image Stitching Tool](https://github.com/usnistgov/MIST) (Java and MATLAB only, seems inactive)
  - [Pycroscopy — pycroscopy 0.63.3 documentation](https://pycroscopy.github.io/pycroscopy/index.html) (Scientific analysis of nanoscale materials imaging data)
  - [https://micro-manager.org/](https://micro-manager.org/) (Microscope control and image acquisition integrated with ImageJ - lots of discussion about writing an OpenFlexure integration, but writing C++ drivers seems to be the main blocker, see [[1]](https://gitlab.com/openflexure/openflexure-microscope-server/-/issues/246), [[2]](https://forum.image.sc/t/device-adapters-for-networked-microscope-with-http-api/39935), [[3]](https://forum.image.sc/t/controlling-a-non-supported-microscope-with-manager/75878))

---

<div class="post-metadata">

**Author:** ![sgbaird](https://yyz1.discourse-cdn.com/flex003/user_avatar/accelerated-discovery.org/sgbaird/32/341_2.png) [@sgbaird](https://accelerated-discovery.org/u/sgbaird)\
**Post date:** [June 25, 2024, 7:49pm UTC](https://accelerated-discovery.org/t/building-the-high-resolution-motorized-openflexure-microscope-v7-using-the-rodeostat-kit/231/7 "2024-06-25T19:49:00Z")

</div>

Well done! 😃

I also stumbled across this post from the last couple days: [First Build-High Resolution v7 obtained from IO Rodeo - Build Reports - OpenFlexure Forum](https://openflexure.discourse.group/t/first-build-high-resolution-v7-obtained-from-io-rodeo/1657)

Sounds like there may have been some similar issues.

EDIT: I also found a YouTube video with assembly instructions. Haven’t tried these, but seems nice!

[![](https://canada1.discourse-cdn.com/flex003/uploads/accelerated_discovery/original/1X/81882d8644bd430b08ee466fc7a9368b3452bd14.jpeg "OpenFlexure Low-Cost Microscope v7 - Assembly Process - MEng Mechatronic Engineering FYP") ](https://www.youtube.com/watch?v=9JHP-wrayXY)

---

<div class="post-metadata">

**Author:** ![kenzo](https://avatars.discourse-cdn.com/v4/letter/k/94ad74/32.png) [@kenzo](https://accelerated-discovery.org/u/kenzo)\
**Post date:** [June 27, 2024, 5:57pm UTC](https://accelerated-discovery.org/t/building-the-high-resolution-motorized-openflexure-microscope-v7-using-the-rodeostat-kit/231/8 "2024-06-27T17:57:58Z")

</div>

There were a few problems with sending commands through Python to the microscope, but it was just the outdated operating system that caused them. I wrote a quick program to stitch images together with manually entered distances to estimate the camera moving over by around a frame.

I am currently having a lot of trouble downloading the other image stitching program, and connecting the microscope to the internet.

Here are some of the outputted images

 ![scan1.PNG](https://canada1.discourse-cdn.com/flex003/uploads/accelerated_discovery/original/1X/96e98cbff3281794d0b294e57f50967803f479a5.jpeg)  
 ![scan3scale](https://canada1.discourse-cdn.com/flex003/uploads/accelerated_discovery/original/1X/571d8c00e4c4d90fbe89b72cbc559f61ea5ef361.jpeg)  
 ![scan1scale](https://canada1.discourse-cdn.com/flex003/uploads/accelerated_discovery/original/1X/af96f7df6a71d874b9fc31ddfb154dbc3d8dd6b2.jpeg)  
 ![scan3.PNG](https://canada1.discourse-cdn.com/flex003/uploads/accelerated_discovery/original/1X/171a0aca1e5388ebfd00332efaa9f62fd1836866.jpeg)  
 ![scan2.PNG](https://canada1.discourse-cdn.com/flex003/uploads/accelerated_discovery/original/1X/290f6eb83d46228e95b56c4c2487559c96675f16.jpeg)

Here is my code because it doesn’t let me upload a .py file

```auto
import openflexure_microscope_client
m = openflexure_microscope_client.find_first_microscope()
from PIL import Image

p = m.position

x=int(input("how many frames in the x direction"))
y=int(input("how many frames in the y direction"))
focus = int(input("do you want it to autofocus every time (generally better images less precise alignment)"))

imagearray=[]
for i in range(x):
    imagearray.append([])

xframe = 3850
yframe = 2900

p["y"] -= (y+1)/2*yframe
p["x"] -= (x-1)/2*xframe
for i in range(x):
    for j in range(y):
        p['y'] += yframe
        m.move(p)
        if focus == 1:
            m.autofocus()
        im = m.capture_image()
        
        imagearray[i].append(im)
    p["y"] -= yframe*y
    p["x"] += xframe

verticalbars = []
for i in imagearray:
    images = []
    for x in i:
        images.append(x)
    widths, heights = zip(*(x.size for x in images))
    width = widths[0]
    height = heights[0]
    heightt = sum(heights)
    verticalbar = Image.new('RGB', (width, heightt))
    placeheight = (len(images)-1)*height
    for i2 in images:
        verticalbar.paste(i2, (0, placeheight))
        placeheight -= height
    verticalbars.append(verticalbar)

widths, heights = zip(*(x.size for x in verticalbars))
width = widths[0]
height = heights[0]
widtht = sum(widths)
finalimage = Image.new('RGB', (widtht, height))
placewidth = (len(verticalbars)-1)*width
for i2 in verticalbars:
        finalimage.paste(i2, (placewidth, 0))
        placewidth -= width
finalimage.show()

```

---

<div class="post-metadata">

**Author:** ![kenzo](https://avatars.discourse-cdn.com/v4/letter/k/94ad74/32.png) [@kenzo](https://accelerated-discovery.org/u/kenzo)\
**Post date:** [July 2, 2024, 2:58pm UTC](https://accelerated-discovery.org/t/building-the-high-resolution-motorized-openflexure-microscope-v7-using-the-rodeostat-kit/231/9 "2024-07-02T14:58:44Z")

</div>

Openflexure Stitching was by far the most frustrating thing to do in this project. That might be because of my limited experience with the command line. In retrospect it was quite simple and I just needed to follow the commands line by line and install Libvips in the correct location, but I struggled for about 4 or 5 hours trying to get it to work (my fault entirely). The stitch that the Openflexure stitching program made was far better than my primitive code. I also got the Fiji plugin stitching working because I was so frustrated with the Openflexure stitching. The stitches from both programs are almost indistinguishable.

 ![SCAN_2024-06-27_11-58-08_stitched](https://canada1.discourse-cdn.com/flex003/uploads/accelerated_discovery/original/1X/431950866c4dee079fef2d724b99d80cd5ddcdfe.jpeg)

---

<div class="post-metadata">

**Author:** ![kenzo](https://avatars.discourse-cdn.com/v4/letter/k/94ad74/32.png) [@kenzo](https://accelerated-discovery.org/u/kenzo)\
**Post date:** [July 4, 2024, 4:28pm UTC](https://accelerated-discovery.org/t/building-the-high-resolution-motorized-openflexure-microscope-v7-using-the-rodeostat-kit/231/10 "2024-07-04T16:28:05Z")

</div>

After figuring out how to download the stitching program, to make the process require even less human input, I made a scanning program that automatically stitches the scan and moves it to another file. The scan is taken between two corners of a rectangular area. There are comments in the code explaining the inputs and everything. This process was quite fun. I had some trouble with metadata before I learned that Openflexure Stitching requires the use of scanning metadata using the official scanning function (which the documentation for is quite confusing). After I got that working, I still received errors. I thought it was still the metadata, but apparently it was just some errors with the amount of overlap I gave it. We also had some trouble with running it without the use of os.system and instead directly running the function, but we couldn’t figure it out ([Recomendations for load\_tile\_and\_stitch() (#17) · Issues · OpenFlexure / openflexure-stitching · GitLab](https://gitlab.com/openflexure/openflexure-stitching/-/issues/17)). Overall, a very fun process, I liked it a lot more than the downloading of the Openflexure Stitching program. Here is the code!

```python
import openflexure_microscope_client
import openflexure_stitching.loading
import openflexure_stitching.pipeline
import openflexure_stitching.stitching
m = openflexure_microscope_client.find_first_microscope()
import openflexure_stitching

import PIL
import os
import math
import shutil

#WARNING the program will delete saved images on the microscope!

#requirements:

#openflexure stitching (properly installed and working in terminal)
#openflexure microscope running the open flexure connect software
#according to pyclient doncumentation, the network needs to be simple. ethernet cable connecting both devices works fine
#os, shutil, openflexure_microscope_client

#how to use the function and what each input should be

#"space separated coordinates of first corner (or in a list) "
#"space separated coordinates of second corner (or in a list) "
#"around how much overlap (in stage coordinates) do you want in image locations? "
#"focus amount/range in z coordinates, 0 to disable focus "
#"output directory (with the file name at the end) "

#the program will scan between the two specified corners
#the overlap is not 100% what you set it to be, it tries to be as close as possible (only in the above direction) while still filling the area
#the program will not work unless you have a high enough overlap value

#WARNING the program will delete saved images on the microscope! transfer those first

def scanandstitch(c1, c2, ov, foc, dir):
    m.autofocus()
    #refresh the directory
    if os.path.isdir('Downloads/scanimages'):
        shutil.rmtree('Downloads/scanimages')
    os.mkdir('Downloads/scanimages')
    #calculate step count, step length, and set up variables
    p = m.position
    if isinstance(c1, str):
        x1, y1 = map(int, c1.split())
        x2, y2 = map(int, c2.split())
    else:
        x1 = c1[0]
        y1 = c1[1]
        x2 = c2[0]
        y2 = c2[1]
    xd = abs(x1-x2)
    yd = abs(y1-y2)
    essx = 3600-ov
    essy = 2700-ov
    ssx = xd/math.ceil(xd/essx)
    ssy = yd/math.ceil(yd/essy)
    xsc = math.ceil(xd/essx)
    ysc = math.ceil(yd/essy)
    #move to starting position
    p['x']=min(x1,x2)
    p['y']=min(y1,y2)
    m.move(p)
    #scan and download images
    m.scan(params={'grid':[xsc,ysc,1],'stride_size':[ssx,ssy,0],'autofocus_dz':foc,'filename':'SCAN',"bayer":True},wait_on_task=True)
    for i in m.list_capture_ids():
        m.download_from_id(i,"Downloads/scanimages")
        m.delete_image(i)
    #stitch then move final file
    abspath = os.path.abspath("Downloads/scanimages")
    os.system('cd openflexure-stitching && python -m venv .venv && .\\.venv\\Scripts\\activate && openflexure-stitch '+abspath) #very tricky to run from python (we gave up) https://gitlab.com/openflexure/openflexure-stitching/-/issues/17 https://gitlab.com/beniroquai/openflexure-stitching/-/blob/main/src/openflexure_stitching/pipeline.py?ref_type=heads#L31
    
    os.replace("Downloads/scanimages/scanimages_stitched.jpg", str(dir))

scanandstitch("2000 2000", "-2000 -2000", 1500, 200, "c:/Users/kenzo/Downloads/stitchedimages/stitch1.jpg") 

```

> **[IMG\_0922.MOV](https://drive.google.com/file/d/1XHN4lzBkROIjNvPKm3RNS8GqHu4uy4DY/view?usp=sharing)**
>
> Google Drive file.

Video

---

<div class="post-metadata">

**Author:** ![kenzo](https://avatars.discourse-cdn.com/v4/letter/k/94ad74/32.png) [@kenzo](https://accelerated-discovery.org/u/kenzo)\
**Post date:** [July 5, 2024, 2:02pm UTC](https://accelerated-discovery.org/t/building-the-high-resolution-motorized-openflexure-microscope-v7-using-the-rodeostat-kit/231/11 "2024-07-05T14:02:54Z")

</div>

Here are some of the Images produced by the program:

 ![scanimages_stitched1](https://canada1.discourse-cdn.com/flex003/uploads/accelerated_discovery/original/1X/b4b82f3f1c848fe03104c09313586f4993107746.jpeg)  
 ![stitch1](https://canada1.discourse-cdn.com/flex003/uploads/accelerated_discovery/original/1X/289c056a0ba0b40dbf44213fae68ea91857ac54a.jpeg)

---

<div class="post-metadata">

**Author:** ![sgbaird](https://yyz1.discourse-cdn.com/flex003/user_avatar/accelerated-discovery.org/sgbaird/32/341_2.png) [@sgbaird](https://accelerated-discovery.org/u/sgbaird)\
**Post date:** [July 6, 2024, 1:49pm UTC](https://accelerated-discovery.org/t/building-the-high-resolution-motorized-openflexure-microscope-v7-using-the-rodeostat-kit/231/12 "2024-07-06T13:49:32Z")

</div>

Some additional things we may consider implementing:

Automatic upload of images to an online storage platform like Amazon S3 or imgur and then uploading sample and acquisition metadata to MongoDB with the image URI

- [Reading Data from MongoDB — ac-microcourses 0.0.post1.dev51+g07ee432 documentation](https://ac-microcourses.readthedocs.io/en/latest/courses/hello-world/1.5.1-pymongo.html#reading-data-from-mongodb)
- [ChatGPT](https://chatgpt.com/share/3f1b8c00-8a3d-490e-be7d-ad83004fe80d)

CAPTCHA and email verification based temporary HiveMQ username/password combinations.

- [ChatGPT](https://chatgpt.com/share/a6d12af2-13f9-47f8-84ca-d94701e3532e)
- [Temporary credentials - HiveMQ Cloud - HiveMQ Support Forum](https://community.hivemq.com/t/temporary-credentials/3036)
- [4. Hardware-Software Communication — ac-microcourses 0.0.post1.dev51+g07ee432 documentation](https://ac-microcourses.readthedocs.io/en/latest/courses/hello-world/1.4-hardware-software-communication.html)

---

<div class="post-metadata">

**Author:** ![kenzo](https://avatars.discourse-cdn.com/v4/letter/k/94ad74/32.png) [@kenzo](https://accelerated-discovery.org/u/kenzo)\
**Post date:** [July 11, 2024, 6:25pm UTC](https://accelerated-discovery.org/t/building-the-high-resolution-motorized-openflexure-microscope-v7-using-the-rodeostat-kit/231/13 "2024-07-11T18:25:12Z")

</div>

I finally got the microscope connected to the eduroam, WPA 2 enterprise, internet. I had many problems with this step and I honestly don’t really know what fixed it. In the end some of my final problems were not knowing where the network manager was in the bar at the top of the screen, and not realizing I needed to change the type of the internet to only require a username and password. I also got the heightmap extension working and used it to set the new (0,0) point in the center of the range of motion. The heightmap extension was very easy to get working and probably the easiest thing about this project so far.

height map: [Joe Knapper / height\_map · GitLab](https://gitlab.com/jaknapper/height_map)

---

<div class="post-metadata">

**Author:** ![kenzo](https://avatars.discourse-cdn.com/v4/letter/k/94ad74/32.png) [@kenzo](https://accelerated-discovery.org/u/kenzo)\
**Post date:** [July 30, 2024, 5:35pm UTC](https://accelerated-discovery.org/t/building-the-high-resolution-motorized-openflexure-microscope-v7-using-the-rodeostat-kit/231/14 "2024-07-30T17:35:01Z")

</div>

I have made another one of these microscope kits. It took be about 3-4 hours, and was just as straightforward as before. Generally an enjoyable experience. I have also set up all four microscopes on the internet and I am currently working on making the MQTT system.

---

<div class="post-metadata">

**Author:** ![sgbaird](https://yyz1.discourse-cdn.com/flex003/user_avatar/accelerated-discovery.org/sgbaird/32/341_2.png) [@sgbaird](https://accelerated-discovery.org/u/sgbaird)\
**Post date:** [August 6, 2024, 1:40am UTC](https://accelerated-discovery.org/t/building-the-high-resolution-motorized-openflexure-microscope-v7-using-the-rodeostat-kit/231/15 "2024-08-06T01:40:10Z")

</div>



---

<div class="post-metadata">

**Author:** ![kenzo](https://avatars.discourse-cdn.com/v4/letter/k/94ad74/32.png) [@kenzo](https://accelerated-discovery.org/u/kenzo)\
**Post date:** [August 16, 2024, 2:30pm UTC](https://accelerated-discovery.org/t/building-the-high-resolution-motorized-openflexure-microscope-v7-using-the-rodeostat-kit/231/16 "2024-08-16T14:30:24Z")

</div>

I have finished the MQTT communication system and also livestreaming of the camera output to YouTube. You can now control the microscope from anywhere in the world. I am currently working on implementing stitching on the Raspberry Pi, so that it can be implemented with MQTT. I finished the code for this, but I am having a large amount of trouble getting OpenCV to work on the Raspberry Pi on Python3.10. I am also working on [making a system for temporary credential generation](https://accelerated-discovery.org/t/assigning-temporary-credentials-for-remote-access-to-equipment/241).

> **[PXL\_20240801\_160718281.mp4](https://drive.google.com/file/d/1fSe4egDXfTQEnnWWjPX_V1-_qK6r71oX/view?usp=sharing)**
>
> Google Drive file.

Here is how the MQTT system works

---

<div class="post-metadata">

**Author:** ![sgbaird](https://yyz1.discourse-cdn.com/flex003/user_avatar/accelerated-discovery.org/sgbaird/32/341_2.png) [@sgbaird](https://accelerated-discovery.org/u/sgbaird)\
**Post date:** [September 26, 2025, 5:27pm UTC](https://accelerated-discovery.org/t/building-the-high-resolution-motorized-openflexure-microscope-v7-using-the-rodeostat-kit/231/17 "2025-09-26T17:27:34Z")

</div>

For those looking for a continuation of developments and usage within the AC for this system, see [“openflexure” search keyword on ac-dev-lab repo](https://github.com/AccelerationConsortium/ac-dev-lab/issues?q=is%3Aissue%20openflexure) as well as [OpenFlexure Microscope — ac-training-lab 0.0.post1.dev196+g6517d7550 documentation](https://ac-training-lab.readthedocs.io/en/latest/devices/openflexure.html) and [ac-dev-lab/src/ac\_training\_lab/openflexure at main · AccelerationConsortium/ac-dev-lab · GitHub](https://github.com/AccelerationConsortium/ac-dev-lab/tree/main/src/ac_training_lab/openflexure).
