Hi! Me and my partner need help with programming a keypad and a piezo speaker!. We have until the 11th of December 2019 to turn in the project.
So this is the Project!
YOU WILL BE MAKING A SYSTEM CONTROLLER FOR A MODERN WASHING MACHINE
As you should quickly notice you may run out of digital I/O or exceed the current capacity if you try to connect everything directly to your Arduino Uno. There are many options available to use to resolve this issue. As a future engineer this is just one of the many challenges you will face in the workplace. Take time to think through your system and options, figure out WHAT you are building first then figure out the HOW.
Your system will be used to simulate the control or simulation of many peripherals that may be connected in a washing machine system. The user will be able to deviate from the standard “Normal” cycle that is preloaded each time the machine is powered on. Your final product should visually represent a washing machine or at a minimum a washing machine control panel. Do not present just a breadboard full of parts, you will lose points if you do this. If you were presenting this to a non-technical person, they should be able to recognize, without explanation, that this is part of a washing machine.
From the point that the user presses start, a standard “Normal” cycle consists of:
During all stages the LCD should indicate what the current stage is and present either a progress bar that is constantly updated OR a seconds count down to the end of the cycle
When the cycle starts, the door lock servo (if equipped) should be engaged
Turning on the hot and cold water (makes warm water) solenoids (simulate with red/blue LED or 2 relays) for 35 seconds to load to fill the washing machine to a 100% (XL) load when finished turn off the solenoids
User can adjust the water level where 5 seconds=small load, 15 seconds = medium load and 25 seconds large load
If the user selected a different water temperature open the appropriate solenoid(s) for hot and/or cold for the amount of time dictated by the load selection, warm water must not exceed 85 degrees fahrenheit, if it does more cold water must be added to reduce the temperature until it is below that threshold.
The agitation cycle will run for 30 seconds, alternating the direction of the DC motor every 0.75 seconds
If the user changed the spin cycle to delicates the motor will alternate directions every 1.5 seconds for 45 seconds
The system should turn on a pump (simulate with relay or greenLED) for 45 seconds to drain the water then turn off the pump
The DC motor will spin in a CW direction at 100% speed for 30 seconds then turn off
If the user selected extra dry for the spin cycle run at 100% for 45 seconds
If the user selected delicates for the spin cycle run at 50% speed for 20 seconds
The door lock servo (if equipped) should be disengaged
The piezo speaker should play a happy tune to alert the user that the cycle is complete
The washing machine will have the following mandatory items:
Thermistor: Measures the temperature of the water when a warm water cycle is selected
DC Motor: Used to simulate the agitation of the clothes and to perform the spin cycle.
LCD: Used to indicate to the user the current cycle stage, LCD must present useful information regarding the current stage of the cycle. The user should not have to guess what is currently happening.
LEDs, Solenoids, or Water Pumps: you may choose to drive actual water solenoids or water pumps, however if you choose not to, use a red LED to indicate the hot water solenoid is on, a blue LED to indicate that the cold water solenoid is on and a green LED to indicate that the drain pump is running (do not use the RGB LED, use three separate LEDs)
Keypad: Enables the user to input cycle configuration information:
Changing the water level changes the amount of time the water solenoid is opened
Changing the water temperature controls which solenoids are open (cold, warm, hot)
Changing the spin cycle setting changes the speed and duration of the spin cycle
User should be able to save 3 presets in buttons A, B, and C, pressing and holding the button for 5 seconds will automatically save the current settings
Pressing D will start/pause/resume
pressing # or * will cancel the currently cycle
Pressing 1 multiple times will cycle through the water temperature settings (hot, warm, cold)
Pressing 2 multiple times will cycle through the load size settings (S, M, L, XL)
Pressing 3 multiple times will cycle through the spin cycle settings (delicates, normal, extra dry)
Safety system, your choice of servo or interrupt switch: The servo simulates the door lock, when a cycle is running and not pause the lock should be enabled to prevent the user from opening the door. Alternatively you can use a button that is activated when the door is closed, when a cycle is running the cycle should pause immediately.
Piezo Speaker: Provides audio feedback to the user that a button was pressed, also when a cycle is finished the speaker should play a happy song (no annoying long beeps or buzzers, google arduino music if you need help)
Extra credit: Store the 3 presets in EEPROM so that they are saved after the power has been removed
Extra-Extra Credit: You are required to create a physical mock up of the washing machine for the project, if yours is fully functional (water pump(s), solenoid(s), spinning basket, etc) you can receive 25% of your score added as bonus points. However, this is an all or nothing deal, look at windshield washer motors for water solenoids/drain pump inspiration.
Suggested components to be used:
LCD Display with I2C Backpack - used to provide feedback to the user.
4x4 Button Matrix - method of providing user input ability
Piezo Speaker - provide an audible confirmation that buttons are being pressed on the keypad
Required features of the project (30 points):
(5 points) Small physical mock up MUST be produced (be creative)
(15 points) Software functionality meets all of the requirements defined above
(8 points) Good use of functions to increase modularity and reduce code complexity.
(2 point) Neat and tidy wiring and construction.
Extra credit(cannot earn extra credit without all required features above):
(5 points) Requires Pre-Approval Touch screen LCD
(omit keypad and utilize touch interface for proper user input method)
2.8 TFT Touch Shield for Arduino with Resistive Touch Screen : ID 1651 : $34.95 : Adafruit Industries, Unique & fun DIY electronics and kits (or similar)
(2 points) Store the preset information EEPROM (must still be resettable).
(Points based on complexity) Anything you dream up that adds to useful functionality to the system.
(10 points, all or nothing) Project is a fully functional washing machine prototype
Suggested Libraries to Use:
-NewLiquidCrystal https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
-Keypad Arduino Playground - HomePage
-NewTone teckel12 / Arduino New Tone / wiki / Home — Bitbucket