Autonomous lawn mower.

Author Message

Admin Group

Joined: 05/06/2004
Location: Australia
Posts: 5045
Posted: 04:37am 07 Jan 2023      

Making some progress on the lawn mower. Its mostly been R&D so far.

I bought a Ardusimple SimpleRTK2B board, a RTK enabled board based on the u-blox F9P chip. Not cheap, about $400. After a few weeks of brain strain, not having a clue what I was doing, I finally managed to work out a GPS system accurate enough for a lawn mower.

Fortunately I have a free NTRIP server within 15km of my location. Its a government run service, you just need a username and password, and a internet connection, to receive a RTK correction data stream. I'm using a ESP32 board with Wifi, to connect to the NTRIP service over my NBN connection. This data is sent via a serial pin to the SimpleRTK2B board to process and come up with a "solution". Depending on the number of satellites and cloud cover, it manages a "Float" solution with a accuracy of 20cm, or a "FIX" with less than 2cm.  

The GSP antenna will be mounted on the mower as low as possible, between the two drive wheels. This is so if one wheel goes up or down over a rock or something, the GPS aerial is still roughly in the same position, and the mower wont be inclined to think its gone off course.

I'm using a little arduino compass board to get bearing. This will be mounted on a mast about 1 meter above the mower deck. This is to get it as far away from the motors as possible, magnetic fields and all that. I'll put the wifi aerial on the mast as well.

Finally I'll have a Raspberry Pi 3 as the web interface and data storage. This will use its own wifi channel. I'm using a Pi for this as I have one spare and I'm very comfortable with writing MySQL/PHP code on that platform.

The Pi will store all the waypoints, log data, and have the web interface to manually drive the rover, progress updates, change waypoint info, etc. The ESP 32 will request the next waypoint from the Pi, then use its compass to turn to face the next waypoint, then travel in a straight line until it reaches the way point. Once there, its reports back to the Pi ( for logs and updated map ), and requests the next waypoint.

I've started on the driving code. The ESP32 will do all this stuff, its more than capable. Mostly just a bunch of functions, like turn to X degrees on the compass, motor drive, veer left or right, watchdogs, etc.