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まとめ

0 件のコメント:

コメントを投稿