Eagle


Eagle


The Eagle PCB design files are now available for download from the Strobit Project Page.  Constructive feedback is appreciated.  Please treat these as an early alpha release, the PCB has not yet been verified.

I have also released the design files for a blank personality board, this can be used as a starting point for any future boards.

I will shortly have an early release of the Basic Strobist Personality board online.

Eagle


These are components I’ve created for Eagle3D.

You may also want to check out the tutorials on how to create your own components.  http://blog.everythingrobotics.com/tutorials/eagle3d-tutorials/using-google-sketchup-to-create-components/

Components

HopeRF RFM12B SMD 433Mhz/915Mhz RF Module

RFM12BSMD

Microchip MR24J40MA FCC Approved 2.4GHZ 802.15.4 RF Module

MRF24J40MA

Sparkfun SMA PCB Edge

SMA_FEMALE_PCB

PJ-326 3.5mm Jack http://www.switchcn.com/

PJ326

900Mhz GSM SMA Antenna attached to PCB SMA Connector

SMA_connector_antenna_hor

Downloads:

Strobit Eagle3D Library (19/03/2009) Download

Links

Disclaimer:

These are provided AS-IS and may contain bugs and or discrepancies and may not be to scale.

If you find any bugs or problems or make enhancements please feel free to contact me so I can update the downloads.

Eagle


Tweaking the Settings

Now we have added the component into Eagle3d we need to tweak and fine-tune the settings.

  1. Now render your PCB, more than likely a couple of problems will show up.  The first is your component is very small.  so we need to tweak the scaling from within the component file we recreated in the previous steps.

    Very Small component shown. (click to enlarge)
    triggr-020
    07/08/09 update: (Thanks for the tip Jeremy)

    > Jeremy wrote:
    > Hey. I read over your tutorial on making Eagle3d components in Google
    > Sketchup, and I wanted to thank you for saving me a considerable
    > amount of time. I also found something you might have missed. Sketchup
    > records units in mm
    > (millimeters) but when su2pov plugin is run, it converts all the mm
    > into inches (1mm -> .03937 inch). The problem is that Eagle3D
    > interprets the numbers in the .inc files as in mm. So the best way to
    > fix the problem is to scale up your drawing in Sketchup by 25.4 times
    > (thus counteracting the plugin’s unit conversion).

  2. To scale the component scroll down to near the end of the file where you should see something like this
       1:
       2: #object {MRFceJeaMA
       3: matrix < 0.1,0.0,0.0,
       4: 0.0,0.1,0.0,
       5: 0.0,0.0,0.1,
       6: 0.0,0.0,0.0>
       7: }
  3. tweak the settings that have numbers in them, the following worked for me
       1: // Scale
       2: #object {MRFceJeaMA
       3: matrix < 2.55,0.0,0,
       4: 0.0,2.50,0.0,
       5: 0.0,0.0,2.55,
       6: 0.0,0.2,0.0>
       7: }
  4. Now the component should be close to the right size, but the offset is off.triggr-020
  5. We now need to get the correct offsets, which is a bit ht and miss, but I found the following works best.
  6. Locate the component in the generated POV file (step 8 above)
  7. Change the translate values just after the macro name as shown below, the hit and miss comes in by taking a guess in what direction and value to use.
       1: #ifndef(pack_U2) #declare global_pack_U2=yes; object {MRF24J40MA()translate<-5,0,0> rotate<0,0.000000,0>rotate<0,-270.000000,0> rotate<0,0,0> translate<61.569600,0.000000,15.240000>}#end        //MRF24J40MA FCC Approved module U2 MRF24J40MA MRF24J40MA
       2:
  8. We are heading in the right direction, so keep changing until it all lines up on that axis.

    triggr-020

  9. looks like we are right on here, onto the next axis

    triggr-020

  10. to change the next axis offset we need to modify the last value in the translate function
       1: MRF24J40MA()translate<-9,0,-5>
  11. Just about there

    triggr-020

  12. finally looks right

    triggr-020

  13. Now we have found the values we need to put them in the 3dusepac.dat file or else the next time we run the ulp script we will loose these settings
  14. In the line we added added to the 3dusrpac.dat file we need to add the values we have just fount to positions 15 and 1 7 as shown below.
       1: MRF24J40MA:0:0:0:0:0:0:0:0:0:0:0:0:0:0:-9:0:-8:0:0:0:0:0:0:0:0:0:0:0:0:0:MRF24J40MA(::
       2:
  15. If this file is changed we need to re-run the ulp script to re-generate the POV file, then check that your values are there and renders correctly.triggr-020
  16. The same process can be followed if the component is not rotated correctly.  such as shown below

    triggr-020

  17. change this value in the POV file to tweak the rotation side of things. change the value show below (-180)  in this example the value that works for me is 90  once again this value must be updated in the 3dusrpac.dat file in position 14.
       1: {MRF24J40MA()translate<-9,0,-8> rotate<0,0.000000,0>rotate<0,-180.000000,0>
  18. Remember to re-run the ULP script to regenerate the POV file.Happy component creating !!!!!
<<Step 3

Eagle


Integrating into Eagle3D

Now we have converted the file to work in Eagle3D we now need to tell Eagle3D how to use it.

  1. Add your include file to the user.inc file
    #ifndef(__user_inc)
    #declare __user_inc = true;
    
        #include "MRF24J40MA.inc"
    #end
  2. Now open and add the following to the end of 3dusrpac.dat (found in the Eagle3D install directory)
    PACKAGE_NAME:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:MACRO_NAME(::
  3. To find the PACKAGE_NAME, first go back to your PCB editor in Eagle, click the info button, then click on the component we have just created the library for.image
  4. Replace PACKAGE_NAME with the Package variable. In this case it is MRF24J40MA Note that this is always in caps!
  5. Next, we need to replace MACRO_NAME with the exact macro name we added to the file in step 2. In this example it’s MRF24J40MA.
  6. The line should now look like this
    MRF24J40MA:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:MRF24J40MA(::
  7. Now run the Eagle3D ulp script and create the the POV file for the PCB.image
  8. Open the POV file and scroll down until and check that the component has been added to the file (line 3 below)
       1: #ifndef(pack_S1) #declare global_pack_S1=yes; object {SWITCH_SECME_1K2_RH()translate<0,0,4> rotate<0,180.000000,0>rotate<0,-180.000000,0> rotate<0,0,0> translate<41.910000,0.000000,1.727200>}#end        // S1  SWITCH-SPDT-SMD
       2: #ifndef(pack_U1) #declare global_pack_U1=yes; object {QFP_TQFP_32_080MM("ATMEGA168V","ATMEL",)translate<0,0,0> rotate<0,0.000000,0>rotate<0,-45.000000,0> rotate<0,0,0> translate<26.670000,0.000000,16.510000>translate<0,0.035000,0> }#end        //TQFP-32 U1 ATMEGA168V TQFP32-08
       3: #ifndef(pack_U2) #declare global_pack_U2=yes; object {MRF24J40MA()translate<0,0,0> rotate<0,0.000000,0>rotate<0,-270.000000,0> rotate<0,0,0> translate<61.569600,0.000000,15.240000>}#end        //MRF24J40MA FCC Approved module U2 MRF24J40MA MRF24J40MA
       4: }//End union
  9. Now render your PCB, more than likely a couple of problems will show up.  The first is your component is very small.  so we need to tweak the scaling from within the component file we recreated in the previous steps.
<< Step 2 Step 4 >>

Eagle


Convert POV file into Eagle3D .inc file

  1. In the new POV file that was created by the plug-in now needs to be saved as a *.inc in the same directory as Eagle3D component include files this is usually called EAgle3D\pov

    image

  2. Next we need to delete all the information not needed and will cause conflicts with Eagle3D.
       1: // Persistence Of Vision raytracer version 3.5 (or higher) file.
       2: // Exported from Sketchup 6.4.112 (en-US) through SU2POV 3.2. by D. Bur.
       3: // 04/03/2009, 16:25
       4: //-------------------------------------------
       5:
       6:
       7: // Pov-Ray includes
       8: #include "colors.inc"
       9: #include "glass.inc"
      10: #include "glass_old.inc"
      11: #include "metals.inc"
      12: #include "woods.inc"
      13: #include "stones.inc"
      14: #include "skies.inc"
      15: #include "stars.inc"
      16: #include "finish.inc"
      17: #include "rad_def.inc"
      18: #include "textures.inc"
      19: #include "golds.inc"
      20: #include "sunpos.inc"
      21: #include "math.inc"
      22: #include "transforms.inc"
      23: //-------------------------------------------
      24:
      25:
      26: // Declare section
      27: //Gamma
      28: #declare GAMMA=2;
      29: //Default finish
      30: #default { texture { finish { ambient 0.1 diffuse 0.7 brilliance 0 roughness 0.005 } } }
      31: // Finishes
      32: #declare Dull = finish {specular 0.5 roughness 0.2}
      33: #declare Shiny = finish {specular 1 roughness 0.0003}
      34: #declare Glossy = finish {specular 1 roughness 0.0003 reflection 0.1}
      35: #declare Phong_Glossy = finish {phong 10 phong_size 300 reflection 0.1}
      36: #declare Phong_Dull = finish {phong 0.5  phong_size 1}
      37: #declare Luminous = finish {ambient 0  diffuse 20}
      38: #declare Mirror = finish {ambient 0  diffuse 0 reflection 0.97}
      39: // Lights colors
      40: #declare Incandescence = rgb <1, 0.9, 0.6>;
      41: #declare Halogen = rgb <1, 0.98, 0.85>;
      42: #declare Sodium = rgb <1, 0.6, 0.2>;
      43: #declare Neon = rgb <0.9, 0.95, 1>;
      44: #declare Mercury = rgb <0.92, 1, 0.92>;
      45:
      46: #declare Lightbulb = sphere {
      47:     <0,0,0>,1.5
      48:     scale <1,1.3,1>
      49:     texture { pigment {color rgb <1, 1, 0.5>}}
      50:     finish { Luminous }
      51:     }
      52:
      53: //-------------------------------------------
      54:
      55:
      56: //Radiosity settings
      57: global_settings {
      58: radiosity { Rad_Settings(Radiosity_Final, off, on) }
      59: assumed_gamma GAMMA
      60: radiosity { gray_threshold 0.8 }
      61: }
      62: //-------------------------------------------
      63:
      64:
      65: // Gradient Background
      66: sky_sphere {
      67:     pigment {
      68:     gradient y
      69:    color_map {
      70:     [(1-cos(radians(0)))/2 color White]
      71:     [(1-cos(radians(50)))/2 color rgb <0.741176470588235,0.819607843137255,0.815686274509804>]
      72:     }
      73:     scale 1
      74:     translate -1
      75:     }
      76: }
      77: //-------------------------------------------
      78:
      79:
      80: //-------------------------------------------
      81:
      82:
      83: //-------------------------------------------
      84:
      85:
      86: // Camera
      87: camera {
      88:     perspective
      89:     location <2.25145468567195,1.60043897233161,-1.06394822934727>
      90:     look_at <-0.466904134380124,-0.965594533672687,1.31022929677542>
      91:     right <1.3333,0,0>
      92:     up <-0.436428953203423,0.815008198675065,0.381171096619603>
      93:     angle 63.7985225255377
      94: }
      95: //-------------------------------------------
      96:
      97:
      98: //-------------------------------------------
  3. Copy and paste the following code into the very beginning of the file.  replace ‘inc_MRF24J40MA’ with the name of your component, e.g. inc_YOUR_COMPONENT.
    #ifndef(inc_MRF24J40MA)
    #declare inc_MRF24J40MA=true;
    
    #ifndef(inc_testmode)
    #declare inc_testmode=true;
    #include "tools.inc"
    #undef inc_testmode
    #end
  4. Now scroll down until you see the start of the object definition
       1:
       2: // LEVEL 0 #<Sketchup::ComponentDefinition:0x3e508c0> MRF24J40MA
       3: #declare MRFceJeaMA = union {
       4: mesh2 {
       5:     vertex_vectors {
       6:       4,
       7: <7.000109088,4.98688000008518e-006,1.35>,
       8: <7.000109088,0.32000498688,1>,
  5. insert the component macro declare statement (line2 below) into the file.  The macro name needs to be the name of your component (in this case ‘MRF24J40MA’)
       1: // LEVEL 0 #<Sketchup::ComponentDefinition:0x3e4f8b8> MRF24J40MA
       2: #macro  MRF24J40MA()
       3:
       4: #declare MRFceJeaMA = union {
  6. Scroll to the very end of the file and delete lines 3,4 and 8 as shown below
       1: //-------------------------------------------
       2:
       3: #declare MODEL = union {
       4: } // End of MODEL object declare
       5: //-------------------------------------------
       6:
       7:
       8: object { MODEL }
       9: //-------------------------------------------
      10:
      11:
      12: #object {MRFceJeaMA
      13: matrix < 0.1,0.0,0.0,
      14: 0.0,0.1,0.0,
      15: 0.0,0.0,0.1,
      16: 0.0,0.0,0.0>
      17: }
      18: //-------------------------------------------
      19:
      20:
      21: //-------------------------------------------
      22:
      23:
  7. Finally insert all of the following to the very end of the file.  Replace MR24J40MA() with your component macro name.
    #end //end of macro  
    
    /**********************************************************************
    Testing
    **********************************************************************/
    #ifndef(inc_testmode)
    
    //Size of the Grid Plane (+/- span)
    #local XYZ_span=20;
    
    //Orientation axes
    cylinder{<-XYZ_span,0,0><XYZ_span,0,0>0.1 pigment{Blue}}    //X
    cylinder{<0,-XYZ_span,0><0,XYZ_span,0>0.1 pigment{Red}}        //Y
    cylinder{<0,0,-XYZ_span><0,0,XYZ_span>0.1 pigment{Yellow}}    //Z
    
    // Useful GRIDS:
    #local XYZ_step= 1 ;          // axis increment
    #local XYZ_cnt = 0;           //  loop counter
    #local xyz_thick = 0.05;     // grid line thickness
    
    // GRID PLANES: Remove comment begin/end to activate & select PLANES:
    #while (XYZ_cnt <= XYZ_span)
    
        cylinder{<-XYZ_span,0,XYZ_cnt><XYZ_span,0,XYZ_cnt>xyz_thick pigment{Blue}}        // Positive Z-Lines
        cylinder{<-XYZ_span,0,-XYZ_cnt><XYZ_span,0,-XYZ_cnt>xyz_thick pigment{Blue}}    // Negative Z-Lines
    
        //cylinder{<0,XYZ_cnt,-XYZ_span><0,XYZ_cnt,XYZ_span>xyz_thick pigment{Red}}        // Positive Y-Z Plane Lines
        //cylinder{<0,-XYZ_cnt,-XYZ_span><0,-XYZ_cnt,XYZ_span>xyz_thick pigment{Red}}    // Negative Y-Z Plane Lines
    
        //cylinder{<-XYZ_span,XYZ_cnt,0><XYZ_span,XYZ_cnt,0>xyz_thick pigment{Red}}        // Positive Y-X Plane Lines
        //cylinder{<-XYZ_span,-XYZ_cnt,0><XYZ_span,-XYZ_cnt,0>xyz_thick pigment{Red}}    // Negative Y-X Plane Lines
    
        cylinder{<XYZ_cnt,0,-XYZ_span><XYZ_cnt,0,XYZ_span>xyz_thick pigment{Yellow}}    // Positive X-Lines
        cylinder{<-XYZ_cnt,0,-XYZ_span><-XYZ_cnt,0,XYZ_span>xyz_thick pigment{Yellow}}    // Negative X-Lines
    
        #local XYZ_cnt = XYZ_cnt+XYZ_step;
    #end
    
    camera
    {
        #local tt = 40;                //let's you change the distance easily
        location <-tt,tt,-tt>
        //location<0,5,-50>            //alternate location
        look_at <0,0,0>                //best to select the approximate centre of the object
        angle 30
    }
    
    light_source { <100, 100, -100> White}
    light_source { <-100, 100, -100> White }
    light_source { <-100, 100, 100> White }
    light_source { <100, 100, 100> White }
    //light_source { <-tt,tt,-tt> White }
    //light_source { <-tt,tt,-tt> White }
    //light_source { <-tt,tt,-tt> White }
    background{Grey}
          MRF24J40MA()
    #end
    
    #end
    //End of Macros
  8. Now test the inc file by rendering the component.  This will test to make sure the macro and file are all working.  A grid and the actual component will now be rendered.image
  9. UPDATE: You also need to copy any surface map graphic files across to the same directory as the new component file.

If you have successfully converted the file we next need to add it to Eagle3D

<<Step 1 Step 3 >>

Eagle


Exporting Sketchup Objects to POV

  1. You first need to install the su2pov plugin as per the documentation.  Once installed you will see the plugin available from the plugin menu within sketchup. (click for larger image)

    image

  2. I use the the following settings for the SU2POV plugin.image

    image
  3. Select ‘GO’ from the plugin menu.
  4. The POV file is then created, open it up in povray.  You should be able to render it direct from this file so you can at least get a sense of what it will look like rendered on the PCB. (click for larger image)MRF24J40MA

    Note: Some errors were reported when I first tried to render the scene straight from the export line in the POV file.  It appears that this problem is related to the default Radiosity settings generated by the plugin, these are not used in the newer versions of POV.  The su2pov plugin is for pov3.2.  I safely deleted the Radisity section from the generated file.  (update: I have since found that if you change the Radiosity settings to ‘Final’ under the plugin render options this problem does not happen). Eagle3D ultimately handles all the radiosity settings anyway, but this is so we can view the test file in POV.

  5. Now that we have successfully rendered the file in POV we now need to incorporate it into Eagle3D.
Step 2 >>

Eagle


This tutorial will show you how to use Sketchup to create and import components into Eagle3D

Requirements:

  1. Google Sketchup installed – I’m using v6, but I’m sure it will work in the latest  version
  2. su2pov plug-in – this is a sketchup plug-in written in ruby that exports the a sketchup scene into POV for more realistic rendering.
  3. Eagle3D and POV installed and working.  You should be able to at least render a board, even if no components are working.

Steps involved:

  1. Export Sketchup object to POV using SU2POV, and test.
  2. Create the component include file ready for Eagle3D
  3. Mapping the new component into the library.
  4. Fine tuning the placement.
Step 1 >>

Eagle


Eagle


As I work out how to do things I’ll add them here.

Eagle3d

RFM12 Radio Module

Eagle


Jans Gentsch has made his compact version of the Strobit Triggr available to the community, his version, the Strobit M08 based on AVR design can be found here.   Please note that there are a couple of things that need doing to the PCB, if you get a chance to implement Jans design, please post back any changes to me so I can make them available.

Hello Stephen,

I’ve attached the Eagle-Design-Data as well as the source code. I haven’t found time to do anything on those since my post, so the are not in the best state. There are a few Problems with the board design:

Transmitter – There is a connection missing between the processor and NIRQ of the transmitter-module (the transmitter module doesn’t have a fifo, so that the nirq-line is needed to clock out the data). I just added a piece of loose wire during assembly.
Receiver – NIRQ isn’t connected as well, so I am constantly polling, not really a power saving design. however I am still running on the first set of batteries so it’s not like they are being drained empty immediatly.
IO-Board – Thr optocoupley was meant to sit on the bottom side but I got confused. It has to sit on top now.

Getting everything into the housing was a major challenge.

The source code has been developed using avr-gcc and the eclipse ide.
As it stands only the most basic function, tiggering, is working. The control flow will have to be reworked in order to add the rest of the functionality. And of course my “magic” trigger id should be changed.

Have fun!

Alle the best
Jan

Files

You will need Eagle PCB to view/edit the schematics and PCB files, found here -http://www.cadsoft.de/

The firmware is written using winavr found here – http://winavr.sourceforge.net/

Eagle


Well there aren’t really any downloads for this projects just yet.

However for the prototype based on the PIC16F88:

  • Drawings are available here
  • BoostC source code and Eagle files are here .

If you have any questions please contact me via the contact form.

Eagle


I couldn’t get any hands-on hardware development time for the Strobbit open triggr project today, so I designed a breakout board for the Sensirion SHT15 Humidity/Temperature sensor for my weather station I’ve been intending to build.  I have a couple of these sensors at home waiting for something this so I can have a play with them.  PCB uploaded for fabrication today.

As a side note:  While uploading this for fabrication at http://www.batchpcb.com  I noticed that my RFM12 PCBs has been panelized and so should be in production, hopefully they should rock up on the doorstep sometime soon.

SHT15 schematic

SHT-15 PCB

Eagle


I’ve put an initial design (both eagle source files and PDF) into SVN that is aimed as a board replacement to the ebay triggers.

http://svn.everythingrobotics.com/strobist/mk1/trunk/design/ebay_trigg.pdf

Eagle


As i’ve started using Eagle as my electronic design package (protel is fantastic but just too expensive), I’ve created a component library that I’ll be using on the Strobe trigger project.  I’ve put the library in SVN for everyone to use and contribute towards -http://svn.everythingrobotics.com/strobist/eagleLib/