2020年9月30日水曜日

OpenSCADとUltimaker Curaを使用して2x4の断面が長いほうの面に穴を開ける治具を作成する

2x4規格の木材に、正確な位置でキリやドリルで穴をあけるための治具を3Dプリンタで作成します。
OpenSCADとUltimaker Curaを使用して、2x4の断面が長いほうの面に穴を開ける治具を作成するには以下の手順を実行します。
穴は中心と左右3cm離れた位置の3つの穴を作ります。

〇2x4規格の木材に治具をつけたところ(穴の大きさを変更した2つの治具)

作成手順

1. OpenSCADで以下のコードを実行して形状を調整し、STLファイルにエクスポートします。

・治具のOpenSCADコード
※JIG_HANDLE_Rで穴の半径を変えることができ、JIG_HOLE_DISTANCEで中心から左右の穴の距離を指定します。
JIG_BODY_W=89;
JIG_BODY_H=10;
JIG_HANDLE_W=10;
JIG_HANDLE_D=10;
JIG_HANDLE_H=30;
JIG_W = JIG_BODY_W + JIG_HANDLE_W*2;
JIG_HOLE_R=2;
JIG_HOLE_DISTANCE=30;
// プリンタの最大サイズに収まるようにするために回転
rotate(45){
difference(){
    union(){
        translate([-JIG_BODY_W/2, -JIG_HANDLE_D/2, 0])
        linear_extrude(height=JIG_BODY_H){
            square([JIG_BODY_W, JIG_HANDLE_D]);
        }
        translate([-JIG_W/2, -JIG_HANDLE_D/2, 0])
        linear_extrude(height=JIG_HANDLE_H){
            square([JIG_HANDLE_W, JIG_HANDLE_D]);
        }
        translate([JIG_BODY_W/2, -JIG_HANDLE_D/2, 0])
        linear_extrude(height=JIG_HANDLE_H){
            square([JIG_HANDLE_W, JIG_HANDLE_D]);
        }
    }
    union(){
        translate([0, 0, 0])
        linear_extrude(height=JIG_BODY_H){
            circle(JIG_HOLE_R, $fn=100);
        }
        translate([JIG_HOLE_DISTANCE, 0, 0])
        linear_extrude(height=JIG_BODY_H){
            circle(JIG_HOLE_R, $fn=100);
        }
        translate([-JIG_HOLE_DISTANCE, 0, 0])
        linear_extrude(height=JIG_BODY_H){
            circle(JIG_HOLE_R, $fn=100);
        }
    }
}
}

・OpenSCADの画面

2. Ultimaker CuraでSTLファイルを読み込み、スライスしてgcodeを保存します。

3. 3Dプリンターで印刷します

関連情報

・そのほかの3Dプリンターを活用した記事は以下を参照してください。
OpenSCADまとめ

2020年9月29日火曜日

OpenSCADとUltimaker Curaを使用して2x4の断面が長いほうの面の中心にしるしを付ける治具を作成する

OpenSCADとUltimaker Curaを使用して、2x4の断面が長いほうの面の中心にしるしを付ける治具を作成するには以下の手順を実行します。
2x4規格の木材は、比較的柔らかい材質で出来ているので、治具を押し付けると中央に窪みがつきます。

〇2x4規格の木材に治具をつけたところ

〇治具にできた窪み

作成手順

1. OpenSCADで以下のコードを実行して形状を調整し、STLファイルにエクスポートします。

・治具のOpenSCADコード
※JIG_HANDLE_Hを小さくすれば1x4にも対応できます。
JIG_BODY_W=89;
JIG_BODY_H=10;
JIG_HANDLE_W=10;
JIG_HANDLE_D=10;
JIG_HANDLE_H=30;
JIG_W = JIG_BODY_W + JIG_HANDLE_W*2;
JIG_CONE_R=3;
JIG_CONE_H=4;
// プリンタの最大サイズに収まるようにするために回転
rotate(45){
translate([-JIG_BODY_W/2, -JIG_HANDLE_D/2, 0])
linear_extrude(height=JIG_BODY_H){
    square([JIG_BODY_W, JIG_HANDLE_D]);
}
translate([-JIG_W/2, -JIG_HANDLE_D/2, 0])
linear_extrude(height=JIG_HANDLE_H){
    square([JIG_HANDLE_W, JIG_HANDLE_D]);
}
translate([JIG_BODY_W/2, -JIG_HANDLE_D/2, 0])
linear_extrude(height=JIG_HANDLE_H){
    square([JIG_HANDLE_W, JIG_HANDLE_D]);
}
translate([0, 0, JIG_BODY_H])
cylinder(h=JIG_CONE_H, r1=JIG_CONE_R, r2=0, center=true, $fn=100);
}

・OpenSCADの画面

2. Ultimaker CuraでSTLファイルを読み込み、スライスしてgcodeを保存します。

3. 3Dプリンターで印刷します

関連情報

・そのほかの3Dプリンターを活用した記事は以下を参照してください。
OpenSCADまとめ

2020年9月28日月曜日

OpenSCADとUltimaker Curaを使用してGrove Sound Sensorのケースを作成する

OpenSCADとUltimaker Curaを使用して、Grove Sound Sensorのケースを作成するには以下の手順を実行します。

〇Grove Sound Sensorのケース/フタ
フタの部分にはGroveコネクタ用の穴と音センサー用の穴があります。ケースは温度センサーとサイズが同じなので流用します。

〇ケースにGrove Sound Sensorを収納した状態

作成手順

1. OpenSCADで以下のコードを実行して形状を調整し、STLファイルにエクスポートします。

・ケース部分のOpenSCADコード
ケースは温度センサーのコードを使用します。
// Grove Temperature Sensor
WALL_MARGIN=0.4;
GROVE_TEMP_SENSOR_W=20;
GROVE_TEMP_SENSOR_D=20+WALL_MARGIN;
GROVE_TEMP_SENSOR_SPACE_RADIUS=2;
GROVE_TEMP_SENSOR_HOLE_RADIUS=1.2; // 1.5
GROVE_TEMP_SENSOR_H=10;

SHELL_THICK=2;

module grove_temp_sensor()
{
    difference()
    {
        union()
        {
            translate([-GROVE_TEMP_SENSOR_SPACE_RADIUS, 0, 0])
            linear_extrude(height=SHELL_THICK){
                square([GROVE_TEMP_SENSOR_W+GROVE_TEMP_SENSOR_SPACE_RADIUS*2, GROVE_TEMP_SENSOR_D]);
            }

            // left wall
            translate([-GROVE_TEMP_SENSOR_SPACE_RADIUS-SHELL_THICK, -SHELL_THICK, 0])
            linear_extrude(height=GROVE_TEMP_SENSOR_H-SHELL_THICK){
                square([SHELL_THICK, GROVE_TEMP_SENSOR_D+SHELL_THICK*2]);
            }

            // right wall
            translate([GROVE_TEMP_SENSOR_W+GROVE_TEMP_SENSOR_SPACE_RADIUS, -SHELL_THICK, 0])
            linear_extrude(height=GROVE_TEMP_SENSOR_H-SHELL_THICK){
                square([SHELL_THICK, GROVE_TEMP_SENSOR_D+SHELL_THICK*2]);
            }

            // top wall
            translate([-GROVE_TEMP_SENSOR_SPACE_RADIUS, GROVE_TEMP_SENSOR_D, 0])
            linear_extrude(height=GROVE_TEMP_SENSOR_H-SHELL_THICK){
                square([GROVE_TEMP_SENSOR_D+GROVE_TEMP_SENSOR_SPACE_RADIUS*2, SHELL_THICK]);
            }

            // bottom wall
            translate([-GROVE_TEMP_SENSOR_SPACE_RADIUS, -SHELL_THICK, 0])
            linear_extrude(height=GROVE_TEMP_SENSOR_H-SHELL_THICK){
                square([GROVE_TEMP_SENSOR_D+GROVE_TEMP_SENSOR_SPACE_RADIUS*2, SHELL_THICK]);
            }

        }
        union(){
            translate([0, GROVE_TEMP_SENSOR_D/2, 0])
            linear_extrude(height=SHELL_THICK){
                circle(GROVE_TEMP_SENSOR_HOLE_RADIUS, $fn=100);
            }
            translate([GROVE_TEMP_SENSOR_W, GROVE_TEMP_SENSOR_D/2, 0])
            linear_extrude(height=SHELL_THICK){
                circle(GROVE_TEMP_SENSOR_HOLE_RADIUS, $fn=100);
            }
        }

    }   


}
grove_temp_sensor();

・フタ部分のOpenSCADコード
音センサー用の穴の直径はSOUND_SENSOR_DIAMETERで調整できます。
// grove sound sensor lid

GROVE_SOUND_SENSOR_W=20;
GROVE_SOUND_SENSOR_D=20;
GROVE_SOUND_SENSOR_SPACE_RADIUS=2;
GROVE_SOUND_SENSOR_HOLE_RADIUS=1.5;
GROVE_SOUND_SENSOR_H=10;

SHELL_THICK=2;

CONNECTOR_OFFEST_D=1;
CONNECTOR_OFFSET_W=4;
CONNECTOR_W=12+0.8;
CONNECTOR_D=5+1; // 0.8

SOUND_SENSOR_OFFSET_W=4;
SOUND_SENSOR_OFFSET_D=1;
SOUND_SENSOR_DIAMETER=11;


module grove_sound_sensor_case()
{
    difference()
    {
        union()
        {
            translate([-GROVE_SOUND_SENSOR_SPACE_RADIUS-SHELL_THICK, -SHELL_THICK, 0])
            linear_extrude(height=SHELL_THICK){
                square([GROVE_SOUND_SENSOR_W+GROVE_SOUND_SENSOR_SPACE_RADIUS*2+SHELL_THICK*2, GROVE_SOUND_SENSOR_D+SHELL_THICK*2]);
            }

            translate([-GROVE_SOUND_SENSOR_SPACE_RADIUS, 0, SHELL_THICK])
            linear_extrude(height=SHELL_THICK){
                square([GROVE_SOUND_SENSOR_W+GROVE_SOUND_SENSOR_SPACE_RADIUS*2, GROVE_SOUND_SENSOR_D]);
            }
        }

       translate([CONNECTOR_OFFSET_W, CONNECTOR_OFFEST_D, 0])
       linear_extrude(height=SHELL_THICK*2){
            square([CONNECTOR_W, CONNECTOR_D]);
       }

       translate([GROVE_SOUND_SENSOR_W-SOUND_SENSOR_OFFSET_W, GROVE_SOUND_SENSOR_D-SOUND_SENSOR_OFFSET_D-SOUND_SENSOR_DIAMETER/2, 0])
       linear_extrude(height=SHELL_THICK*2){
            circle(SOUND_SENSOR_DIAMETER/2, $fn=100);
       }
    }
}
grove_sound_sensor_case();

〇OpenSCADの画面(フタ)

2. Ultimaker CuraでSTLファイルを読み込み、スライスしてgcodeを保存します。

3. 3Dプリンターで印刷します

関連情報

・Groveデバイスまとめ

・そのほかの3Dプリンターを活用した記事は以下を参照してください。
OpenSCADまとめ

2020年9月27日日曜日

OpenSCADとUltimaker Curaを使用してGrove Light Sensorのケースを作成する

OpenSCADとUltimaker Curaを使用して、Grove Light Sensorのケースを作成するには以下の手順を実行します。

〇Grove Light Sensorのケース/フタ
フタの部分にはGroveコネクタ用の穴と光センサー用の穴があります。

〇ケースにGrove 部分 Sensorを収納した状態

作成手順

1. OpenSCADで以下のコードを実行して形状を調整し、STLファイルにエクスポートします。

・ケース部分のOpenSCADコード
ケース部分のネジ穴のサイズはGROVE_TEMP_SENSOR_HOLE_RADIUSで調整します。
// Grove Light Sensor
WALL_MARGIN=0.4;
GROVE_LIGHT_SENSOR_W=20;
GROVE_LIGHT_SENSOR_D=20+WALL_MARGIN;
GROVE_LIGHT_SENSOR_SPACE_RADIUS=2;
GROVE_LIGHT_SENSOR_HOLE_RADIUS=1.2; // 1.5
GROVE_LIGHT_SENSOR_H=12;

SHELL_THICK=2;

module grove_light_sensor_case()
{
    difference()
    {
        union()
        {
            translate([-GROVE_LIGHT_SENSOR_SPACE_RADIUS, 0, 0])
            linear_extrude(height=SHELL_THICK){
                square([GROVE_LIGHT_SENSOR_W+GROVE_LIGHT_SENSOR_SPACE_RADIUS*2, GROVE_LIGHT_SENSOR_D]);
            }

            // left wall
            translate([-GROVE_LIGHT_SENSOR_SPACE_RADIUS-SHELL_THICK, -SHELL_THICK, 0])
            linear_extrude(height=GROVE_LIGHT_SENSOR_H-SHELL_THICK){
                square([SHELL_THICK, GROVE_LIGHT_SENSOR_D+SHELL_THICK*2]);
            }

            // right wall
            translate([GROVE_LIGHT_SENSOR_W+GROVE_LIGHT_SENSOR_SPACE_RADIUS, -SHELL_THICK, 0])
            linear_extrude(height=GROVE_LIGHT_SENSOR_H-SHELL_THICK){
                square([SHELL_THICK, GROVE_LIGHT_SENSOR_D+SHELL_THICK*2]);
            }

            // top wall
            translate([-GROVE_LIGHT_SENSOR_SPACE_RADIUS, GROVE_LIGHT_SENSOR_D, 0])
            linear_extrude(height=GROVE_LIGHT_SENSOR_H-SHELL_THICK){
                square([GROVE_LIGHT_SENSOR_D+GROVE_LIGHT_SENSOR_SPACE_RADIUS*2, SHELL_THICK]);
            }

            // bottom wall
            translate([-GROVE_LIGHT_SENSOR_SPACE_RADIUS, -SHELL_THICK, 0])
            linear_extrude(height=GROVE_LIGHT_SENSOR_H-SHELL_THICK){
                square([GROVE_LIGHT_SENSOR_D+GROVE_LIGHT_SENSOR_SPACE_RADIUS*2, SHELL_THICK]);
            }

        }
        union(){
            translate([0, GROVE_LIGHT_SENSOR_D/2, 0])
            linear_extrude(height=SHELL_THICK){
                circle(GROVE_LIGHT_SENSOR_HOLE_RADIUS, $fn=100);
            }
            translate([GROVE_LIGHT_SENSOR_W, GROVE_LIGHT_SENSOR_D/2, 0])
            linear_extrude(height=SHELL_THICK){
                circle(GROVE_LIGHT_SENSOR_HOLE_RADIUS, $fn=100);
            }
        }

    }   

}
grove_light_sensor_case();

・フタ部分のOpenSCADコード
光センサーの穴の直径はLIGHT_SENSOR_DIAMETERで微調整してください。
// grove light sensor lid
GROVE_LIGHT_SENSOR_W=20;
GROVE_LIGHT_SENSOR_D=20;
GROVE_LIGHT_SENSOR_SPACE_RADIUS=2;
GROVE_LIGHT_SENSOR_HOLE_RADIUS=1.5;
GROVE_LIGHT_SENSOR_H=10;

SHELL_THICK=2;

CONNECTOR_OFFEST_D=1;
CONNECTOR_OFFSET_W=4;
CONNECTOR_W=12+0.8;
CONNECTOR_D=5+1; //0.8;

LIGHT_SENSOR_OFFSET_D=4;
LIGHT_SENSOR_DIAMETER=6.5;


module grove_light_sensor_lid()
{
    difference()
    {
        union()
        {
            translate([-GROVE_LIGHT_SENSOR_SPACE_RADIUS-SHELL_THICK, -SHELL_THICK, 0])
            linear_extrude(height=SHELL_THICK){
                square([GROVE_LIGHT_SENSOR_W+GROVE_LIGHT_SENSOR_SPACE_RADIUS*2+SHELL_THICK*2, GROVE_LIGHT_SENSOR_D+SHELL_THICK*2]);
            }

            translate([-GROVE_LIGHT_SENSOR_SPACE_RADIUS, 0, SHELL_THICK])
            linear_extrude(height=SHELL_THICK){
                square([GROVE_LIGHT_SENSOR_W+GROVE_LIGHT_SENSOR_SPACE_RADIUS*2, GROVE_LIGHT_SENSOR_D]);
            }
        }

       translate([CONNECTOR_OFFSET_W, CONNECTOR_OFFEST_D, 0])
       linear_extrude(height=SHELL_THICK*2){
            square([CONNECTOR_W, CONNECTOR_D]);
       }

       translate([GROVE_LIGHT_SENSOR_W-CONNECTOR_OFFSET_W-LIGHT_SENSOR_DIAMETER/2+GROVE_LIGHT_SENSOR_SPACE_RADIUS/2, LIGHT_SENSOR_OFFSET_D+CONNECTOR_D+CONNECTOR_OFFEST_D++LIGHT_SENSOR_DIAMETER/2, 0])
       linear_extrude(height=SHELL_THICK*2){
            circle(LIGHT_SENSOR_DIAMETER/2, $fn=100);
       }
    }
}
grove_light_sensor_lid();


〇OpenSCADの画面(ケース)
 


〇OpenSCADの画面(フタ)
 


2. Ultimaker CuraでSTLファイルを読み込み、スライスしてgcodeを保存します。

3. 3Dプリンターで印刷します


関連情報

・Raspberry Pi ZeroとGrove Base HATを利用してGrove Light Sensorを接続する場合は、以下の記事を参照してください。
「Raspberry Pi ZeroとGrove Base HAT for Raspberry Piと光センサーで、明るさを取得する」

・Groveデバイスまとめ

・そのほかの3Dプリンターを活用した記事は以下を参照してください。
OpenSCADまとめ

2020年9月26日土曜日

OpenSCADとUltimaker Curaを使用してGrove温度センサー(Grove Temperature Sensor)のケースを作成する

OpenSCADとUltimaker Curaを使用して、Grove温度センサー(Grove Temperature Sensor)のケースを作成するには以下の手順を実行します。

〇Grove Temperature Sensorのケース/フタ
フタの部分にはGroveコネクタ用の穴とスリットがあります。

〇ケースにGrove Temperature Sensorを収納した状態

作成手順

1. OpenSCADで以下のコードを実行して形状を調整し、STLファイルにエクスポートします。
・ケース部分のOpenSCADコード
ケース部分のネジ穴のサイズはGROVE_TEMP_SENSOR_HOLE_RADIUSで調整します。
// Grove Temperature Sensor
WALL_MARGIN=0.4;
GROVE_TEMP_SENSOR_W=20;
GROVE_TEMP_SENSOR_D=20+WALL_MARGIN;
GROVE_TEMP_SENSOR_SPACE_RADIUS=2;
GROVE_TEMP_SENSOR_HOLE_RADIUS=1.2; // 1.5
GROVE_TEMP_SENSOR_H=10;

SHELL_THICK=2;

module grove_temp_sensor()
{
    difference()
    {
        union()
        {
            translate([-GROVE_TEMP_SENSOR_SPACE_RADIUS, 0, 0])
            linear_extrude(height=SHELL_THICK){
                square([GROVE_TEMP_SENSOR_W+GROVE_TEMP_SENSOR_SPACE_RADIUS*2, GROVE_TEMP_SENSOR_D]);
            }

            // left wall
            translate([-GROVE_TEMP_SENSOR_SPACE_RADIUS-SHELL_THICK, -SHELL_THICK, 0])
            linear_extrude(height=GROVE_TEMP_SENSOR_H-SHELL_THICK){
                square([SHELL_THICK, GROVE_TEMP_SENSOR_D+SHELL_THICK*2]);
            }

            // right wall
            translate([GROVE_TEMP_SENSOR_W+GROVE_TEMP_SENSOR_SPACE_RADIUS, -SHELL_THICK, 0])
            linear_extrude(height=GROVE_TEMP_SENSOR_H-SHELL_THICK){
                square([SHELL_THICK, GROVE_TEMP_SENSOR_D+SHELL_THICK*2]);
            }

            // top wall
            translate([-GROVE_TEMP_SENSOR_SPACE_RADIUS, GROVE_TEMP_SENSOR_D, 0])
            linear_extrude(height=GROVE_TEMP_SENSOR_H-SHELL_THICK){
                square([GROVE_TEMP_SENSOR_D+GROVE_TEMP_SENSOR_SPACE_RADIUS*2, SHELL_THICK]);
            }

            // bottom wall
            translate([-GROVE_TEMP_SENSOR_SPACE_RADIUS, -SHELL_THICK, 0])
            linear_extrude(height=GROVE_TEMP_SENSOR_H-SHELL_THICK){
                square([GROVE_TEMP_SENSOR_D+GROVE_TEMP_SENSOR_SPACE_RADIUS*2, SHELL_THICK]);
            }

        }
        union(){
            translate([0, GROVE_TEMP_SENSOR_D/2, 0])
            linear_extrude(height=SHELL_THICK){
                circle(GROVE_TEMP_SENSOR_HOLE_RADIUS, $fn=100);
            }
            translate([GROVE_TEMP_SENSOR_W, GROVE_TEMP_SENSOR_D/2, 0])
            linear_extrude(height=SHELL_THICK){
                circle(GROVE_TEMP_SENSOR_HOLE_RADIUS, $fn=100);
            }
        }

    }   


}
grove_temp_sensor();

・フタ部分のOpenSCADコード
スリットの奥行はSLIT_Dで調整できます。
// grove temperature sensor lid

GROVE_TEMP_SENSOR_W=20;
GROVE_TEMP_SENSOR_D=20;
GROVE_TEMP_SENSOR_SPACE_RADIUS=2;
GROVE_TEMP_SENSOR_HOLE_RADIUS=1.5;
GROVE_TEMP_SENSOR_H=10;

SHELL_THICK=2;

CONNECTOR_OFFEST_D=1;
CONNECTOR_OFFSET_W=4;
CONNECTOR_W=12+0.8;
CONNECTOR_D=5+0.8;

SLIT_D=2;


module grove_temp_sensor()
{
    difference()
    {
        union()
        {
            translate([-GROVE_TEMP_SENSOR_SPACE_RADIUS-SHELL_THICK, -SHELL_THICK, 0])
            linear_extrude(height=SHELL_THICK){
                square([GROVE_TEMP_SENSOR_W+GROVE_TEMP_SENSOR_SPACE_RADIUS*2+SHELL_THICK*2, GROVE_TEMP_SENSOR_D+SHELL_THICK*2]);
            }

            translate([-GROVE_TEMP_SENSOR_SPACE_RADIUS, 0, SHELL_THICK])
            linear_extrude(height=SHELL_THICK){
                square([GROVE_TEMP_SENSOR_W+GROVE_TEMP_SENSOR_SPACE_RADIUS*2, GROVE_TEMP_SENSOR_D]);
            }
        }

       translate([CONNECTOR_OFFSET_W, CONNECTOR_OFFEST_D, 0])
       linear_extrude(height=SHELL_THICK*2){
            square([CONNECTOR_W, CONNECTOR_D]);
       }

       translate([0, CONNECTOR_OFFEST_D+CONNECTOR_D+SLIT_D, 0])
       linear_extrude(height=SHELL_THICK*2){
            square([GROVE_TEMP_SENSOR_W, SLIT_D]);
       }
       translate([0, CONNECTOR_OFFEST_D+CONNECTOR_D+SLIT_D*3, 0])
       linear_extrude(height=SHELL_THICK*2){
            square([GROVE_TEMP_SENSOR_W, SLIT_D]);
       }
       translate([0, CONNECTOR_OFFEST_D+CONNECTOR_D+SLIT_D*5, 0])
       linear_extrude(height=SHELL_THICK*2){
            square([GROVE_TEMP_SENSOR_W, SLIT_D]);
       }
    }
}
grove_temp_sensor();

〇OpenSCADの画面(ケース)

〇OpenSCADの画面(フタ)

2. Ultimaker CuraでSTLファイルを読み込み、スライスしてgcodeを保存します。

3. 3Dプリンターで印刷します

関連情報

・Groveデバイスまとめ

2020年9月25日金曜日

OpenSCADとUltimaker Curaを使用して棚ダボを作成する

OpenSCADとUltimaker Curaを使用して、棚ダボを作成するには以下の手順を実行します。

〇3Dプリンタで作成した棚ダボ

作成手順

1. OpenSCADで以下のコードを実行して形状を調整し、STLファイルにエクスポートします。
ダボの形はパラメータで制御する事ができます。
・ヘッド半径
PIN_HEAD_RADIUS
・ヘッドの高さ
PIN_HEAD_H
・軸の半径
PIN_SHANK_RADIUS
・軸の高さ
PIN_SHANK_H

・OpenSCADコード
// 棚ダボ
// ヘッド半径
PIN_HEAD_RADIUS = 3.5;
// ヘッドの高さ
PIN_HEAD_H = 7;
// 軸の半径
PIN_SHANK_RADIUS= 2.5;
// 軸の高さ
PIN_SHANK_H = 7;

linear_extrude(height=PIN_HEAD_H){
    circle(PIN_HEAD_RADIUS, $fn=50);
}
translate([0, 0, PIN_HEAD_H])
linear_extrude(height=PIN_SHANK_H){
    circle(PIN_SHANK_RADIUS, $fn=50);
}

〇OpenSCADでの棚ダボデザイン画面

2. Ultimaker CuraでSTLファイルを読み込み、スライスしてgcodeを保存します。

3. 3Dプリンターで印刷します

関連情報

・そのほかの3Dプリンターを活用した記事は以下を参照してください。
OpenSCADまとめ

2020年9月24日木曜日

OpenSCADとUltimaker Curaを使用してArduino Nano Everyのケースを作成する

OpenSCADとUltimaker Curaを使用して、Arduino Nano Everyのケースを作成するには以下の手順を実行します。

〇Arduino Nano Everyのケース/フタ
ピン用の足の部分は穴あきにしています。

〇ケースにArduino Nano Everyを収納した状態

〇作成手順
1. OpenSCADで以下のコードを実行して形状を調整し、STLファイルにエクスポートします。
・ケース部分のOpenSCADコード
// Arduino Nanoのベースサイズ
NANO_W=45;
NANO_D=18;

NANO_PIN_D=3;
NANO_PIN_H=9;

HOLE_SPACE_W = 2;
HOLE_SPACE_D = 3.5;

WALL_THICK=2;

WALL_H=16;

MICROUSB_D=8;

BOARD_THICK=1;

module nano_base()
{
    translate([0, 0, 0])
    linear_extrude(height=NANO_PIN_H){
        square([HOLE_SPACE_W, NANO_D]);
    }

    translate([HOLE_SPACE_W, HOLE_SPACE_D, 0])
    linear_extrude(height=NANO_PIN_H){
        square([NANO_W-HOLE_SPACE_W*2, NANO_D-HOLE_SPACE_D*2]);
    }

    translate([NANO_W-HOLE_SPACE_W, 0, 0])
    linear_extrude(height=NANO_PIN_H){
        square([HOLE_SPACE_W, NANO_D]);
    }

}

module nano_wall()
{
    // microusb
    translate([-WALL_THICK, -WALL_THICK, 0])
    linear_extrude(height=WALL_H){
        square([WALL_THICK, (NANO_D-MICROUSB_D)/2+WALL_THICK]);
    }
    translate([-WALL_THICK, (NANO_D-MICROUSB_D)/2, 0])
    linear_extrude(height=NANO_PIN_H+BOARD_THICK){
        square([WALL_THICK, MICROUSB_D]);
    }
    translate([-WALL_THICK, (NANO_D-MICROUSB_D)/2+MICROUSB_D, 0])
    linear_extrude(height=WALL_H){
        square([WALL_THICK, (NANO_D-MICROUSB_D)/2+WALL_THICK]);
    }

    translate([0, -WALL_THICK, 0])
    linear_extrude(height=WALL_H){
        square([NANO_W, WALL_THICK]);
    }

    translate([0, NANO_D, 0])
    linear_extrude(height=WALL_H){
        square([NANO_W, WALL_THICK]);
    }

    translate([NANO_W, -WALL_THICK, 0])
    linear_extrude(height=WALL_H){
        square([WALL_THICK, NANO_D+WALL_THICK*2]);
    }

}

nano_base();
nano_wall();

・フタ部分のOpenSCADコード
// Arduino Nanoのベースサイズ
NANO_W=45;
NANO_D=18;

WALL_THICK=2;
WALL_H=2;

module nano_lid()
{
    translate([-WALL_THICK, -WALL_THICK, 0])
    linear_extrude(height=WALL_H){
        square([NANO_W+WALL_THICK*2, NANO_D+WALL_THICK*2]);
    }

    translate([0, 0, WALL_H])
    linear_extrude(height=WALL_H){
        square([NANO_W, NANO_D]);
    }

}

nano_lid();

〇OpenSCADの画面(ケース)

〇OpenSCADの画面(フタ)

2. Ultimaker CuraでSTLファイルを読み込み、スライスしてgcodeを保存します。

3. 3Dプリンターで印刷します

関連情報

・そのほかの3Dプリンターを活用した記事は以下を参照してください。
OpenSCADまとめ