Presentation Slides

advertisement
Arduino Tutorial 2:
Secret Door Knock Detector
Agenda
1.Sensor Review
2.MAKE: calibrate sensor
3.PWM
4.Motors
5.MAKE: calibrate motor
6.Validation algorithm
7.MAKE: Secret Knock Detector
8.Links
Analog Review
• Analog Arduino mapping: 0-5V  0 -1023
analogRead(pin)
• Piezo: vibration sensor
Generates voltage between its 2 leads
Sensitive! Needs resistor in parallel
• Serial Monitor:
Serial.begin(9600) to start communication
Serial.println(“msg”) to print to monitor
MAKE: Calibrate Sensor
•
Connect sensor to analog pin
with 1M resistor in parallel
•
•
Open skeleton_sensor_calibrate
Use Serial Monitor to report value from sensor, find out
minimum value produced by a knock  THRESHOLD
Modify delay between readings so it won’t ignore two
quick knocks or give you extra knocks  DEBOUNCE
•
CHALLENGE:
• Add LED to
indicate knock
Pulse Width Modulation
•
•
•
Duty cycle = percentage of time signal is positive
in square wave
Min-Max voltage: 0 – 5v
Min-Max Arduino mapping: 0 – 255
PWM pins have a ~ on Arduino
10% average
50% average
90% average
DC Motors
•

They draw more current than USB/Arduino can supply
(40mA per pin) so need another power supply:
batteries / wall-wart
Current through in 1 direction
turns them in 1 direction
6v
PWM

More voltage = More speed, control?
Use electronically controlled switch (transistor)
between motor and batteries
Use PWM pin to control switch
Motor
Servo Motors
•

•

Moves to desired position and stops,
limited range of 180° in 2 directions
3 wires: power = red
ground = brown
control = yellow
Control circuit + potentiometer +
DC motor + position shaft with gears
Control signal uses PWM,
pulse width = position
MAKE: Calibrate Motor
•
•
•
•
Connect Servo motor to PWM pin, power and ground
Open skeleton_motor_calibrate
Find “opened” and “closed” positions by sweeping shaft
**Don’t disconnect sensor, will use later!
Servo Library
•
•
•
•
#include <Servo.h>
Create object
Object.attach(pin)
Object.write(position) *in degrees
MAKE: Secret Knock Detector
• Secret knock is stored as array of time intervals
• Validation logic: compare time intervals within allowed error
• Start with skeleton_basic_door_knock, using serial monitor
• When that works add servo movement instead of printing
• Verify code with staff and try the BIG DOOR!
Useful Links
Original Instructables project
http://www.instructables.com/id/Secret-Knock-DetectingDoor-Lock/
MAKE projects
http://makezine.com/arduino/
http://makezine.com/category/electronics/arduino/?post_type=pr
ojects
Jeremy Blum Tutorials (#5: motors and transistors)
http://www.jeremyblum.com/category/arduino-tutorials/
Questions? Comments? Suggestions?
academics@ieee.concordia.ca
ieee.concordia.ca
Download