This is an old revision of the document!
Constantinescu Radu - Multifunctional Windshield Wiper
Introduction
This project describes a smart windshield/window wiper that can be actioned both manually and automatically when it detects that the surface is wet enough. It has a display to indicate the wetness, a button to switch between automatic and manual mode and a button for manual mode that activates the wiper.
General Description
List of Components
1. Arduino UNO
2. Push Buttons
3. Servo Motor
4. LCD Display
5. LED
6. Buzzer
1. Arduino UNO acts as the central unit that coordinates all modules, processes inputs, and controls outputs.
2. Buttons allow the user to control the operation mode and the wiper speed.
3. Servo Motor simulates the movement of the wipers, being controlled via PWM from the Arduino.
4. LCD Display shows information about the current state and operating mode.
5. LED provides visual feedback about the system's operation.
6. Buzzer delivers audible alerts during mode changes or when errors occur.
Hardware Design
Diagram
Electric Scheme
Bill of Materials
Components Description
Arduino UNO R3 - the microcontroller used;
Push Button - basic arduino buttons used for changing the mode or actioning the wiper
Servo motor SG90 - servo motor used for actioning the wipper
ADIY Sensor - used for mesuring the humidity of the windshield
Passive buzzer - used to alert the user that the wipper is working
LCD Display - used to indicate the mode
Arduino Pins:
A0 – used for analog reading of the water sensor value
A4/A5 – used for connecting the SDA/SCL lines of the LCD
2 – pin used for the mode change button
3 – pin used for the wiper activation button in manual mode
5 – used for PWM signal to control the buzzer
9 – used for the servo motor
Gallery
Software Design
Descrierea codului aplicaţiei (firmware):
mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
librării şi surse 3rd-party (e.g. Procyon AVRlib)
algoritmi şi structuri pe care plănuiţi să le implementaţi
(etapa 3) surse şi funcţii implementate
Develompent Environment
The development environment used for this project was the Arduino IDE, which is easy to use, but also offers support for writing code using the registers and interfaces supported by the Arduino UNO.
External Libraries
Library | Used for | Required because |
Servo.h | Controlling the servo motor | Rotating/Moving a servo motor |
avr/interrupt.h | Low-level interrupt control | Using ISR() and hardware registers |
Wire.h | I2C communication | LCD is connected via I2C |
LiquidCrystal_I2C.h | Displaying text on the LCD | High-level LCD control over I2C |
Used Interfaces - Lab Usage
ISR - when actioning a button, an interruption is triggered
PWM - for actioning the buzzer
I2C - for dsiplaying the state
USART - for debugging and console information
Source Code
source_code.zip
Results
Download