Member-only story
An Accelerometer Sensor
Connecting an ESP32-C6 with an I2C Sensor
This article is almost as much about the transition from “bare metal” to a dependence on libraries, as it is about the sensor itself. As it happens, libraries for microcontrollers do not always play well together. Below, we will see what the implications of this are, some workarounds that ultimately failed, and why you might end up writing your own driver.
The sensor in question here is an MPU6050 accelerometer. It is an interesting device that has been used in many smartphones, since it can detect motion, angular rotation, and other things that might aid users. When the image changes orientation on your Android or iPhone, an accelerometer sensor response is how the phone’s CPU detects that your phone has been rotated. Like many other sensors, this one is also available on a development board, as shown above, so you can try it out with your favorite microcontroller (MCU).
The MCU we will use here is the ESP32-C6. The connectivity we will use is I2C. This unit being the MPU6050, rather than an MPU6000, only the I2C interface may be used. I2C can be a very powerful interface in its simplicity, if nothing else. Able to support up to 127 devices using even its limited 7-bit address scheme, some I2C implementations can also support up to 10-bit addresses. The hardware requires only two…









