I would like to design a system in which I am able to make a light flash when a motion sensor detects a movement of a non human object such as a car.

(The goal here being that when a car is moving behind me in my blind spot around the corner of a wall in my parking spot I don't back into it.)

I have looked into a few tutorials using arduinos to detect this motion but so far I have only read about the PIR (which only detects humans and animals).


What sensor would be best for this situation or do I need to rethink my system?

(I have no intention of harming anyone or anything :) )

  • Do you mean that you're trying to detect a moving car, or are YOU the moving object and you're trying to detect a static object that just happens to be a car? If it's the former, would a hot engine not trigger a PIR sensor? Jul 7, 2015 at 22:52
  • 2
    Why the restriction on non-human, exactly? Is it OK if you back into a human? If so, why? If you want something that senses the difference between a moving inanimate object (like a car) and a human, then surely such a detection system would also detect things like dogs and cats. Unless you are going to Google for a "human detector" it seems to me that any sort of distance detector would do. Surely you don't want to reverse into anything, alive or not.
    – Nick Gammon
    Jul 8, 2015 at 6:12

6 Answers 6


If your car is moving at the time, then relative to your car everything is moving.

Automotive companies have spent billions of dollars working on this problem. There is no "sensor" that can differentiate one moving object from a background that is also moving.

All existing automotive systems that perform this task use cameras and computers, with software such as OpenCV. This is not something that any Arduino could even come close to doing.

The closest you could get is "is there something in this area that is within a certain distance of me" which you may be able to do with an ultrasound "Ping" sensor. It won't differentiate between a moving car or a bollard or a child or just the wall you are reversing towards.


I would try the PIR sensor before writing it off. It detects changes in infrared radiation from an initial baseline that it reads, so whenever the ambient heat that it sees changes by some threshold, it notifies you. They might be sensitive enough to see a car coming through, as suggested by others.

A more robust solution could be the ultrasonic proximity sensor, like Majenko mentioned. Here's one as a starting point: ultrasonic distance sensor. This will be best if you know that the car will be passing in front of where you point the sensor. If it's hard to point the sensor to a point where you're sure the car will be coming through, then that's where a PIR would have advantages, as it "sees" a wider area.


I hate to be the wet blanket here but maybe the job is too simple for this much technology. Wouldn't a suitably placed curved mirror give you the information you need?

Or put a PIR sensor around the corner where it can see the car, and put the flashing light where you can see it while backing.


I am not sure why no one has suggested a Microwave Doppler sensor. I am not sure how it would work in an outdoor environment but it is designed to detect motion regardless of whether it is a human. This link has some information about using a cheap Microwave sensor with an Arduino.


I would use an ultrasonic distance sensor. They are quite accurate, and are common to use for this kind of problem. You will get all kinds of noise in your data, from all the different surfaces that the ultrasonic sound will bounce off from.

Another option would be infrared distance sensor. Make sure you find one with a long enough range, because the 'usual' one used with arduino examples goes to about 30cm. They are less precise, but very easy to use with arduino. And if I remember correctly they have less problems of getting interference if you have a bunch of them together.

Pir sensors are made to detect the difference in infrared heat coming off a human skin (comparing to when the person is not there). So I would not recommend that.


You can use the servo motor to rotate the ultrasonic sensor 180°:

  • In the setup() function of your code, store the distance for every 180° in an array;
  • In the loop() function, read the distance of each degree and compare with the one in the array.

If the value changes that means that the object has been moved

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.