Communications

Bluetooth Low Energy (BLE) is now the recommended method to communicate with a proxymow-mower. This is preferred due to its greater reliability.

Wi-Fi is limited to a single radio channel (although hotspots can be configured to a channel with less interference).

Bluetooth uses Frequency Hopping to minimize interference. Bluetooth LE utilizes Adaptive Frequency Hopping (AFH) to avoid channels occupied by other devices (like Wi-Fi).

It is limited to line-of-sight, but as our mower is always within sight of the Raspberry Pi's camera then this requirement is met. The range of 10-50m should be adequate for most mowing scenarios.

Bluetooth LE is supported by all modern Raspberry Pi models, the ESP32 device and the Raspberry Pi Pico W, but not the ESP8266.

Configuring System for Bluetooth

The latest version of proxymow-mower software is required in order to use Bluetooth for communications. This has an additional module: blue_uart.py

The software has been designed to listen for either bluetooth or UDP requests simultaneously, and it will adapt to prioritize whichever is incoming. A Wi-Fi connection is still made, if possible, and this enables the Web-REPL to work alongside Bluetooth. This is very useful for debugging device software issues, and to update software over-the-air without needing a USB connection to a PC.

One important difference between UDP and BLE mowers is the way they are identified. UDP mower devices need to be recognised by your network, and assigned an ip address. During initial proxymow-server set-up, this ip address setting is added to the server's configuration, and this is how messages are exchanged with the mower.

BLE typically uses MAC addresses to identify devices, but these are somewhat unwieldy, so the mower software uses the mower name defined in schematic.py when advertising. The constraint is that mower names must match for a Bluetooth connection to be made. This was not the case for UDP mowers.