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.
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:
- Read CAN messages in real-time
- Convert raw hex values into engineering variables
- Maintain synchronization with the cloud
- Transmit telemetry and properties to IoT Central
- 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 interpretationconst.MSG_TO_SEND— Formatted telemetry queued for cloud transmissionconst.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