Saturday, November 14, 2009

The Fauxtar

The Fauxtar:

It's a controller for Frets on Fire an open source version of Guitar Hero. Katie and I have gotten kind of addicted to it, so I decided to make a real controller for it. It's made from a lot of scrap pine, some pieces of steel and aluminum that I had lying around, and the control PCB from an old PS/2 keyboard. The game requires the F1, F2, F3, F4, F5, right Shift, and Return keys, so I mapped out the F-keys on the neck, and the right Shift and Return (alt pick and pick, respectively) to two switches in the body. I'm working on the second generation of buttons, made from the same lighted membrane switches as those on the Monome.

Monday, November 02, 2009

Good Weekend!

Well, that was a good weekend! Katie and I recently discovered Frets on Fire, an open-source alternative to guitar hero, so I decided to make a guitar-shaped controller for it. I'm now half done, so here's a picture of Katie's Axe in its current condition:

Also, on a visit to Finger Lakes ReUse yesterday, we found an iRobot Roomba 400 for $20!

All in all, a pretty good weekend. More on the Axe, and what we do with the Roomba as events warrant.

Wednesday, August 05, 2009

New Work at Work

Let's see... since the last post, I've worked on several things at work, but the most interesting thing coming soon will probably be the chimp-proofing project I'm going to be working on for sound recorders that are going to be used in central Africa. I'll have pictures of the new office in all its glory up soon.

Saturday, July 11, 2009

Over a Month

Lots of things have happened in the last month, but here's what matters:
1. Katie and I moved to Ithaca, NY after
2. I got a job as a "Mechanical Design and Manufacturing Engineer" with the Cornell Lab of Ornithology's Bioacoustics Research Program after which
3. I was told to I may be refurbishing this shop
CLO BRP First Week
and
4. Katie built a worm bin!

Today, I think we're going to the Dragon Boat races on Cayuga Lake, and watching from the Ithaca Farmers Market. And on monday, I have to write a justification for spending $1800, rather than $10000, on a milling machine.

Friday, June 05, 2009

Pine Siskin Patterns


pineSiskin1
Originally uploaded by petmar0
I took a look at some bird songs in RavenLite, and when I saw this in the "twee!" syllable of Pine Siskin song, I realized something interesting was going on. Not only were there two independent signals, the melodies were going in opposite directions, and the composition led to a great deal of harmonics. The most interesting thing is the way you can tell that they are harmonics: the slopes of the lines increase geometrically as they increase in frequency, causing what looks to be an exponential increase.
Who says songbirds aren't fascinating?!

Tuesday, May 19, 2009

New Instructable


Simple Bike Pannier - More DIY How To Projects
And next time, I think I need to rant about seltzer, and more importantly, soda.

Friday, May 08, 2009

It's been a while...

Though, in my defense, I've been rather busy. I will admit that a lot of this time has been spent birding, and, strangely, I feel as though that's not quite the right subject matter for this blog. I may have to start a birding blog. Over the last week, I have had a lot of job search-related things to do, and so that is what's keeping me busy now. I think I'll probably get a little bit more update time, but I'm not certain how much, or when.

Wednesday, May 06, 2009

Trying out Shutterstock

I'm trying out Shutterstock. Within the next couple of days, a gallery should appear in this post. When that happens, I'll probably put it in the sidebar.



My latest images for sale at
Shutterstock:













My most popular images for sale at
Shutterstock:








Friday, May 01, 2009

The Things People Give You...

My Going Away Present
This happens to be a concrete core sample that was found outside of the Materials Research Lab at Penn State, under a bush. The person who found it is the technical staff machinist, Chris Jabco. Impressed by the smoothness of the core, Chris clear-coated the sample with urethane. Then, it sat on his desk for over a year and a half. Yesterday, on my last day at MRL, I was told that the tech staff had something they needed to give me before I left. It turns out that they all signed the core, and that it was now my going away present. Chris said, "That there is a conversation piece." I said, "I'll put it on the coffee table. No, it'll be one leg of the coffee table!"

Ah, the wonderful going away presents they give you at places where you make stuff.

Wednesday, April 29, 2009

More on the Birding Cup

The Birding Cup has become an annual event for us. Katie first participated in the 24 hours of birding madness two years ago, and last year was my induction. In both cases, we competed for "The Boot", an award given to birders who spot the most species while only using human-powered transportation. After having won The Boot last year, our team, the Timberdoodles, proclaimed that it "smelled of manky victory!" Last year, we got over 40 species by hiking, and camping, around Bald Eagle State Park. This year, however, we're staying in town, and biking an undisclosed path, hopefully to more "manky victory"!

Sunday, April 26, 2009

Birding Cup Preparation

Yesterday, Katie and I were out all day on a bike ride and hike, preparing for the Birding Cup. We biked about 8 miles, and probably walked another 2, and saw about 24 species of birds. We're hopeful that we'll do better during the Cup itself.
Here's a link to an album of the day:
Birding Cup Prep, Kat's Kids, and Blue and White Weekend

Saturday, April 25, 2009

AdSense

Finally managed to get Google AdSense to work. Hope those of you who are still coming here don't mind, and don't mind clicking a few things.

Let me know what you think of it in the comments, especially if you'd like sidebar, between posts, or both.

Friday, April 24, 2009

Today's Special

Bird's Nest
I saw this bird's nest today at work. I love it when birds actually use aviary netting in their nests!
Bikes
And we biked over to Otto's for dinner today.

Check out the flickr photostream, and also the Picasa page over there on the right navbar!

Haiku


Long morning shadows
Ever too quickly become
Long afternoon ones.

My Bike Ride Home

Rode home from Innovation Park on my bike yesterday, and saw a Red Tailed Hawk, a Northern Flicker, a pair of sparkin' Goldfinches, and quite a few other birds. It's funny how much we miss by using cars.
Bike Ride Home

Wednesday, April 22, 2009

A Good Press Fit

Press Fit Detail
I should do an Instructable on this, but here's a brief word on press fitting. In the piece above, which is a counterweight for a dancer arm on a film stretching machine, there is a copper threaded fitting press fit into a brass part. I made this by first drilling out the copper piece to the right diameter, as seen in the video, tapping the hole for a 1/4-20 thread, and then turning the copper down to the right diameter, .318". The copper then had a shelf of this diameter, and an OD of .5". I then turned the brass piece so that the bottom had a .496" diameter hole leading into the .315" diameter hole. I put the whole assembly into the vise and pressed it together, then went at the bottom with a ball-peen hammer. Finally, I turned the center of the bottom in until the copper and brass were sitting coplanar to one another. Then it was file and sandpaper time!
video

I think it looks nice, if I do say so myself.

Monday, April 20, 2009

The Case for Patents

As a maker of things, I want, nay, need for things to be open. I need to be certain that I can find documentation on whatever it is that I'm working with. This calls for open standards of information exchange. The best way to do this is open sourcing.
However, as someone who wishes to make a living making things, and make a living making lots of different things that will eventually be manufactured, I need protection. What I offer here is what I consider to be a common sense approach to intellectual property.

1. Thou shalt be able to license thy IP for cash money.
You can patent your product to license it to companies that will manufacture it. How you negotiate those contracts is up to you.

2. Thou shalt not hurt the little guy.
You should make companies or at least larger businesses pay to be able to reproduce/manufacture your stuff, but individuals and small groups should be encouraged to make their own if they can. Another way of doing this is by allowing access to additional documentation, and by writing a good patent, which according to the USPTO, should be usable to recreate the thing you're patenting by someone "skilled in the art".

3. Code is naught but a pattern in binary, and can occur in unenforcable locales: ergo, it is not a "thing" and should not be patented.
Shoo! Scram! Software should be copyrighted, like music, art, and other arrangements and patterns. This is about patents, not copyrights! Get out of here and discuss that issue somewhere else! Remember that the binary code for DOS could also be an arrangement of states in atoms of gases in the sun's corona. This means nothing, so don't try to pass it off as something physical.

4. Similarly, process patents need to go.
A process, like software, is made up of algorithms, which are patterns of something, not a physical unitary thing like a Pneumatic Boxing Glove, or a Shark Protector Suit.

5. Thou shalt not take ownership of biological patterns.
DNA patents, too, have to go. How many times do I have to say that, if nature could make it randomly, and probably has, you really shouldn't be protecting it as IP?

6. First to file shuts out the little guy; this should not be so.
Though our system is first to invent here in the US, it is practically first to file, and it is first to file in the rest of the world. If you get to the patent office late, it doesn't matter how much proof you have, the patent won't be yours. This shuts out all of the small inventors who can't afford marauding gangs of patent attorneys to rush their patents through.

7. Thou shalt admit that IP protection is necessary.
To allow for people to make more of their wonderful ideas, there must be a way for them to pay their bills without being tied to manufacturing hundred-thousands of their wonderful products. There will always be consumers who, whether for lack of skill, time, or energy, want to buy rather than build. The profits from these sales should enable the creation of more wonderful ideas.

And finally...
8. Thou shalt pay thy staff to develop their ideas, whether or not they are part of their job, and give them due compensation in the form of majority ownership and control of their patents.
In Germany, there is a strict legal procedure governing exactly this, and saying exactly that, which can be found in this paper.

Trademarks are fine and dandy, but I think that copyright is a bad concept to begin with, and that you should pay for the media or for the file size when you buy a DVD or download a song, plus some amount to go directly to the artist. Either way, this is a post about patents. I think they're necessary to avoid having people taken advantage of by large manufacturers. And now for the comments!

Saturday, April 18, 2009

A Flag for Hack Pittsburgh

After seeing this on hackerspaces.org...

I figured that Hack Pittsburgh, aka hackpgh, needed a flag, too.
Coat_of_Arms_of_HackPittsburgh
The symbology is as follows: City walls of the coat of arms of Pittsburgh ascendant atop three bars horizontal in the blue of the city coat of arms' checker pattern; the bars represent Pittsburgh's three rivers, and the outer border of the shield is comprised of a Wheatstone bridge diagram, for the "City of Bridges", and also for its electronic significance as an amplifier, making a small thing larger, as does our organization.

Friday, April 17, 2009

Strain Test

After the dancing wires, I began thinking that perhaps I should do a little more experimentation with this technology. The video below shows the end result of my testing. The wire, it turns out, extends when heated, and shrinks, even though it's under load, when cooled. Overall, I achieved a result of 1-2% Strain, meaning that the wire extends to 101-102% of its original length when a current is run through it.

The wire itself is Nichrome, and the setup includes a stand, which holds a BNC-to-banana (female) connector, which anchors the two halves of the heating wire. The mass is a spare part made of aluminum, of approximately 1-1.5 kg, and the wire is being fed current from a temperature controller set for 30 °C, which is connected via a relay to a transformer, sending 12 VAC to the wire. The temperature controller is interfaced to the wire via a K-type thermocouple wrapped under the wire at the top of the setup.

Thursday, April 16, 2009

Hand-Drawn Madness

I got to harken back to the olden days of pen, ink, paper, and a ruler when I had to draw up these mechanical drawings this morning at work. None of the CAD software was giving me any love, so over to the desk and out with the necessaries it was.

Wednesday, April 15, 2009

The Incredible Dancing Wires


The Incredible Dancing Wires
Originally uploaded by petmar0
A couple of Nichrome heating filaments in the new heater bar that I'm designing hooked up to the new controller I built today began dancing. This is due to the fact that, when heated, they expand along their length. Since they're firmly anchored at each end, they flex away from the channels that they lay in under tension when they're at room temperature, thereby dancing when heated.

I'm going to see if I can find some time tomorrow to explore this with different wire forms. I know that the stress is proportional to heating, and that the heating, aka Joule heating or Ohmic heating, is a feedback effect which will keep going until it either melts the wire, or current is shut off. I think this could lead to some very interesting actuators, especially if I make a brush with a few of these wires together.

Flickr

This is a test post from flickr, a fancy photo sharing thing.

Tuesday, April 14, 2009

On the Importance of Z-transforms

A response to a comment on the Make: Blog post about my former entry:
My recommendations are made due to my experience. Physics is THE best program, from what I've seen and done, to go into if you want to make new, interesting, and useful things. Chemistry ranks a close third behind the engineering disciplines. Of course, if you just want to perpetually use technology without understanding it, you could skip the whole math-based curriculum, but to actually make something new, you need to understand the first principles behind how things work.
Or you could just make stuff that's interesting in other majors.
At this point, my physics career has taken me from making optical acoustic transducers, to building and testing medical devices, to working with cool magnetostrictive materials, to designing and building tests and test setups for machine calibrations to building custom experimental setups, to being in charge of the refurbishment of a particle accelerator, all in about eight years. And it looks like the fun isn't going to stop any time soon!

636 of You!

Wow! My Analytics tracker shows that there were 636 of you on my blog today! Given the huge response I've gotten off of the Make: Blog, I was wondering, what would YOU like to see me write about? I'm thinking of doing a project article for Make Magazine, and was hoping to get some inspiration in the comments.

Making in College

There's an article on the Make: Blog asking about schools for making stuff. I'd like to respond to this: first of all, if you're into making things, you need to pick what kind of things to determine your major. Personally, if you're into making electronic or mechanical things, I'd recommend either going with Electrical Engineering, or Mechanical Engineering, respectively. However, if you're like me and like making anything, it's electronic or mechanical nature notwithstanding, go instead for a Physics major.
I went to two universities during my undergraduate career: the New Jersey Institute of Technology, and Ramapo College of New Jersey. The former was a great place to make things, as they are a large engineering school. However, it is located in Newark, NJ, which is a bit of a crime-ridden pit, especially in the University Heights section where NJIT is located. My major there was Applied Physics. While there, I was mentored by a brilliant professor by the name of Dr. Gordon Thomas. On my first day in his lab, he showed me to the main room of the lab suite and said, "This is your playground. The most important thing is that you have fun, and create something new."
Due to external pressures, I eventually had to leave Dr. Thomas's lab, and moved to Ramapo College. Here I enrolled in the Physics program, which has since changed to Engineering Physics. I also made the acquaintance there of two similarly brilliant professors, Drs. Anderson and Halpern. Dr. Halpern is the reason that the Physics department at Ramapo got started the way that it did, and the reason that the students always have someone to talk to about various issues. He is a professor emeritus ("retired"), and as he says, is "unable to cut his ties with the students." Since he lives locally, that comes in the form of still showing up on campus most days, hanging out in the "Physics Lounge" in G116, and mentoring students.
However, the reason to attend Ramapo College as a maker and as an Engineering Physics student, despite its small size and Liberal Arts emphasis as a college, is Dr. Phil Anderson. Dr. Anderson (not the Nobel Laureate) is the inventor of the magnetic security tag that you see used in retail stores. He is also on the board of directors of a few companies, a licensed pilot who has also flown fighter jets for the Air Force, and an EE, technically; he's full of fun and inspiring stories of vaporizing small fruit with 55-gallon drum sized capacitors, and other fun things like that. In my opinion, however, his biggest contribution outside of his interactions with students is his work in crafting the college's intellectual property policy: thanks to Dr. Anderson, if you invent something at Ramapo, you own it in its entirety. This is very, very rare in a college/university environment, and I have several friends who have used Ramapo's facilities to create things that they later patented. Dr. Anderson also teaches an "Invention for Scientists and Engineers" course that focuses on IP policy and law, prototyping, and other issues involved in making making your profession.
More information on life as a student at Ramapo can be found on my old blog, "Tales from the Lab", and for general advice to Physics students, check out "The Informed Physics Student".

Later I might tell you why not to go to Penn State, where I'm now working, but just take my word on it for now.

Friday, April 10, 2009

Smoking Dremel!

I hate it when a Dremel, especially a real, brand-name Dremel tool, begins emitting smoke. This happened to me today when I was cutting an aluminum case for a temperature controller that I was making at work.
Temperature Controller
I was making this controller for this heater that I made for our film-stretching machine.
Film Heater

Sunday, April 05, 2009

Morser 5 VDC Out

The quick brown fox jumped over the lazy dog?!

MORSER

After a long time sitting doing DCD (Dust-Collection Duty), I got my Arduino NG out, and realized it wasn't broken: I just needed to press the reset button before uploading a program! I just created a program on it to take text from a serial input and turn it into more code (CW for the hams reading this).
0405091023a.jpg
The output device is connected to pins D13 and GND, and a potentiometer is connected as a variable voltage divider between 5 VDC and GND, with the middle pin connected to A3. The potentiometer controls the speed of the code, and the output device receives TTL output for the morse code. Code follows:
/*
MORSER
cc 04/05/2009 Pete Marchetto
This program translates serial text input into morse code output. Morse code is comprised of five kinds of character elements: the short, or "dit", which is 1 u long, the long, or "dah", which is 3 u long, the intra-character pause, which is also 1 u long, the inter-character pause, which is also 3 u long, and the inter-word pause, which is 7 u long.
*/

int outputPin = 13; //pin for the LED
int inPin=3; //pin for the potentiometer
int val; //value passed from serial interface
int u=50; //unit value, for time

void setup()
{
Serial.begin(9600);
pinMode(outputPin, OUTPUT);
}

void loop()
{
u=1+analogRead(inPin);
if (Serial.available()) {
val = Serial.read();
delay(3*u);
if (val == ' ') {
delay(5*u);
}
if (val == 'A') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == 'B') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == 'C') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == 'D') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == 'E') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == 'F') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == 'G') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == 'H') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == 'I') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == 'J') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == 'K') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == 'L') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == 'M') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == 'N') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == 'O') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == 'P') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == 'Q') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == 'R') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == 'S') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == 'T') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == 'U') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == 'V') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == 'W') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == 'X') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == 'Y') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == 'Z') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == '0') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == '1') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}

if (val == '2') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == '3') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == '4') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == '5') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == '6') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == '7') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == '8') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
if (val == '9') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}

if (val == '.') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == ',') {
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
}
if (val == '?') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}

if (val == '!') {
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(3*u);
digitalWrite(outputPin, LOW);
delay(u);
digitalWrite(outputPin, HIGH);
delay(u);
digitalWrite(outputPin, LOW);
}
}
}

Saturday, April 04, 2009

Shroomery!

Today, Katie and I went to a mushroom inoculating party! We drilled holes, plugged them with mushroom mixes for both oyster and shiitake mushrooms, and sealed them with wax. We now have three pet logs sitting on our balcony, while we wait for the fruiting bodies to grow.

Friday, April 03, 2009

Hack Pittsburgh, etc.

Recently, while looking around at Pittsburgh, where I'll be moving at the end of next month, I came upon a new hackerspace that's coming online over there: Hack Pittsburgh. After perusing the forums, I quickly found that they want some classes taught. Meanwhile, I've also been in communication with dorkbot-pgh, which wants me to do a talk on AIAP and the accelerator in August. Plus which I also have a talk to do in October for MS&T in Pittsburgh. In short, it looks like my presentation skills are going to be in high demand, so I'd better brush up.

It's funny that, before I even move to Pittsburgh, I know that I'll have at least 3 evenings per month in meetings: Hack Pittsburgh, dorkbot-pgh, and 2600. I may also eventually join a wilderness SAR team to get back into that, so that's 4. Also, it's a very short hop from what I'm doing with the hacking/making groups to ham radio, so make it 5 with the Steel City Amateur Radio Club.

Not even moved yet, and already my schedule's filling up. Jeez!

Tuesday, March 31, 2009

Ups and Downs

Today has been an up and down day. I got a lot done at work, including a good bit of the new tension balance system that we're building. Then I found out that I was not accepted into the University of Pittsburgh grad program in electrical engineering. At the same time, my hopefully-future-advisor recommended another way to get in, and agreed to meet with me in Pittsburgh this coming Sunday when we go to see the Westinghouse "Atom Smasher" together (for more on this, AIAPBlog). Finally, I got some info on Hack Pittsburgh, which I think I'll be joining, along with dorkbot-pgh, when I move down there at the end of May.

Acquisitions

Things I really have to get for my workbench:
Tap and Die Set
Drill Press (at least 1/4" chuck)
Step Bit
Banana Clip Test Leads
BNC Breakout Box for my NIDAQ Card
BNC Male to Banana Female Adapter
MORE DRAWERS!
Magnifying Lamp
Scroll/Jigsaw

Anyone have any suggestions? Please put them in the comments!

Sunday, March 29, 2009

Earth Hour

Last night, Katie and I turned off all the lights and read by LED tealights for Earth Hour. This morning I did some estimates on how everybody did last night: Google Docs Spreadsheet
I have to say that the estimates are quite rough, based on 2005 estimates for personal energy use, and on press coverage versus population in various regions. The final line is based on the worldwide per person estimate from 2005, and on the WWF's estimate of 1 billion people participating.
I'm glad to say that we apparently saved between 3 and 30 GWh. Yes, that's Giga-Watt hours.

Ideas on solarCharge v.1

First of all, thanks to Chris Connor for posting v.1 on the Make: Blog!

Now, some of the considerations I've come up with for v.2:

The lack of a good ferrite core may prove the undoing of this design. As it is, the ones that I have access to seem a bit large (over 1" long and .5" wide), and the more ferrite, the higher the flux density needed to achieve saturation, and therefore the higher the current needed to drive the dc-dc upconverter. This is also why I don't want to use a regular transformer. However, a small enough isolation transformer, like those used in VCRs, TVs, stereos, etc., might just do the trick.

Next time I'm building on a breadboard. Period.

The capacitor has to be limited to below 300 µF, since the upconverter runs at about 50 kHz. If you're wondering why this is, check out the concept of reactance.

Similarly, the original Joule Thief implementation of this upconverter ran a white LED. This means that they were using a half-wave rectifier on the circuit. If I manage to pump the voltage up to about 5.6 Vrms out (with a +2.8 V offset, meaning that the AC signal is all above the zero line), I'll be able to put a regular low-wattage diode in to trim some of the oscillations, and increase the size of the next capacitor downstream. However, I could make this an LED if I can get the design up to 6.7 Vrms.

Do I really need an LED in there, though? Somebody weigh in on this in the comments. I know that the higher the voltage (short of probably 8-9 Vrms) the better, so I'll build for this anyway, but it does seem to me that the LED might just be a waste of wattage, as might the rectifier itself.

Anyway, enough about v.2. I'd better get building.

Saturday, March 28, 2009

solarCharge

After having seen this article on the Make:Blog, I said this:
How about connecting a joule-thief circuit (DC-DC upconverter) to a cap on one side and a small solar cell (like the ones in calculators) on the other? You pull off of the cap to the cell phone directly. If I remember correctly, most cell phones have internal Vregs between the battery and the rest of the circuitry, so that takes care of your OV protection. I'll see if I can build this, and then get back to you.

I then went and built the solarCharge, v.1. This is essentially the Joule Thief with a small solar cell instead of a battery, and a large (50 V, 680 µF) capacitor across the Vout leads. I'm working with the materials that might be readily available to someone who's been able to scrounge through something like an old calculator junk pile, so I don't have a ferrite core, which is probably limiting me significantly. I think what I'll do for v.2 is build without limits to what the parts are, but with a minimum quantity of parts, and track the expense.
solarCharge Amps
solarCharge Volts

Sunday, March 22, 2009

Skills

I figured I eventually had to make this list. This is a list of fabrication skills that I have, and those that I want to learn.

Fluent:
Electronic design (Discrete Components)
Basic mechanical design
Scrounging for parts
Soldering (Electronics)

Conversant:
Blacksmithing
Board design
Milling/Drill press (Metal/Plastic)
Larger-scale carpentry
Rigging
Pipe soldering

Know how to order dinner:
Turning (Metal/Plastic)
MIG/TIG Welding
Sewing

Interested, and got my hands on:
Glass blowing/bending
Sheet metal work
Precision machining
PCB etching
Woodworking

Interested, and never got to try:
Composite work (i.e. fiberglass or carbon fiber)
Wood lathe
Knitting

If you or anyone you know can teach me any of the above, or at least more than I already know, please let me know!

Monday, March 16, 2009

Etsyness


I'm now on etsy with a little electronics parts store. As I wrote on the Genteel Recessionista's comments:
Modular income spot number 1268: Electronics components.
Think about this for a moment: an old CRT is somewhere between $50 and $free these days. These used to be $200-400. The number of components inside is between 500-1500, and these are discrete components due to the high powers in a CRT. This means that you’re getting components that were originally 14¢ each on average for a maximum of ¢10. Electronic components one-off go for somewhere north of $1 a pop, even for the smallest diode. Notice where the profit comes in? Check out my etsy store to see this in practice.