Корпус для устройства на базе ESP32

Описание проекта: Корпус для устройства на базе ESP32

Цель проекта

Создание корпуса для электронного устройства, использующего плату ESP32. Корпус должен обеспечивать защиту компонентов, удобство в использовании и эстетичный внешний вид. Он будет включать в себя отверстия для подключения USB и кнопки, а также крепежные элементы для надежной фиксации платы.

Основные параметры корпуса

  • Толщина стенок: 2 мм
  • Высота: 25 мм
  • Длина: 73 мм
  • Ширина: 51 мм
  • Радиус скругления: 8 мм

Размеры компонентов

  • ESP32: 37 мм (длина) x 19 мм (ширина)
  • USB разъем: 12 мм
  • Кнопка: 12 мм (диаметр)

Крепежные элементы

Корпус включает в себя четыре крепежных столбика для надежной фиксации платы ESP32:

  • Передний левый столбик: [7, 15]
  • Передний правый столбик: [44, 34] (с учетом длины ESP32)
  • Задний левый столбик: [6, 45]
  • Задний правый столбик: [67, 45]

Структура корпуса

Корпус состоит из двух основных частей: основной части и крышки.

  1. Основная часть:

    • Выполнена в форме прямоугольного параллелепипеда с закругленными углами.
    • Внутри корпуса предусмотрена полость для размещения платы ESP32.
    • Реализовано отверстие для подключения USB-кабеля.
  2. Крышка:

    • Крышка также имеет закругленные углы и крепежные отверстия, которые совпадают с позициями столбиков основной части.
    • Обеспечивает легкий доступ к внутренним компонентам устройства.

Технология реализации

Корпус моделируется с использованием OpenSCAD, что позволяет точно задать размеры и параметры всех элементов. Используются функции для создания закругленных прямоугольников и цилиндров, что обеспечивает плавные линии и эстетичный вид.

Заключение

Проект корпуса для устройства на базе ESP32 направлен на создание функционального и привлекательного решения для защиты электроники. Корпус будет легко собираться и разбираться, что обеспечит удобство в обслуживании устройства.

// Параметры корпуса
thickness = 2;       // Толщина стенок
height = 25;         // Общая высота
length = 73;         // Длина корпуса
width = 51;          // Ширина корпуса
radius = 8;          // Радиус скругления

// Размеры компонентов
esp32_length = 37;
esp32_width = 19;
usb_size = 12;
button_d = 12;

// Координаты крепежных элементов для платы (общие параметры)
mount1_pos_pl = [7, 15];                // Левый передний столбик
mount2_pos_pl = [7+esp32_length, 15+esp32_width];       // Правый передний столбик

// Координаты крепежных элементов (общие параметры)
mount1_pos = [6, 6];                // Левый передний столбик
mount2_pos = [length - 6, 6];       // Правый передний столбик
mount3_pos = [6, width - 6];        // Левый задний столбик
mount4_pos = [length - 6, width - 6]; // Правый задний столбик


module rounded_rect(L, W, H, R) {
    hull() {
        translate([R, R, 0]) cylinder(r = R, h = H, $fn=50);
        translate([L - R, R, 0]) cylinder(r = R, h = H, $fn=50);
        translate([R, W - R, 0]) cylinder(r = R, h = H, $fn=50);
        translate([L - R, W - R, 0]) cylinder(r = R, h = H, $fn=50);
    }
}

module main_body() {
    difference() {
        // Основная форма
        rounded_rect(length, width, height, radius);

        // Внутренняя полость
        translate([thickness, thickness, thickness])
        rounded_rect(
            length - 2*thickness, 
            width - 2*thickness, 
            height - thickness + 0.1,
            max(radius - thickness, 1)
        );

        // Отверстие для USB
        translate([0, 14, thickness*2+7])
        cube([thickness, usb_size, 7]);


    }

    // Крепежные столбики для платы (4 точки)
    for(pos = [mount1_pos_pl, mount2_pos_pl])
    translate([pos[0], pos[1], thickness])
    difference() {
        cylinder(d = 8, h = thickness+7, $fn=50);
        //cylinder(d = 2.5, h = thickness+7, $fn=50);
    }

    // Крепежные столбики (4 точки)
    for(pos = [mount1_pos, mount2_pos, mount3_pos, mount4_pos])
    translate([pos[0], pos[1], thickness])
    difference() {
        cylinder(d = 8, h = height-thickness-3, $fn=50);
        //cylinder(d = 2.5, h = height-thickness-3, $fn=50);
    }

}

module lid() {
    // Крышка с крепежными отверстиями
    difference() {
        rounded_rect(length-2*thickness, width-2*thickness, 3, radius-thickness);

        // Отверстия для винтов (совпадают с позициями столбиков)
        for(pos = [mount1_pos, mount2_pos, mount3_pos, mount4_pos])
        translate([pos[0]-thickness, pos[1]-thickness, -0.1])
        cylinder(d = 3, h = 5, $fn=50);
    }
}

// Сборка с правильным позиционированием
main_body();
translate([thickness, thickness, height + 30]) lid(); // Уменьшен зазор между частями
3D вид:
Скачать stl файл