One major challenge with interfacing to sensors is that software drivers often become tightly coupled to the hardware. This decreases the scalability and flexibility of the driver and, in many cases, makes it so that it cannot be easily reused. In this session, we will explore how to design a proper driver software architecture so the sensor is abstracted from the microcontroller hardware, allowing the sensor to be easily reused and applied to multiple applications. Attendees will walk away with an understanding of how to architect a modern driver.