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

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

Цель проекта

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

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

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

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

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

  • ESP32: 55 мм x 28 мм
  • Батарея: 50 мм x 30 мм
  • Экран: 35 мм
  • Кнопки: диаметр 12 мм

Эти размеры были выбраны с учетом стандартных компонентов, используемых в подобных устройствах.

Конструкция корпуса

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

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

    • Внутренняя полость для размещения компонентов.
    • Отверстия для экрана и кнопок, расположенные в удобных местах для доступа пользователя.
    • USB-порт для зарядки или подключения к другим устройствам.
    • Четыре крепежных столбика для надежного монтажа крышки.
  2. Крышка:

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

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

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

Технология производства

Корпус будет изготовлен с использованием 3D-печати или другого метода, подходящего для создания пластиковых деталей. Проектирование выполнено с использованием OpenSCAD, что позволяет легко вносить изменения в размеры и параметры конструкции.

Заключение

Данный проект представляет собой функциональный и эстетически привлекательный корпус для устройства на базе ESP32. Он обеспечивает защиту внутренних компонентов, удобство в использовании и легкость в производстве.

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

// Размеры компонентов
esp32_length = 55;
esp32_width = 28;
battery_length = 50;
battery_width = 30;
screen_size = 35;
button_d = 12;

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

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)
        );

        // Отверстие для экрана
        translate([length/2 - screen_size/2, width - 15, height - 5])
        cube([screen_size, 10, 10]);

        // Отверстия для кнопок
        translate([length - 15, width/2 - 20, height - 8])
        cylinder(d = button_d, h = 10, $fn=50);

        translate([length - 15, width/2 + 20, height - 8])
        cylinder(d = button_d, h = 10, $fn=50);

        // USB-порт
        translate([10, width/2 - 6, 0])
        cube([15, 12, 10]);
    }

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

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

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

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