MakerBot Print is our newest print-prepration software, which supports native CAD files and STL assemblies,
allows you to interact with all your printers via the Cloud, and many other exciting new features.

Download Now


Robot Lawn Mower

by ReP_AL Aug 8, 2018
Download All Files

Thing Apps Enabled

Please Login to Comment

Since awhile ago I had an idea of building an 3D printed automower with motors (and wheels) from a hoverboard. They are super strong and almost complete silent.
Now my kids lost interest for there old hoverboard and I found people that managed to make new firmware for the hoverboards motherboard to be controlled from different sources like analog potentiometers, joysticks and serial. Here is Niklas firmware: https://github.com/NiklasFauth/hoverboard-firmware-hack but I use https://github.com/EmanuelFeru/hoverboard-firmware-hack witch is a rework of Niklas code and more silent.

I will use your codes as a base for my mower but it need to be modified to work together with the motherboard from the hover. At the moment I have an aluminium platform for my setup. I need to finish my 3D printer project before I can start build parts :-)

The hoverboard MB has some features that are interesting to take in to your code. Like charge algorithm, voltage and current readings that are accessible from one of the UARTs. I use serial interface to give the motherboard speed an steering information. Unfortunately it is not speed and direction for each wheel that need to be sent but speed for both wheels and then add a steer variable that speeds up the outward wheel and brakes the inward. I needed to add a converter in your code for that.
I also start testing TOF-sensors (VL53L0X) instead of sonic distance sensors. They can be mounted behind glass and therefore not so sensitive to whether.

Note...The platform is capably to run almost 30 km/h :-D

I have little problem : in moving mode the mower detect a wire (in center of garden not near a wire) so she stop, reverse and continue some time and again wire detect...

does anyone have an idea of the problem?

Thank you

Is this just in the middle of the garden?
If the is running normally except on that area, you need to adjust the amplifier by turning the screw to increase the signal and if that doesn't work, change the voltage on the perimeter transmitter

Did you run the wire test? You should get negative values inside the wire. If your getting positive values you need to reverse the boundary wires attached to the perimeter wire transmitter.

You can also use the wire test to check the signal strength in the middle of the garden and adjust the transmitter and amp so you get a good enough signal.

I've already try to increase amplifier and modify voltage.
the problem is not that she does not see the wire, it is that she sees where there is none !
the mower see a ghost wire it's very weird. (if I switch off the wire, she detect them and stop it).

I checked all, the signal is good (negative inside).

except that everything works fine...

are you using a 200x Amp?
maybe you can send me a serial monitor print out to look at.

I try to send you screen shots Thursday or Friday if the weather is better ! Lol
Thank a lot

Is anybody using a non 3D printed rear wheels? if so what are you guys using? Thank you!

quick question regarding the battery on this thing.
is it possible to use a battery with bms on it ? It has a + - charging input and + - output of the battery
is it possible to connect the charging port so the mower also detects the charging current ?

Please see description https://repalmakershop.com/pages/3d-printed-mower-build-instructions-wiring-overview first image shows battery with BMS. It use same battery wire for load and charge, but there is no limitation to use BMS with separate charge/load wires.

In my setup I use BMS with separate +- wires for charge and load. Also added aditional load current sensor - to detect overload in case of locked motor.

Inspired by your successfull project wanted to make 3d printed lawn mower, but i got "Tianchen TC-G158" - used chasis and motors of it.
Started looking for robot firmware - and this ReP_AL looks most active in last year (ardumower.com seems to be forgotten).

Got my mower moving arround, but field deployment will wait for spring...

Only one arduino is needed, Mega could handle perimeter wire and analog sensors too - less HW less wires ;)

Improved manual WiFI control: with blynk.cc joystick - more fun and responsive ride.
(blynk.cc is opensource server availabe http://docs.blynk.cc/ no payments needed if you setup your own "server" app on pc)

Nice work. I work on my mower since January. With some litlle problem i solved and some not. I think it could be intresting to have a forum or another way to work together on the project, i post a little code on github to had a test spirale mode. I find today that the community is on thingiverse... it's hard to find an awnser in the long list of comment.



I have a little problem. I have print the last design with new motors et bearing.
In this configuration i can't install battery...
Can you update to fix it?


Do you mean the battery box doesn't fit?
I didn't install that in the new mower i made so that could be a problem i admit.

Yes battery box doesn't fit.
So, how i can do?
Do you have some photo of your new mower?

At the moment my battery is just placed between the motors without a "box" to hold it.
I will design a new battery tray for the new space and let you know when it's done.

I uploaded a new battery box to the files on the 15mm "Thing"

I just finished the CAD and didn't print it yet, but please feel free to test the design and give feedback.
You will need to print with support structure for the front section which is undercut.


Ok nice, but now we have a problem fixing the mower motor clamp....
I think you can rotate battery box?

If your using the smaller motors that would be ok. But with the longer power motors it doesn't fit.
The only simple way to solve it is to rotate the motor clamp 90° and make new holes for it in the floor. I can make a new Frame Clamp for alignment of the holes.

nice work
a question is it possible to build motors in like the ardumower? with sensors that the mow will drive more straight?
and which app you use?

thank you and maybe you can write back in german or where ru u from?

Momentan ist diese Funktion nicht eingebaut (Radmotor mit encoder). Der Mower lenkt stattessen mit Hilfe der Kompass Module, damit der Mower geradeaus fährt.

Mobile App verwendet Blynk. (wie auf der Internetseite beschreiben) https://repalmakershop.com/pages/3d-printed-lawn-mower-wifi-app


Hello all and Phil,

I am about to start printing the 24_Main_Cover_Rear_Section and wanted some advice on how to lay the part on the bed for optimal printing?

I was thinking of laying it flat with 80% Support Overhand Angle but open to suggestions.

Thank you!

Looks good. that's exactly how i print it.

Thank you for the reply and for sharing your outstanding design! I'm looking forward to testing it out.

Hi Phil,

Why use a classic 1302 rtc clock not i2c 3231 ?


Hi no reason. Just it's what I had.
If you want to upgrade then of course you can adjust the code to integrate that clock module.
The 1302 did the job for me, so there was no reason to use a different module.

Hi Phil,

Do you think it's possible to substitute the L298 motor driver for the perimeter wire with a BTS 7960 driver?

For some reason the L298 drivers don't seem to last - the signal strength deteriorates slowly after a few days, then I have to increase the voltage on the transformer to make the robot run again, but that in turn makes the signal deteriorate even faster.

I'm hoping that the BTS7960 module with its larger heat sink and higher rating, lasts longer, but I'm unsure if I can use it without having to modify the code as it has different pins?

Best wishes

BTS7960/BTN7960 is able to deliver more power, it should work. And it could be wired without changing code.
But it has current sence capability - some custom "adaptable constant power code" could be used from wiki.ardumower.de project.

L298N fails if >3.5A current is running (2A looks like practical limit). What perimeter wire resistance do you have and what voltage from power supply?

Hi Eimixas,

The perimeter wire has approx. 2 ohms resistance (100m long and .75mm^2).
Yesterday (with a completely new L298N module) the robot was running perfectly fine with 6.1V across the buck converter (and with a robot PID P-value of .28)
Today I had to increase the voltage to 10.8V otherwise the robot would signal "WIRE OFF" and I also had to increase the PID P-value to .74 to make it follow the perimeter effectively. I'm currently measuring 1.63 amps flowing to the L298N module, and without the two fans it gets up to 145°C hot.

I just tried searching the constant power code, do you maybe have a link?


It looks like this project already use code from ardumower.de, see source code: /Perimeter Wire Transmitter/Sender_Station_V1.ino
But only smaller part of it is used, and without external current/voltage sensors - power could not be limited.

145°C is too high, you should start with lower voltage (<6V) with new L298N module. If wire is quite short and resistance too low - add resistor in series with wire (ex. 4.7ohms 10W).

"ardumower.de" project sugests to have 5ohms at least and not more then 12ohms for perimeter wire total resistance.

Did you use paralel output of L298N?
6.1V/2ohms = 3.05Amps (not safe range)
Signal has ~50% duty cycle, so in multimeter you see 1.63amps average value.

As already said. Did you bridge the L298N driver as shown in the instructions?
The P value sounds very high meaning the signal must be very weak.

Is the inductor and audio amp working correctly.?
Do you use the perimeter case with the fan to cool the motor bridge?

No, I didn't parallel the L298N (I must have been using an old set of instructions).
The audio amp and inductor coil are fine.

I've tried using a 10 Ohm power resistor a while ago, but then I took it out again because the resistor made the signal too weak.

I've just ordered a new module, I'll bridge that one and place a smaller 4.7 Ohm resistor in series, as suggested.

I'll report once it's ready to test.


I think there is an error on backface. I have print it last week.
I can fix arduino mega with only 2screw of 6.

I just uploaded a new STL for the back face.
Better screw positions and stronger mounting points.
The Nodemcu can also be located on the back face close to the MEGA.

Everything is working great with the wire off.. however I cannot get the perimeter wire detection solved.I set to mow it prints wire detect and turns around every few seconds.Test of the mag readings seem ok.Turning the screw does not seem to help If I adjust the screw any lower I get the wire off error and mower shuts down. I'm not sure what i'm missing? Any help is always appreciated. thanks

hello Greg did not detect it and the screw did not work I tried to reverse the poles of the coil and now it works.

do you have a serial monitor print out or something to use....?

Comments deleted.

Hi Phil a question how did you fix the 5 cent coin on wire?

Hello Gaudy, I drilled a hole in the center of the copper and used a m3 screw and ring terminal to attach mine.

Thanks Greg

If you mean the wire to the 5 cent coin - soldering.
If you mean the 5 cent coin to the mower - hot glue. The recess for the coin is also quite tight so just pressing it in sometimes works.
I can't remember who, but someone also used 2 of those rounded headed bolts in stainless.

thanks Phil but a doubt arises, is the coin 5 euro cents? because I can't weld it, you what you used

Its not easy to solder but trust me it works. you need to get enough heat into the 5 cent piece. I used a heat gun to get it hot enough.
Once its hot its fairly easy to solder the wire to it. :)

thanks Phil, soldered perfectly

Comments deleted.

I am getting an issue with the mower randomly not working with "mower error, wire off" message. The wire is on and the error comes up randomly.
What would make it think the wire is off? I successfully tested the wire. I played with the settings on the amp and found the best results with the amp maxed out.
Increasing the voltage on the buck converter beyond the point where it buzz does not seem to make a difference.
I have not tried the alternate settings for the perimeter wire sketch as the wire is working.

In the code tab wire detection you can see that the code looks for the signal strength of the coil. When the signal strength is between 50 and -50 (if I remember right) the mower thinks the wire is off.
So somewhere in your garden the signal strength is lower than this limit.
Either you need to boost the signal strength in that area or increase the detection strength.
Or.... you can change the limits in the code if it's just a few points below the limit I set.


I assume the "detection strength" would be adjusting the audio amp?
How would I adjust the "signal strength"? By adjusting the buck converter?

Would the root cause be that the length of the wire is too long? I have a decent size backyard. I wouldn't call it large but it is not small either.
Another potential cause: for a small section the wire is buried. I resurrected an old dog fence wire that is buried in in one section. It is only about 4-6 inches underground and the signal strength is strong when running the wire test over that section.

Sorry but I don't know. How may meters is "decent size" .
I used the 3mm perimeter wire (steel stranded plastic coated like on the website) and had no issues.

I don't have any experience splicing in Dog wire fences.... :)

Interesting...3mm would make it 8 gauge which is really thick wire. Unless you measure the outside with plastic shielding. The dog fence wire is solid core, not stranded, copper that is 20 gauge thick (0.81mm). With the plastic shielding it is about 1mm. My initial question was about buried versus above ground.
I did a quick check on the wire sold for the ardumower. Their wire is 1mm core (18gauge).

A very rough estimate would be about 120-150 meters of wire.

3mm is the od with plastic. So I guess the wire is 1.5mm. I pinned the wire around the garden with pegs. After 1 year it grew into the grass.
I don't have experience with a buried wire.
I used around 100m for the wire.

Hi Phil
The motor specification usually indicates the speed of rotation with and without load. You recommend using motors 30 rpm.
With a load, these motors give 20 -22 rpm
Is the rotation speed given with or without load?


Sorry but I'm not sure. They are just sold as 30rpm motors.

Ok, I’ll ask differently.

How will the mower react, if I install a geared motor at 40 rpm?
Should I change the code?


At 40rpm you have traded torque for speed, so it might not make it up as steep a hill like the 30rpm motors.
The PID would also need to be tuned as the mower needs to react quicker when wire tracking. Same for detecting the boundary wire as the mower is moving quicker over the wire.

I ran into a problem when the mower doesn’t have enough power to turn around on the lawn (the lawn is too soft, too much moss. the mower is immersed heavily in the grass), especially when looking for a compass direction. I installed only one front wheel, this improved the situation but not completely. Now I am looking for more powerful gearmotor to guarantee the return of the mower to the dock and faster movement on such a lawn.


To be honest, I don't think the solution is so easy... (and don't spend extra money for nothing :) )
In my experience, these kind of problems occur, when the battery is weaker, and the pwm value is lower for the motor (I'm not sure, but in these turns, the motors aren't necessarily driven with full pwm)
I'd suggest to:

  • set the min battery value a little higher
  • improve the code to limit the minimum pwm for the motors
  • improve the code to detect if the mower is stuck (or at least to detect if it can't turn to a specific position in a given time), this would help in other situations as well

WiFi connection without 5/3.3V logic conversion looks doubtfull.
For long term project - should you consider using converter between Arduino and ESP8266?

So far I have never had an issue after many months of constant use at 5v.
If you feel unsure it would be easy to add another DC convertor in the setup for 3.3V
This could also be used for the compass module and any other 3.3v logic boards.

OK, I'm back for more help: I am unable to charge my battery pack and the amp test reads 0 Amps. I'm not sure if the issue is with the charger, the battery pack/BMS or with the amp sensor/nano communication.
When I loaded the test sketch I was getting readings on the amps.
I get correct voltage and rain sensor readings at the mega, so I do not think it is an issue with communication between the nano and mega.
I tried 3 different amp sensors. I am getting 5v at the sensor and I checked continuity between the amp sensor and the nano more times than I can remember.

The other thing I'm wondering about is on the circuit overview page the first diagram have the switch on the positive wire but all other diagrams and documentation refer to the negative wire. I added the switch to the negative wire.

sorry i just checked and the LCD was not displaying the AMPs correctly (problem with local and global variables). On the serial monitor it should show correctly I just uploaded code V6.4. Please try again with this version.
I have the main power switch on the -ve wire. (but it doesn't really matter)

Thank you for the assistance, unfortunately with 6.4 I get a blank screen after uploading the sketches. The screen powers on but does not display anything. I can still see the normal activity on the serial monitor. When I reverted to 6.31 the screen returned to normal.

Wrong initialisation of the LCD in 6.4:
in Mower Arduino Code/Mower_V6.31/MEGA_V6.31/MEGA_V6.31.ino
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

in Mower Arduino Code/Mower_V6.4/MEGA_V6.4/MEGA_V6.4.ino
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

I should have figured it out, thanks!

Once I got the LCD working I realized I was getting negative readings on the current sensor. I though the direction of the charging wire connected to the amp sensor didn't matter.
In any case, now I have it working. Thanks for the help!

You just need to update the i2c address for your LCD screen

Firstly I must say, Thank you. I was currently bulding a nearly finished robower from WWW.REPRAP-WINDTURBINE.COM which I had added a few things to, like an esp so I could wifi control it, and then I found your project. And frankly it's much more along the lines of all my requirements and the look of the mower is fanstic and so I'm swapping out as much as I can.It's currenlty printing and I can't wait to build it.
I wanted to just list the things that I was planning (or had already added to the other mower) and am more than happy (when its tested and everything is working) to share.
A) Downwards ultrasonic sensors - This allowed me to measure if the mower was picked up. (1 sensor on front, 1 on back). The sensors were very very noisy because of the grass, but once the distance on either was > 10cm the mower turns off it's blade... (This was mainly working, but the sample rate had to be high orthe motor didn't slow quickly enough once lifted.- This is still a work in progress.
B) My Base Charger was the access Point to the mower "Network". I wanted the mower solution to be able to be self contained. The base has a rain sensor (same one you use!) and i was gong to make it tell the mower to shutdown cutting the grass and come home (because it may as well charge). I was thinking of other ways of expanding it. After seeing your plans I think I'd want to add a RTC to it, or have it access an NTP system and then it could control the schedule of the mower, to stop and start at various times. I wanted to integrate into MQQT and tehrefore into HomeAssistant.
C) Base Charrger was measuring the resistance of the perimeter wire... If the resistance went very high, the plan was that it would tell the mower to stop mowing completely and stay still. - This is a work in progress as I was trying to find a way of measuring the amperage ofa signal which is PWM.... (My current thinking is to use a second PWM pin on the arduino to measure the amps on the return perimeter wire at the same time that a pulse is being sent. I just don't know if that will work in a timely manner
D) I stole / used https://www.youtube.com/watch?v=_Qd51dB8sGA which uses an 18650 storage pack and with nickel and springs turns it into a solderless 1s7p back. I have 3 of them to make a very similar pack size to yours (3s7p rather than your 3s6p) This allowed me to get away with using old laptop batteries which have lost 10% of their total charge.
E) - Very far future plan - Be able to run and control / co-ordinate 2 mowers at the same time. Both of them mapping the terrain and then could transmit to base, for it to realise if the mowers were missing sections. (My garden is 2 grass areas, split be a narrower grass area, and so it's possible that the mower randomly doesn't go down the narrower part. The plan is to map the perimeter first.
F). I had integrated IR TX and RX into the single mower and was thinking if it could be worth having these to act with beacons, so If I was re-seeding part of the lawn, I could cordon it off rather than trying to splice into the permiter wire and potentially break it. Also it would be nice if I could use the beacon to deter the mower from coming near (for example If the kids are playing, if I've got a cable / hose across the lawn).
As I say, thank you for the amazing project. Ireally like how sturdy it looks, and I'm very pleased to see that a huge amount of the design is very simlilar to what I was trying to achieve.

Thanks for the comments. It would be great if these features can be integreated.
For the pick up sensor Iäm currently looking at a simple Arduino XZY Tilt sensor. I think this could also be useful to measure small tilts which could send more power to the motors (small hill) to keep the mower going straight.

Mapping and 2 mowers communicating sounds fantastic. ( Thats a little above my programming skills :) )


Running the mower through excessively long grass got the motor hot enough to soften the PLA and worked it's way loose causing a lot of vibration. My plan was to find a heat sink to fit the motor but i could not find one so I printed a new motor mount with a 40mm fan and air gap around the motor. Problem solved :)

Can you share the STL? - looks like a good improvement.
The mower is really only designed to keep the grass at a specific height by cutting small amounts away.


Sure. I am running a XD3420 with a 43mm long shaft https://images-na.ssl-images-amazon.com/images/I/61-qbk-v3EL._SL1001_.jpg . I'm not sure what your original design uses? It might need to be modified to work with shorter shaft motors.

Hi Phil!
Could you please answer to my question?

How to choose the right angle for returning home?
If I follow your logic, I have to set 270 degrees. have a look on the scetch
However, in the case of 270 degrees, the robot is constantly spinning and cannot find the right direction.
Best Regards.

Hi Phil

Thank you for the support.
The problebmm with compass gone after 6.4 code installing
Thanks a lot again


did you try the -90 as suggested?
Do values lower than 180 degrees work ok?

I have been looking at the compass home and did in fact find a few problems.#

  1. Values over 255 were not being saved in EEPROM
  2. The turning logic in my code was basically badly written.
  3. Values above 180° turning resulted in a crazy spinning direction to find the home value.

....anyway... Soon i will release Code V6.5 were all these issues are addressed plus some there will be some extra features for the mower

In power motor config (separate L298N driver for each wheel) wiring documentation suggests bridging IN1 -> IN4 / IN2 -> IN3
But what about bridging EN_A -> EN_B? If not bridget B motor driver is never enabled, so no full power :(

Datasheet page 7 https://www.sparkfun.com/datasheets/Robotics/L298_H_Bridge.pdf

Do these need to be bridged also? Can anyone confirm this?

I have been struggling every step of the way it seems to get this robot working. Now it feels like I'm on probably the last step that I need to figure out: Everything works fine until the robot start spinning the blade. Once it spins the blade it is unable to also turn the wheels. If I lift it up the wheels turn.
I use 2 motor drivers for the wheels and PWM is set to 255
The blade motor is 3000rpm at 12v, and would not work with default PWM, so I set it to 215. Model number is XD-3420. If anything the current draw should be lower.
My battery pack is the standard 3s6p with panasonic 18650s 20400mAh

My multimeter seem to have bit the dust so I am unable to measure the current right now.

Any advice?

Thanks for a great project and build instructions!!

Hi Swazi1,
Are you sure that the blade motor is the 12V version? There are 12V and 24V versions available? If its the correct motor it should work with the default PWM setting which makes me a little suspicious about it.....
So i would check the following:

  1. 12V or 24V blade motor?

  2. When you get your new multi-meter check the voltage coming from the Blade Motor Motor bridge. Obviously you should see 12V when the mower blade is active.

  3. Check the relay is working correctly and it provides 12V to the wheel motor bridges and the mower motor bridge.

  4. Check the wheel motor bridges (as you use 2 ) are wired in parallel and not series.

  5. If you have an external power supply. Maybe hook it up to the wheel bridges and the motor bridges and test them.

  6. Run the test sketches for the motors (wheel and blades).

Hope this helps

Thanks for the feedback. It looks like the issue is around the blade motor:
The motor can run at either 12/24v with 3000/6000rpm respectively. I think the motor you specify runs at 3500rpm.
I have 12v going to the motor bridge.
But I do not have 12v output from the bridge. The higher the PWM, the lower the voltage:
240PWM = ~ 0.6v
200PWM = ~ 2.5v
150PWM = ~ 5.0v

I don't really understand PWM beyond the basics.
I checked the wiring of the bridge and see no issues (continuity and correct pins).

I also checked the motor directly on a 12v supply and it runs fine.

Hi swazi1

I ran into a similar problem.
It is seem the poor quality of the Chinese blade driver. Soldering did not help. Only a replacement.


I know you said you checked the wiring, but please check it again and that the 12V in and out is correctly soldered/clamped to the bridge.
I have built 3 of these mowers now, but still i manage to mix up wires on the Arduino or components just because sometimes the pins on the Arduino are not exactly obvious depending at which angle you look at it.....

Also check that you have enough signal voltage to the bridge and that its grounded well.

Hope you get the problem solved.

Just to close out this topic: It was an issue with the motor bridge. When set to PWM of 1, it supplied the full 12v to the motor. I swapped it out with a new bridge and it works fine at 255.

I have been busy with other projects but I'm back to working on this one. I did a runtime test this weekend with my 3s7p Samsung 30q pack and I shut it off at 5 hours 45min @10.5v on the pack. Runtime was double my expectations! Now I wonder if it will function properly if I take it down to 3.2v per cell...

5hr 45mins is impressive. Normally I stop the mower at 11.6 or 11.5 volts. :)

how to set the rtc clock time
thank you

Did you follow the insturcions here for TIME.

the time can now also be set in the LCD menu in the settings menu.

If its not setting correctly, double check the wiring for the clock is using the correct pins on the MEGA.



I have an electric weed trimmer I don't need anymore. Could I use that motor and the plastic cutting string with this project instead of the metal blades? (After some modification of course).

Honestly, no clue.
It took me a while to select the right motor combination. I have no idea what motor your weed trimmer has in it (RPM, Volts, Amp draw).
The whole battery setup also needs to match the motor.

Thank you for the quick response! I haven't even cracked open the trimmer yet so I don't know these things either, I just wanted to make sure there weren't any obvious reasons it wouldn't work with a trimmer.

I'll think about it more an report back with what I find. Worst case scenario I just use the motor in these plans.

Have a great day!

Hi Phil!
Could you please answer my question?

How to choose the right angle for returning home?
If I follow your logic, I have to set 270 degrees. have a look on the scetch
However, in the case of 270 degrees, the robot is constantly spinning and cannot find the right direction.
Best Regards.

Comments deleted.

Does anyone else have an issue printing the new wheel design with spikes on an MK3?

Hi phil, congratulations on an awesome project, I looked into ardumower a while back but with their custom board and higher cost I didn't think it was worth it over a cheap model from China, now this makes things affordable so thank you! A couple of things to ponder over,1) the controls, are in a hollow, when it would rain wouldn't water collect in there. 2) would like to see a tilt function so blades stop if mower gets lifted by kids... 3) for camera have you thought about using the esp32cam module? 4) found these membrane buttons :) https://s.click.aliexpress.com/e/b3uOOfsc 5) spiral mode looks like a great function! cheers Larry

Hi Larry,

  1. Yes. The rain sensor is there to send the mower back to the house if it rains. If you can improve on the design please remix and share on Thingiverse.

  2. Yep. Working in it.

  3. I was testing a camera, but it destroyed the audio amp. I went through 3 audio amps with he camera in various positions. Then I gave up. Not sure how it would be with the ESP camera.

  4. Spiral sounds interesting. I saw that the other day on a commercial mower and thought it could be implemented fairly easily.


Hi Phil,
Thanks a lot for the great project!
Finally, the bot is completed.
But , same problem with wire detection. Bot print #WIRE OFF#. I have tried several versions of the sketches without any success.
How to make sure, what the problem is: Wire or detector?

to give any kind of help you need to give details. Maybe a serial monitor print.....
what do the test sketches display on the wire test. Whats the values shown?

Do you have negative values inside the wire and positive outside the wire?

Did you follow this tutorial...?


Hi Phil
Thanks a lot for the support. I have find the mistake! Bad soldering on the audio amplifier. Now Bot follow the wire.
Can you please explane> why bot does not run the blade? all the time H-lock on the LCD.
Thanks a lot

Sorry I don't understand. Is the blade motor not spinning when the HLock is on?
Or is the blade not spinning at all?
The blade should be spinning as long as the mower is mowing...

Did you run the blade motor test in the test menu?
How is your setup for the mower?

The blade motor does not spining at all. All the time @H-lock Mow@ on the screen.
Yes . I have made the test . It is OK.
The setup is in the file


I'm not sure. The setup file looks ok. I don't see any reason why the blade motor would stop.
Does it ever spin? When exactly does it stop spinning?

The blade is spinning when running the test menu isn't it?

How is the blade ran through the relay? If all things above are checked then you need to ensure the blade motor is getting power from the motor bridge. Check there is a 12v supply when the mower is running.


Thanks Phil .
I will check everythings.
I would like to ask the spining speed 250 . what actual spead sould be ? 3500 rpm?

Regards, David

I mean, You recomend @245 rpm its OK for new motor .
But the motor speed at 12v 3500 rpm
Does it mean 245 = 3500 RPM?


255PWM is the max RPM for the motor you are using.
So 250 is just below that.

Again bad soldering. This time on the blade motor driver. It's China!. Now bot mowin.
Thanks A lot Phil.

Hi Phil,

very nice Project.
My Bot is complete now, but i have troubles with the wire detection....

The bot drives along the wire nice, but in some edges he drives straight and does not realise that he is no more at the wire.
i have played with PID its now better but not perfect.....
i think there are problems with the MAG-field, but when i turn the amplifier a little bit down he mows ... but then he writes "Mower Error - Wire off" ..... and when the amplifiere is on max. power in the middle of the garden he thinks there is a wire but there is no one....

The Values of the MAG Field over the Wire are ok, i dont find the problem, the coil and the amplifier are exactly the same as you use....and i have also change them already.....

Please Help....i dont know where is the problem....
Thanks Chris

As I don't know much about your setup I can only really guess.....

  1. What wheel motors are you using with what RPM?
  2. Do you have sharp 90degree bends in the wire?
  3. What MAG values do you get close to the wire?
  4. What magnification factor does your audio amp have 20x or 200x?
  5. When you say it "drives along the wire nice" does this mean only in straight lines or also on small corners?



  1. 37GB555 12v 30rpm Motors
  2. No, only curves.
  3. Close to the wire i have 0 , when i move it away it goes to 5000 or more.
  4. 200x
  5. He drives also along small corners.

Also the Bot often finds a wire where no wire is


Nothing obvious what could be wrong from the information you gave.
All looks normal.

Can you send a serial monitor printout

  1. Tracking before the mower looses the wire
  2. Then just as it looses the wire.
  3. from the times it thinks it sees a wire.


i have looked in the serial output while he is mowing,
i have seen that there a randomly positive mag Values in the middle of the Garden like this.
and so on.
Could this be the failure?

The important value is the IN/OUT value.

i have found the problem,
the Arduino Mega was provided with the 5v over Vin, everytime when i pluged the Tablet in USB to see whats the failure (on Serial Monitor), there was no more a fail.
Now i have bridged the Vin directly to the 5V Pins on Arduino, now it works....

Hey Phil,
Thanks again for the great project.
My bot is complete now, but I have issues with the rtc and the wire detection. First the rtc:

I cannot save the time via the menu. Clock is shown in display but is not running. I tried two different rtc but nether will work. Wiring is good. Is there any possibility to test the clock?

What kind of clock are you using.?
Did you try to set the clock using the '1' option then the '0' option in the code 'set clock' as it's described in the comments.?

Just tried so, still no time visible. Rtc shown in attached picture, would you recommend another one?
The displayed time is 0:00. If I disconnect the rtc 27:165 is displayed.

That module should work. Please just triple check the connections to the MEGA: Its really easy to unintentionally move a pin down by mistake.


Sounds promising.....
What was the result...?


In the 6.31 code menu you can go to tests and there are various test programs you can run to check the components.

What material is recomended for this? Is PLA ok for outdoor use? Can SUN make damage to this robot?

Hi Eimixas,
I used PLA for the complete build. I think PLA is ok.
Of course ABS may be better but honestly so far I am happy with PLA.

i know this may sound odd buuutttt i kinda want to turn this into an rc i know its meant to be autonomous but i have some plans but it kinda requires it being rc soo what 3d printed parts could be left off?

Hi KingKul,
difficult to say. I think you need almost all the parts except the holders for the electronics.

Mow Alarms:

I'm not sure what's wrong but for some reason the Mower doesn't start/ leave the docking station even though I activated all alarms in the sketch for the Mega (MEGA_V6.1.ino file).

Is there something else to look out for besides what I did: Alarm_..._ON to 1, Alarm_Hour... and Alarm_Minute... for all alarms (with different times of course)?

Could the reason for this maybe be that I set Compass_Activate to 0 ? (I had to do that because either my compass module is broken or it picks up way too much interference)

Thanks and best wishes

I'm working on saving the Alarm settings and other mower settings to EEPROM, so any changes in data are saved when the mower is switched off.
Another update is coming aoon.

YESSS, that sounds good - I shall be waiting with patience.

Btw, before you made v6.2 (and after I hopelessly gave up trying to fix the problem myself) I found a way around it by adding a timer widget to the app and setting it so that it pulls up the exit dock pin for a second; which worked great.

I think the problem (for me) may be with the variable "Time_Hour".
In the later versions (v5.8 onwards) "Time_Hour" seems to be returned with a "0".
In version 5.3.2 "Time_Hour" is returned as the current hour. In this version the alarm correctly triggers the mower at the specified time. In this version the mower also correctly stops after 1 hour when I choose the "Mow 1 hour" program in both "Exit Dock Z" and "Quick Start".

(I'm now referring to the "Mow 1 hour" to explain my issue) To calculate the stop time we define "Alarm_Hour3 = Time_Hour + 1". I think for some reason this doesn't occur correctly. I have attached some screenshots of my serial monitor, which shows the difference between the functioning v5.3.2 and the non-functioning version 6.1.

Is this a specific problem with my set-up, or is there a general issue with the Alarm and "Mow 1 hour" functions (where the Mow 1 hour simply continues mowing beyond 1 hour until the battery is at its minimum)?

I will look at it .

OK... the alarms are a mess... :(
I am working on totally revamping the alarms and user interface.
Please be patient. I have made a lot of progress, I just need to test it a little.
Then I will upload the new code.

Just uploaded 6.2.
Please test the alarm functions and let me know if it works now.

Works like a charm - thanks so much.
Again congrats on this amazing project and thank you for all the effort you put in to share it.

Best wishes

Just uploaded 6.31 with EEPROM.

Hallo Phil
Ich hätte da 2 Fragen. Da ich im Programmieren bzw in der Software nicht so gut bewandert bin hab ich 2 Fragen.

  1. Was mache ich falsch beim Compilieren, wenn beim SenderPG, wie beim Mäher PG, ein Fehlermelung kommt. Wie z,B,:

include "adcman.h"........ oder

include "perimeter.h"............... so- beim Sender PG.

Zweitens : Wo stelle ich die für den Bildschirm festgestellte Adresse hin?

Bitte um eine klärende Antwort!
LG Georgio

Did you install the libraries from the GitHub site into the Arduino libraries file?

A few more test sketches would be handy for ensuring all the modules really works and is connected the right way to the Mega or Nano. Test results either displayed in the LCD or in serial monitor

1: Keypad. A have seen a few different connections for a 4-button keypad, so it is good to know you have the right sequence when starting the mower the first time.

2: Clock module. Then you can set the right time in the clock module and don't need to recompile/upload the mower sketch twice.

3: Compass: Display result in either LCD or serial monitor.

4: Volt and current monitor on the nano. Eventually send data to the Mega and displayed in LCD)

Just my two cents.

Clock Module time setting has been added in code V6.31

I'm working on the next software version. Most of this can be integrated into that release.

Version 6.1 has just been uploaded.
Some of the requested test features are integrated into the new code.

Is it by any chance possible to print this on an Anycubic i3 Mega which has a max volume of 21cm x 21cm x 20.5cm?

Check out the remixes by Greg and Peck.
They have split the parts to fit smaller printers.

Hi Rep_AL

I was wondering: when using your test-sketch for the boundary wire, do we need to keep any other component connected to the Mega, other than the amplifier and the LCD screen?

Initially the boundary wire was detected, but after the mower crashed into the perimeter station it stopped working... so now I want to cut down the number of components in the system to find what's wrong.


I'm just thinking....
I guess you need a 5v supply to the audio amplifier, whixch could be the Mega with a USB cable. Then the LCD to see the result.
Then of course you need the perimeter transmitter setup.
I think that's all...

Kurzes Update nachdem ich endlich dazu komme, die Teile die bereits seit Wochen hier rumliegen, zu testen :)

After reassembling the perimeter wire and receiver/receiving system (sound amplifier, a Mega and an LCD) with new components I did not manage to get the wire working. I found jorh63's comment and made the changes accordingly: "USE_PERI_FAULT 0 ; USE_PERI_CURRENT 0 ; USE_POT 0 ; USE_CHG_CURRENT 0 and then it worked. I also noticed whilst the non-functioning sketch was on the Uno I had a voltage across the loop of around 5V, after making the changes the voltage dropped to around .5V.

When I made the suggested changes I also remembered that when I first uploaded the sketch to the original Uno (the one that I thought broke during the crash) I went through the sketch and made those changes (and some other changes) anyways. I re-flashed the original board with the changed sketch and it worked again.

Phil, if you have time and are curious it may be worthwhile to download your Perimeter sketch from Github and flash your Perimeter Uno with that file to see if it still works afterwards. Maybe you have unconsciously made those changes (like me...).

Best wishes

I checked the sketch i use and the settings are not like you describe above.
In my sketch:



define USE_POT 1


I can understand why these features are not needed and can be set to 0, but for me it seems to make no difference....
but its good to know if there are issues to try these settings.

I will update the info on the website


Ce breakout board est un Double Pont-H destiné au contrôle de moteur continu POUR INVERSION 2A MAXI
Board Size: Approx. 51x46x26mm
Main Chip: LMD18200
Working Voltage: DC4.5-5.5V
Dc motor driving voltage up to 55 v, recommended 12-48 v (not less than 12 v), has power supply indicator.
The maximum output current is 3 A (instantaneous peak current 6 A), the maximum output power is 75 w.
Smooth speed regulation can be realized by PWM motor speed
with strong anti-interference capacity
With current protection
Can control a dc motor separately or electromagnet or single and double solenoid, etc
Can control motor run clock-wise or anti clock-wise.

Je connais pas trop le bts 7960 mais çà a déjà était fais si l'on en crois cette photo .
dans la dernier version du circuit moteur de Phil on utilise de l298 un par moteur et on couple les ponts .
ça reviens a peu prés au même q'un 7960 NON?
je voudrais resté en 12V a par si tu connais une solution pour avoir une batterie L LION a moins de 100 euro
Pour les roues je ne peut pas les fixée en direct sur l'arbre moteur les BR35 arbre de 6 mm plus les contraires ,les moteurs sont mort en une journée de test a mon avis . d'ou les moteur d’essuie glace .

je voudrai remplacer les 2 moteur RB35 par des moteurs d’essuie glace 12v pour mettre des roue plus grosse (image) car ma pelouse est très accidenté et elle abîme les moteurs aussi il commence a prendre du jeux .

un moteur d’essuie glace consomme 15A ,il faut que je remplace les L298N par des bts 7960b ou pas?

Si je passe sur des bts 7960 il vas falloir revoir le code je suppose !

jais déjà expérimenter les roues avec les RB35 en démultipliant la force moteur par des engrenages ça marche ,mai je perd en précision et la vitesse est réduite, mais le couple augmente !


Feature request: Bumper sensor.

I had a chance to take the mower out for the first time and as far as object avoidance the ultrasonic sensors do not always see a object and other times sensing tall grass. Several times the robot was running into things and getting stuck. I will be thinking about a solution but it's going to require some out of the box thinking. Maybe a force sensitive resistor or switches? I also came across this concept that might work if modified https://youtu.be/TDccXtiYlCs






Si la tondeuse dance c'est que ta valeur float P n'est pas bonne diminue ou augmente la !
Sur ma tondeuse j'ai remarqué que quand l'inductance était trop près du fil,la tondeuse dansée.
Après comme le dit Phil ta confirmation moteur n'est pas la même que la notre.
Les moteurs préconisé 30tr/min, fait peut-être un ratio sur tes pid est ton float.


float P = 9000.00;
float D = 10;


bonjour william
la tondeuse ne prend pas les virage?
avec un float a 9000 la tondeuse ne doit pas avancée.
pour moteur rb35 le float p entre 0.08 et 2
il faut aussi jouée avec le pwm moteur ligne 236 et 237 il est a 200 origine de mémoire le passé a 250
tu est de la Dordogne ?

Sorry but it seems like you are.using totally different motors and voltages.
Your motors at 85rpm are turning almost 3 times faster than the ones I used.
I have no experience with that setup. You will need to totally re-tune the PID to track the wire smoothly. Also i dont know how the mower softwate will perform at that RPM. The software also needs time to react.

I'm working on fusion 360, but I can't modify a step file, it's to hard for me.
It 's possible to have a .f3d files ? (native fusion 360 files).
Thank you

You can import step file in Fusion 360 via the "upload" button in the data panel (where the list of project is listed)

Mon jardin est de forme rectangulaire 'j'ai installé mon fils périmètrique en lui donnant une légère courbe dans les coins.
Quand la tondeuse retourne à la base en ligne droite aucun souci elle corrige sa trajectoire. Quand elle arrive dans un coin elle commence le virages puis perd le fil ! dans 90% des cas elle ne le retrouve pas.
J'ai redui le pwm tracking à 200 et joué avec la valeur P0. 08.
Faut il que je donne plus de courbe à mon fils dans les coins ?
Faut il que je paramètres les valeurs out et in de façon plus précise ?
Ou il y a t'il un autre partenaire

You need to increase the P value to maybe 1.5. If the mower starts to jiggle left and right and not move forward when tracking then reduce the P value. If the mower still tracks "softly" then increase the P value to maybe 2.0
Depending on your motors you used it needs to be tuned.
The PWM should always stay at the maximum of 255 when tracking so you get the sharpest turning possible.

Idea for better contact when charging.


Your design is just wondefull.
I use parts of your design to make a Lanw mower (Robot Tondeuse).
I have of course signed your project and given the link to Thingiverse.
Congratulations for this project. (Bravo pour ce projet.)

mois aussi je trouve les temps d'impression un peut long. Je me suis donc aussi dirigé vers la découpe cnc . j'utilise un chassie ardumower en mdf le temps des tests.
la version de cambam utilisée dans la vidéo et la version gratuite?
Partagera tu ton projet sur thingiverse?


La version gratuite de Cambam ne permet que 500 lignes, donc impossible à utiliser pour ce genre de projet.
Je vais très certainement partager les fichiers sur Thingiverse.

I also encounter a lot of problem on the perimeter wire, but I find a track to the problem, probably a problem of arduino or feeding.
when I touch the welding of the arduino (the legs under the card) I have a signal output and the mower detects it well. so if I leave the fingers on the solder it works.

Cannot get perimeter wire to work. Not sure if I have a bad component , strange qwerk or lack of understanding. I have ordered some new components hopefully I can solve the issue.

Are you using enough good quality perimeter cable to create the resistance required?
Did you bridge the required parts as per the diagrams?

@jorh63 Merci beaucoup de votre aide

I tried jorh63's code changes on the uno with no luck.
define USE_PERI_FAULT 0 define USE_PERI_CURRENT 0 define USE_POT 0define USE_CHG_CURRENT 0

I went from an arduino uno to a nano
IT WORKS! I changed nothing else! same wire, motor driver and wiring. something must be off with the Uno?

Dans ton code nano les valeurs sont elle toujours sur zéro ?
Tu utilisé un clone ou un uno officiel ?
Moi j'utilisé des clones.
Ravi d'avoir pu t'aider.

Yes all are on 0, I also used a clone uno and got no signal out of it.

Glad to hear it's working.

my first lawn mower have a solar panel. last summer with a lot of sun it was enough energy to charging the mower. it is depending of your garden. it is better with a charging station with a battery. the battery you can charging with solar or with 230v. then you have no risk with the sun.

Sorry for my English, it is translated with google, first congratulations for the work. My lawn mower is under construction, I thought about solar energy, is it possible? Enough to increase its autonomy of mowing

I have thought about some sort of solar option, but my solar knowledge is quite low. Maybe something for the future.


track wire fonctionne quand ligne droite le robot ne tourne pas! quand il arrive dans un virage il sort totalement de la zone de tonte et perd le fil.
j' ai augmentée P de 0.08 a 0.12 sans améliorations
j'ai reglee le in et out du fils sur les valeur lue sur le robot.
faut il jouée sur la vitesse des moteur?


ou acheté des cellules 18650 LIIon je trouve le prix un peut élevée même en chine la batterie revient dans les 100 euros .
j'ais trouvée cette batterie (image) pour 40 euro seul problème elle équipée d'une protection contre les sur tension elle ce mais en sécurité a l'enclenchement des lames

This batteru has (i think) max 5amps output.
Normally its ok, but it won't give the same performance as 18650 cells.

Great work you're doing. Hats off really :)

Some questions though. What would you say is the limiting factor to mow more m2? You're saying 800m2 is optimal? Quite a big battery pack you have.
Just a comparison Husqvarna 430X has 3000mAh 18V battery And they claim approx 3000m2 mow area. You have 12v 20Ah battery back I don't think that the voltage makes so much difference.
Your project is very tempting to follow but I have approx 4000m2 garden. So should I make 5 mowers or have you some other ideas to guys who have football fields to mow :) ? For example, what changes do I have to make to use 500 meters long fence wire?

The build budget seems very reasonable + the benefit to make changes (screw ups) in code. And watching my neighbors Husqvarna, it has some bugs too...

I say 800m² because honestly I've never tested in on a larger Garden. I think it would be wrong to promise something that I don't know...
I mow every other day for 2 hrs, and this is more enough for 500-800m². If you mowed every day I guess it could be more....

BTW. The Husqvarna 430X costs €3200 in Europe :) so that's quite a high end robomower with some quite high tech stuff in it.

Alternatively the battery can always be enlarged, but then you have the weight penalty (but that's not such a huge issue like with flying drones etc).

I have also never tried a 500m long wire fence.... If you want to mow 4000m² then it makes sense anyway to break up the 4000m² and make more than 1 zone with a separate wire fence per zone.

5 Mowers could be cool though... https://youtu.be/zwpwHs9P6gA :)


I saw the new feature wifi with a app.
i think it is better to create an acess point instead working as client.
the app is not the best solution, i think a browser based system is better for more devices.
in a few years the app will still working? perhaps.... i dont now.
the browser based system will work in the future and you must pay nothing.
that is only my idea..................

Very Cool wonder if this chassis could be adapted for a Garage vacuum for work shop

There's lots of room in the chassis for a cyclone :)
That would be a cool adaptation of the design...

do you mind if I play with it, also my 3d printer does 500x500x500 (CR-10S5) I was hoping you had some frame STLs that were already merged?
say maybe 450x450 to save some error space

some want the STL's smaller some larger :)
The CAD is on the GITHUB site. So feel free to play around with it. Just notes the license that the end files produced should be published for everyone.

understood, I didn't know if you chopped them up later and had larger originals stored. I'm blending them together they just seem to be off slightly when merging 4 large base plates. thanks for reply its an amazing project with so many applications great stepping stone

The app works good :) cost me $1.99 for all the features, well worth it.
I got the battery pack made this weekend with a homemade spot welder I used samsung 30q's 3s7p.
Very old camera sorry for the video quality. https://youtu.be/WC7LQUf2uDg

the manual control is kind of more "for fun" at the moment, but it will have its use.....
No I'm working on an on-board WiFi camera..!! I think this will be the final step in a reliable remote mowing system. I want to be able to see whats going on and if necessary take manual control to get the mower out of any possible trouble. Then reset back to automatic and ensure the mower makes it back to the dock.

I really want to be able to mow the lawn from anywhere in the world!! :)

I already have outdoor cameras so I have thought about this. Definitely a great idea

après un teste dans la pelouse je trouve que les moteur br35 manque de puissance !! ( se bloc )
j'utilise une batterie de 3000mAH pour le moment ( batterie 20 000 mAH pas encore reçu)
le manque de puissance et lié a l’ampérage ou a un reglage dans le code

Try adjusting the PWM settings of the motor to 255.
byte PWM_MaxSpeed_LH = 200; // Straight line speed LH Wheel (Looking from back of mower)
byte PWM_MaxSpeed_RH = 255; // Straight line speed RH Wheel - adjust to keep mower tracking straight.

Make both motors 255 and go from there.

If the battery is a 3000mAH LiPo it should be ok. If its 18650 you might not have enough Amps.

!!!!!!émetteurs en fonctionne!!!!!
après une longue recherche j'ai résolu mon problème de fil périmétrique
das le code sender station jais passé les lignes: 73. 76. 82. 87 sur 0
Je suis aussi passé d'un uno a un nano
Le problème avec vos instruction pour mois est que l'on a juste a téléverser le code dans l'arduino sans faire de reglage.

I am having the same issues as you had.Can you share the the exact changes you made to the code?


je suis passée dun arduino uno a un nano avec une resistance de puissance 12hom 10w sur le fil périmétrique (image)

dans le code sender passée de 1 a 0

define USE_PERI_FAULT 0 // use pinFault for driver fault detection? (set to '0' if not connected!)

define USE_PERI_CURRENT 0 // use pinFeedback for perimeter current measurements? (set to '0' if not connected!)

define USE_POT 0 // use potentiometer for current control? (set to '0' if not connected!)

define USE_CHG_CURRENT 0 // use charging current sensor for robot detection? (set to '0' if not connected!)

il faudra les remettre sur 1 quand la station de base sera faite a mon avis

dans le" code robot" contrôle
bool Perimeter_Wire_Enabled = 1; // Activates use of the perimeter boundary wire

Glad the perimeter sender is working. Im not sure what changes in the code you are talking about.
In the instructions i just say to upload the code.....

Thank you

Thanks for the comment but I'm not quite sure what you mean.

congratulations Greg great job

It would be great to hear from makers who have completed the perimeter wire transmitter and have it working. I'm getting nervous that my instructions are unclear on how to build it.
Would be great to have some feedback from working transmitters and if anything was not quite correct in my explanation.


my build is working. only i have used a resistor in the wire that the motor driver become not so hot

Mine is working on the workbench. Testsketch and 40m of wire.

Idea for a skilled Fusion designer (and owner of a small lawn): If the body parts are reduced to 80% of the original design all the parts can be printed on a 200mm*200mm printer.

Thank you for all the new information on the site it's extremely useful!
Here is a little update pic..I'm doing some bench testing. Still have much to do!

This make looks good. respect

Wow!! Great Work.

hello today I received the inductance I did the perimeter test and it does not work even for me and watching your video even to me it blinks RX but only TX if I start the serial monitor otherwise powered without a computer the led L lights and the on one lights up.

Hi Gaudy,
Perhaps you can send some pictures to the shop email address info@repalmakershop.com of your setup.




Le pontage du moteur est t' il obligatoire ?
Dans votre notice vous dite qu'il est possible de double la force du signal en pontant je suis d'accord;
J'ais fait le test ! résulta un forte odeur de brûlé est un claquement du pont en h.
J'avais un problème de dossier croquis a l'ouverture du code de la station.
J'ai changé le non du dossier plus de message d’erreurs.
j'ai fait teste ça a l'air de fonctionner un peut mieux ,le rx ne réagi toujours par contre .
je ferai un test quand la météo me le permettra.

merci pour la vidéo
le rx doit bien s'allumer alors!
Le problème viendrai du code si le rx ne s'allume pas.
quelle version de l'ide utilisée vous ?
Pourquoi votre fils périphérique est connecter en out 4 et 3 alors que la commande se fais en in1 et 2?
Sur le plans in 1et2 = out 1et2

The motor drive is bridged as in the instructions. So 1,2 are 4,3 as they are all connected together.
I don't think the IDE makes a difference as I have tried it using the windows Arduino APP and with the old windows Arduino installed IDE.

As I said you can order a perimeter wire, or I can look at your setup if you send it to me.

merci pour la proposition mais je vais encore essayée.
le tx ou le rx de l'arduino de le station clignotes ou pas sur la votre?
Sur la mienne les voyant L et ON allumer mais pas le rx ou le tx!

Bonjour Gaudy
Je n'ai pas contourner le régulateur. Le fil rouge encadré est le 12v du ventilateur.

Ma détection de fil périmètre ne fonctionne toujours pas.
J'ai remplacé le pont en h est l'arduino de la station et chamger le LM386.
Faut il doublée le ponts en h?
La je sais plus ou chercher très frustrant.

Hi Jorh63,
I really dont know what to suggest next...
If you like I can build you a working perimeter sender and detector.
Let me know via an email in the webshop and we can work out a price.



Hi Jorh63,
Alternatively you can send me the sender and transmitter as you have built it and I can try and find out why its not working...
Let me know per email what you would like to do.

hello jorh63 have you tried if the perimeter wire works? because from the photo you posted it looks like you bypassed the voltage regulation board.

Hello and congratulations for all the work you've done.
According to your experience up to how many square meters can this robot be used?
Is the perimeter cable a normal cable?
It would be great to add zoning as the S500 landroid does. Thank you

As I wrote on the website its good for 500-800m2 mowing every other day.

The perimeter cable is as on the website:

This is coated to protect against the weather.

Zoning - If your clever with the perimeter wire you can create zones now.

Thanks for the answers, but I didn't understand what you mean by.
Zoning - If your clever with the perimeter wire you can create zones now.

I have an L-shaped garden and it would be comfortable every other day to start the robot in different positions

Please read the website first and let me know if its not clear:

Read about Track Cycles and Z1 Z2 zones.

code arduino sur les quel je suis intervenu et celui de la station

J'ai fait un teste avec le câblage de in1=9 et in2=2 le résultat est le même.
J'ai inversé le câblage car il est déclaré comme ça dans le code.
Il ne reste plus qu'un composant qui peut être en cause le LM386. Ou quelque chose doit être activé dans les codes arduino.

with wich software do you make your 3d files (.step) ?

thank you

I thought I would share my build with you.
I think the design is excellent.
I am still trying to get my head around the control software.
I have a question regarding the nodemcu. What are the connections for the nodemcu to the arduino mega board?

Hi Dadiowe,
Thanks for sharing the photos. Looks great!! Could you post it as a make to Thingiverse.
I see you have made a few mods to the design, but mostly it looks just like the original :)
Congratulations. If you have some questions about the control software please send me an email through the shop.

The nodemcu part is not finished yet. Please hang tight and I will post the circuit diagram and everything ASAP. You don't need the NODEMCU to run the mower.


Des images du montage et des schéma.
Pour le code station j'utilise senber station v1 rien modifier. Juste ajouter la librairie.
Pour code robot modifié adresse écran et activer le fil.
Je peux vous envoyer le code mais je n'ai rien fait d'autre dessus.

difficult to see on the pictures.... are maybe PIN 9 and PIN 2 to the Motor driver switched the wrong way around.....?

At the moment:
Orange coloured wire is going from UNO PIN 9 and connected to IN1
Black coloured wire is going from UNO PIN 2 and connected to IN2

Check out the circuit diagram again. It should be that:
PIN 2 UNO --> IN1
PIN 9 UNO --> IN2


Inductance Fastron 11P-154K-50 sortie radiale Pas 5 mm 150000 µH 0.035 A
150000 µH=150mH si je ne me trompe pas.

Please send a photo of your setup and include the length of wire your using.
I think pictures will really help. If you follow the instructions on the website, use the right components, upload the right code and have the right length of wire there should be no problems.

Je l'ai commandé sur Conrad
Pour la référence j'ai mis une image dans le message précédent.

Cette inductance convient convient t'ell ?
Je n'arrive pas à avoir un signal correct en réglant les potentiomètre. (6v à la station)
J'ai ajouté une résistance de 12hom sur le fil pas de changement.
J'ai suivi las méthodes du wiki ardumower pour le réglage sans résultat.
Faut il supprimer le condensateur sur le LM386 ?

What kind of inductor are you using?
Where did you order it from?

Bonjour j' ai résolu le problème de rétro éclairage !!!
Le problème se située dans la librairie .
J'avais deux version pour liquide cristal je n'ai gardée que celle que vous donnez dans votre fichier .
Reste le problème du fil périmétrique.

Comments deleted.

L'écran fonctionne avec le tuto
Impossible de téléversée si l'adresse n'est pas (0x27, 16,2)
Le problème ne serait pas dans le code ou la librairie ?

adresse de l'écran est, 0x27 16 ,2
Pour pouvoir téléversée le code je dois supprimer 1,2,3,...positive)
La recherche d'adresse me donne 0x27 !
Le souci viendrai t'il de l'adresse de l'écran
La masse et le 5v sont correct

The i2C address would then be
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

It could be that your screen has a different address, i mean this part (2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); which is causing the back light to turn off.

This tutorial will let you define the pins so you can test the lcd screen


Le pont est en place

I would check the following:

  1. I2C address is correct
  2. 5V is present
  3. LCD is grounded correctly
  4. 1602 Screen being used? not another dimension

After that sorry but i don't have any ideas. I think its a hardware issue as the code works no problem with my 2 Mowers both with LCD screens with I2C adapters on them. Its always difficult when the hardware is bought somewhere else and I don't know if its the same as what I was using...

Je peut lire sur l'écran. Peut importe la position du potentiomètre le rétro éclairage ne s'active pas mais le contraste varie.

Is this jumper bridge installed on the LCD screen?
See pic

can you read the LCD screen? There's a potentiometer at the backpanel if I remember correctly,. You can adjust the contrast with that.

hello phil

For the problem of backlighting I made you a video.
For the robot mount and powered by a lipo and the charge sensor is not connected to the lipo.
The blade motor is not wired to the arduino
For the wedge device I use the right length of wire, but I have a doubt on the section (0.5), I have a low total resistance
bonjour phil

Pour le problème de rétro éclairage je vous aie fait une vidéo.
Pour le montent le robot et alimentée par une lipo et le capteur de charge n'est pas connecté a la lipo.
Le moteur de lame n'est pas câblé a l'arduino
Pour le cale périphérique j'utilise la bonne longueur de fil ,mais j'ais une doute sur la section (0.5), j'ais une résistance total faible

  • Please share the video maybe then i can understand the problem.
  • There is a jumper on the LCD screen which needs to be installed for the backlight to turn on... maybe this is the problem??
  • I didnt use a LiPo in my build due to the complexities of charging LiPos.
  • The perimeter wire does work. Adjust the voltage to 6V and maybe 8V to see if there is a difference.

sorry for the french english translation

help me


Hi Jorh63,
Im sorry but i dont really understand the problem. Are you talking about the LCD backlight?
If you are testing the perimeter wire you need to have a minimum length of 20-30m to generate the signal.

Maybe it helps to send a few photos or video of the problem...


Thanks for the quick response.

with the perimeter wire?

Yes it gets hot, hence the 30mm fan in the enclosure.

Hello, is it normal that the (H bridge motor driver) gets so hot?


Hi William,
Thanks for the interest in the project. Hypothetically speaking, I think it would be possible to have a relay switch with various perimeter loops. Depending on how the relay is switched the different loops would be turned on or off. The mower would then follow and remain in the active loop.
Obviously this is not implemented in the code now, but it would be a cool project to try.


Hi Guys,
It would be great to see some pictures of your builds or even makes.
If there are any requests for new features please let me know and I will try and work on them.
I'm still trying to improve many details including the home track feature which is still not working as well as I would liken it to.


I AM in the proces of printning the parts. And testing eletronics.
Right now i AM trying the perimeter swich. I upload the gode to arduino
But not working. I can see that the code is from another projekt.

Shall i modifi the code?? I am super at mekanics. But noob at programing
Pls help

No need to modify anything in the code. Yes it's from the Ardumower project as I credit in the instructions.

Just follow the wiring plan.
You need to have a good length of perimeter wire attached (min 20m) for the signal to be produced.
Without the wire there is not enough resistance.

ok thx :-) i have put a 12 ohm resistor i serie with the wire to compisate for short wire while i am testing

great design :-) but i can see that you have not include a rain sensor i live in denmark and we a lot of rain over the year.
so it will be nice that it can go home to garage when rain is detected wait 2 hours and try agan :-)

There have been many requests for this... Im working on it now....
I'm just testing the design and code on my test mower...
Hope to be finished soon.

Heres the latest - check out the website for more info.
Code will be released in the next update

Made a remix from this, where I will upload the changed parts for the 200mm bedsize, hope it's ok for you.

1 Like already given from me! :)
Great that a 200mm version is on the way!

I didn't have any round aluminum stock so i modified the wheels and blade to use off the shelf products. Also made the tread less aggressive.

Question how reliable is the perimeter sensing? any chance of runaways? Would you trust it to work next to a public road..

The perimeter wire is a good solution. Is it perfect.... no idea.... The mower has a function should the wire turn off or be damaged to recognise this and stop.
The only runaway method i found is if the perimeter wire is in too close proximity to another part of the perimeter wire i.e.

  1. The mower crosses the wire,
  2. then reverses
  3. but reverses over the second wire which is layed too close to the first wire.
  4. The mower then reverses again and somehow gets behind the other wire but facing forwards.
  5. now it reverses again sending it further behind the second wire.
  6. Now the mower is basically lost and doesn't know how to get back.

For this situation there is a function in the software that if 3 reverses are counted that it stops the mower and puts the mower in a search mode using the sonar array to help find it's way back.

You would need to test it, observe how your wire situation is and make a judgement yourself...

Hope this is understandable and helps.

Of course this is the 0.1% crazy situation that the software has to handle....
Which is quite amusing as I was watching the tesla tech days and saw the presentation about the self driving vehicles and how they are trying to iron out all the crazy situations that they have to deal with. Of course this mower is super mega low tech compared to that, but the process seemed quite similar of testing out every mad situation and updating the software to compensate.

Thanks for the reply makes perfect sense. The only time I imagine this situation is in my front lawn where there will be 90° corners in the wire. When completed I will be running in the back lawn where its fenced in so i can observe it.

Looks Good!!!

Where can I find the GITHUB page with cad files? Would like to change some features.

All information is on my website
Link to the GITHUB site is also there. Look for the Mower step files.


Thank you for all the work you put into this project! I am new to 3d printing and this is a fun project to learn on.It's much appreciated.

I have cut all the parts to fit on my ender 3 now i'm waiting on hardware and electronics to come overseas.I might try to integrate the esp8266 into my smartthings platform.

Here are some of the parts mocked up for test fit.

It would be great if you could share the STL files. Then a seperate build for 220mm beds could be started.

I would be happy to share but i have basically no cad experience and the dovetail parts required some sanding and a large mallet to fit. I am hoping someone chimes in with a more elegant solution haha

Hi, great project!

Can you upload a autocad/autodesk files in order to make some changes?


CAD files are already on the GITHUB site.

How is the cutting performance of this mower? I have a lot of slopes in the yard, not sure if climbing in a straight line is possible now or if more testing needs to be done? Thanks.

Check out the videos on the website. The compass hold functions works really well.
I'm testing some new more powerful wheel motors which should help with gardens with steeper grading.

Hope to have some video of the performance soon.


Check out the video of the new mower motors.


Wo sollte eigentlich der Kompass angebracht werden, und in welche Himmelsrichtung sollte er denn ausgerichtet werden?
LG Georgio

Anbei ein Foto mit der Ausrichtung
Position ist relativ egal, aber es sollte nicht zu nah an ein Motor sein.

Hallo Phil
Na da bin ich ja nicht alleine mit dem Bau dieses Mähers.
Mechanisch hab ich alles bekommen auch die elektronischen Teile sind fast alle da nur die richtigen Motore fehlen noch. Aber ich hab eine andere Herausforderung.
Der Spannungsregler DC- DC- Xl6009F1 will nicht so wie er soll. Er lässt sich nur auf den Eingangswert, also der Batterie Spannung herunterdrehen. Also in meinem Fall auf 11,7 Volt am Ausgang. Gibt es da einen Trick wie ich ihn noch weiter also auf die gewünschten 5 Volt herunter bekomme?
LG Georgio
Ps - Noch was; warum wird der Text den ich hier eingebe immer verändert wiedergegeben?

Das mit dem Spannungsregler ist wirklich komisch.
Man muss sehr, sehr viel an die kleine Schraube drehen. Irgendwann ändert sich die Spannung.
Ich glaube (?) man muss gegen den Uhrzeigersinn drehen (viel). Als ob man eine 10mm schraube fest ziehen will....

Hoffe es klappt..

Danke für die rasche Antwort, nein leider kann er nicht weiter herunter eingestellt werden, hinauf gehts bis 36 Volt, aber unter den Wert der Batteriespannung leider nicht.. Aber bis Mittwoch bekomme ich neue und dann gehts weiter.
Soweit alles OK! Danke für die Antwort.
LG Georgio
Anbei noch zwei Bilder und eine Idee- ich habe die Hinter obere "Instrumententafel" mit zwei Alu Winkelleisten verstärkt, damit sie sich beim Bedienen der Tasten nicht durchbiegt. Und ein weiteres Bild , wie ich die Verdrahtung in Kabelschächte verlege!

Still in printing phase, a few small issues I've faced:

  • RTC and motor driver holes don't match for the boards (at least off by 2mm), so I don't think it's a printer error. Still usable, just a little bit annoying.
  • a few mounting holes at the backpanel are unused(?)
  • I've printed the new front wheels and casters, but I've 3 small issues:
    1. you've suggested the bearings for 5mm shafts, which fit nicely, but the cutout in the print is probably for 6mm.
    2. the mounting screw head is too close to the wheel (blocking it actually :)), will have to use some really thin headed screw.
    3. the rounded edge at the sides of the caster can block the wheel

btw, I'm printing on a 200x200mm bed :)
so far good, had to split the back panel into two parts (and will other bigger parts as well),
I've cut down a little from the wheel arches to be able to fit to the smaller bed, and to save some printing time (see pictures)
Also, the baseplate is laser cut from polycarbonate.

Wow I too would love to have the files for a smaller printer. I have an ender 3 and I was looking to split the bigger parts so I could print it on my printer. If you're willing to share your files however that would save me (and probably many others) some work!

Will definitely share, but right now, only have the backpanel split.

thanks for the feedback.

The back plate needs updating. Originally more of the Arduino components were positioned on the back plate.
There is an adapter plate for the motor driver which lines up with the holes on the plate. RTC I will check.

Front Casters - As it says in the instructions, a flat headed M5 bolt is required... also as described, I used casters from the DIY store which ran freely in the caster with no blockage.

I would be interested to get the 200mm print files. I think that would open up the project to a lot more people.


thanks for getting us updated :)

back panel: not a real problem, I'm actually trying to use some unused slots. Yes, I'm using the adapter plate, but it's still off ~2mm.
Again, not a big deal.

Front casters: you are right, I've only tried with a socket head screw. I remember you've used some DIY store stuff, but as you've uploaded an stl for caster/wheels, I think it just needs a little tweaking to work with together. (also the summary doesn't contain the older comments and updates anymore, so the newcomers won't notice it :) )

How to print the main Covers

Thank you for this great projet, I look forward to put this together. I am still at the printing phase with my CR-10s and I am left with the covers to print. I was wondering which orientation you print both cover (RH and LH) and if you are using supports. I just downloaded the latest version of your files and saw the modifications in the ribs structure on those covers, I think this is a great improvement.

Also I had a problem with solidity of the main rear cover, as my print cracked along the print lines just underneath the opening when I tried to remove it from the bed. Maybe some ribs on that section could improved the rigidity? Or maybe the walls should be thicker?

Glad you are enjoying the project. The main covers are printed with 0.2mm layer height 50% Infill and 85% overhang support. You can see exactly the orientation in this video


Basically the split down the middle is used as the printing side. There's also a picture in the Thingiverse gallery of how it's printed.

With the rear cover I really didn't have any issues and I've printed that part nearly 7 times now.
I used again a 0.2mm layer height and positioned it flat on the bed. Again I used an 85% overhang support.


Hello, I want to know how you fixed the front wheels on the frame of the mower. I have already printed the wheels and the supports as well as bought the bearings. You have done a great design job for the mower and thank you for sharing all your work.

I updated the website with some instructions

Its fairly simple. Once the bearings are pressed into the caster, an M5 Flat head bolt used to fix it to the frame. A spacer washer is required between the bearing and the mower frame to allow the bearing to turn.

the wheel is attached to the caster in the same way.

Let me know if anything is not clear.

Hi, where do you Buy a front wheels bearings. Thanks.

The front bearings are

16x5 M5 bearings



You need 4 for the casters and 4 for the wheels. In total 8

ciao, non sono molto esperto di Arduino e sto provando lo schizzo mega_v5.2 ma mi da questo errore.

ciao penso di averle installate tutte adesso riguardo grazie.

Please make sure you installed all the libraries in the arduino library folder.
The libraries I used are available on the GITHUB site

Comments deleted.

I added a Compass Heading Hold feature to the new BETA Code. Keeps the mower travelling in a straight line.
Check out the result here


It would be great to have feedback on the mode. My garden is relatively flat so its difficult to test to the limits.

I like it very much, I'm going to buy your hardware kit.
I'm wondering if you could made avaliable the STEP files, it will be nice if I could personalize your great mower!
I'm I asking to much?
Thank a lot.

I sent you a PM.


It seems that I see on your site that you have integrated "Nodemcu" for wifi, which feature do you intend to implement? control with smartphone?

You spotted that already.....watch this space for more info.... :)

Love it - thank you for sharing this. I think I am going to try and convince my wife this is a good idea for a project.
I have a 300x300 HEVO printer and I was able to slice all the parts so I should be able to print them myself.

I have a couple of questions if I may?

I have quite a large garden - can I run several loops of wire to make the boundaries?

Can the charging station be "outside" the wire loop? I am thinking about making it go back to our garage as there is power there - but it would need to cross the wire and then navigate somehow to the charging point?

Hi lord_alan,
Good luck with the convincing work :)

  1. several loops could be tricky. I guess you could make more than one sender station and then make various loops, or you could start different loops from the same sender station...... Not sure how the mower would go from one loop to the next.....

  2. The charging station really needs to be on the wire. The mower uses the wire as a guide to navigate back to the charging station. Could the wire not go into the garage. If the wire led into the garage and around the charging station then back out again at a distance from the first wire. I will attach a picture to show you what i mean.... You would need to modify the code a little.

I have seen projects using IR beacons to navigate... that could be an option.... but you would need to code it yourself

I ran an extension cord into the garden and using a waterproof junction box.. could also be an option.

Good luck!

that's a fantastic project, I am working on it now and hopefully I can get it done by the time all the snow on my lawn melt.
1 question though, my d-bot has a build volume of 300300300 (maybe I can squeeze a little to make it 310310310) am I be able to get all parts printed? Thanks.

I checked in CURA. It easily fits.....!!

Keegan, l
Let me check. The 2 top cover panels height will be the critical issue.
Otherwise all the other parts should fit in 300x300mm
(I guess you can just download the STL files and try to position them in CURA or whatever slicer you use....)

Thank you both for your help,

In reply to ReP_AL
I confirm that the turning is caused by the power to the motors.

In reply to Lutz99999
my motors have sensors "Hall effect" but I do not use them for the moment because I use the Arduino code of ReP_AL and it does not use them. But, indeed, a PID control would surely be ideal.

While waiting for the improvement of your code, I will try my side with the idea of ​​the compass and the PWM

i solved the problem on my first mower with motor control PID.
the motors have encoder and the mower adjust automatic the wheel speed.
when the mower comes to a hill the PID control gives the motors more current and he lost no speed.
perhaps it is the solution for you.
the PID control works very good. you give a speed value and the pid control calculate the current.
I'm printing the last parts and then i will testing the software and change for myself.
i will upload the changing code here.

Hello Lutz99999, thanks for your reply

On the flat, no problem, the lawn mower goes straight. The problem is not here.

PWM_MaxSpeed_LH = 250;
PWM_MaxSpeed_RH = 255;

I used these parameters to adjust the speed of the mower, but nothing to do with these parameters, the problem is the slope that deviates the trajectory, which seems logical in itself. And once downstairs, she struggles to climb because she turns around.

That's why I think at the beginning you'd have to use the compass to try to keep the direction, a little bit the same way when he's out of battery and he's trying to get into the boundary wire

The ideal would be a gyroscope module, but the implementation seems very obscure.

The problem seems known and described on the Ardumower.de website


it's a shame because the mower can hardly work in this way

Someone would happen to make this improvement?

Hi Canelletoon,
Thanks for the feedback. My garden is realtivley flat so i didnt experience this problem.
Do you think the turning is caused by the power to the motors or the wheels slipping on one side? If it's a slipping issue maybe the new spiked wheels could help.

It should be possible to use the compass as a reference for direction. On each loop cycle the compass heading is recorded. If you could register the compass heading at a certain point (maybe after a wire turn = HEADING_initial ) then reference it to the heading at the next loop cycle (HEADING_Now) , the PWM of the wheels could be adjusted to keep the mower going in the original compass heading / therefore straight.

Something like... (not real code just a quick idea)

First record the compass headings

Compass_Steering() {
If ( (Heading_Now < Heading_Initial) ) {

 PWM_Adjustment = (Heading_initial - Heading_now )     // to get a magnitude of the Error
 //also need to deal with the 360 degree system
 //slow left wheel to turn left
 PWM_left = 255 - PWM_Adjustment;
 PWM_right = 255


Problem is only if the PWM is too low on one side the mower might not have the power to climb the hill. So there would be some minimum PWM value limit before the mower can't climb anymore.
As I have no slope to test on I'm not sure I can help directly.

I do plan to implement a compass mow mode which keeps the mower in a straight line. Maybe this function will also help with your hill issue.


Phil, I tried to use a Magnetometer (Compass) with mixed results. After placing a Farady shield on the cutter motor and raising the Mag higher away from the cables. I had a problem with buried metal/ mineralised ground, I had to place corrections in the code to over come this, the other option would be dig the lawn up..:-). Also I have a metal shed that caused problems, I did though get the mower to cut parallel cuts.

I do not now use a wire as I have three small lawns which would make installation a bit tricky so I am going for full autonomy and getting there slowly. I have dropped the Mag and gone for four infra-red, two Ultrasonic with a rotating Lidar to be added this week...fingers crossed.

Thanks for an absolute gem of a project...

Sounds like a high tech solution :) congratulations on getting the parallel cut. Perhaps you can share the code....?
I would love to see pictures of the mower and how it looks now!

Hi Phil,
Well Hi Tech;-(, it will be for me, if I get this Lidar working, not the expensive Lidar but adequate. The parallel cut is on my small oblong lawn ,but will not work on my other two lawns due to their shape. As all my lawns have a cut edge with a soil boarder the IR sensors detect the reflected difference of the soil n grass (In most cases), parts of all three lawns though have sections with bushes and some with stones/rockery bordering the lawns. One lawn has quite a depth difference between the lawn and soil has is the gap around a garden Urn.

One Ultrasonic points at 45 deg to the lawn to back up the IR lawn edge detection and sees any depth difference. The other Ultrasonic looks ahead for any objects, Shed, walls and humans.I want to back this up with a Lidar to stop running into the bushes, missed edge detection so both should compliment each other.

The Mag and Compass code attached with Drive corrections.I use a Uno for most work and the Nano for the Mag.

All still in prototype and now going back to random cut to get the Lidar working

Action of sketch.... do E W/W E cuts in strips then proceed to do random cuts for missed bits..As you will see my programming skills are nowhere near perfect as I have only recently worked on the Arduino and now finding it hard to take it all in at 73, but it does keep the grey matter smoking...the bright ones amongst you please pick the bones out of it and show me my errors and where it should be improved...:-)

The lidar will replace the Mag on the Nano....hopefully.

I to had drift on the motors and used a lower PWM on one, though as mentioned, if too low you loose torque for hills or in my case, getting out of the boarder...:-)

Thanks. I will look at the code in detail and see what i can implement.
See the post above from lord-alan, maybe there is a way to also use the boundary wire if you make separate loops.

This is the test bed for my mower included is the Sketch for random cutting which I will resort to for testing it with Lidar. It is wrongly labeled.
The H bridge module is the cutter motor module with speed control. The H bridge sits under the Uno, this drives the two gearboxed motors.

There is a small variable 2amp 12v to 5v module for the Uno,Nano, IR sensors and anything else with 5v requirements.

The new body will be around an A4 size with a slightly larger cutting blade (extra blade segment on each) at the front of the chassis and as yours I will go for two castor wheels.

I admire the quality of your build, it is on par with any commercial unit, exceptional.

Unfortunately I have a terminal lung problem so soldering is a no no, except for the bare minimum, I use if at all possible commercial modules.

I have found it difficult moving over from my Picaxe Basic days, but it was a necessity to cut down on soldering.now I wish I had move over to the Arduino sooner.

Hi Wudzy,
Sorry to hear about the lungs. Maybe you can get someone to help with the soldering.
Thanks for sharing the pictures and code. Looks like your mower has seen a lot of cutting action lately. Is it not winter where you are? Here in Germany its cold and the grass is not really interested in growing.... :)

It was out yesterday having a munch at the lawn, as we have had it quite mild in NW England for a week, 17c today, same tomorrow then slowly back too the usual 9c.
I could put a wire fence around each lawn,not easy, though being stubborn I want to see it it is possible without.

At the moment it is around 85% perfect or 15% imperfect..:-) But to watch it munching away without barely any intervention is quite rewarding, more so as the lawns are far from perfect in smoothness, shape or size. There are quite a few tight spots where it shunts and shuffles around to get out.

The compass would work great on a larger lawn, no need to calibrate as the raw figures used are arbitrary as you will see on mine for the E/W-W/E cut headings. If the corrections sections are left out and you have no metal/ mineralization under your lawn I would go with it if drift is not an issue. That is the only thing wrong with one dimension, if drifting occurs you would still be on the correct heading from your new drifted position..:-(

I have written some new code for the straight line mowing.
Check out the results here:


This is on my relatively flat garden. I would need some testers with sloped gardens to see the results.
any volunteers....? Code is uploaded to my GITHUB site as MOWER5.2. This is a Beta version and hasn't had much testing so please take care with blades spinning etc....

Did you test your mower on a flat way.
if the mower does not run straight you can adjust the speed in the code:

PWM_MaxSpeed_LH = 250;
PWM_MaxSpeed_RH = 255;


This weekend, I did some tests in my garden, some parts of the garden are a bit sloping and the mower does not follow its course in a straight line.
As it advances, it turns in one direction or the other following the slope. So, the operation is not correct, it does a little anything.

Do you think it would be possible to use the compass to correct and stay the course once the lawn mower has chosen its direction? Would you be able to look into the Arduino code because I do not have enough knowledge to solve this problem ?

Thanks in advance

Good idea with the new wheels. it is possible that you install a chat on your new website?
many user can ask and answer problems.

Hello, excuse my english. First of all, you did a very, very good job. I'm proud of you. Would you accept to share your design files with me. I would like to modify some pieces to adapt it to my motors. Thank you very much.

The picture of the fescue feces on the underside proves it works as intended.

Nice job! Thanks for sharing! I've been thinking of designing the same sort of thing, yet I see lots of other folks have done a tremendous job with this fun idea. I was thinking of using 2 cutting heads similar in diameter to a string feed whacker, but with flexible 3d printable nylon blades instead of string. Your design is way more refined & optimized than my concept. Your custom software & guidance system is also very impressive. Thanks for the inspiration to learn more Arduino skills.

Ah ok, :-)

In the photos I think to see 18650 battery 3S6P, what is the total capacity of it? 15 Ah? What is the autonomy of the mower with a full charge (3-4 hours you say) ?

I'm using the Panasonic 18650B 3400mAh batteries. As you noticed 6 3S packs = 20.4Ah
The mower can run at least 3hours. I have a relatively flat garden so I guess the total mow time will be affected by this.
I'm trying to get all the information on my new site https://repalmakershop.com

These questions are great as it let's me.know what information is missing.

what does the mower do in mode "trampoline cut" ?

Hello Canelletoon,
Lol, good question. Basically I have a trampoline in the garden for the kids (you can see it in the photos). The perimeter wire goes around the trampoline which means the grass doesn't get mowed. Trampoline cut is like a special cut feature. The mower drives under the trampoline with no perimeter wire detection turned on and makes like a star pattern to mow the grass.
Its just a special cut mode I made as I hate moving the trampoline to cut the grass !!


thank you for this great job and share it with us.

could you please tell me what screws did you use?

I still have a lot of pieces to print.

Thanks for your help

Hi ReP_AL,

Thank you for your reply.

Best regards

Hi Karimouhayer,
The mower is mainly held together with M3 screws of various lengths (10mm up to 50mm). I used the M3 security nuts (with rubber insert). Order a lot of them from Ebay or something as otherwise they are expensive and hard to find in hardware stores.

Mariosab (comment and build below) counted 50 bolts and nuts so far....

There are a couple of M4 screws used, honestly i cant remember where i used them now....

Would be great to see some pictures and a make posted.
Good Luck!

Hi ReP_AL,

Thank you for your reply.

Best regards


congrats on your impressive design and thanks for sharing your work.

I was wondering if it was possible to operate the mower on a fixed schedule ( for example every monday 3:00pm), rather then manually pressing the "start key" each time ?

Best wishes

Hi Nik,
Yes there is an option in the code to program a calendar of start times.
Means you can program a daily start time, or on specific days and times.

Is that function referred to as "Alarm_1" and "Alarm_2" in the code?
(Sry for my stupid questions, i'm just getting started with arduino)
Thanks in advance

Hi, thanks for to share tremendous job!

I would like to ask you about the dimentions of the rear wheel (traction wheels).

Greetings and have a nice day.

The rear wheels are 200mm in diameter. The part number for the rear wheels can be found in the PDF document.
I found these wheels on eBay.

Please post any pics if you decide to make! :)

Thanks very much for to solve my stupid question. You are rigth. The wheels dimentions are in the PDF file! I am sorry!

Just now I am printing the chasis and the wheels. My wheels are ready and I will print now the wheels wards.

My motor reductors has the shaft just un the center (yours has the shaft with some displacement from the center).
Because you was modified the design in order to have higher ground clearance, may be this detail it is important.

Do you recomend some displacement of the motor support in the guards for my reductors?

Thank you very much for your comments and for to share your big job!

Kind Regards.

I must to explain a litte more..

I am trying to not use the motor bracket. I wish to attach the motror directly to the Wheel guard....


The idea behind the motor bracket is to allow space between the motor and the wheel for a coupler.. The motor has a shaft diameter of 6-7mm and the wheel shaft diameter is 20mm which requires a coupler to join the two together. If you can join the weel directly to the motor then i guess you dont need the motor bracket. The other thing to consider is the 20mm bearing in the wheel housing, which removes some of the load from the motor shaft.
Please post pictures of your make.

Hallo Philip!
I have already printed most of the mower parts and assembled them. (50 screws and 50 nuts at the moment!).

I used two printers. An original Prusa I3 Mk3 and a Prusa I3 Mk2 clone.
The material is PETG for all the pieces, with a infill of 20% and 0.3 mm of layer.
I also printed the four wheels (ArduMower style for the traction).

As it was related in the previous messages, the motor reductors are mounted directly on the wheels wards. I am preparing two supports to adequately hold the motors (adapted from your design).

I am thinking about using a car radiator fan motor for the cutter, because I can not find a better solution so far.

My intention is to start with a simplified Arduino control and later add improvements. For that reason I dare to ask your opinion if it is possible to separate the circuit to simplify it in a first stage. It seems to me that having perimeter control and avoiding obstacles would be enough for the first stage.

I have experience with Arduino and have built several projects so far.
Thank you very much for sharing tremendous work. I appreciate it! I think that a person takes the real dimension of your generosity when all the parts are printed and assembled together.

Kind regards

Thanks and thanks
(Later I will upload my make in the Thinkiverse section)

Hello Mariosab,
Thanks for the kind words and the posted pictures. Great to see the mower coming together!!! :)
I noticed you will need to drill the 5mm holes into the base plate to mount the front wheel casters.

Please let me know if you see any improvement possibilities in the design. I want to make sure that the parts I posted print and fit together well. I would also be interested to see how the wheel design you made works.

In the code I wrote you can turn on and off the various features. At the moment the wire detection and obstacle detection are on, but 1 or the other can be switched off.


nice job,
does your lawnmower only make random passes or do you go back and forth? No need for motors with "hall effect" sensors? because on the site ardumower, they sell engines with, if I understand well.

Do you have a link for Github.


Comments deleted.

At the moment the mower just mows randomly. There is a compass on-board which I use to send the mower in the right direction when it returns to the charger. I.e. that it doesn't need to track (In worse case) around the whole perimeter wire.
I plan to use this compass more to track the mower in lines when mowing. I'm not sure if the hall effect sensors are really needed for this.
I think with counting loop cycles and the compass it must be possible.

It can be print on workbench 220x220?

I don't think so. At least some parts are bigger, probably sliced for 300mm beds.

Hi StoQ,
I dont think the parts will fit onto a 220x220 bed. I designed it to be printed on my TRONXY 5S which has a bed of 330x330.
As Peck says, maybe a 300mm bed would work. See my COREXY design if you want to build something:

The floors are 255x200mm and 200x200mm and the wheel arches are 230x170mm.
The top covers need area and height. (See pic)

ReP_AL Core XY 3D Printer
by ReP_AL

Hi ReP_AL,

First thing i do is the perimeter thing. i wired everything as the manual. But the output voltage from the LM2956 is input 12v and output 11,33v. If a turn on the srew...it don't change, the L298 don't start to buzz. can you help me out please ?

Hi Maertens,
Can you post a picture of the setup. Is the perimeter wire connected? How long is the wire that is connected?
You need to have the wire connected for it to work (at least 20m or so)

When changing the output voltage you sometimes have to turn the screw quite a lot. Like at first nothing happens and then everything happens in the last 2 turns.

Also don't forget to ground the motor driver to the Arduino. I also missed this a few times.

A picture would really help.

Hi Rep_AL,

It worked to set the voltage to 6volt (screwing counter clockwise), but the L298 doesn't start to buzz. Is that a problem?

Hi Maerten's,
Did you manage to regulate the output voltage then? Have you uploaded the sketch to the UNO?
The L298 buzzes on mine..... not sure... did you connect the longer perimeter cable?

Hi Rep_AL,

Tomorrow i will try it with a longer perimeter wire. now is the cable 1m i think. I turn a lot on the screw but nothing changes. see the picture

Thanks for the picture. Its not so easy to see what is going on, but in general the setup looks right. Again the LM2956 voltage regulator should work.... thats a buy in part, so i can't really help if the voltage is not changing. Just try and turn the screw in both directions until something happens.... :) I also remember thinking that nothing is happening but then suddenly it reached a certain point and the voltage changed. With 12V input the perimeter wire should work, but the motor L298 bridge will get very hot.

also see this link for the original instructions http://wiki.ardumower.de/images/9/94/Perimeter1.png . They should match mine with the only difference being that they use the motor bridge to power the arduino.

You really need the longer cable to give the resistance required. Maybe thats the major thing.

Hope you get it working!

Hi micgeorges,
Glad to hear that the printing has started. :) I use the mower everyday and the grass is looking great! (see picture #3).
Would be great to see some pictures of your build.
I cant seem to find the exact USB connector I used online. Basically its a USB TypeA--> USB TypeA plug, where the USB cable from the Arduino can be plugged into the back of it. It also had a protective cap. I have attached a picture but its not the one I used.
As you have the CAD you should be able to modify the hole in the back of the Mower to fit a similair type of connector.

This was the one:
I remebered now that its actually from the ARDUMOWER project page :)

But as said. You can easily change the hole size to fit anything similair....

I have open your project with inventor at work. Once again thank for the very good work.
Could you send the references of the USB connector that's used. (thank)
It may help if you add the step files for the "Higher Ground Clearance Mod" (thank) (even if I'm not concerned)
I have begin to print the bottom of the Mower... :-)

I keep flowing ant printing It :-)

Really great project, great, simple design, really like it.
Few thoughts/suggestions :)

  • maybe it could be easier to print the whole mower, if there was an option to not to print the entire baseplate. Instead cut it from acrylic sheet/wood, whatever.
  • do you plan any cover for the LCD/buttons? it would be a nice weatherproofing addition
  • a BOM list, actually I've started something, I can share it if you like it
  • a little more description about the firmware, how it works, what logic it follows would be nice
  • at least a list of problems/issues you encountered

I'm just saying these, because I'm really considering starting to build one :)

"I will try and post the files although im not sure how other than stl from Fusion360."
That would be great! If you open the design, in the File menu, there's an Export option

Hello Peck,
Glad you like the design. Would be great to see any build pictures of your project.

  1. Of course I see your logic in machining the base of the Mower to save time and materials but for now I wanted to keep this as a 3D printed design.
  2. I had thought about a cover, but I didn't plan to run the mower in the rain so I didn't bother. Maybe I will add a rain sensor so the mower goes back to the charging station in case of rain.
  3. The arduino code has lots of annotations and descriptions on each line. I would like to think it explains itself.
  4. Main open points with the code are:
    a) Better start up sequence and immediate detection of the wire at the start of the mow sequence.
    b) WIFI capability to use via smartphone
    c) RTC is not very reliable (probably need to swap out the hardware for a different model)
    d) Optimisation of the global and local variables to save space on the MEGA.
    e) Sharp corners are difficult to negotiate when tracking the wire to the start position and docking station.
    f ) optimise the current detection (to power down the mower) when tracking to the docking station.
    g) add compass mowing feature to keep the mower tracking straight and turns 180° to mow in the opposite direction.

Not all the things above are necessary but would be an improvement on the current code (which is quite stable as is...).

I have uploaded a step file of the mower :)

Hi there,

Verry nice project. I'll print it asap. I have just the good printer to do it :-)
Could you add a picture of the front wheels. I'm not sure to understand the way you fixe it.
Is it possible to have the sources files of the cover. (near the display) I want to add a handle.
Thank for all the work.

Hi micgeorges,
I have added some pictures of the front wheels including sizes. From plate to wheel tip is 50mm. Wheel diameter is 35-36mm. I tried a few different sized wheels but found these to be the best height. (Although they are probably not the best design for outdoor grass wheels with the open bearings....). This size tips the mower slightly from front to back, but it gives a good ground clearance so the mower doesnt get grounded. If possible I would also go for a larger diameter rear wheel (220 or even 230mm). I think this gives a good balance between ground clearance and grass cutting height.

The mower is quite heavy with all the motors and battery. Im not sure if the top cover will be strong enough in its current design. I normally just pcik it up by the wheel arches which are very strong. I will try and post the files although im not sure how other than stl from Fusion360.

Please post pictures of your build :)

Thank for your fast answer and your pictures.
I will try to add the handle like the picture.
To hold the handle. may be it's possible to tied it up with 2 towers from the floor.
I will try to do so.

Good luck with the project!!

Are you sure that your Sender_Station_V1 code is for the simple "Perimeter Wire Transmitter" (Simple I mean only arduino and L298.)
You are missing following libraries: RunningMedian and TimerOne in the collection of libraries.

I added a new zip file with the 2 libraries for the perimeter wire sender station.

Hi oz9ny,
Im fairly sure its the correct code. As i wrote, the perimeter wire code coems from the Ardumower project, so if in doubt you can always visit the ardumower website. I will add the missing libraries to the zip file. Give me a day or so to do it.
If you are building the design it would be great to see some pictures :)

Hey again, I've made some progress and some changes to the design to make it fit my motors.
I've tested the arduino code, and it wont compile because of the RTC functions doesn't work, thus the library is installed:/

// Have you made a charging station / dock for this mower project?

Also I think that the wheel arch supports for the cover (the long slender parts) may be the wrong way around in your picture. They should fit flush to the wheel arch contour. Good luck with the build!!

There should be an RTC library for the specified clock I used. When i get time I will try and post the links to the libraries used in the description. 30.08.2018 - I added a zip file of the Arduino libraries used

Yes i built a charging station. On the front of the mower are 2 holes where a 5 cent euro piece can be placed and connected to the battery (+ve -ve). As the mower docks the charge pins (5cents pieces) align with banana plugs on springs. This gives a good contact to a 12.6V charger. At the moment I want to modify the charging station as it was originally built for another design. The other design had a collision sensor ton the mower to detect when it "hit" the docking station. With this design I want to integrate an amp sensor to detect when a charge it there and then power down the mower for charging. As soon as I have this done I will post the code and wiring diagram.

Great project !
Do you have a partnumber and wire plan for te buttons ?

Hi Maertens,
Basically there are 5 wires coming from the membrane switch.
One is neutral the other 4 are connected to the Arduino pins as described in the PDF document.
The membrane switch can be bought on eBay.

Search for:
5Pc Keyboard Matrix Membrane Switch Keypad (No Mark).
I would post the link but it seems like it's not allowed to post links.

This is the file / project that I have been waiting for and tried to draw myself! Thank you very much!

Your welcome. Please keep checking back for updates.
I'm trying to improve the design as I see the little flaws as the mower is in action.
Thanks for the comment.

Hey again. The libraries in the code doesnt exist nor can be found in the Arduino Libraries manager. What do I do?

Ah, didn't read the description completely :i

Hi. Yes just search on GitHub for the libraries. If you have problems let me know.
Update 30.08.18 - I added a zip file with the libraries I used to the files. Hope all the libraries are included. Please let me know if there are any problems.


thanks for sharing. what is the tool you make the files?
i'm a beginner of 3d printing and this is a great projekt.

Hi Lutz,
The 3D models are made with Fusion360.

My last project was a lawn mower , made of steel.
this chassis is heavy and the mower need a lot of energy.
i hope with your chassis the mower will be faster and longer work.

Hi Lutz,
The battery and motor combination i suggest in the pdf the mower works well. With the Higher Ground clearance Mod I have had mow times of 3-4 hours (I really recommend to print this version). Good luck with the printing and build.!

i printed 80% ready and when the parts come from china then i will built it.
when you develop the projekt, perhaps it is possible to make a bumper.
in the source code i saw a lot of german comments, do you come from germany?

Hi Lutz
Yes I am living in Germany.

Von den Videos die ich gesehen habe würde ich meinen der Roboter mäht nach dem Zufallsprinzip? Also kreuz und Quer oder steckt da schon eine ausgeklügeltere Logik dahinter?

Schön dass es auch deutsche Maker gibt ;-) Sieht ansonsten richtig Klasse aus.

Does the mower mow in random style or is there some logic already implemented?

Hi Wessix,
Ja, in moment fahrt der Mower nach dem Zufallsprinzip.
Ein gesteurtes fahren ist schon auf der To-Do liste, aber ehrlich gesagt ist der Zufallsprinzip gar nicht so schlecht. Mein Garten ist auch nicht einfach (L Form mit Trampolinbe) aber ich finde kaum Stellen die nicht gemaeht sind.