← projects
Python featured

MS IoT Dentist CAN Relay

A project I worked on during an internship, which focused on parsing, and relaying can information from embedded systems within dental treatment chairs.

repository

Kavo MS IoT Platform (v2.0)

Author: Luke Garceau

The Kavo MS IoT Platform is a multi-threaded edge computing system designed to bridge real-time CAN bus data from medical equipment to Azure IoT Central. The platform captures raw hexadecimal CAN messages, converts them into engineering-meaningful metrics, ensures reliable cloud synchronization, and maintains local persistence for resilience and traceability.


Overview

This project was built to solve a real-world industrial IoT problem: transforming low-level machine communication into structured, cloud-ready telemetry while maintaining reliability in unstable network environments.

The platform performs five primary functions:

  1. Read CAN messages in real-time
  2. Convert raw hex values into engineering variables
  3. Maintain synchronization with the cloud
  4. Transmit telemetry and properties to IoT Central
  5. Persist raw CAN data locally for auditing and recovery

Architecture & Design

The system is built using a parallel, multi-threaded architecture. Each major responsibility runs in its own thread, allowing concurrent execution and improved performance.

Core Threads

  • CAN Bus Reader
  • Hex-to-Engineering Interpreter
  • Data Recorder (CSV logger)
  • IoT Central Sender
  • Service/Connection Monitor

Thread communication is handled using shared constant (mutex-protected) variables to ensure safe cross-thread data access.

Shared Variables

The system relies on shared in-memory queues:

  • const.CAN_DATA — Raw CAN messages awaiting interpretation
  • const.MSG_TO_SEND — Formatted telemetry queued for cloud transmission
  • const.MSG_TO_RECORD — Raw CAN messages queued for CSV logging

This decoupled queue-based design ensures modularity and clean separation of concerns.

Read more at the repo's readme here