Automatic wiper for Automobile using Arduino and Rainsensor: The project we are talking about is an automatic screen wiper system that monitors the intensity of rainfall and controls the frequency of operation of the wiper accordingly.
According to WHO, more than 1.25 million people die every year because of road crashes and mostly in rainy seasons. People end up dying because of small mistakes. Here we have forwarded an attempt to reduce that number. The project is especially suited for car. The project is centered around Arduino UNO board. So as to measure the rainfall intensity, a separate rainfall module is used in the project. Depending on the data collected from the module, a servo motor is assigned to control the movements of the wiper. The user is also provided with the rainfall information through a LCD module included in the project. The servo motor is responsible for producing PWM signal at its output line and its speed is controlled by the controller.
Circuit Description of Automatic Wiper System for Automobile
The circuit is much simpler to construct. As per the figure shown below, arrange the circuit elements in order.
Parts List used for project Automatic wiper system for automobile
Arduino UNO x1
Servo Motor x1
16×2 Alphanumeric LCD x1
Rain Sensor Module x1
10K variable reistsor x 1
The rain intensity module which we are using for this particular project is MH-RD rain detector. This module comprises 4 pins: Vcc, A0, D0 and Gnd. And, two of the pins; Vcc and Gnd of this module are interfaced with the supply pins of the arduino module. Out of two remaining pins from the module, A0 supplies analog output where as D0 supplies digital output. But, here in our case, we need to monitor the intensity variation of the rainfall and thus we ignore the digital output pin D0 and connect the analog output from module; A0 to one of the analog input pins of the arduino uno board.
For wiper movements control, a servo motor is installed. The servo motor produces suitable PWM output signal which is responsible to adjust its shaft to a desirable position. The output signal from servo motor is supplied as input to digital pin 9 which is one of the PWM pins of Arduino UNO. A 16*2 JHD162A LCD does the task of displaying the intensity of rainfall on its screen. This LCD is based on the HD44780 driver from Hitachi. There are two working modes available in the LCD; 4-bit mode and 8-bit mode. For this project, we will use 4-bit mode. The interface between Arduino Uno board and LCD is made much easier by the use of built-in arduino library file <LiquidCrystal.h>. The Arduino pins 13, GND and 10 are matched with control pins of the LCD; RS, RW and En respectively. Similarly, Arduino pins 7,6,5 and 4 are linked with data pin D4-D7 of the LCD.
Initially, as the project is activated, the wiper is switched back to zero degree position by the servo motor. The controller keeps on monitoring the signal received from the rain detector module. When the rain detector module senses rainfall, the controller checks if it crosses a threshold value set in the device. As soon as that happens, the controller triggers the servo motor which than starts to work. The strength of the signal decides the speed of the servo motor. The rainfall intensity is continuously displayed on the LCD screen.
Software for Automatic Wiper
The software portion of this project is much more simple and easy to understand. The program checks for signal from rain sensor. ‘Servo.h’ is the inbuilt library function included for execution of servo operations. Depending upon the signal received, we can assign any value to the motor using ‘myservo.write(angle)’ function and move the wiper as we desire. Since the project also includes LCD, we also use another library; “LiguidCrystal.h”. Initially at the beginning of the program, the LCD pins are initialized and respective pins are defined in the format of “LiquidCrystal lcd(RS, E, D4, D5, D6, D7) i.e. LiquidCrystal lcd(11,10,7,6,5,4);”.
The rainfall sensor sends the analog signal to the Arduino pin. It uses ‘analogRead(pin_number)’ function to extract that signal. Lets take an example, a function(analogRead(sensorPin);) generates an integer output in between the range of 0 to 1023 from the voltage of 0 to 5V voltage range at the A0 pin. Hence, the current intensity of the rainfall is identified by comparing the A0 voltage with a fixed number.The threshold is set for the project and when the reading from the rainfall detector exceeds that value, the controller activates the motor whose speed is controlled according to the sensor reading. “wipe(speed)” is a user defined function used to control the motor speed. “lcd.print(low/medium/high)” function is used to display the intensity information on the LCD screen.