LAM Detailed Circuit Diagrams
For more detail on the wiring of the Lawn Mower please see the following diagrams:
At various stages I have written code to test your components are correctly installed. Most of these test sketches are now integrated into the latest full code version
Testing your mowers components page
Build Tips:
1. Nearly all of the Arduino sensors and modules operate (or are powered) on 5V. The 5V for the sensors is generated by a step down module which steps down the 12V motor voltage to 5V for the sensors.
It makes sense to group all the 5V+ cables and GND cables from the modules together in parallel. These can be terminated at a wire blocks. Then have a single 5V+ lead going to the Arduino MEGA and a single GND cable going to the Arduino MEGA. This results in a much tidier wiring inside the mower and saves on unnecessary wires
2. It can become quite a mess of wire in the robot. Try and keep wiring colors to
- 5V red
- GND Black
- Communication wires to sensors Green/Yellow/Blue??
DC Step Down Module:
Before connecting it to the circuit, ensure that the DC Step down module is outputting 5V. Connect a 12V source to the input side of the module and turn the adjustment screw anti-clockwise until the output is 5V. If you output more than 5V you are in danger of damaging your sensors. This module is used to power all sensors and the Arduino boards
WHERE TO START?
OK. so it can be a little intimidating with all the wiring diagrams, so where shall you start. Print of the 'Back Facia.stl' and assemble the components on this facia. This should include the ARDUINO MEGA, Motor Drivers, Real Time Clock, USB Jack and NODEMCU. Remember to group all the 5V and GND wires together. These will then be powered by the DC Step down Module
Initially you can just plug the Arduino cables into the MEGA pins and find the corresponding pins on the component using the diagrams below.
I recommend in the end to solder the wires to the pins, but for starters just get the wiring correct and working.
REAR DRIVE WHEEL POWER MOTORS:
For the LAM we will need to use the more powerful rear wheel drive motors. You will need to dedicate 1 motor driver to each motor. To convert the motor driver from a double to a single driver the motor needs to be bridged. This is done by connecting the following parts of the motor driver together. With this you double the Amps available to power the motor but can now only power 1 motor instead of 2.
Bridge the following pads on the motor drivers
Out1 -> Out4 / Out2 -> Out 3 / IN1 -> IN4 / IN2 -> IN3
This modification needs to be done to both motor drivers.
The motor signal wires from the Arduino are now simply split to the 2 drivers. 12V power is required at both motor drivers.
RTC (Real Time Clock)
The Real Time Clock (RTC) is used when the mower is programmed with start and stop mowing times and dates. The clock requires a small cell battery to power the clock when the mower is switched off.
MOWER BLADE MOTORS:
The blade motors are also powered by the 12V Lithium Ion Cells. the 12V supply passes through the relay (...which turns off all power to the blade motors when docked) to the 43A motor controllers in parallel. The motor controllers are then connected to the ARDUINO MEGA and to the 3x blade motors as shown in the following diagram:
LCD Display, Compass:
If you are using the TFT touchscreen - Skip to the next section
The LCD Module needs to be configured by finding out the I2C address of the module. The I2C address of the module needs to be inputted into the Arduino software for the display to communicate with the ARDUINO MEGA board. Arduino programs to find out the I2C address of the LCD screen can be found in the internet.
The compass module is used to orientate the mower when the mower is finding the perimeter wire after the mowing has finished. Please take care the compass is orientated correctly in the mower.
I recommend to use the HMC5883L Compass. There are many cheap QMC5883 modules, but they tend to freeze up causing issues. Use the provded compass holder to secure the compass in place.(Y axis should go forwards and pins at the rear of the mower.
After the mow has been completed (due to batteries being empty) the mower needs to locate the boundary wire and follow it back to the charging station. depending on the end orientation of the mower it could follow the maximum length of the boundary wire around the garden which can be problematic. The compass angle (which can be set in the software for your garden) orientates the mower to the optimum angle to move off and find the wire.
The SDA and SGL wires are ran to the LCD display and the compass module from the same pins on the ARDUINO MEGA. A cable needs to be manufactured (soldered together) and ran to these components.
Get your I2C address for the LCD here
4 BUTTON MEMBRANE SWITCH:
IF you are using the TFT Touchscreen the membrane switch is not required,
The membrane switch is used to control the options menu on the LCD screen which starts and stops the mower. The membrane switch is connected as per the diagram below:
Label the buttons on the membrane switch as shown in the diagram. I did this using a label printer.
TFT Touchscreen & Compass:
If the TFT touchscreen is being used, then the compass can be wired to the Main Mower MEGA as shown below.
The TFT touchscreen replaces both the LCD screen and the membrane keypad
I recommend to use the HMC5883L Compass. There are many cheap QMC5883 modules, but they tend to freeze up causing issues. Use the provded compass holder to secure the compass in place.(Y axis should go forwards and pins at the rear of the mower.
After the mow has been completed (due to batteries being empty) the mower needs to locate the boundary wire and follow it back to the charging station. depending on the end orientation of the mower it could follow the maximum length of the boundary wire around the garden which can be problematic. The compass angle (which can be set in the software for your garden) orientates the mower to the optimum angle to move off and find the wire.
The TFT Touchscreen needs a seperate Arduino MEGA as a shield controller. The TFT MEGA then communicates via Serial 1 to the Mower MEGA Serial 3 ports. The BMP files in the TFT folder need to be saved onto a Micro SD car and inserted into the TFT shield.
Pay attention that the SD card is on the right hand side of the touchscreen (oreientation). Use the STL files to print the Shield bracket which will hold the MEGA and TFT in place.
Ensure the latest library files are downloaded from the GITHUB site to support the TFT.
SONAR ARRAY:
The mower uses 3 sonar sensors to detect objects around the mower. If an object is detected the mower stops and turns. The sonar modules require 5V+ VCC / GND / Trig / Echo cables. All the 5V+ wires can be ran in parallel and GND wires can be ran in parallel.
The Sonar modules are wired to the Arduino MEGA as follows:
Test the Sonar Array here
NANO SERIAL CONNECTION FOR VOLT / AMP & RAIN SENSOR Readings:
The Voltage, Amp and rain sensor readings are read by a separate Arduino Nano board. As the perimeter wire detection requires some special software, the normal Analog-read function in the Arduino software is not available. For this reason a separate Arduino Nano is used which then sends the data to the MEGA by serial communication.
The 12V supply from the Lithium-Ion batteries is measured by the Volt and Amp sensors. (the sensors operate on 5V but they are measuring the 12V supply)
The Volt sensor measures the 12V circuit. A +ve and GND is used in parallel with the 12V circuit (see the 12V circuit overview below). The volt sensor measures when the battery is empty and the mower needs to re-charge
For the Amp sensor only the charge negative wire is used. The amp sensor sits between the negative charge pin and the main battery as shown in the 12V Circuit overview below.
The charge wire is required as we are only interested in the Amp reading when the mower is charging, or to detect when the mower has reached the charge station and should shut down (turn all motors off and turn the relay to off and cut the 12v supply to the motors).
Th Rain Sensor is connected to pin A3 on the Arduino Nano
The separate code for the Arduino nano needs to be loaded into the Nano.
Check communications here
If you are having problems with communications I recommend soldering the wires to the nano. I have found that any sort of loose connection can cause bad data to be sent from the Nano to the MEGA.
PERIMETER WIRE SENSOR:
The perimeter wire is detected by the mower using a Amplifier and a 11P Ferrite 150mH Inductor. A signal is passed through the boundary wire which is detected by this sensor. If the wire detection is erratic try adjusting the amplifier by turning the adjustment screw.
This setup is from another Robomower project and is not my design
WIFI / NodeMCU Connections
The NodeMCU board gives the mower WIFI connectivity and can then be controlled by the smartphone APP. The Smartphone APP details are in the All Mowers section. A separate NODEMCU board is used due to the intermittent connection to the WIFI. If the WIFI signal is lost the board needs time to re-connect. This can cause a disruption to the mowers operation until the WIFI is connected again. For this reason a separate board is used which can handle the re-connection while the other boards take care of the safe mower operation.
The NODEMCU is added to the mower with a few simple connections
TILT SENSOR
2 sensors are used to detect the angle of the mower and if the mower is upside down. The sensors can be individually activated in the settings (requires Mower Software 8.0 or higher). The 3D printed clamp must be used as this sets the angles for the sensor and ensures that the sensor "ball" is returned to the correct position after activation.
12V WIRING CIRCUIT
The 12V circuit is shown in this diagram. The main switch should cut power to the complete circuit. The mower should however be able to charge when the main power is off or on.
The relay controls power to the motor drivers and blade motor drivers. This relay is turned off when the mower is not in use to conserve power.
5V WIRING CIRCUIT
A basic overview of the 5V wiring circuit. Please refer to the detailed diagrams above for each wire pin connection.
Try and keep all the 5V positive and 5V negative leads from the sensors together and group them into 2 bundles. Then use 1 wire for the 5V positive and negative bundles to the MEGA, Nano and NodeMCU