Hack-a-Day
Automated plant growing
The Cheap Vegetable Gardener sent us his fully automated grow chamber project. In the quest to have fresh strawberries year round, they’ve made some progress in the area of automating their plant care. The whole thing is controlled by a computer that can turn on/off the lights and adjust the temperature. It also takes snapshots and logs the environment conditions so you can chart it all out nicely. The automated watering feature isn’t done yet, but hopefully will be soon.
Make a plasma cutter
For those unfortunate few of you who don’t already have a plasma cutter sitting around, [jandgse812] is here to help. He walks you through the process of building your own plasma cutter from scratch. Adding up the list of parts brings the total project to roughly $300. He has included visual diagrams for all the wiring as well as specific part numbers and where to get them. Be careful, this is potentially very dangerous, but also very cool. You may need to get a copy of the mission impossible theme to play whenever you use it. At least, that’s what [jandgse812] recommends. You can see a video of it in action after the break.
Twitter IRC server, tircd
tircd is an ircd proxy for talking to the Twitter API. It should work with any standard IRC client. After running the Perl script, you authenticate to the IRC server using your Twitter username as your /nick. Join the room #twitter and the /topic will be set to your last update. Any message you type will update Twitter and the room’s topic. All of the people you are following show up in the room as users and post messages as they tweet. If you private message one of them, it will become a direct message on Twitter. Other commands work too: /whois to get a person’s bio, /invite to start following, and /kick to unfollow. The project is brand new and will be added new features in the future like Search API support. Follow @tircd for updates.
Parts: Digital proximity sensor (Sharp GP2Y0D02)
The GP2Y0D02 is an infrared proximity sensor with a detection field that extends 80cm. This type of sensor can be used to build collision avoidance systems for robots. We’ll demonstrate this sensor using a single resistor and a multimeter.
Sharp GP2Y0D02 fixed 80cm IR proximity detector (Digikey #425-2064-ND, $14.38). Datasheet (PDF).
The GP2Y0D02 requires a 5volt power supply (not shown). A 0.1uF bypass capacitor between power and ground (C1) is a good idea, but we didn’t use it in our demonstration. The open collector output (pin 1) pulls to ground when no object is detected, a 12K pull-up resistor (R1) holds the signal high when an object is detected.
In the demonstration we connected the output of the sensor to a multimeter. When nothing is in front of the sensor, the detector holds the output low (0.40volts). When we put a PCB in front of the sensor, the output changes to high-impedance and the pull-up resistor (R1) holds the signal high (5volts).
Why open collector?
An open collector output doesn’t toggle between high and ground, it toggles between ground and unconnected. The unconnected state, also called high impedance, exerts nothing on the output and allows the signal line to float. This is an undefined state for most microcontrollers that returns rapidly varying values, so we use a resistor (R1) to hold the signal high. The open collector output overcomes the small amount of current flowing through resistor to register the low state. Without this resistor, the output will never reach a proper high state.
Open collector outputs are useful when several sensors need to share the same microcontroller pin. Multiple sensors outputting high to the same microcontroller pin is generally considered a bad practice that can damage parts of a circuit. Multiple open collector outputs, however, can only switch to ground; a single resistor holds the signal high. In the case of multiple GP2Y0D02s, the signal will be high only when all connected sensors detect an object and switch to high impedance state.
Like this post? Check out the parts posts you may have missed.
Homebrew on the PSP3000
[matiaz] has released an exploit which allows homebrew on the PSP3000. It takes advantage of a vulnerability when loading save games on a game called GripShift. You can see the PSP running unsigned code in the video.
[thanks wraggy]
7 color hand held laser projector
[rog8811] sent in this really cool hack where he used the optics sled from a PS3 as a foundation for a 7 color hand held laser projector. Combining a green laser, a blue ray laser, and a red laser, he is able to produce a variety of color including white. There are step by step instructions on how to make a multicolored laser. He then goes even further, showing how to integrate this into a hand held projector with pre programmed patterns. You can see some examples of the different colors and patterns in this video.
Parallel parking system
Autoblog dug up this classic mechanical engineering project from 2006. A team of five University of Toledo students constructed a system to help parallel park a car. First, you drive nose first into the space. Hydraulic rams then lower the drive wheel out of the trunk, raising the rear of the car. The single wheel is also hydraulically driven and moves the car into the space. They have a blog documenting the six week build. Have a look at the demonstration video below.
Hacking at Random 2009 call for papers
With the Chaos Communication Congress concluded, it’s time to start looking towards the next massive European hacker event. This means Hacking at Random August 13-16th in the Netherlands. It’s a four day long camp experience that will feature many conference talks, interactive projects, and more.
The team has selected three tracks in their official call for papers: Dealing with data, Decentralization, and People and politics. You can find more details in the post. Deadline is May 1st.
[photo: mark]
Light to sound converter
[Alex] built what he calls a light to sound converter. It reacts differently depending on the type of light: remote controls, light bulbs, TV screens, etc. A photodiode is used with an amplifier to pick up the light change. That signal is dumped through a dual opamp. He swapped in several different types of photodiodes and settled on the BPW34 intended for visible light. He’ll be incorporating this into a much larger project.
Tiny projector teardown
The team from Tech-On has taken the time to teardown two interesting microprojectors. The first model they tackled was the Optoma PK101. It’s based around a digital micromirror device (DMD) like those used in DLP. Separate high intensity red, green, and blue LEDs provide the light source. A fly-eye style lens reduces variations between images. They noted that both the LEDs and processors were tied directly to the chassis to dissipate heat.
The next projector was the 3M Co MPro110. It uses Liquid Crystal on Silicon (LCoS) technology. The light source is a single bright white LED. The projector seems to have more provisions for getting rid of heat than the previous one. The most interesting part was the resin polarizing beam splitter. It not only reflected specific polarizations, but also adjust the aspect ratio.
[via Make]
Game Boy Pocket backlight
[palmertech] and [Bibin] have both completed backlight projects for the Game Boy Pocket recently. The most difficult part of the transplant is carefully removing the reflective backing on the LCD. After a thorough cleaning, a diffuser and backlight panel were added. [palmertech] used a backlight salvaged from a DS, while [Bibin] built his own using LEDs. You can see his backlight in the video embedded below. There’s a disassembly video too.
[via Engadget]
Washing machine generator
Building a generator can be a fun and fairly simple project. Getting a large DC motor however can sometimes be difficult. Here is a writeup on how to make a generator from an old washing machine drive. It looks like you might need to find a specific machine called the “Smart Drive” to follow their directions exactly though. If you happen to find one, or know of a unit with a similar motor, you can follow these directions to end up with a fairly decent wind powered generator.
[thanks TripleB]
The Malware Challenge
Our own [Anthony Lineberry] has written up his experience participating in the 2008 Malware Challenge as part of his work for Flexilis. The contest involved taking a piece of provided malware, doing a thorough analysis of its behavior, and reporting the results. This wasn’t just to test the chops of the researchers, but also to demonstrate to network/system administrators how they could get into malware analysis themselves.
[Anthony] gives a good overview of how he created his entry (a more detailed PDF is here). First, he unpacked the malware using Ollydbg. Packers are used to obfuscate the actual malware code so that it’s harder for antivirus to pick it up. After taking a good look at the assembly, he executed the code. He used Wireshark to monitor the network traffic and determine what URL the malware was trying to reach. He changed the hostname to point at an IRC server he controlled. Eventually he would be able to issue botnet control commands directly to the malware. We look forward to seeing what next year’s contest will bring.
Microwave timer switch
[Koil_1] knows he’s forgetful. In order to save himself from any undue harm, or possibly to keep from burning his house down, he felt he needed a timed power switch to run his soldering iron from. He realized he could harvest the relays and timer circuit from a microwave. This allows him to have presets for specific tasks. Considering the fact that you can get a used microwave for free or close to it most of the time, this was a great re use of something that might just go wasted otherwise. Great job [Koil_1].
Make: television premiering today
Make’s television series will be premiering on public television across the US over the next couple days. If it’s not showing in your area, you aren’t out of luck. All of the segments from the first episode have already been published online at makezine.tv.
Automated wire cutter and stripper
Kit builder oomlout—we’ve featured their servo bot—needed to produce a lot of precut wires. After cutting and stripping more than their fair share, they decided to apply some heavy engineering to make things easier. They constructed a machine to do the job for them. It has three main components: a servo driven wire feeder to measure the length, a two servo wire stripper that uses an exacto blade, and finally a wire cutter made from snips and a drill motor. The machine is controlled using an Arduino. They’ve published all the plans and code to Thingiverse incase anyone else wants to build a similar machine for their own kit shop. A video of the machine is embedded below.
[via Hack a Day Flickr pool]
Twittering washing machine
If you don’t have at least one twittering appliance in your household, you’re getting behind. The latest addition to the spread is a twittering washing machine. [Ryan] tells us that he kept accidentally forgetting to retrieve his clothing from the washing machine, resulting in smelly mildewy clothes. Now, his washing machine twitters to announce it is done. It also has a sign in the house that displays its status to help him remember. We’ve seen unborn babies and toasters twitter, what’s left? Remember those refrigerators that were supposed to let you know that you’re out of certain food? Why don’t we see a twittering fridge yet?
RFID dorm room door
[Max] sent us his dorm room RFID controlled lock. While RFID door locks are nothing new, his implementation is very slick. The entire unit is attached with suction cups to a mirror on the inside of the door. It looks like it could be removed and put elsewhere in a matter of seconds. That’s pretty slick. Much cleaner than the touch sensitive dorm lock we saw last year.
Parts: I2C digital thermometer (TC74)
Microchip’s TC74 is an inexpensive digital temperature sensor with a simple I2C interface. It has a resolution of 1 degree Celsius, and a range of -40 to +125 degrees. This is an easy way to add temperature measurement to a project without an analog to digital converter. We’ll show you how to use the TC74 below.
Microchip TC74 digital temperature sensor (Octopart search, starting at $0.88)
The TC74 comes in five pin through-hole and surface mount packages, see the TC74 datasheet (PDF). We couldn’t find a Cadsoft Eagle footprint for any version of this part, if you know of one please link to it in the comments.
Different versions of the TC74 are calibrated for specific voltages, but all work from 2.7-5volts. The TC74A5 we used is most accurate when operating at 5volts, but we powered it from a 3.3volt supply. The I2C connection needs 2 pull-up resistors to hold the bus high (R1, R2), 2K-10K should work. C1 is a 0.1uF decoupling capacitor.
We used the Bus Pirate universal serial interface in I2C mode to test drive the TC74, but the same principals apply to any microcontroller. We powered the TC74 from the Bus Pirate’s 3.3volt supply, and used the on-board pull-up resistors to hold the I2C bus high.
Command Value Select temperature register 0×00 Select configuration register 0×01The TC74’s write address is 0×9a, and the read address 0×9b. It has two, one-byte registers. Register address 0 holds the temperature reading, register 1 holds the configuration settings.
Configuration register
Bit 6 of the configuration register is 0 at power-on, and changes to 1 when the first valid temperature reading is available. Bit 7 is writable, and puts the TC74 in a power saving standby mode. Reading the register involves two steps: use a partial write command to select the register, then use the read command to retrieve the value.
I2C>{0×9a 1}
210 I2C START CONDITION
220 I2C WRITE: 0×9A GOT ACK: YES <–write address
220 I2C WRITE: 0×01 GOT ACK: YES <–select config register
240 I2C STOP CONDITION
First, we select the configuration register with a partial write command. This doesn’t actually write a value, it selects the register to read and write. { creates the I2C start condition, followed by the TC74 write address (0×9a) and the select configuration register command (0×01). } issues the I2C stop condition and ends the transaction.
Now we can read the contents of the register.
I2C>{0×9b r}
210 I2C START CONDITION
220 I2C WRITE: 0×9B GOT ACK: YES <–read address
230 I2C READ: 0×40 <– register value (01000000)
240 I2C STOP CONDITION
I2C>
The read address (0×9b) returns the one byte register value (r). The configuration register value, 0×40 or 01000000, shows that the device is out of standby (bit 7=0), and a valid temperature reading is available (bit 6=1).
The TC74 has a low-power standby mode. Enable it by writing 1 to bit 7 of the configuration register.
I2C>{0×9a 1 0b10000000}
210 I2C START CONDITION
220 I2C WRITE: 0×9A GOT ACK: YES <–write address
220 I2C WRITE: 0×01 GOT ACK: YES <–select config register
220 I2C WRITE: 0×80 GOT ACK: YES <–value to write (01000000)
240 I2C STOP CONDITION
I2C>
The register is written with single three-byte command. First we send the write address (0×9a), followed by the register to select (0×01), and finally the value to write (0×80). Only bit 7 of the configuration register is writable, the values of bits 6-0 are ignored.
Read the register again to verify that the command worked.
I2C>{0×9a 1}{0×9b r}
210 I2C START CONDITION <–first command sets register
220 I2C WRITE: 0×9A GOT ACK: YES <–write address
220 I2C WRITE: 0×01 GOT ACK: YES <–config register (1)
240 I2C STOP CONDITION <–end first command
210 I2C START CONDITION <–begin second command
220 I2C WRITE: 0×9B GOT ACK: YES <–read address
230 I2C READ: 0×80 <– register value (10000000)
240 I2C STOP CONDITION <–end second command
I2C>
The register value, 10000000, now shows that the device is in standby (bit 7=1). Notice that bit 6 is now 0, no temperature data is available.
Clear bit 7 to exit standby, then wait for bit 6 to return to 1 before reading the temperature register.
I2C>{0×9a 1 0b00000000}
210 I2C START CONDITION
220 I2C WRITE: 0×9A GOT ACK: YES <–write address
220 I2C WRITE: 0×01 GOT ACK: YES<–select config register
220 I2C WRITE: 0×00 GOT ACK: YES<–value to write (00000000)
240 I2C STOP CONDITION
I2C>
Temperature data is ready when the configuration register value returns to 0×40 (01000000).
Temperature
The temperature register is read in two steps. First, a partial write command selects the temperature register (0), then a read sequence returns the contents.
I2C>{0×9a 0}{0×9b r}
210 I2C START CONDITION
220 I2C WRITE: 0×9A GOT ACK: YES <–write address
220 I2C WRITE: 0×00 GOT ACK: YES <–select temperature register
240 I2C STOP CONDITION
210 I2C START CONDITION
220 I2C WRITE: 0×9B GOT ACK: YES <–read address
230 I2C READ: 0×18 <–grab one byte
240 I2C STOP CONDITION
I2C>
The temperature is an integer value of degrees Celsius, negative numbers are represented as a twos complement. Positive values from 0 to 127 degrees Celsius are simply represented by that value. Negative temperatures have bit 7 set, and range from -1 to -65 (255-128), see table 4.4 on page 8 of the datasheet. The hexadecimal value 0×18 is equal to 24 in decimal, so the temperature reading is 24C (75F).
Like this post? Check out the parts posts you may have missed.
iPhone 3G unlock released
As promised, the iphone-dev team has released yellowsn0w. You can install/uninstall via Cydia. It works fine with the latest firmware too. This sentence is filler.