Deprecated: Assigning the return value of new by reference is deprecated in /f2/blendedtechnologies/public/wp-content/plugins/pmetrics.php on line 1192

Warning: Cannot modify header information - headers already sent by (output started at /f2/blendedtechnologies/public/wp-content/plugins/pmetrics.php:1192) in /f2/blendedtechnologies/public/wp-rss2.php on line 8
Blended Technologies http://www.blendedtechnologies.com Established January 2005 Thu, 09 Sep 2010 18:24:03 +0000 http://wordpress.org/?v=2.0 en Welcome to Blended Technologies http://www.blendedtechnologies.com/welcome-to-blended-technologies/58 http://www.blendedtechnologies.com/welcome-to-blended-technologies/58#comments Mon, 09 Jan 2006 22:25:58 +0000 Greg - CEO/Founder Uncategorized http://www.blendedtechnologies.com/welcome-to-blended-technologies/58 This is a smal company with experience in the following general areas:

  1. Quality software consulting focusing on web applications, database design and optimization, and office automation
  2. Inventing innovative new products, electronic or otherwise

Check out what I’ve done so far.

To learn more, there is an About page, a page to contact me, and just start reading the regular blog updates below.

]]>
http://www.blendedtechnologies.com/welcome-to-blended-technologies/58/feed/
New Libraries for UtilityMill http://www.blendedtechnologies.com/new-libraries-for-utilitymill/247 http://www.blendedtechnologies.com/new-libraries-for-utilitymill/247#comments Thu, 09 Sep 2010 18:24:03 +0000 Greg - CEO/Founder Python Announcements Utility Mill http://www.blendedtechnologies.com/new-libraries-for-utilitymill/247 Utility Mill, my web application for building quick Python utilities now has the following libraries available for use in your utilities. Head on over and try it out.

Python Excel Tools: xlrd, xlwt, xlutils
These tools (Home/Documentation) let you read, write, and manipulate Excel files. They’re a huge improvement over pyExcelerator.

PyYAML
PyYAML(Home/Documentation) is a YAML parser and emitter for the Python programming language.

Biopython
Biopython(Home/Documentation) is a set of freely available tools for biological computation written in Python.

I also updated pyparsing to version 1.5.5 as requested by users.

I can’t wait to try out some utilities using BioPython.

]]>
http://www.blendedtechnologies.com/new-libraries-for-utilitymill/247/feed/
Creating a Printed Circuit Board with a Laser Printer - My First Attempt http://www.blendedtechnologies.com/creating-a-printed-circuit-board-with-a-laser-printer-my-first-attempt/244 http://www.blendedtechnologies.com/creating-a-printed-circuit-board-with-a-laser-printer-my-first-attempt/244#comments Sun, 24 Jan 2010 02:07:36 +0000 Greg - CEO/Founder other http://www.blendedtechnologies.com/creating-a-printed-circuit-board-with-a-laser-printer-my-first-attempt/244 I attempted to follow the tutorial here to make a printed circuit board (PCB) using only the following: 1 piece of copper-clad FR-4 1 OZ .32″ PCB, PCB Etching solution (Ferric Chloride), a laser printer, a page cut out from a glossy magazine, and an iron.

But my first attempt did not go very well.

Here is the circuit I was trying to print:

Eagle brd file for electronic compass breakout

Below is what I ended up with after soaking in water and peeling off the paper. You can see that the connection areas seem to have bled together. I wonder if the circuit I’m trying to print is just too small for this method? Maybe homemade PCB’s are only for boards connecting big push through components together and not for small surface mount devices?

Printed Circuit Board (PCB) Using a Laser Printer

]]>
http://www.blendedtechnologies.com/creating-a-printed-circuit-board-with-a-laser-printer-my-first-attempt/244/feed/
New Website - Beckys Reviews http://www.blendedtechnologies.com/new-website-beckys-reviews/241 http://www.blendedtechnologies.com/new-website-beckys-reviews/241#comments Sun, 30 Aug 2009 17:25:43 +0000 Greg - CEO/Founder other Announcements http://www.blendedtechnologies.com/new-website-beckys-reviews/241 My wife reads a lot of reviews of products and services before buying, so I made her own review site so she can start writing them too.

I started putting reviews of books I’ve read there too. I’m a guest blogger over there :-)

Let me know if you have any feedback on what would be useful.

Go check it out now: beckysreviews.com

]]>
http://www.blendedtechnologies.com/new-website-beckys-reviews/241/feed/
How I Created a Haptic Ultrasonic Range Finding Hat http://www.blendedtechnologies.com/how-i-created-a-haptic-ultrasonic-range-finding-hat/234 http://www.blendedtechnologies.com/how-i-created-a-haptic-ultrasonic-range-finding-hat/234#comments Tue, 18 Aug 2009 23:47:55 +0000 Greg - CEO/Founder other http://www.blendedtechnologies.com/how-i-created-a-haptic-ultrasonic-range-finding-hat/234 I came across this project a while back that lets you “see” with ultrasound:

The ultrasonic haptic vision system enables a person to navigate hallways and around large objects without sight, through the use of an ultrasonic rangefinder that haptically interfaces with the user via tiny vibrating motors mounted on the user’s head.

ultrasonic_haptic_hat.JPG

It looked so cool I decided I must have one of my own. And being a newly minted Arduino owner, I figured no electronics project was out of my reach :-)

First I changed the design around a little. Here’s what mine ended up looking like:
ultrasonic_range_finding_hat_final_small.JPG

My Changes

Instead of having the ultrasonic sensor rotate around your head, and give you distances in every direction, I have it simply tell you the distance to the nearest object in the direction you’re facing. I thought this might make for a more intuitive “interface”. I also used a stylish baseball cap instead of a dorky hardhat.

Instead of mounting the whole Arduino right on the hat, I decided to just include the components of the Arduino I needed. This is called building a Standalone Arduino. You can run your Arduino sketch unmodified but with only a few inexpensive components. This way I won’t be tempted to cannibalize my nifty hat for its Arduino for whatever project comes along next.

Here is a tutorial for building a standalone Arduino. (And here is another.)

What I used

PING))) Ultrasonic Sensor:

This guy sends out an ultrasonic pulse from one of these two transducers and listens for the echo with the other one. You can calculate the distance from the length of time it takes the echo to return.

The hat ($5 from Walmart)
arduino_hat_small.JPG

And some miscellaneous parts:

Construction

I built everything on a breadboard to make sure it worked. I then soldered everything to the protoboard:
range_finding_hat_final_circuit_small.JPG

(I won’t show you the other side of this which would reveal my horrendous soldering mistakes.)

I popped the ATMega chip into my regular Arduino and loaded the sketch onto it. Then I popped it out and put it into the chip seat on the new protoboard. Since everything is wired up just like an Arduino, the sketch can run unmodified. This method also required that my ATMega328 already had an Arduino boot loader loaded.

I set the vibrating motor in the flap inside the hat. I cut off part of a pen case and glued the moter in that. This lets the motor spin freely without worrying about fabric interfering.
motor_in_hat_small.JPG

Results:

It works OK. I can find things like doorways and walls with my eyes covered!

My main complaint is that there isn’t very much variability in the vibration motor. The program it’s running converts the distance in inches to the object you’re facing into a voltage to send to the motor (pulse width modulation). E.g, seven feet away means almost no voltage and the motor spins slowly, one foot away means lots of voltage so it vibrates more. However I can effectively only “feel” three states: something in front of me, nothing in front of me, and something really close to me. I was hoping I could scan my head up and down stairs and feel the variation between each step, but the motor just can’t get that fine grained.

If you make your own, you might want to find a better motor, or have several motors where close objects make say three motors run, and far objects only one. Or maybe just make it beep instead of vibrate and use auditory cues to find your way around.

All in all it was a great learning experience, and hopefully I’ll find a practical use for it soon …

The Arduino sketch (the program the micro controller runs):

/*
Read distance using Ping sensor, and vibrate
motor by how close distance is to sensor.
(Most of code comes from http://www.arduino.cc/en/Tutorial/Ping)

Greg Pinero
July 2009
*/

#define debug //debug for debugging, anything else otherwise
const int pingPin = 7;
const int vibPin = 6;
int pulseOut = 0;

void setup() {
  // initialize serial communication:
  #ifdef debug
  Serial.begin(9600);
  #endif
  pinMode(vibPin,OUTPUT);
}

void loop()
{
  // establish variables for duration of the ping,
  // and the distance result in inches and centimeters:
  long duration, inches, cm;
  // The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
  // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
  pinMode(pingPin, OUTPUT);
  digitalWrite(pingPin, LOW);
  delayMicroseconds(2);
  digitalWrite(pingPin, HIGH);
  delayMicroseconds(5);
  digitalWrite(pingPin, LOW);
  // The same pin is used to read the signal from the PING))): a HIGH
  // pulse whose duration is the time (in microseconds) from the sending
  // of the ping to the reception of its echo off of an object.
  pinMode(pingPin, INPUT);
  duration = pulseIn(pingPin, HIGH);
  // convert the time into a distance
  inches = microsecondsToInches(duration);
  //vibrate proportionally to closeness
  pulseOut = inchesToPulse(inches);
  analogWrite(vibPin,pulseOut);
  #ifdef debug
  Serial.print(inches);
  Serial.println();
  Serial.print(pulseOut);
  Serial.println();
  Serial.println();
  #endif
  delay(100);
  analogWrite(vibPin,0);
}

float inchesToPulse(int inches)
{
  //curved function so closer distances have more variation
  int MaxInches = 133;
  int minPulseOut = 70; //vib motor won't spin below ~50-70
  //(3 was way too steep) Only felt motor within a foot or two
  float powerConst = 1.5; //steepness 1 for line >1 for steeper
  int pulseOut;
  pulseOut = (int)(pow(((MaxInches - (float)inches)/MaxInches),powerConst) * (255.0-minPulseOut)) + minPulseOut;
  if (pulseOut < = minPulseOut) {pulseOut = 0;}
  return pulseOut;
}

long microsecondsToInches(long microseconds)
{
  // According to Parallax's datasheet for the PING))), there are
  // 73.746 microseconds per inch (i.e. sound travels at 1130 feet per
  // second).  This gives the distance travelled by the ping, outbound
  // and return, so we divide by 2 to get the distance of the obstacle.
  // See: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
  return microseconds / 74 / 2;
}

long microsecondsToCentimeters(long microseconds)
{
  // The speed of sound is 340 m/s or 29 microseconds per centimeter.
  // The ping travels out and back, so to find the distance of the
  // object we take half of the distance travelled.
  return microseconds / 29 / 2;
}
]]>
http://www.blendedtechnologies.com/how-i-created-a-haptic-ultrasonic-range-finding-hat/234/feed/