To make sure I would not void my mower's warranty I've used 2 Hall Effect sensors and a few magnets: one on the bail switch, five on a wheel. Three revolution of a rear wheel represent a distance of 245cm (~96½"). There are 10 spokes on the back of the wheel. With five magnets this gives me a resolution of 16.33cm (6.43"). The display I'm using is a Digole 160x128 True Color TFT LCD. I like Digole's displays because they have a backpack with a complete graphic engine and 7 preloaded fonts. The kit run on 2 AAA batteries. The ESP8266 is initialized on power-up to get the actual time on my Windows Home Server and placed to sleep to minimize the power consumption. When it's time to publish a hard reset is done. At the end of transmission the ESP8266 is put to sleep again.
I opened a Twitter account (@MyEGOMower) and a ThingSpeak channel for the mower. At the end of each "mowing session" I push a button and my mower publish the results on Twitter (via PushingBox ) and ThingSpeak (https://thingspeak.com/channels/38135 ). A recipe on "If This Then That" (https://ifttt.com) watch the Twitter account and post a message on my personal Facebook page with the Tweet just to annoy my friends!
Nice idea, Michael. Do you have a detailed description of this project? I wonder why do you need a PIC18F25K22 chip if you already have a ESP8266 on board?