Tuesday, June 20, 2017

Arduino Powered F-550 Hexacopter my biggest drone yet!

I am currently upgrading my F-450 QuadCopter to a F-550 HexaCopter.  Besides buying the frame I bought two additional motors and ESC's.  So far I have all the motors working and am getting close to having it ready to fly.  The frame kit comes with two bags of screws but no instructions.

It is assembled much like the F-450, you solder the ESC's to the base then assemble the legs to the base.  Note that the power connections to the battery are the opposite of the ESC's power connections.

The top piece does not have the holes for mounting the flight controller.  I think they wanted the controller to be mounted on the bottom piece.




Wednesday, June 14, 2017

ZMR250 or QAV250 Racing 250mm QuadCopter

I am building a ZMR250 quadcopter.  It came as a frame kit and I added the ESC (Electronic Speed Control) and Motors.


It did not come with a lot of instructions but I managed to get it together but not working.
This is what it looks like assembled with a MultiWii controller.  I had to countersink the propellers because otherwise there is not enough threads to get the top nut on.
The problem now is that only two of the four motors spins up.  I replaced a motor and now suspect it is the ESC's that are defective.


Tuesday, June 13, 2017

2017 Chaffee NY Hamfest

Sorry I did not take a lot of pictures.  This is still a smaller Hamfest.  I took along some broken big screen TV's as well as a 3D printer but did not sell much of anything.

The biggest problem was that the shutter button broke on my camera.  I had to use a pen to take pictures!

Tuesday, April 4, 2017

Peavey PV20 USB 20 Channel Mixing Console repair

Recently I needed to fix a Peavey PV20 USB 20 Channel Mixing Console.  The main volume sliders had worn out.  It took a while of searching but I found the needed parts.  They are Panasonic 10K ohm 60 mm slide potentiometers.

To get inside you have to remove the security screws and the screws that hold the power supply to the bottom cover.  Then you have to remove the knobs, nuts and screws to remove the main board.  There is one screw hidden under the reverb board.

The new sliders were a little shorter than the old ones so I had to mount them above the board as can be seen in the following picture:

Then there was another problem.  The new controls did not work at all!  They are stereo controls and the old ones were mono controls.  So there needs to be two jumpers installed on the bottom of the mixer to make it work.  Those jumpers are shown in the following drawing:


Here is a picture of the jumpers on the back side of the main board.





Tuesday, March 28, 2017

Arduino Powered WS2812 LED Strips turned into 8x75 Array

I found out that there is a 512 LED limit on running continuous LED arrays from one output of the Arduino.  Then I discovered an alternate setup that can run 1200 addressable LED's from an Arduino.  The alternate method uses the parallel output mode to run 8 strings at the same time.  So far I am just testing the setup to see if it works.

This picture shows the  wiring, it is much easier than any other method of running the addressable LED strings.  Since I only have four strings of 150 LED's they are split in half to make 8 strings of 75 LED's each.

Here is my first test program running.  I changed the default array of patterns into some text.

I have improved the code to support longer strings:

It now has the ability to do 8 colors and use a character generator!

Here is the video on YouTube:


The sign now breaks down into sections that are each 40 inches long.  That is done with eight 3 pin plugs that are identical to what comes on the LED strips.

Here is the code so far:
// BOB Davis Enhanced Version for sending data to 8 Parallel WS2812 strings

// PORTD is Digital Pins 0-7 on the Uno change for other boards.
#define PIXEL_PORT  PORTD  // Port of the pin the pixels are connected to
#define PIXEL_DDR   DDRD   // Port of the pin the pixels are connected to

// These are the timing constraints taken mostly from the WS2812 datasheets
#define T0H  400    // Width of a 0 bit in ns
#define RES 6000    // Width of the low gap between bits to cause a frame to latch

// Here are some convience defines to generate actual CPU delays
#define NS_PER_SEC (1000000000L)  // Note that this has to be SIGNED
#define CYCLES_PER_SEC (F_CPU)
#define NS_PER_CYCLE ( NS_PER_SEC / CYCLES_PER_SEC )
#define NS_TO_CYCLES(n) ( (n) / NS_PER_CYCLE )

// Actually send the next set of 8 WS2812B encoded bits to the 8 pins.
// We must to drop to assembler to ensure proper timing
static inline __attribute__ ((always_inline)) void sendBitX8( uint8_t bits ) {
    const uint8_t onBits = 0xff;    // to send all bits on
    const uint8_t offBits = 0x00;   // to send all bits off
    asm volatile (
      "out %[port], %[onBits] \n\t"   // 1st step - send T0H high
      ".rept %[T0HCycles]     \n\t"   // Execute NOPs to delay
        "nop                  \n\t"
      ".endr                  \n\t"
      "out %[port], %[bits]   \n\t"   // Set the output bits to their values
      ".rept %[T0HCycles]     \n\t"   // Execute NOPs to delay
        "nop                  \n\t"
      ".endr                  \n\t"
      "out %[port], %[offBits]\n\t"   // last step set all bits low
      ::
      [port]    "I" (_SFR_IO_ADDR(PIXEL_PORT)),
      [bits]    "d" (bits),
      [onBits]   "d" (onBits),
      [offBits]   "d" (offBits),
      [T0HCycles] "I" (NS_TO_CYCLES(T0H) - 2)   // 1-bit width less overhead
    );
}

// Set default color for letters 1=red, 2=blue, 0=green
int color=0;

static inline void __attribute__ ((always_inline)) sendPixelRow( uint8_t row ) {
  // Send the bit 8 times down every row, each pixel is 8 bits each for R,G,B
  for (int c=0; c<3; c++) {
    for (int bit=0; bit<8; bit++){    
      if (color==c)sendBitX8( row );
      else sendBitX8( 0x00 );
    }
  }
}
 
byte cha[]={  // Can be hex or binary-easier to read
  0x80, 0x80, 0xff, 0x80, 0x80, 0x00, //T
  B11111111,  B10010001,  B10010001,  B10010001,  B10010001,  B00000000, //E
  B01100001,  B10010001,  B10010001,  B10010001,  B10001110,  B00000000, //S
  B10000000,  B10000000,  B11111111,  B10000000,  B10000000,  B00000000, //T
  B00000000,  B10000001,  B11111111,  B10000001,  B00000000,  B00000000, //I
  B11111111,  B01100000,  B00011000,  B00000110,  B11111111,  B00000000, //N
  B01111110,  B10000001,  B10000001,  B10000101,  B01100110,  B00000000, //G
  B00000000,  B01000001,  B11111111,  B00000001,  B00000000,  B00000000, //1
  B01000001,  B10000001,  B10000111,  B10011001,  B01100001,  B00000000, //2
  B10000001,  B10010001,  B10010001,  B10010001,  B01101110,  B00000000, //3
  B00011000,  B00101000,  B01001000,  B10001000,  B11111111,  B00000000, //4
  B11110001,  B10010001,  B10010001,  B10010001,  B10001110,  B00000000, //5
};

void setup() {
  PIXEL_DDR = 0xff;    // Set all row pins to output
}

void loop() {
  cli();           // No time for interruptions!
  for (int l=0; l<72; l++){  // 66 is number of bytes to send
    sendPixelRow(cha[l]);
  }
  sei();
  delay(10);      // Wait more than RESET timeout to latch into the LEDs
  return;
}

Monday, March 27, 2017

Changed my Car to a Chevrolet HHR

My Cobalt was hit by a deer and sustained over $1000 in damages.  For a 2007 with 165,000 miles that is essentially totaling the car.  SO I traded it in on a 2010 HHR that needs some minor repairs.
The hood was black (it had been in an accident) so I wire brushed it and put some white primer on it until I can afford to have it professionally painted.

One of the issues was strange noises coming from someplace in the back when going around corners.  I had already dug all the way down and removed the spare looking for the issue.  Maybe there was something in the gas tank?  The second time I took out the spare I looked behind the battery area and found a golf ball.  Before long I had pulled 6 golf balls out of that area.
 I decided to replace the air filter and discovered that changing the air filter on the HHR is a nightmare. You have to unplug the MAF sensor, and disconnect three hoses.  Then you can remove the air filter assembly and turn it over to remove 7 Torx screws.  Forget that.  I found this ad for a replacement for $75 on eBay.
The kit arrived in less than a week in a relatively small box.  It was only about one foot square in size.  But everything was there.

The changeover takes about 1 hour to complete.  Here is a before picture:
Here is an after picture:
I could not figure out how to "bend" the included metal strap to hold the air filter in place so I used some wire ties instead.  The oil fill spout extension can be removed.  The cap will fit directly on the engine.  The spark plugs are next to be replaced now that I can actually find them....

The HHR did not come with a back seat.  It had the metal frame that was designed for use with storage bins.  The storage bins list for $700 from Chevy!  So I made my own storage area using some plywood.

I will need to make some wood trim to go around the outside edge.  Here is the view from the back side.


Thursday, March 2, 2017

Arduino Powered F450 Quadcopter/Drone

My next project and book will be on Arduino powered Quadcopters.  So far all I have assembled is the frame.  This is a DJI F450 Quadcopter with A2212 motors.


Soldering the connectors on the motors is not easy!  You have to use an alligator clip to hold the connector in place.  Find the hole in the side of the connector and use it to get the soldering iron into the center.  This requires a fine soldering iron tip.  Fill the center with solder. Stick the wire into the hot solder.  I also bent the wire over so it fits tightly first of all.  I should have stripped some more insulation off first.
I have mounted the Arduino on the drone and added a sensor shield to connect to the Receiver and the ESC's.  Next to add the 6 axis accelerometer and gyroscope MPU-6050 module.  So far I can control it and even tested out the motors.  

This is the video of its first very short flight....

A successful flight - well almost.

Wednesday, February 8, 2017

Arduino Powered WS2812 LED Strips turned into 15x16 Array

I purchased two 5 meter (almost 200 inches) WS2812 addressable LED array strips.  Then I seperated them into ten strips of 15 LED each about 20 inches long.  Why 15 LED's? Because that is where they are soldered together at the factory.  Then thew were stuck on "yard sign" material for a backing.  The result is a 20 inch by 20 inch 15 by 16 LED array.

This picture shows where they are soldered together at the factory.

This picture shows the 5 volt 12 amp power supply.  The array takes bout 3 amps to power it.

Here is the video demonstrating the array running the Adafruit demo.


This video has 4 LED strips reorganized as 600 LED's working.

Friday, February 3, 2017

CJMCU 8x8 WS2812 Addressable LED Array with an Arduino

Someone asked me why I did not include addressable LED arrays in mt book "Arduino LED Projects".  Well basically back them I did not know about addressable LED's.  SO recently a friend wanted some LED effects at his wedding reception so I started looking into addressable LED's.  The first thing I bought was a 8x8 LED array.  I connected it up and loaded Adafruit's NeoPixel software into the Arduino and got NOTHING!

Then someplace I read that the Data in and Data out labels are swapped.  So, to get it to work connect the D out pin to the Arduino D6 pin.  It came to LIFE!  Then after about a minute smoke rose out of the Arduino.  The voltage regulator had gone up in smoke.  Find an 5 volt 1-2 amp AC adapter and use that to power the LED array.

Here is a picture of it running the Adafruit demo.

This is the back view showing how to connect it to the Arduino and to power.

This is the video of the demo.

Monday, January 16, 2017

DIY 3D Printer Updated to a PRUSA I3 Compatible Version

I am working upgrading  my 3D printer to a PRUSA I3 Compatible Version.  I will also be updating my book "Inexpensive 3D Printer Projects" once the upgrade is completed and working.  Hopefully there will also be a all metal version of the PRUSA i3 3D printer in that book as well.

One of the issues so far is that the PRUSA i3 uses a 5 mm threaded rods for its lead-screws.  I wish that there was a 8 mm compatible version available.  I have found a alternate X axis end design that I can print out that does support 8 mm lead-screws.  Here is a link to the upgrade: http://www.thingiverse.com/thing:1140733. The other option is to purchase the all metal X axis for the Geeetech i3 printer.  I am also making a normal PRUSA i3 printer to verify that all of the parts are interchangeable with my design.

This is what the rebuilt 3D printer looks like so far:

Here is a progress report picture on rebuilding the 3D printer.

It now has the Y platform installed and the Arduino is in place as well.

This picture shows the wiring (mess).


Here is the results of the first test run.  The X axis belt skipped and caused it to print in the air after a few passes.

There were some more failures before I changed the extruder and fixed a wiring problem.

After a couple of calibrations it is now working.


This is what the finished elephant looks like.  My Z axis was off (3333 vs 4000) so it is shorter that it should have been.

To verify compatibility I am also building a PRUSA i3.  Here is the frame with the printed parts.

Then I switched to my home made metal parts.  I need to cut the Z axis shafts off so they are shorter.

I spray painted the frame with about 4 coats of gloss black paint.  It looks a lot better now.

I have added a Geeetech i3 all metal X axis to the Prusa i3 frame!  The secret is the home made motor mounts.
This is what the completed GeeeTech i3 all metal 3D printer on a PRUSA frame looks like.
This is the electronics for that 3D printer.

Tuesday, January 3, 2017

DIY Arduino GRBL CNC with a Laser!

I have added a laser to my CNC machine, here are some pictures.
This picture shows the addition of a relay board on the left to turn the laser on and off.

This is the laser at work.


Here is the results.

This is the video on YouTube.


This next video is of engraving an image with the laser.


Here is the latest results.

Here is a picture of my software setup.  The image is processed with 3dpBurner Image2Gcode.  Then Universal G code Sender sends it to the CNC.