New 3D printer

After getting my pick and place robot working, it was a real pain converting it over to 3D printer operation.  Switching back from 3D printer mode back to pick and place robot was an even bigger chore since I would have to re-align the cameras and calibrate the offsets.   When I was using the pick and place I really missed the utility of being able to quickly print simple parts out of plastic.

For a while I considered buying an off the shelf 3D printer like the Printrbot simple metal but decided that for the same amount of money I could build my own with all the features I wanted.  I really like the Prusa i3 design and probably would have built one if  I hadn’t come across this site describing the coreXY design.  Below is a video of what I came up with:

Posted in Uncategorized

Store Now Open

I have made a few of my battery boards for the original Raspberry Pi (models A and B) available for sale in my new web store here.  If sales are good I will continue to produce the boards and possibly release a similar board for the new Raspberry Pi B+.

Posted in Uncategorized

Automatic Nozzle Exchange on PNP

Finally have nozzle exhange working on my PNP robot.  Here’s a video of the nozzle exchange in test:

Posted in Uncategorized

Store Opening Soon

For anyone waiting to buy a Raspberry Pi Battery board, the site store will be opening soon.  I had planned on opening in January but it looks like the opening will be sometime in early to mid February.  I have a small batch of boards built up and I’m putting the finishing touches on documentation.

Battery Board pic

Posted in Uncategorized

Battery board production

The YouTube video of the battery powered Adafruit PiTFT display had more visits than any other topic that I have posted on this site.  There were even a few comments from people asking if I would be selling the battery boards.  I am now at the point where I believe I will be able to produce small batches of the PCB as a kit with planned sales early next year.

What have I done to this point? To make a long story short – I put together a toaster reflow oven and a rudimentary pick and place robot to help me produce small batches of boards in a reasonable amount of time.  I placed an order with Seeed Studio for 100 copies of the production version of the battery board and enough components to populate them.

Here’s what a stack of  100 boards looks like:

100boards

I was pretty good about taking photos of the various steps it took to build the in the reflow oven and PNP robot but have been very bad about posting anything here on the site.  I’m on a short vacation at the moment (away from the destractions building things) and plan on posting some material when I have some free time.

Before leaving on my vacation, I did manage to manufacture 7 of the boards using the PNP robot I put together.  I am at somewhat of a breakeven point in practicality of using the robot – the time required for set up and operation takes about as long as what it would have for me to manually populate the  boards.  As I continue to debug and improve the design my throughput should get better.

Below is a video of the PNP robot being used.  The long pause before placing the parts on the PCB is from the operator using a camera and joystick to make final adjustments to the component position.

Posted in Uncategorized

My CNC Projects

I haven’t posted anything new to my web site in a while so I thought I would try and get things rolling again by adding some entries into the CNC section.  So there should be some new posts in that part of my web site going up soon.   When I first kicked off this web site, I had intended to include some info on the CNC mill and lathe that I built a few years back but never got around it.

One of the questions a person might ask when seeing a CNC machine is – “just what can I use this thing for”. Though it seems a little odd, one of the more common applications is building the next CNC machine. In my case, I started with a small CNC mill, moved on to a small CNC lathe, and then built a 3D printer.

Here’s the 3d printer in action:

Here’s a still photo if you want to take a more detailed look at the parts;

IMG_0749

Posted in Uncategorized

Arduino Micro USB IR Remote Adapter Board

I was shopping on the Adafruit site for a ATmega32u4 based Arduino board and found the page for the Arduino Micro.  From what I read, the Micro is the result of a joint development between Adafruit and the people at Arduino.cc.  A couple of quick mouse clicks (and three business days later) I had my new Arduino Micro USB board.

My new Arduino sat on the shelf for a few weeks before I came up with a quick project that I wanted to use it for.  I use XBMC a lot on both PC and Raspberry Pi and wanted a quick way to get IR keyboard inputs from a remote.  I had used the IR library for Arduino in the past so I was already pretty familiar with the hardware and code involved.    What made the Arduino Micro ideal for this project was the keyboard emulation supported by the board and also its compact size.   I also own a couple of Adafruit Trinket boards but I wasn’t sure how difficult it would be to get the IR and Keyboard libraries to work together on it.

The board I wanted to make would have a standard size male USB plug on it to pass USB data signals and provide 5V to the Arduino Micro.  To do this I had to do a little research on the Arduino Micro board.  Like most Arduino boards, the 5V supply voltage on the Micro are available  through the header pins on the board so I only needed to figure out a way to get to the  USB Data+ and Data- signals.   Looking at the schematics I found that there was a couple of unused header pins on the Micro.  So if I could find a point to connect to the Data+ and Data- signals that normally come in through the micro USB  plug on the Micro I could just run a couple of jumper wires to the spare header pins and pass the signals to the adapter board. 

The point I decided to tap the Data+ Data- signals was next to a couple of tiny SMT components on the bottom side of the board.  I found these points using a DMM to trace the connections from the mini USB pins on the board.

Arduino Micro Jumpers Bottom

To pass the Data+ Data- signals to headers on the top side of the board I used a pair of the small (mounting?) holes in the corners of the board.

Arduino Micro Jumpers Top

Hardware required for the adapter is really pretty simple – the only active component is the IR detector.  The adapter board was made from a small piece of prototyping board with a scrapped USB plug glued onto it.  The black stuff wrapped around the USB plug is a piece of nylon thread (potted in CA glue) used to give the connection some strength.  the little black square at the end opposite of the USB plug is the IR detector.

2014-01-19 20.02.36

On the top side of the board you can see the short profile header sockets that I used along with the USB wiring connections.

2014-01-19 20.02.27

Here’s a couple of pics of the whole thing assembled. 

2014-02-11 11.01.03

2014-01-20 12.56.43

To clean things up a bit I’ll probably put some shrink tube around the whole thing.  

Here’s an example of the Code (not necessarily for the remote shown above):

 C# |  copy code |? 
001
#include <IRremote.h>
002
 
003
int RECV_PIN = 2;
004
int loopDelay = 120;
005
unsigned long lastCode;
006
unsigned long TimeSinceLastRepeatCode = 0;
007
unsigned long mark;
008
 
009
IRrecv irrecv(RECV_PIN);
010
 
011
decode_results results;
012
 
013
void setup()
014
{
015
  //Serial.begin(9600);
016
  Keyboard.begin();
017
  irrecv.enableIRIn(); // Start the receiver
018
}
019
 
020
void loop() {
021
  if (irrecv.decode(&results)) {
022
 
023
    if (results.value == 4294967295){///check for repeat code signal
024
      TimeSinceLastRepeatCode = millis();
025
      if ((millis() - TimeSinceLastRepeatCode) < (loopDelay *2)){
026
        results.value = lastCode;
027
      }
028
      else {
029
        results.value = 0;
030
      }
031
    }
032
    if (results.value == 2155813095){
033
      Keyboard.press(KEY_UP_ARROW);
034
      Keyboard.release(KEY_UP_ARROW);
035
      lastCode = results.value;
036
    }
037
    if (results.value == 2155862055){
038
      Keyboard.press(KEY_DOWN_ARROW);
039
      Keyboard.release(KEY_DOWN_ARROW);
040
      lastCode = results.value;
041
    }
042
    if (results.value == 2155845735){
043
      Keyboard.press(KEY_LEFT_ARROW);
044
      Keyboard.release(KEY_LEFT_ARROW);
045
      lastCode = results.value;
046
    }
047
    if (results.value == 2155829415){
048
      Keyboard.press(KEY_RIGHT_ARROW);
049
      Keyboard.release(KEY_RIGHT_ARROW);
050
      lastCode = results.value;
051
    }
052
    if (results.value == 2155868685){
053
      Keyboard.press(KEY_RETURN);
054
      Keyboard.release(KEY_RETURN);
055
      lastCode = results.value;
056
    }
057
    if (results.value == 2155833495){
058
      Keyboard.press(KEY_ESC);
059
      Keyboard.release(KEY_ESC);
060
      lastCode = results.value;
061
    }
062
    if (results.value == 2155849815){
063
      Keyboard.press('c');
064
      Keyboard.release('c');
065
      lastCode = results.value;
066
    }
067
    if (results.value == 2155848285){
068
      Keyboard.press('p');
069
      Keyboard.release('p');
070
      lastCode = results.value;
071
    }
072
    if (results.value == 2155811565){//stop
073
      Keyboard.press('x');
074
      Keyboard.release('x');
075
      lastCode = results.value;
076
    }
077
    if (results.value == 2155855935){//shutdown menu
078
      Keyboard.press('s');
079
      Keyboard.release('s');
080
      lastCode = results.value;
081
    }
082
    if (results.value == 2155870215){//volume up
083
      Keyboard.press('+');
084
      Keyboard.release('+');
085
      lastCode = results.value;
086
    }
087
    if (results.value == 2155856445){//volume down
088
      Keyboard.press('-');
089
      Keyboard.release('-');
090
      lastCode = results.value;
091
    }
092
    if (results.value == 2155860525){//play pause
093
      Keyboard.press(' ');
094
      Keyboard.release(' ');
095
      lastCode = results.value;
096
    }
097
    if (results.value == 2155866135){//subtitles
098
      Keyboard.press('t');
099
      Keyboard.release('t');
100
      lastCode = results.value;
101
    }    
102
    delay(loopDelay);    
103
    irrecv.resume(); // Receive the next value
104
 
105
  }
106
 
107
}

Posted in Uncategorized

Estimating Battery Life

To get some  battery life estimates for my battery board V2 project, I decided to use my arduino battery tester to measure the 5V current draw on the model A and model B Raspberry Pi.  You can see my test setup below:

I found that a model B Raspberry Pi running Xbian, without an ethernet connection, at idle (on a file menu screen) would draw about 370 mA.  For a model A Raspberry Pi under the same conditions the current draw was about 170 mA.  In a more practical test, with the model B Raspberry Pi running Xbian to stream  a 720p HD video over a USB WiFi adapter, the current draw was about 570 mA.  Running the identical video streaming  test on a model A Raspberry Pi showed a current draw of 350 mA.  Note in my current measurement tests all measurements are approximate values since the current draw fluctuates quite a during the test.  Also my measurement accuracy probably is probably in the range of +/- 20 mA. 

I am also considering the use of the CSI camera board in some of my portable Raspberry Pi projects so I took  a quick measurement of the current draw in Wheezy at idle and with the camera capturing a short h264 video clip.  At idle the camera equipped  model B board drew about 400 mA.  With the camera capturing video the model B drew 670 mA – an additional 270 mA while recording.  Removing the camera board didn’t change the current much.  So the camera doesn’t seem to use much power unless it is doing something.

So I can estimate that a Model B board with WiFi and active camera would draw about 570 + 270 = 840 mA.   A Model A board with WiFi and active camera would draw about 350 + 270 = 620 mA

Posted in Uncategorized

Automatic Fish Feeder

While looking around the aquarium section of one of those big pet supply stores, I came upon a display of female Bettas (Siamese Fighting Fish).  Long story short – after plunking down $4, I have a new occupant on my desk:

NewFish

Betta and Food

The Betta food I use are the little pellets you see on the right side of the picture.  This little fish lives on almost nothing – 2 or 3 pellets a day.  I’ve had pet fish in the past and when I used to travel a lot it was always a problem figuring out a way to feed them while I was away.  So as a day project I decided to make an auto feeder.

I’ve been experimenting with micro controllers a lot lately so the first thing that came to mind was a micro controlled servo that kicks out pellets once or twice a day.  Then it struck me that the basic requirements for my device could be met with a  cheap clock movement.  The type of clock movements I am referring to are in the $1 clocks you see at thrift stores that run on a single AA battery.   The clock movment can  provide a regular periodic motion (2 revolutions per day on the hour hand),  have a fair amount of torque (better than 3600:1 gear reduction on the hour hand), – and they only cost a buck ($1).

CheapClock

Clock Parts

To feed the pellets I made a little screw driven hopper assembly.  The screw feed itself was made from a stainless steel wood screw.   The thread size on the screw is just wide enough to hold the pellets.  Each thread pitch would represent one 12 hour feed cycle – 2 pellets a day.

FeedScrew1FeedScrew2

I used a lathe to turn down one end of the wood screw so that I could slip a tight fitting piece of vinyl hose over the end as a coupling.  The vinyl hose was just the right size to also have a tight fit over the shaft of the hour hand on the clock.

UHMW_Hopper

UHMW hopper.

For the hopper body I cut a piece of UHMW polyethylene .  The UHMW PE cuts really easy and has a slippery surface so the rotating screw is less likely to bind.  The slippery surface on the UHMW PE should also help with the food moving along its length.

 The only problem with using the UHMW material is that adhesives don’t hold to it very well.  To mount the hopper to the clock body I had to make another piece that I could stick to the face of the clock and provide a set of threads that I could use to fasten the hopper to.  To make this stick-on mounting plate I used a piece of Acrylic with two 6-32 threaded holes.  On the back surface of the acrylic plate I used a piece of 3M adhesive tape.

AcrylicMount

Acrylic Mounting Plate With Adhesive Backing

Here’ what the final assembly looks like:

Assembled

Assembled Fish Feeder

The slot on the bottom part of the hopper assembly allows the feeder to hang on the edge of my small fish tank.  Here’s a close up of the feed screw with some pellets in it – should hold enough food for a week.

FoodLoaded

Hopper With Pellets

Posted in Uncategorized

USB Ethernet Adapters

Digging through a box of old computer hardware today, I came across an  old USB 2.0 to ethernet adapter I had purchased for use on my Nintendo Wii.  I had done some testing with some ebay sourced USB ethernet adapters about a month ago on one of my model A Raspberry Pi boards but without success.  In the picture below the Wii ethernet adapter is on the left:

USB2Ethernet

Three USB ethernet adapters.

In my testing, I had booted the Pi with a copy of Xbian media player but the two USB ethernet adapters I purchased on ebay failed to make a network connection.  Today I tried the old Wii ethernet adapter and sure enough it made a succesful network connection.

To identify the chipsets on the three adapters I plugged each one into the USB port of my destkop running Unbuntu and in a terminal issued the command lsusb.  From left to right in the picture above here’s how the lsusb command  identified each adapter:

Left (Wii adapter):  ID 0b95:7720 ASIX Electronics Corp. AX88772

Center:  ID 0fe6:9700 Kontron (Industrial Computer Source / ICS Advent) DM9601 Fast Ethernet Adapter

Right:  ID 9710:7830 MosChip Semiconductor MCS7830 10/100 Mbps Ethernet adapter

So, for a Pi running Xbian at least, I can only recommend the AX88772 based adapter at this point.  

I did an ebay search under AX88772 to see if I could buy a new adapter with this chipset online and found a unit for just over $5 US.  I’ll test it after it shows up in the mail.

Posted in Uncategorized

Hit Counter provided by orange county property management