Eso mismo tenes que usar, un encoder optico de 2 canales.
Depende la resolucion que quieras medir será la cantidad de ranuras de la rueda dentada del encoder y el díametro de la rueda que va en contacto con el piso.
Como hablamos de un solo eje, el encoder lo podes hacer con un mouse viejo, digo sacando piesas de ahí. Tambien puedes comprar un encoder que vienen de varias resoluciones o pulsos por vuelta.
El principio de funcionamiento es simple, como son dos sensores que simplemente detectan el corte de un haz de luz y físicamente estan desplazados cuando se produce el giro empieza detectando el sensor A y luego detecta el sensor B mientras A sigue activo. Si continua el giro A dejara de detectar y B seguira activo hasta que tambien deje de detectar.
Si lo hace girar en sentido inverso empieza detectando B, es decir en forma contraria al caso anterior.
Para contar los pulsos tambien depende de la resolucion que quieras lograr, puedes contar cuando solo detectas A en activacion, o A en activacion y desactivacion. Tambien creo es posible detectar A y B en activacion y desactivacion y esa seria la maxima resolucion.
Luego depende de que microcontrolador usaras, pero el pricnipio ya lo tienes
Espero te sirva