Instructables

This instructable will show you how to construct a laser tripwire that can twitter and grab an image from a webcam, as well as execute any command you can put in a bash script.
This instructable is actually quite simple and is even suitable as a beginner arduino project. It requires a GNU/linux (or possibly Mac) operating system with the arduino IDE and Processing IDE working properly. This project could also be implemented in Windows if you created a more complex processing application.



Hardware Requirements
Arduino Board
Laser pointer/pen
Light Dependant Resistor
100Kohm Resistor

Optional:
  Webcam
  Breadboard


Software Requirements
Arduino IDE
Processing IDE
Linux OS (I'm using Arch Linux for this project)
Curl
Webcam (part of xawtv)


Other Stuff:
Mirror
Solder and Soldering Iron
Wire
Hot Glue Gun
Hacksaw/Knife
Straw or Ballpoint Pen
arduino.pde359 bytes
twitter.trip270 bytes
 
Remove these adsRemove these ads by Signing Up

Step 1: Connecting The LDR

Picture of Connecting The LDR
1.JPG
2.JPG
3.JPG
4.JPG
5.JPG
7fin.JPG
6fin.JPG
PIC_0157.JPG
diag.png
PIC_0159.JPG
PIC_0161.JPG
 
I needed the LDR and the laser to be in a position where they would not move around so I connected my LDR and resistor directly to the Arduino without a breadboard, but you can do it however you like, below are the photos for soldering and bending them into shape I also included a simple diagram.

I cut the end off of a ballpoint pen so that I could slip it over the LDR to prevent ambient light from affecting the reading, you could also use a straw.
Lotek50009 months ago
Nice project - I am setting one up to take a picture of whichever culprit keeps messing with the lab at work and post there image up on the board of shame.

I had to mod the code a little to get it to work on MAC (OSX) 10.6.8 so thought I should upload my code for others to use. Many thanks and here it is.


int ledPin = 13; // digital pin to which led is connected
int analogPin = 0; // analog pin to which ldr is connected
int ldrVal = 0; //variable to store ldr value
int threshold = 1000; //variable to store threshold in memory

void setup()
{
Serial.begin(9600); //set baud rate
}

void loop()
{
ldrVal = analogRead(analogPin);

if ( ldrVal > threshold )
{
Serial.print("1");
delay(200);
}

}
DidyDoddie1 year ago
Will this code still work today? I heard that twitter had made it harder to tweet from an arduino.

P.s. Im am a complete new person to arduinos and programming so i have no idea!
Mdob3 years ago
Here is what I did. I modified some of it a bit. I used the processing code but made it open up a .bat file which used snapz to take a picture and then used a .vbs file to attach that picture and send and email to my gmail account. This was all using windows.This has been a fun project. Now, all I need to do is make it all self-contained. I could possibly use the "$25 Computer" (http://www.raspberrypi.org/) with a camera and put it all in a project box with a laser module. That would be fun. If anybody wants the code that I used just ask me and I will host it.
yes please, followed by an instructable
I do have an instructable up if you look at my account. (Link) I didn't want to go through all of the laser stuff again so I made it activate on login. To adapt it to make it so that it will open up the Send.bat file (Which will start the process to take the picture and send the email) simply replace

open("/home/username/someplace/twitter.trip")

in the processing code with the location of your files. eg.

open("C:\Users\EngineeringChannel\Send.bat")

That is all that you have to modify from my instructable. Also, don't follow the instructions where it says that you have to hide it or make it run on startup. I hope that helps, Good Luck!
wallBme Mdob2 years ago
Hey, I've tried doing what you did and I made twitter.trip into a .bat file. It runs just fine when I double-click it and/or run it from the command prompt, but open() doesn't seem to be running it. Do you have any ideas as to why it wouldn't be working? Thanks
Mdob wallBme2 years ago
I have very little experience with Processing so I really don't know. When I tried it (this was quite a while ago) it worked just fine. Maybe somebody who knows a little bit more about Processing could help you out.
wallBme Mdob2 years ago
ok, thanks
jparfoot Mdob2 years ago
Hi mate great idea would love it if i could get a copy of your source code. cheers Jordan
cpoplawski2 years ago
Can someone please modify this to not use processing? I am new to arduino and have been bashing my head in to make this completely stand alone (no pc needed). I am trying to make it so that it just tweets "laser has been tripped" after the alarm sounds. I have an Arduino Uno with Ethernet shield.
riddik0012 years ago
"put twitter.trip into:
/home/your_username/" where do i find the /home/my-username? folder ? and which software i will use the arduino or processing to load the script thanks.
you answered your own question, you find it in the HOME folder, as for the other question you can get the software from arduino.cc under downloads
Catch_22_3 years ago
Basic auth is now unsupported by twitter. So you wont be able to use the code from twitter.trip.

User SuperTweet.net instead. Youre still using curl but supertweet.net acts as a proxy between you and twitter, allowing you to use basic auth. Twitter now uses oAuth which is a pain. For the code below, use your SuperTweet username and password, it is separate from your twitter login.

#!/bin/bash
trip=$(date +'%A %n %d, %l:%M%p' )
stat="["$trip"] Door has been opened"
curl -u USERNAME:PASSWORD -d "status=$stat" http://api.supertweet.net/1/statuses/update.xml --insecure
tranoxx3 years ago
when I use the Arduino code it does the opposite of what you said it would instead of making a 1 it stops making 1's, is this important?
polishdude3 years ago
can you do this with windows?
habzbah3 years ago
Nice tutorial, will try this soon!
ledfreak013 years ago
i tried to upload the code to my arduino and it gave me an error about the line
fill(#36ff00) how could i fix this im running windows btw
kenkoknz3 years ago
Hi
Excellent project, but it appears now twitter does not support basic authentication when you run curl...what need to be changed in the bash script?
Thanks,
k
action_owl (author)  kenkoknz3 years ago
They recently updated Twitter's authentication method, I'll have to rewrite the bash script sometime, but considering I have capstone this semester I may not get around to it :(
yoyojoeco3 years ago
Do you think it would be possible to send it to a google buzz or other account instead?
yoyojoeco3 years ago
Sweet but looks complicated.
sardines4544 years ago
I can't seem to download the files in your 'ible.  Every time I click the link it downloads a file with some wierd name and a .tmp extensions.  Do you have anywhere else that I could download the code from?
action_owl (author)  sardines4544 years ago
That's weird, Something must be up on instructables end, I'm adding the code in plain text to step 6 right now.
just rename the file extension to pde and it will work
I've had this problem before. Just rename the file to the extension you need. SIlly instructibles.com
Cool and awesome!! I would be tempted to just hook the ldr to my joystick port and cut out the arduino.. I would use freebasic to get info from the joystick port and then call twidge to do the twitter via the shell. Probably use an antique computer running Debian to do all this.
_soapy_4 years ago
Looking at this, and your tweets, either you are working really late, or a 5am badger or moth is messing your sensor up. Might I suggest a small delay in the code so it triggers after (say) 1/4 of a second?
stanuszekj4 years ago
the ohms resistor is 100K about the LDR radioshack does not have them in stock throughout there website chain
yosama1014 years ago
How do you open the twitter.trip file? and Im having a bit of trouble with your instuction, like the code.
action_owl (author)  yosama1014 years ago
Could you be a bit more specific? You can message me with detailed questions too.
Oh, I dont need this anymore. I did it for a school assignment. It ended up not working, BUT we got an 85% on it, which is good lool for it not working lmao.
danahyatt4 years ago
Nice project. I want to try this one for my first. Where do I purchase the Arduino? I will mount the laser like in the plans. Can you expand on how you used the webcam, zawtv? Perfect choice of linux arch for the os.
action_owl (author)  danahyatt4 years ago
I usually get my arduinos from sparkfun.com,  If you install zawtv it will also install the program called "webcam". If you have problems getting your webcam working start a thread in the Arch Linux forums and somebody will get you going, Or post back with specifics and I'll try to help your through any problems, good luck.
Printed my parts list and read Arch Linux wiki & forums plus watched few Youtube how to build the Arch Kernel. Will order Arduino today from sparkfun.com.  Thanks!
Build a kernel? I'm not sure about Arch Linux, but I never had to mess with anything like that on Ubuntu. Painless installation, works "out of the box".
action_owl (author)  netgrazer4 years ago
I've never had to compile the kernel in Arch either?
I am purchasing the "Aruuino USB Board" from sparkfun, is this the right one?
coolio490854 years ago
1+ for Django
Alpvax4 years ago
could require alot of code editing, (i dont know as im not an arduino user, although this could convince me otherwise) but could it be linked with just a webcam and used as an intruder alert, getting the webcam to photograph whoever entered your room??

awesome 'ible
jridley4 years ago
Wouldn't it be more useful to use an infrared laser?  The red laser is too easy to notice.
yosama1014 years ago
How sensitive does the LDR have to be? WHat were the specifications of the LDR you used?
action_owl (author)  yosama1014 years ago
The one I used is this one or one very close to it. (it was in my box of random parts so not 100% sure) The details don't matter so much as long as you get light readings from it.
The laser will be powerful enough to activate it so any basic LDR/Photocell will work. Worst case scenario you may have to adjust the "int threshold=500;" line in the arduino.pde file.
renehug4 years ago
Thanks for posting this here! Do you have any idea what range you can cover with this setup?
action_owl (author)  renehug4 years ago
 The limiting factor is the range of the laser and how good you are at aiming the laser back at the LDR, in theory you could even use multiple mirrors and cover a lot of ground
t4kitty4 years ago
can you follow these steps on window

t4kitty t4kitty4 years ago
windows*
Buzzsushi4 years ago

do you have like a radioshack part number for the LDR?
And how many ohms is the resistor?

and-reas4 years ago
Damn, this is so awesome! Maybe I'll be buying myself an Arduino for my birthday soon..
mrmath4 years ago
What's the twitter link?  I tried arduinotripwire (from the video), but it couldn't find it.
action_owl (author)  mrmath4 years ago
I don't know if you know about it, but you can upload pics to twitpit.com under your twitter account, and then link to them in twitter.  Since I know NOTHING about arduino (including how to spell it), I have no idea how hard it would be to get the pics from the tripping up and linked to the twitter.  But, there's my thought.

Are you planning on leaving it running?
action_owl (author)  mrmath4 years ago
I considered something like that with tinyURL but thought it would be too much trouble until I checked your link and realized that twitpic has an API. It would be pretty easy to make it all work together I may consider adding extra steps when I have more time. I'm not leaving it running right now, I might in the future though.
Fred826644 years ago
Nice stack of books toped off with Fedora and RHE . oh and cool ible
winterfresh4 years ago
 I think this qualifies as awesome.... Good work!
iBurn4 years ago
So those thirty seconds it took me to subscribe to you, well worth it. ;D
Very cool.  Lots of uses for this!
Clever and devious!