Posts Tagged Hardware

PIR Motion Sensor Research

PIR Motion Sensor - Information pulled off the web
pastedgraphic4.tiff
sku: SEN-08630
Description: This is a simple to use motion sensor. Power it up and wait 1-2 seconds for the sensor to get a snapshot of the still room. If anything moves after that period, the ‘alarm’ pin will go low.

Red wire is power (5 to 12V). Brown wire is GND. Black wire is open collector Alarm.

This unit works great from 5 to 12V (datasheet shows 12V). You can also install a jumper wire past the 5V regulator on board to make this unit work at 3.3V. Sensor uses 1.6mA@3.3V.

The alarm pin is an open collector meaning you will need a pull up resistor on the alarm pin. The open drain setup allows multiple motion sensors to be connected on a single input pin. If any of the motion sensors go off, the input pin will be pulled low.

The connector is slightly odd but has a 0.1” pitch female connector making it compatible with jumper wires and 0.1” male headers.

———————

@cloverstreet: I’ve seen it detect motion reliably up to ~20ft away. There is no need to reset the alarm, it doesn’t latch. The alarm pin is debounced (deflapped?) internally, and seems to cycle off on the order of a second or so.

Also, a slight warning about the datasheet (at least for my unit): If you’re not paying attention, and use the three silver pin latches to orient the connector it’ll be backwards. As the description says, red is power, brown is ground, and black is alarm.

———
This says you can use it down to 5V but it does not appear to be stable to me at this voltage. The output is bouncing all over the place. When I change the input to 12V it works perfectly.se-10pdf1.jpg

Good web site at :
http://itp.nyu.edu/physcomp/sensors/Reports/PIRMotionSensor
——————————————————————
Dual sensor PIR is the most widely used motion detection system. They’re false-triggered less often than ultrasonic.
Changing the cover on it can change the range they cover.
They only react to change so they can’t detect someone standing still in front of them.
When using more than one, they can be connected on the same input to Arduino, however the values need to be normalized. I found it better to connect them to different analog inputs.
The PIR motion sensor needs a direct and uninterrupted line of sight. It’s unable to detect through cloth or cardboard.It detects movement in front of it from about 8 feet away.
pastedgraphic11.tiff

pastedgraphic21.tiff

As you can see it needs a resistor going to power for the Alarm Pin. This keeps the value at around 1023 while no infrared has been detected.

Sample code in Arduino

This code makes the LED on digital pin 11 blink as soon as the sensor goes lower than 20. The regular value without movement is above 1021, upon detecting it, it goes low to 17 - 18.

‘ // example for the PIR motion sensor SE-10

‘ int timer = 500;
‘ int alarmPin = 0;
‘ int alarmValue = 0;
‘ int ledPin = 11;

‘ void setup () {
‘ Serial.begin (9600);
‘ pinMode(ledPin, OUTPUT);
‘ pinMode(alarmPin, INPUT);
‘ delay (2000); // it takes the sensor 2 seconds to scan the area around it before it can
‘ detect infrared presence.
‘ }

‘ void loop (){
‘ alarmValue = analogRead(alarmPin);

‘ if (alarmValue < 100){
‘ blinky(); // blinks when the motion has been detected, just for confirmation.
‘ }
‘ delay(timer);

‘ Serial.println (alarmValue);

‘ delay (10);

‘ }

‘ void blinky() {
‘ for(int i=0; i<3; i++) {
‘ digitalWrite(11,HIGH);
‘ delay(200);
‘ digitalWrite(11,LOW);
‘ delay(200);
‘ }
‘ }

——————————————————————

,

No Comments

Arduino Board Research

484492e0-6ba5-43f4-b70a-eb5ca38a94a30png2.tiff

Overview

The Arduino Duemilanove (”2009″) is a microcontroller board based on the ATmega168 (datasheet) or ATmega328 (datasheet). It has 14 digital input/output pins (of which 6 can be used as PWM outputs), 6 analog input s, a 16 MHz crystal oscillator , a USB connectio n, a power jack, an ICSP header, and a reset button. It contains everything needed to support the microcontroller; simply connect it to a computer with a USB cable or power it with a AC-to-DC adapter or battery to get started.

Note My Board has ATmega328

“Duemilanove” means 2009 in Italian and is named after the year of its release. The Duemilanove is the latest in a series of USB Arduino boards; for a comparison with previous versions, see the index of Arduino boards.

Schematic & Reference Design

EAGLE files: arduino-duemilanove-reference-design.zip

Schematic: arduino-duemilanove-schematic.pdf

Summary
Microcontroller     ATmega168
Operating Voltage     5V
Input Voltage (recommended)     7-12V
Input Voltage (limits)     6-20V
Digital I/O Pins     14 (of which 6 provide PWM output)
Analog Input Pins     6
DC Current per I/O Pin     40 mA
DC Current for 3.3V Pin     50 mA
Flash Memory     16 KB (ATmega168) or 32 KB (ATmega328) of which 2 KB used by bootloader
SRAM     1 KB (ATmega168) or 2 KB (ATmega328)
EEPROM     512 bytes (ATmega168) or 1 KB (ATmega328)
Clock Speed     16 MHz

Power

The Arduino Duemilanove can be powered via the USB connection or with an external power supply. The power source is selected automatically.

External (non-USB) power can come either from an AC-to-DC adapter (wall-wart) or battery. The adapter can be connected by plugging a 2.1mm center-positive plug into the board’s power jack. Leads from a battery can be inserted in the Gnd and Vin pin headers of the POWER connector.

The board can operate on an external supply of 6 to 20 volts. If supplied with less than 7V, however, the 5V pin may supply less than five volts and the board may be unstable. If using more than 12V, the voltage regulator may overheat and damage the board. The recommended range is 7 to 12 volts.

The power pins are as follows:

* VIN. The input voltage to the Arduino board when it’s using an external power source (as opposed to 5 volts from the USB connection or other regulated power source). You can supply voltage through this pin, or, if supplying voltage via the power jack, access it through this pin.

* 5V. The regulated power supply used to power the microcontroller and other components on the board. This can come either from VIN via an on-board regulator, or be supplied by USB or another regulated 5V supply.

* 3V3. A 3.3 volt supply generated by the on-board FTDI chip. Maximum current draw is 50 mA.

* GND. Ground pins.

Memory

The ATmega168 has 16 KB of flash memory for storing code (of which 2 KB is used for the bootloader); the ATmega328 has 32 KB, (also with 2 KB used for the bootloader). The ATmega168 has 1 KB of SRAM and 512 bytes of EEPROM (which can be read and written with the EEPROM library); the ATmega328 has 2 KB of SRAM and 1 KB of EEPROM.

Input and Output

Each of the 14 digital pins on the Duemilanove can be used as an input or output, using pinMode(), digitalWrite(), and digitalRead() functions. They operate at 5 volts. Each pin can provide or receive a maximum of 40 mA and has an internal pull-up resistor (disconnected by default) of 20-50 kOhms. In addition, some pins have specialized functions:

* Serial: 0 (RX) and 1 (TX). Used to receive (RX) and transmit (TX) TTL serial data. These pins are connected to the corresponding pins of the FTDI USB-to-TTL Serial chip.

* External Interrupts: 2 and 3. These pins can be configured to trigger an interrupt on a low value, a rising or falling edge, or a change in value. See the attachInterrupt() function for details.

* PWM: 3, 5, 6, 9, 10, and 11. Provide 8-bit PWM output with the analogWrite() function. // Since analog outputs, guess the 8 bits sets level of output analog style

* SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). These pins support SPI communication, which, although provided by the underlying hardware, is not currently included in the Arduino language.

* LED: 13. There is a built-in LED connected to digital pin 13. When the pin is HIGH value, the LED is on, when the pin is LOW, it’s off.

The Duemilanove has 6 analog inputs, each of which provide 10 bits of resolution (i.e. 1024 different values). By default they measure from ground to 5 volts, though is it possible to change the upper end of their range using the AREF pin and the analogReference() function. Additionally, some pins have specialized functionality:

* I2C: 4 (SDA) and 5 (SCL). Support I2C (TWI) communication using the Wire library.

There are a couple of other pins on the board:

* AREF. Reference voltage for the analog inputs. Used with analogReference().

* Reset. Bring this line LOW to reset the microcontroller. Typically used to add a reset button to shields which block the one on the board.

See also the mapping between Arduino pins and ATmega168 ports.

Communication

The Arduino Duemilanove has a number of facilities for communicating with a computer, another Arduino, or other microcontrollers. The ATmega168 and ATmega328 provide UART TTL (5V) serial communication, which is available on digital pins 0 (RX) and 1 (TX). An FTDI FT232RL on the board channels this serial communication over USB and the FTDI drivers (included with the Arduino software) provide a virtual com port to software on the computer. The Arduino software includes a serial monitor which allows simple textual data to be sent to and from the Arduino board. The RX and TX LEDs on the board will flash when data is being transmitted via the FTDI chip and USB connection to the computer (but not for serial communication on pins 0 and 1).

A SoftwareSerial library allows for serial communication on any of the Duemilanove’s digital pins.

The ATmega168 and ATmega328 also support I2C (TWI) and SPI communication. The Arduino software includes a Wire library to simplify use of the I2C bus; see the documentation for details. To use the SPI communication, please see the ATmega168 or ATmega328 datasheet.

Programming

The Arduino Duemilanove can be programmed with the Arduino software (download). Select “Arduino Diecimila or Duemilanove w/ ATmega168″ or “Arduino Duemilanove w/ ATmega328″ from the Tools > Board menu (according to the microcontroller on your board). For details, see the reference and tutorials.

The ATmega168 or ATmega328 on the Arduino Duemilanove comes preburned with a bootloader that allows you to upload new code to it without the use of an external hardware programmer. It communicates using the original STK500 protocol (reference, C header files).

You can also bypass the bootloader and program the microcontroller through the ICSP (In-Circuit Serial Programming) header; see these instructions for details.

Automatic (Software) Reset

Rather then requiring a physical press of the reset button before an upload, the Arduino Duemilanove is designed in a way that allows it to be reset by software running on a connected computer. One of the hardware flow control lines (DTR) of the FT232RL is connected to the reset line of the ATmega168 or ATmega328 via a 100 nanofarad capacitor. When this line is asserted (taken low), the reset line drops long enough to reset the chip. The Arduino software uses this capability to allow you to upload code by simply pressing the upload button in the Arduino environment. This means that the bootloader can have a shorter timeout, as the lowering of DTR can be well-coordinated with the start of the upload.

This setup has other implications. When the Duemilanove is connected to either a computer running Mac OS X or Linux, it resets each time a connection is made to it from software (via USB). For the following half-second or so, the bootloader is running on the Duemilanove. While it is programmed to ignore malformed data (i.e. anything besides an upload of new code), it will intercept the first few bytes of data sent to the board after a connection is opened. If a sketch running on the board receives one-time configuration or other data when it first starts, make sure that the software with which it communicates waits a second after opening the connection and before sending this data.

The Duemilanove contains a trace that can be cut to disable the auto-reset. The pads on either side of the trace can be soldered together to re-enable it. It’s labeled “RESET-EN”. You may also be able to disable the auto-reset by connecting a 110 ohm resistor from 5V to the reset line; see this forum thread for details.

USB Overcurrent Protection

The Arduino Duemilanove has a resettable polyfuse that protects your computer’s USB ports from shorts and overcurrent. Although most computers provide their own internal protection, the fuse provides an extra layer of protection. If more than 500 mA is applied to the USB port, the fuse will automatically break the connection until the short or overload is removed.

Physical Characteristics

The maximum length and width of the Duemilanove PCB are 2.7 and 2.1 inches respectively, with the USB connector and power jack extending beyond the former dimension. Three screw holes allow the board to be attached to a surface or case. Note that the distance between digital pins 7 and 8 is 160 mil (0.16″), not an even multiple of the 100 mil spacing of the other pins.

,

No Comments

Resistors

generally, there are four stripes, and each colour represents a number. One of rings
is usually gold-coloured; this one represents the precision of that resistor. To read the
stripes in order, hold the resistor so the gold (or silver in some cases) stripe is to the right.
Then, read the colours and map them to the corresponding numbers. In the following table,
you’ll find a translation between the colours and their numeric values.

arduino-unknownpdfsecured-2.jpg

arduino-unknownpdfsecured-3.jpg

For example, brown, black, orange, and gold markings mean 103±5%. Easy, right? Not
quite, because there is a twist: the third ring actually represents the number of zeros in the
value. Therefore 1 0 3 is actually 1 0 followed by 3 zeros, so the end result is 10,000 ohms
±5%.

,

No Comments

My Arduino & XBee Parts

My equipment bought 1st half of May 2009 :

From nkcelectronics :

Name Code Qty Each Options
—————————————————————
Arduino Duemilanove ARD-0020 1 29.45
XBee Explorer USB XBE-0002 1 19.95
Character LCD Module 20×4 LCD-0016 1 15.99 Blue
Wall Adapter Power Supply PRO-0011 1 5.95 - 9VDC 650mA
Solderless Breadboard PRO-0003 1 9.99
Jumper Wire Kit

From Sparkfun :
Status          Product                                                                 Qty       Total
————————————————————————————————————-
Item in Box     COM-00528 Super Bright LED - Red - 10,000mcd                            2         $1.90
Item in Box     COM-00530 Super Bright LED - Yellow - 10,000mcd                         2         $1.90
Item in Box     COM-08285 Super Bright LED - Green - 10,000mcd                          2         $1.90
Item in Box     PRT-00112 Basic Breadboard                                              1         $11.95
Item in Box     DEV-09063 Arduino XBee Shield Empty                                     1         $24.95
Item in Box     WRL-08691 XBee 2mW Series 2.5 Chip Antenna                              2         $51.90
Item in Box     COM-00097 Mini Push Button Switch                                       4         $1.40
Item in Box     SEN-08630 PIR Motion Sensor                                             1         $9.95

To Buy
MOSFET like the IRF520 (NEED TO GET THIS FROM RADIO SHACK !!)
Light sensor
0.1” male headers
any general resistor/capactior packs ? what about online ?

, ,

1 Comment

My Arduino Experiments

1) Did Blinking LED Experiment from ARduino Book, last weekend : May17th 2009

Below are notes from the book on Arduino :
——————————————————————
​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​arduino-unknownpdfsecured2.jpg

#define LED 13         // LED connected to
                        // digital pin 13
void setup()
{
        pinMode(LED, OUTPUT); // sets the digital
                                         // pin as output
}

void loop()
{
        digitalWrite(LED, HIGH); // turns the LED on
        delay(1000); // waits for a second
        digitalWrite(LED, LOW); // turns the LED off
        delay(1000); // waits for a second
}

——————————————————————

* With kids we changed the delay and watched the blinking go very fast (as we go into 10 miliseconds still blinked even though eye can’t see more then like 30 Hz right ?

2) Next experiment using say PIR sensor instead of light sensor
See : PIR Motion Sensor Research
Using PIR from sparkfun : SEN-08630

Experiments run on May 24th,2009

I tried to use instructions from : http://itp.nyu.edu/physcomp/sensors/Reports/PIRMotionSensor
img-0840.jpg

iphoto.jpg
minor modifications for newer Arudino board and changed my setup slightly.
// example for the PIR motion sensor SE-10

int timer = 500;
int alarmPin = 1;
int alarmValue = 1;
int ledPin = 13;

void setup () {
Serial.begin (9600);
pinMode(ledPin, OUTPUT);
pinMode(alarmPin, INPUT);
delay (2000); // it takes the sensor 2 seconds to scan the area around it before it can detect infrared presence.
}

void loop ()
{
alarmValue = analogRead(alarmPin);
if (alarmValue < 100)
{
blinky(); // blinks when the motion has been detected, just for confirmation.
}
delay(timer);
Serial.println (alarmValue);
delay (10);
}

void blinky() {
for(int i=0; i<3; i++) {
digitalWrite(13,HIGH);
delay(200);
digitalWrite(13,LOW);
delay(200);
}
}

Was not happy with results !! Though it was cool to see sensor data coming out of the Arduino into the ‘Serial Monitor’ screen of the Arduino IDE for the first time

Example data results when not moving
arduino-00151.jpg

* When I waved my hands no real change (300’s)
* When I put my hand onto the PIR senseor it goes up to ~1000, then will drop to <20, and then will call the blinky function
* I think that I need 12V rail is my guess based on comment in forum that with 12V more sensistive
         — don’t have any easy/great ways to get 12V DC onto my breadboard
        – searching web pages
* woudl it help to remove plastic casing ?

There is some code on web to do calibration for a parallax sensor, given how little my readins vary unless I touch the sensor seems like it would not be useful.
        http://www.arduino.cc/playground/Code/PIRsense
        – there is note in forums for this code that with parallalx it takes minute for sensor to calibrate, and any movement will disrupt, I will try to be calm first

* At this point I took pictures of the setup, and plan to put it aside
        – now I realize good photos of electronics setups that will be useful to me later is not easy (using a simple canon point and shoot), why does everything have to be hard !!

* Scouring internet for all references to this PIR device, finally found one that sounds similar to my issue
        – http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1236875530
        – “But I can’t get any output from it. If I plug it in analog port I get a constant output from 300 to 500 but it doesn’t change with motion.”

** Ok so I did visual inspection of my wiring on the breadboard and found mistake ! I did not have the Brown (ground) wire of the PIR sensor connected to the ground on the BB (which is connected to ground on the Ardunino)
        – boy it has been a while since I have done debugging like this, very sad, somehow in my head when I wired up I though (easy) and I visualized 2 wires in adjacent rows of BB were connected (which they are not)

* now when I turn on the program the readings bounce from 20-60 regardless of what I am doing and the blinking from the software (for trigger) is continous !!
        – so I flipped the issue onto it’s head

* ok visually debugging again
        – no issues

* one theory now is I somehow burnt out the PIR sensor ?

* am getting out DMM to look at if voltages are correct

* Hmm when I check voltage there is 200mV on BB rails, ok time to start at square one
        - coming out of Ardunino power rails seeing 5V - check
        –

* BTW I need me some alligator clips
        – very sorry I threw away electronics box sometime in past 15 years since college, had some cool stuff

* Ok at this point I am giving up on PIR (maybe burn out ?)

arduino-0015-11.jpg

3) Next try turning the little toy motor I have

Ok based on below

From Arduino Book :
——————————————————————
Each one of the pins on an Arduino board can be used to power devices that use up to 20
milliamps: this is a very small amount of current, just enough to drive an LED. If you try
to drive something like a motor, the pin will immediately stop working, and could
potentially burn out the whole processor. To drive bigger loads like motors or incandescent
lamps, we need to use an external component that can switch such things on and off and
that is driven by an Arduino pin. One such device is called a MOSFET transistor—ignore
the funny name—it’s an electronic switch that can be driven by applying a voltage to one
of its three pins, each of which is called a gate. It is something like the light switch that we
use at home, where the action of a finger turning the light on and off is replaced by a pin
on the Arduino board sending voltage to the gate of the MOSFET.

In Figure 5-7, you can see how you would use a MOSFET like the IRF520 (NEED TO GET THIS FROM RADIO SHACK !!) to turn on and
off a small motor attached to a fan. You will also notice that the motor takes its power
supply from the 9 V connector on the Arduino board. This is another benefit of the
MOSFET: it allows us to drive devices whose power supply differs from the one used by
Arduino. As the MOSFET is connected to pin 9, we can also use analogWrite() to control
the speed of the motor through PWM.

arduino-unknownpdfsecured-12.jpg

——————————————————————

Ok used DC motor from toy, 10k resistor and BB from circuit above

Program (trying to keep it simple) was :

int value = 0; // variable to keep the actual value
int ledpin = 9; // light connected to digital pin 9

void setup()
{
// nothing for setup
}

void loop()
{
analogWrite(ledpin, 1023);
}

Trying to use DMM not working out well
        – overall I need better way to debug BB (alligator clips e.g.)
iphoto-1.jpg

5) Try out xbee simple

What to try ? toggling of led from laptop ?        See how far away you can move ?

6) try out xbee + LCD + Arduino

Missing parts ?
(2) 1N4004 diodes
40-pin Male Header to expose LCD pins

img-4680jpegimage384x512pixels1.jpg
http://rapplogic.blogspot.com/2009/05/arduino-xbee-portal.html

, ,

No Comments