This Article is to make readers to explore about how Automatic Wiper works in modern cars. Here you can get an idea on the CAN Bus which is used in the Communication of Sensors, Actuators and controllers in a car.
The CAN Protocol is in view of a bus topology, and just two wires are required for Communication over a CAN bus. The bus has a multi-master structure where every device on the bus can send or get information. Any device can send information while every one of the others should listen. In the event that two or more devices endeavour to send information in the meantime, the one with the highest priority is permitted to send its information while the others come back to receive mode.
Prerequisites & Equipment:
You are going to need the following:
Two Arduino Board or Arduino clone(Here is a guide if you need)
A 5v TTL -UART Bluetooth module.
DHT11 Sensor and Servo Motor.
Arduino IDE for the programming.
Two CAN Tranciever.
In this project Arduino with MCP2515 CAN controller is used to demonstrate the working of Automatic Wiper Control.The Controller Area Network (CAN) is a serial bus communications protocol.
The below given block diagram will explain the working of this system in detail. Humidity sensor is input section which gives data to CAN which is transmitted to the control section and wiper operate automatically by using PWM signal output from the Arduino.
Fig. 1: Block Diagram of Arduino based Automatic Wiper designed for cars and trucks
SENSOR SIGNAL INPUT SECTION:
The sensor signal from various sensors are fed to CAN through sensing controller, which convert the analog values from the sensors to the digital value which gives information about the outside circumstances of the car. This digital information is read into a software in the Arduino to determine the degree of rainfall and it is sent to the control section through CAN Bus
OUTPUT CONTROL SECTION:
The motor control circuit is controlled by Arduino output. The motor is turned on and off to drive the wiper. Pulse-width information corresponding to the humidity condition is stored in the Arduino, and is initialized each time the wiper motor is driven. Humidity and temperature also vary according to the internal car temperature.
The DHT11 is chosen because it is lab calibrated, accurate and stable and its signal output is digital. The DHT11 is a basic, ultra low-cost digital temperature and humidity sensor. It uses a capacitive humidity sensor and a thermistor to measure the surrounding air, and spits out a digital signal on the data pin (no analog input pins needed). It’s fairly simple to use, but requires careful timing to grab data. The only real downside of this sensor is you can only get new data from it once every 2 seconds, so when using our library, sensor readings can be up to 2 seconds old.
Pin Name Description
1 VDD Power supply 3 – 5.5 V DC
2 DATA Serial data output
3 NC Not connected
4 GND Ground
Connect the sensor to the Arduino as shown below
Pin 1 Vcc
Pin 2 Analog0( And a 10K pull up resistance)
Pin 4 Gnd
Install the DHT11 library and Modify:
Download this zipped file and unzip it under the libraries directory of the Arduino IDE folder. For example, for my computer’s setup, the directory is
After copying files across, the directory
should have the following two files: dht.h and dht.cpp
Reading Temperature and Humidity data and transmitting it in the CAN Bus:
Load the program TX.ino after you save it onto your computer and open it in Arduino IDE .
Compile the program in the Arduino IDE
Temperature and Humidity values can be get by the following commands using the DHT library.
float h = dht.readHumidity();
float t = dht.readTemperature();
The following function is used to send the values to the can bus. Detailed instruction can be found here.
CAN.sendMsgBuf(0x70,0, 2, stmp);
Receiving CAN data and displaying in an LCD:
Load the program RX.ino after you save it onto your computer and open it in Arduino IDE .
Compile the program in the Arduino IDE
The following function is used to receive the values from the CAN bus and to display on an LCD. Detailed instruction can be found here.
Loading software for Arduino:
If you are new to Arduino you can start with here. You have to start with the Arduino IDE (Integrated Development Environment) from Arduino . Download the code from below link and upload it to the Arduino board.
The Humidity sensor is used to detect the amount of the rain and give the signal to the controller. The ADC in the controller detects the sensor input and converts this analog value to the digital values which is fed to the CAN controller for the transmission. This signal is received by the control section to drive the motor circuit. The PWM signal output actuates the servo motor to run at high speed or low speed based on the amount of the rain level detected.(Here to simulate Wiper motor Servo motor is used). If the humidity level or the rain, dew deposited on the windshield is more, than accordingly wiper will move. In that case, the system will turn on the wiper motor to activate at high speed using the driver circuit. If the level of humidity is low, then the wiper motor is activated at low speed. These are the basic building blocks of the hardware besides the resistors and capacitors that are required for any electronic circuit.
Fig. 2: Prototype of Arduino Circuit used in Automatic Car Wiper
Fig. 3: Image showing prototype of motor driver circuit designed on a breadboard for automatic car wiper