Additional Features

Additional Features that can be added to the Mowers are shown here. 

(Please ensure that all the normal features are installed and working before trying to implement these features)

 

  1. GYRO

  2. FPV Camera

  3. Wheel Amp Sensor

  4. NodeMCU monitoring of the MOWER MEGA Board

  5. NodeMCU WIFI Relay Switch via Blynk APP

  6. BTS7960 Drivers 

  7. Stepper Motors

 

 

To activate these features please see the instructions below.

 

1. GYRO

The new 8.6 code and above offers support for a GYRO.  The GYRO is intended to keep the mower in straight line on sloping terrain (SWOBY build). 

To activate the GYRO go to the NAVI Menu in the TFT screen -> GYRO and Enable it.  

Here is the connection diagram for the GYRO.  

The GYRO needs to be bridged between AD0 and VCC to give it another i2C address, otherwise this will conflict with other components in the mower.  There is also an optional 10K pull up resistor set which can be installed.  Reason is explained here.  Im not sure if the 10K pull up does anything or is even necessary hence the "optional".

 

To create the 10K pull up resistor solder the resistors as shown below and cover with heat shrink tube.

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

 

2. Mower FPV Camera

Configure a standard ESP32 camera to add FPV video to the front of the mower.  This video feed will be transmitted and shown in the a web browser.  This allows a good tracking of the mower and an FPV experience in manual mode.

 

 

Parts Required

To give the mower a forward camera you will need an ESP32 Camera and a USB programming adapter to program the camera.

 

Web Browser Video Stream 

No we can configure the ESP32 Camera board to stream the video in a web browser  (The video can be streamed to the Blynk app but it has a very long lag in it and is not much use).  Thats why we will use the web broswer option

As a first step add a new board to your BLYNK APP and choose the ESP32 Dev Board.  

 

 

 

This should generate a new Blynk Auth key which is sent to you by email. Note down the BLYNK Auth Code.

 

BLYNK Setup for Web Browser Video (Recommended)

If you are using the web browser to stream the video (which has almost no lag) then you can setup the Blynk app as follows.

 

  • 1. Create a new tab and label it CAM or FPV or Manuel whatever you like.
  • Move the manuel arrow controls from the main screen to this TAB.
  • Add a Value Display and assign it the virtual pin V2 - This will show the web url where the video feed can be seen. (remember to select the correct board in the menu ESP DEV1 when assigning the Virtual PIN)
  • Add an LED and assign it the virtual pin V1 - This will flash to show the video feed is active

 

 

  

 

Programming the ESP32 CAM Board

You will need to download the ESP32 support for the Arduino IDE. Follow the instructions as shown in the GPS instructions to enable ESP32 capability.

Now choose the AI Thinker ESP32-CAM board in the menu

Get the ESP32 Camera code from my GITHUB website.  The ESP32CAM code for the web browser is included in the folder from V8.8 onwards.

To upload the code we need to use the FTDI adapter as the ESP32 Camera board has no native USB slot.  To do this we need to create this circuit.  Ensure that the I00 and GND pins are bridged (green line).

 

 

I found that the FTDI adapter does not provide enough power to program the board so an external 5V power supply is recommended.

First update the code wtih your WIFI name, password and Blynk Auth code for the ESP32 Board in the Arduino Code.

 

Now upload the code to the ESP32 Board.  (I found i needed to first connect the 5V external power supply then plug in the USB cable to get a good upload to the board).

 

Here is a good tutorial with all steps explained:

https://randomnerdtutorials.com/program-upload-code-esp32-cam/

 

 

Configure the BLYNK App / Start the Web Browser.

Once the code is uploaded to the ESP32 board, remove the bridge between I00 and GND and open the serial monitor.  Once the ESP32 board is connected to the WIFI the front LED will light up for 2 seconds.  This signals a good connection to the WIFI. 

The address for the web browser will be shown in the serial monitor and also in the BLYNK APP.

http://192.168. _ _ _ _ _ _  

Input this address in your home web browser (connected to the same network) to test the video feed. 

You can only access the video feed from the website on the local network using the URL shown in the APP.  The camera can also only provide 1 video feed. So you can only access the Live Stream from 1 web browser at a time

Once the url is entered into the web browser you should see this menu.
Click Start Stream to start the Camera Feed.  You can adjust the video resolution and other settings in the control menu.

 

Connect the Camera to the Mower

To operate the camera on the mower we need to disconnect all the wires for programming (you can cap them to use them later for programming but you need to remove the bridge), so make sure you are happy with the upload of the code.  to run the camera we just need to give it a 5V supply.  this can be connected to the 5V output we already have in the mower:

 

 

 

Choose Antenna Type

The internal antenna can be used or an external antenna can be connected.  Choose by bridging the pads as shown:

Ensure at least that the internal antenna is activated otherwise the signal will be very poor

 

Location of the Camera:

330 Monster / LAM Monster

Please print the ESP32 Front Facia model to have a frame to insert the Camera.  This is a direct replacement for the old Front Facia.  This STl file is now included in the 330 Monster & LAM Monster Mower Pack

  

 

Other Mowers

An additional ESP32 STL part will be added to the other packs gradually as a suitable position is found for the camera.

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

 

 

3. Mower Wheel Motor Amp Sensor

The Motor Amp sensor monitors the amperage going to the motors.  This is measured by an additional amp sensor on the 12V input to the motor drivers (do not use the amp sensor already used to measure the charge voltage).  If the wheels become blocked due to an obstacle in-front of the mower (not detected by the bumper or sonars) the amps drawn by the motors will increase significantly.  The amp sensor detects this current and reverses the mower to "unblock the mower" and avoid any damage to the wheel motors.

The output from the Amp sensor is connected to pin A6 on the NANO.  To activate the motor amp sensor go to the Motion menu on the TFT screen and select Amp Motor.  Here the Amp sensor can be activated and the max amp setting chosen .

 

For a mower with a double motor driver bridge the amp sensor is attached as follows.

 

 

For a single motor driver its connected as shown here

 

 

If you own a PCB Version 3.6 or higher there is a solder point prepared for the Amp Sensor labelled AmpM1 which will connect the Amp sensor output to the Arduino Nano. If you have a PCB older than V3.6 then you will need to solder the wire to the Nano A6 using the pin leg solder point of A6. 

Then use a spare 5V and GND PCB output to power the Amp sensor

 

 

 

An amp setting needs to be selected that is above the normal current draw for the motors (considering flat running and climbing a hill).  Start around 1.5-2.0 Amps for smaller motors and 2.5-3.0 Amps on larger motors.Test by using the wheel block test in the test menu of the TFT (a blocked message should appear when the wheel motors are blocked).

Then send the mower out and test it in real world conditions. This may need adjustment in settings again if you have steep hills to mow.

If you get no respnse from the test swap the 2 12V leads to the amp sensor to ensure your not getting a negative amp reading.

 

This is a video by Max Echter from Luxembourg showing his 220 Mower with the wheel amp sensor in action. Wheel amperage is set to reverse at 1.8Amps using a single motor bridge and the 220 wheel motors. Sonar and bumpers are disabled in this test. (Max also doubled up the bumper bar to increase the sensor range)

 

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

 

4. NodeMCU Monitoring of the MOWER MEGA

Please use CODE V8.9 or higher to use this feature

If a sensor is faulty or some other bug crashes the main Mower MEGA it can be a bit of a nuisance, not to say dangerous for the flowers.  This tends to lock the mowers controls and requires a hard reset using the main ON/OFF switch.

This feature uses the NodeMCU to monitor communication of the Mower MEGA.  If it see's that the main Mower MEGA is not running it will reset the Mower MEGA automtically via the rest switch.

For this mod only 1 wire is required.  Just connect the Pin D5 on the NodeMCU to the Reset pin on the Arduino Mower MEGA

 

With PCB:

 

No PCB:

 

Now in the NodeMCU code enable the MEGA_Watch_Enabled by imputing = 1.

Now re compile the code and upload it to the NodeMCU

This will activate the monitring feature.  If the code notices that the loops and voltage readings dont change then a reset signal will be sent to the MEGA.  The sensitivity of this can ber changed in the Max_Error.  The higher the number the less sensitive the feature is.  I recommend a number of 40.

Manuel reset via App.

Once the above steps and code has been uploaded to the NodeMCU an additional button can be placed in the Blynk APP to activate a manual reset.

Both the automatic and the manual button can be used, but if you don't want to use the automatic option set MEGA_Watch_Enabled = 0 in the NodeMCU code.

The button should be linked to the NodeMCU and have the virtual pin V18 assigned

 

 

Pressing the button will reset the Mower Arduino MEGA.  The Arduino MEGA mower will then restart and enter the start settings.  To switch from a "Docked" status to continue mowing press the following combination of buttons in the Blank APP:

 

MANUAL --> AUTO# --> Quick Start

 

 

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

 

 

5. NodeMCU WIFI Relay Switch via Blynk APP

Please use CODE V8.9 or higher to use this feature

This feature will allow the use of a relay within the mower controlled via the Blynk WIFI App  to turn on and off things in the mower. This could be for example:

  • FPV Camera ON/OFF to save battery
  • Head Lights?
  • Smoke Machine :)

 

The control pin for the relay is connected to PIN D6 on the NodeMCU.  The relay used must be a 0-5V switchable relay.  A 5V relay wont work as the NodeMCU gives a 3.3V signal.

In the Blynk APP create a Segmented Switch with 2 options and give it the virtual pin V17. (Ensure the Virtual PIN is linked to the NodeMCU and not another board such as the ESP32 board for the GPS or FPV Camera)

 

Tip

Multiple switches can be added to the NodeMCU board by declaring a new PIN as an output and using this piece of code and modifying it for the new virtual pin number and NodeMCU Pin

 

 

(add a new line with D7 or D8)

(Change D6 to the new PIN and V17 to the virtual pin number of the new segmented switch).

 

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

 

 

6. BTS7960 Drivers

For the BTS7960 Drivers I used these smaller versions which are available in most online stores.  To use the BTS7960 Drivers it needs to be manually activated in the Arduino MEGA code in the Motor Drivers section (only using Code Mower V9.752 Experimental).

 

 

 

 Here is the STL File for the breakout board to locate the BTS7960 Drivers 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

 

 

7. Stepper Motors - Experimental !

This allows stepper motors to be used on the mower instead of geared motors.

This is not a completed part of the project - Its here for you to take up the challenge and make it work.  I can provide you the status till now and the challenges I faced.

 

 

Here are the STL Files for the Stepper Motor Housing (for 330 Mower)

I used 23HS32-4004S 2.4Nm 4.0A Stepper Motors with a 3:1 belt reduction.  In my opinion these motors/gearing didn't quite provide quite enough torque and stalled on occasion. I would change the gear reduction to 5:1 or increase the motors power

As the stepper motors require a constant pulse to keep them turning a separate Arduino Nano is used.  This Nano reads the voltage on the Mower MEGA pins and translates this into movement for the stepper motor.

This Nano code is available in the latest experimental code release.

The Nano board reads the voltage from the MEGA  on the following pins

Nano Pin A1  = IN1 MEGA Pin 6
Nano Pin A2  = IN2 MEGA Pin 5
Nano Pin A4  = IN4 MEGA Pin 3
Nano Pin A3  = IN3 MEGA Pin 4
Nano Pin A5  = Meant to read PWM signal on MEGA (not implemented)
Nano Pin A6  = Meant to read PWM signal on MEGA (not implemented)

The Nano is constantly looking for a 5V voltage (High) on the pins A1 - A4.

If for Example a 5V voltage is read on Nano Pin A1 (Coming from Mower MEGA Pin 6 being HIGH) then the Nano translates this into a move forward motion for the stepper motors and produces the forward stepping pulses.

I didn't manage to implement PWM readings which is needed to follow the wire!!

As you can see this is a work in progress. If anyone makes a success of it please let me know!