Skip to content

Conversation

@nedru004
Copy link
Contributor

Instead of relying on using the opentrons API, control the opentrons temperature module directly with a serial usb connection. This allows me to use an opentrons module with a hamilton liquid handler (already had the temp module sitting around).

I used this list of commands to communicate with device.
https://github.com/Opentrons/opentrons-modules/tree/edge/arduino-modules/temp-deck#readme

This requires the user to define the com port. Default is to use the opentrons API if available

Also, if I understand correctly, this module has active cooling. I can cool to 4C

Directly control opentrons temperature module using USB serial commands. This allows use in other machines (like hamilton) not just opentrons liquid handler.
Read both responses from opentrons at the same time
@rickwierenga
Copy link
Member

thanks for the PR!

for the OT thermocycler we also have a usb and http backend, and there we implemented them as two separate backends (see #673). I think this is cleaner than every single method having if else.

@nedru004
Copy link
Contributor Author

Ahh. That makes more sense. Thanks for the example. I will update to have a separate backend for usb control. I will also be 3d printing a mount for the MFX carrier.

@rickwierenga
Copy link
Member

sick

3d printing a mount for the MFX carrier.

follow up pr 👀

made a separate backend for controlling the temperature module using USB. Reverted opentrons_backend.py to original file. Edited opentrons.py to be default connection to Opentrons control
@nedru004
Copy link
Contributor Author

Updated the files. The original backend through OT is now restored to the original file and I added a new backend for usb control. This works on my end and matches the format of OT thermocycler. Do you want documentation for the user guide?

Updated default child_location to new Coordinate values based on dimensional drawing.
Removed conditional import for serial communication and removed unused imports
Decode message from opentrons temperature module
used ruff to reformat code
Import formatting and f string formatting
@ben-ray
Copy link
Contributor

ben-ray commented Nov 1, 2025

thanks for implementing this btw, using it now

@rickwierenga
Copy link
Member

Do you want documentation for the user guide?

yes please

and please let me know when it's ready for review

Updated setup instructions and usage details for the Opentrons temperature controller using USB.
@nedru004
Copy link
Contributor Author

nedru004 commented Nov 3, 2025

I am ready for review.

I have one comment about the child location

@rickwierenga
Copy link
Member

image

great to see people are benefiting from not being constrained to python3.10 on opentrons like the vendor interface

@rickwierenga rickwierenga merged commit db1a84f into PyLabRobot:main Nov 4, 2025
9 checks passed
@rickwierenga
Copy link
Member

thank you @nedru004!

@rickwierenga
Copy link
Member

I sometimes make twitter/linked in posts to announce new device integrations. people like seeing they can use their devices in new ways. which accounts should I tag to give credit?

@nedru004
Copy link
Contributor Author

nedru004 commented Nov 4, 2025

Thanks!

x.com: @NedrudDavid
bsky.app: @david-nedrud.bsky.social

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants