基于stm32搞怪的盒子设计
前言:
最近我看到一个极具创意的搞怪盒子,设计得相当有意思。作为一个热衷于电子DIY的狂热爱好者,怎能错过这样一个有趣的项目呢?于是,我决定亲自动手,设计一个属于自己的、独一无二的搞怪盒子。下面是我设计的详细过程和思路,希望能够为你带来一些启发。
动手DIY一个搞怪盒子不仅能满足我的创作欲望,还能在家中增添一抹乐趣。每当看到家人或朋友因为它的搞怪动作而哈哈大笑,我就感到无比的满足和成就感。如果你也对电子DIY感兴趣,不妨动手试试,说不定你会发现更多有趣的创意呢!
一、设计目的:
以上设计目的是创造一个能够吸引人们注意并带来乐趣的互动设备,通过集成多种传感器和输出设备,如舵机、OLED屏幕和拨动开关,实现多种搞怪效果。设计中包含了六种不同的搞怪模式,每种模式都有独特的机械动作和屏幕显示,为大家提供多样化的娱乐体验。此外,设备还具备休眠功能,以节省能源,同时设计时也考虑了设备的稳定性和耐用性,确保长期可靠运行。整体设计旨在通过互动性和趣味性,为用户带来轻松愉快的体验。
二、实现功能:
这个基于STM32的搞怪盒子设计通过使用STM32F103C6T6微控制器、MG995舵机、0.96英寸OLED屏幕、拨动开关等组件,实现了多种有趣的互动功能。主要功能包括:1. 通过舵机控制机械动作,如打开/关闭盖子、移动物体等,以实现不同的搞怪效果。2. 利用OLED屏幕显示文字、图像或动画,增加互动性和视觉效果。3. 通过拨动开关控制设备的电源或切换不同的搞怪模式。4. 设计了六种不同的搞怪模式(type_1到type_6),每种模式都有独特的动作和屏幕显示,如直接开、快开、挨打、偷看、调戏和快速开关等,为用户带来多样化的娱乐体验。此外,设备还具备休眠功能,通过OLED_OFF()和OLED_ON()函数实现屏幕的开关,以节省能源。整体设计注重互动性和趣味性,同时考虑了设备的稳定性和耐用性。
2.1 机械动作控制:
利用MG995舵机来控制盒子的机械动作,例如打开和关闭盖子,或者移动盒子内部的物体。通过编写代码,我们可以让这些动作变得更加生动和搞怪,让人捧腹大笑。
2.2 显示界面:
使用0.96英寸OLED屏幕显示文字、图像或动画。屏幕的内容可以与机械动作相呼应,比如打开盖子时显示“Surprise!”的文字,或者做出一些搞怪的表情。
2.3 电源和模式控制:
通过拨动开关,不仅可以控制整个设备的电源,还能在不同的搞怪模式之间切换。每种模式都有其独特的魅力和互动效果。
2.4 多种搞怪模式:
我设计了六种不同的搞怪模式(type_1到type_6),每种模式都有独特的动作和屏幕显示。例如:
type_1(直接开):舵机直接打开盖子,屏幕显示“Hello!”。
type_2(快开):舵机快速打开盖子,屏幕显示快速变化的动画。
type_3(挨打):模拟被打击的动作,屏幕显示“别打我!”。
type_4(偷看):盖子缓慢打开一点,屏幕显示“偷看中…”。
type_5(调戏):盖子反复开关,屏幕显示“调戏模式启动!”。
type_6(快速开关):盖子快速多次开关,屏幕显示“快开快关!”。
2.5 节能休眠功能:
考虑到节能环保,我还加入了休眠功能。通过OLED_OFF()和OLED_ON()函数,实现屏幕的开关功能。当盒子不使用时,屏幕会自动关闭,进入休眠状态,减少能源消耗。
整个设计过程中,我非常注重互动性和趣味性,力求每个细节都能给用户带来愉快的体验。同时,也考虑到了设备的稳定性和耐用性,确保在长期使用中依然能保持良好的性能。
三、项目概述
这个搞怪盒子的核心在于STM32F103C6T6微控制器,它是整个项目的“大脑”。除此之外,还需要一些关键组件:MG995舵机、0.96英寸OLED屏幕、拨动开关等。通过这些组件的组合,我们可以实现多种有趣的互动功能。
3.1 MG995舵机(2个):
每个12元,共24元。
这些舵机是机械动作的核心,它们能够精确控制盒子的开合和内部物体的移动。通过编程,我们可以让它们执行各种搞怪动作,如快速开关、缓慢移动等,为盒子增添生动的互动性。
3.2 0.96英寸OLED屏幕:
10元。
这款小巧的OLED屏幕是展示搞怪内容的关键。它能够显示文字、图像和简单的动画,与舵机的动作同步,为用户带来视觉上的惊喜和乐趣。屏幕虽小,但足以传达丰富的信息和表情。
3.3 拨动开关:
5元。
这个简单的拨动开关不仅控制电源,还允许用户在不同的搞怪模式之间轻松切换。它的存在使得操作更加直观和便捷,让用户能够随时选择自己喜欢的互动方式。
3.4 C6T6核心板:
6元。
作为整个项目的大脑,STM32F103C6T6核心板负责处理所有的逻辑和控制任务。尽管价格亲民,但它提供了足够的性能和灵活性,确保盒子能够稳定运行并实现各种创意功能。
3.5 3D打印:
180元。
3D打印部分是盒子的外壳和结构支撑。通过定制设计,我们可以打造出独一无二的外观和内部布局,使盒子不仅实用,还具有个性化的外观。虽然这部分成本较高,但它为整个项目增添了独特的质感和视觉吸引力。
部件 | 数量 | 单价(元) | 总价(元) |
---|---|---|---|
MG995舵机 | 2 | 12 | 24 |
0.96 OLED屏幕 | 1 | 10 | 10 |
拨动开关 | 1 | 5 | 5 |
C6T6核心板 | 1 | 6 | 6 |
3D打印 | 1 | 180 | 180 |
总计 | 235 |
尽管这些硬件看似简单,但正是它们的巧妙组合和应用,使得这个搞怪盒子充满了趣味和创意。通过合理的设计和编程,我们能够将这些基础组件转化为一个充满互动性和娱乐性的设备,为用户带来无尽的欢乐。这种“以简驭繁”的设计理念,正是电子DIY的魅力所在。
这个搞怪盒子的硬件配置并不复杂,没有使用特别高端或昂贵的材料,但这正是其魅力所在。通过巧妙地组合和利用这些基础组件,我们能够创造出意想不到的互动效果和乐趣。
四、电路接线设计
括电源、控制信号和数据传输线路的连接方式。这些接线设计确保了STM32F103C6T6微控制器与各个外设(如MG995舵机、OLED屏幕、拨动开关等)之间的正确通信和功能实现。
4.1 电源输入:
使用外部5V电源适配器,通过电源插座连接到电路板上。
电源正极(VCC)连接到电路板的5V引脚。
电源负极(GND)连接到电路板的GND引脚。
4.2 舵机电源:
两个MG995舵机的电源线(红色线)连接到电路板的5V引脚。
两个MG995舵机的地线(棕色线)连接到电路板的GND引脚。
4.3 控制信号接线
舵机控制信号:
第一个MG995舵机的信号线(橙色线)连接到STM32F103C6T6的TIM1_CH1(PA8)引脚
第二个MG995舵机的信号线(橙色线)连接到STM32F103C6T6的TIM1_CH2(PA9)引脚。
4.4 拨动开关:
拨动开关的一端连接到STM32F103C6T6的GPIO引脚(例如PA0)。
拨动开关的另一端连接到电路板的GND引脚。
在GPIO引脚和GND之间连接一个10kΩ的上拉电阻,确保在开关断开时GPIO引脚为高电平。
4.5 数据传输接线:
OLED屏幕:
OLED屏幕的VCC引脚连接到电路板的5V引脚。
OLED屏幕的GND引脚连接到电路板的GND引脚。
OLED屏幕的SCL引脚连接到STM32F103C6T6的I2C1_SCL(PB6)引脚。
OLED屏幕的SDA引脚连接到STM32F103C6T6的I2C1_SDA(PB7)引脚。
4.6 其他接线
LED指示灯:
LED的正极连接到STM32F103C6T6的GPIO引脚(例如PA1)。
LED的负极通过一个220Ω的限流电阻连接到电路板的GND引脚。
4.7 按键:
按键的一端连接到STM32F103C6T6的GPIO引脚(例如PA2)。
按键的另一端连接到电路板的GND引脚。
在GPIO引脚和GND之间连接一个10kΩ的上拉电阻,确保在按键未按下时GPIO引脚为高电平。
在实际布线和焊接过程中,为了确保STM32F103C6T6微控制器与各个外设之间的稳定连接和高效通信,我们应当采取一系列细致的措施。首先,所有连接点都应进行牢固的焊接,确保电气接触良好,避免因接触不良导致的信号丢失或不稳定。其次,为了避免短路和虚焊现象,我们应当在焊接前仔细检查电路设计图,确保每个元件的引脚都正确无误地连接到相应的电路节点上。
考虑到长期使用的稳定性和可靠性,设计并制作一块定制的PCB(Printed Circuit Board,印刷电路板)是一个极佳的选择。PCB不仅能够提供更加整洁和紧凑的电路布局,还能够通过其精密的制造工艺,确保每个连接点的稳定性和耐久性。在PCB设计过程中,我们应当充分考虑信号的完整性和抗干扰能力,合理规划电源和地线的布局,以及信号线的走线方式,从而最大限度地减少电磁干扰和信号衰减。
在PCB的制作过程中,选择高质量的材料和先进的制造工艺也是至关重要的。例如,使用FR-4等级的玻璃纤维增强环氧树脂板作为基材,能够提供良好的机械强度和电气绝缘性能。同时,采用精细的铜箔走线和精确的孔位加工,可以确保每个元件的引脚都能够准确无误地插入到PCB的焊盘上,从而实现稳固的电气连接。
通过精心设计的接线方案和高质量的PCB制作,我们不仅能够确保STM32F103C6T6微控制器与各个外设之间的正确连接和通信,还能够提升整个系统的稳定性和可靠性,为后续的功能实现和性能优化奠定坚实的基础。
五、软件设计
5.1 初始化阶段:
初始化延时函数 `DelayInit()`。
配置I2C接口 `I2C_Configuration()`。
初始化OLED屏幕 `OLED_Init()`。
配置LED GPIO `LED_GPIO_Config()`。
初始化PWM定时器 `TIM1_PWM_Init(199, 7199)`,设置PWM周期为20ms。
配置按键 `KEY_Config()`。
点亮LED `LED(ON)`。
5.2 主循环:
关闭OLED屏幕 `OLED_OFF()`。
点亮LED `LED(ON)`。
设置等待标志 `wait=1`。
延时1500ms `SysTick_Delay_Ms(1500)`。
检查等待标志 `if(wait==0)`。
打开OLED屏幕 `OLED_ON()`。
根据变量 `a` 选择不同的动作类型 `switch(a)`。
执行相应的动作函数 `type_1()` 到 `type_6()`
重置等待标志 `wait=1`。
关闭OLED屏幕 `OLED_OFF()`。
递增变量 `a`,并在达到7时重置为1。
5.3 动作类型函数设计
(1). 设置舵机角度:通过 `TIM_SetCompare1(TIM1, value)` 和 `TIM_SetCompare2(TIM1, value)` 设置舵机的PWM占空比,从而控制舵机的角度。
(2). 显示OLED图像:通过 `OLED_DrawBMP(0, 0, 128, 8, (unsigned char *)BMPx)` 在OLED屏幕上显示相应的位图。
(3). 延时:通过 `SysTick_Delay_Ms(duration)` 进行延时,控制动作的持续时间。
5.4 具体动作类型函数
(1). type_1() - 直接开:
设置舵机角度并显示OLED图像。
通过一系列的延时和角度调整,模拟舵机的运动。
(2). type_2() - 快开:
设置舵机角度并显示OLED图像。
通过较短的延时和快速的角度调整,模拟快速运动。
(3). type_3() - 挨打:
设置舵机角度并显示OLED图像。
通过多次快速的角度调整和图像切换,模拟被打击的效果。
(4). type_4() - 偷看:
设置舵机角度并显示OLED图像。
通过较长的延时和缓慢的角度调整,模拟偷看的行为。
(5). type_5() - 调戏:
设置舵机角度并显示OLED图像。
通过多次快速的角度调整和图像切换,模拟调戏的行为。
(6). type_6() - 其他动作:
设置舵机角度并显示OLED图像。
通过一系列的延时和角度调整,模拟其他特定的动作。
5.5 main函数代码实现:
#include "stm32f10x.h"
#include "bsp_led.h"
#include "bsp_SysTick.h"
#include "bsp_pwm.h"
#include "bsp_key.h"
#include "OLED_I2C.h"
#include "delay.h"
void type_1(void);
void type_2(void);
void type_3(void);
void type_4(void);
void type_5(void);
void type_6(void);
extern const unsigned char BMP1[];
extern const unsigned char BMP2[];
extern const unsigned char BMP3[];
extern const unsigned char BMP4[];
extern const unsigned char BMP5[];
extern unsigned char wait;
int main(void)
{
unsigned char a=0;
DelayInit();
I2C_Configuration();
OLED_Init();
LED_GPIO_Config();
TIM1_PWM_Init(199,7199);//(7200*200)/72000000=0.02=20ms
KEY_Config();
LED(ON);
while(1)
{
OLED_OFF();//测试OLED休眠
LED(ON);
wait=1;
SysTick_Delay_Ms(1500);
if(wait==0)
{
OLED_ON();
switch(a)
{
case 1:type_1();break;
case 2:type_2();break;
case 3:type_3();break;
case 4:type_4();break;
case 5:type_5();break;
case 6:type_6();break;
}
wait=1;
OLED_OFF();
a++;
if(a==7)
{
a=1;
}
}
}
}
//直接开
void type_1(void)
{
TIM_SetCompare1(TIM1,184); //45度,1ms
OLED_DrawBMP(0,0,128,8,(unsigned char *)BMP3);//测试BMP位图显示
SysTick_Delay_Ms(1500);
TIM_SetCompare2(TIM1,190);
SysTick_Delay_Ms(1000);
TIM_SetCompare2(TIM1,192);
SysTick_Delay_Ms(200);
TIM_SetCompare2(TIM1,190);
SysTick_Delay_Ms(800);
TIM_SetCompare2(TIM1,174);
SysTick_Delay_Ms(1000);
TIM_SetCompare1(TIM1,177); //90,1.5ms
TIM_SetCompare2(TIM1,174);
SysTick_Delay_Ms(2000);
}
//快开
void type_2(void)
{
OLED_DrawBMP(0,0,128,8,(unsigned char *)BMP5);//测试BMP位图显示
TIM_SetCompare1(TIM1,183); //45度,1ms
TIM_SetCompare2(TIM1,192);
SysTick_Delay_Ms(1000);
TIM_SetCompare2(TIM1,174);
TIM_SetCompare2(TIM1,174);
SysTick_Delay_Ms(500);
TIM_SetCompare1(TIM1,177); //90,1.5ms
SysTick_Delay_Ms(2000);
}
//挨打
void type_3(void)
{
TIM_SetCompare1(TIM1,184); //45度,1ms
OLED_DrawBMP(0,0,128,8,(unsigned char *)BMP3);//测试BMP位图显示
SysTick_Delay_Ms(700);
TIM_SetCompare2(TIM1,190);
SysTick_Delay_Ms(700);
TIM_SetCompare1(TIM1,184);
SysTick_Delay_Ms(200);
TIM_SetCompare1(TIM1,182);
OLED_DrawBMP(0,0,128,8,(unsigned char *)BMP1);//测试BMP位图显示
SysTick_Delay_Ms(170);
TIM_SetCompare1(TIM1,184);
OLED_DrawBMP(0,0,128,8,(unsigned char *)BMP5);//测试BMP位图显示
SysTick_Delay_Ms(200);
TIM_SetCompare1(TIM1,182);
OLED_DrawBMP(0,0,128,8,(unsigned char *)BMP1);//测试BMP位图显示
SysTick_Delay_Ms(170);
TIM_SetCompare1(TIM1,184);
OLED_DrawBMP(0,0,128,8,(unsigned char *)BMP2);//测试BMP位图显示
SysTick_Delay_Ms(200);
TIM_SetCompare1(TIM1,182);
OLED_DrawBMP(0,0,128,8,(unsigned char *)BMP1);//测试BMP位图显示
SysTick_Delay_Ms(170);
TIM_SetCompare1(TIM1,184);
OLED_DrawBMP(0,0,128,8,(unsigned char *)BMP2);//测试BMP位图显示
SysTick_Delay_Ms(200);
TIM_SetCompare1(TIM1,182);
OLED_DrawBMP(0,0,128,8,(unsigned char *)BMP1);//测试BMP位图显示
SysTick_Delay_Ms(170);
TIM_SetCompare1(TIM1,184);
OLED_DrawBMP(0,0,128,8,(unsigned char *)BMP2);//测试BMP位图显示
SysTick_Delay_Ms(200);
TIM_SetCompare1(TIM1,182);
OLED_DrawBMP(0,0,128,8,(unsigned char *)BMP1);//测试BMP位图显示
SysTick_Delay_Ms(170);
TIM_SetCompare1(TIM1,184);
TIM_SetCompare2(TIM1,186);
SysTick_Delay_Ms(1500);
OLED_DrawBMP(0,0,128,8,(unsigned char *)BMP4);//测试BMP位图显示
TIM_SetCompare2(TIM1,186);
TIM_SetCompare2(TIM1,188);
SysTick_Delay_Ms(600);
TIM_SetCompare2(TIM1,186);
SysTick_Delay_Ms(500);
TIM_SetCompare2(TIM1,188);
SysTick_Delay_Ms(300);
TIM_SetCompare2(TIM1,186);
SysTick_Delay_Ms(500);
TIM_SetCompare2(TIM1,188);
SysTick_Delay_Ms(300);
TIM_SetCompare2(TIM1,186);
OLED_DrawBMP(0,0,128,8,(unsigned char *)BMP5);//测试BMP位图显示
SysTick_Delay_Ms(500);
TIM_SetCompare2(TIM1,192);
SysTick_Delay_Ms(300);
TIM_SetCompare2(TIM1,174);
SysTick_Delay_Ms(600);
TIM_SetCompare1(TIM1,177); //90,1.5ms
SysTick_Delay_Ms(2000);
}
//偷看
void type_4(void)
{
TIM_SetCompare1(TIM1,182); //45度,1ms
OLED_DrawBMP(0,0,128,8,(unsigned char *)BMP4);//测试BMP位图显示
SysTick_Delay_Ms(2000);
TIM_SetCompare1(TIM1,184);
SysTick_Delay_Ms(1000);
TIM_SetCompare1(TIM1,179);
TIM_SetCompare2(TIM1,176);
SysTick_Delay_Ms(1500);
TIM_SetCompare1(TIM1,183);
TIM_SetCompare2(TIM1,190);
OLED_DrawBMP(0,0,128,8,(unsigned char *)BMP3);//测试BMP位图显示
SysTick_Delay_Ms(100);
TIM_SetCompare2(TIM1,192);
SysTick_Delay_Ms(700);
TIM_SetCompare2(TIM1,174);
SysTick_Delay_Ms(600);
TIM_SetCompare1(TIM1,177); //90,1.5ms
SysTick_Delay_Ms(5000);
}
//调戏
void type_5(void)
{
OLED_DrawBMP(0,0,128,8,(unsigned char *)BMP3);//测试BMP位图显示
TIM_SetCompare1(TIM1,183); //45度,1ms
SysTick_Delay_Ms(1500);
TIM_SetCompare2(TIM1,187);
SysTick_Delay_Ms(1500);
OLED_DrawBMP(0,0,128,8,(unsigned char *)BMP4);//测试BMP位图显示
TIM_SetCompare2(TIM1,188);
SysTick_Delay_Ms(500);
TIM_SetCompare2(TIM1,189);
SysTick_Delay_Ms(300);
TIM_SetCompare2(TIM1,190);
SysTick_Delay_Ms(100);
TIM_SetCompare2(TIM1,189);
SysTick_Delay_Ms(100);
TIM_SetCompare2(TIM1,190);
SysTick_Delay_Ms(100);
TIM_SetCompare2(TIM1,189);
SysTick_Delay_Ms(100);
TIM_SetCompare2(TIM1,190);
SysTick_Delay_Ms(100);
TIM_SetCompare2(TIM1,189);
SysTick_Delay_Ms(100);
TIM_SetCompare2(TIM1,190);
SysTick_Delay_Ms(100);
TIM_SetCompare2(TIM1,189);
SysTick_Delay_Ms(100);
TIM_SetCompare2(TIM1,190);
SysTick_Delay_Ms(100);
TIM_SetCompare2(TIM1,189);
SysTick_Delay_Ms(100);
TIM_SetCompare2(TIM1,190);
SysTick_Delay_Ms(100);
TIM_SetCompare2(TIM1,189);
SysTick_Delay_Ms(100);
TIM_SetCompare2(TIM1,190);
SysTick_Delay_Ms(100);
TIM_SetCompare2(TIM1,189);
SysTick_Delay_Ms(100);
TIM_SetCompare2(TIM1,190);
SysTick_Delay_Ms(100);
TIM_SetCompare2(TIM1,189);
SysTick_Delay_Ms(100);
TIM_SetCompare2(TIM1,190);
SysTick_Delay_Ms(100);
TIM_SetCompare2(TIM1,189);
SysTick_Delay_Ms(100);
TIM_SetCompare2(TIM1,190);
SysTick_Delay_Ms(100);
TIM_SetCompare2(TIM1,189);
SysTick_Delay_Ms(100);
TIM_SetCompare2(TIM1,190);
SysTick_Delay_Ms(100);
TIM_SetCompare2(TIM1,188);
SysTick_Delay_Ms(1300);
TIM_SetCompare2(TIM1,192);
SysTick_Delay_Ms(400);
TIM_SetCompare2(TIM1,174);
SysTick_Delay_Ms(600);
TIM_SetCompare1(TIM1,177);
SysTick_Delay_Ms(2000);
}
void type_6(void)
{
OLED_DrawBMP(0,0,128,8,(unsigned char *)BMP5);//测试BMP位图显示
TIM_SetCompare1(TIM1,183); //45度,1ms
TIM_SetCompare2(TIM1,192);
SysTick_Delay_Ms(1000);
TIM_SetCompare2(TIM1,174);
SysTick_Delay_Ms(500);
TIM_SetCompare1(TIM1,177); //90,1.5ms
SysTick_Delay_Ms(2000);
TIM_SetCompare1(TIM1,183); //45度,1ms
TIM_SetCompare2(TIM1,191);
SysTick_Delay_Ms(500);
TIM_SetCompare2(TIM1,189);
SysTick_Delay_Ms(200);
TIM_SetCompare2(TIM1,188);
SysTick_Delay_Ms(200);
TIM_SetCompare2(TIM1,189);
SysTick_Delay_Ms(200);
TIM_SetCompare2(TIM1,188);
SysTick_Delay_Ms(200);
TIM_SetCompare2(TIM1,189);
SysTick_Delay_Ms(200);
TIM_SetCompare2(TIM1,188);
SysTick_Delay_Ms(200);
TIM_SetCompare2(TIM1,188);
SysTick_Delay_Ms(200);
TIM_SetCompare2(TIM1,187);
SysTick_Delay_Ms(500);
TIM_SetCompare2(TIM1,174);
SysTick_Delay_Ms(500);
TIM_SetCompare1(TIM1,177); //90,1.5ms
SysTick_Delay_Ms(2000);
}
整个软件设计的核心是通过PWM控制舵机的角度,结合OLED屏幕的图像显示和延时函数,实现一系列预定义的动作。通过主循环中的变量 `a` 来切换不同的动作类型,使得系统能够循环执行不同的动作序列。每个动作类型函数都精心设计了舵机的运动轨迹和OLED图像的显示。
六、3D模型的设计
对于3D模型ice.stl
、触手.STL
、触手辅助.stl
、舵机支架x2.STL
、合叶.stl
、盒子.stl
、盒子盖子.stl
的设计,首先需要明确每个模型的用途和功能,然后根据实际需求选择合适的3D打印材料,如PLA、ABS、PETG等。对于ice.stl
,确保尺寸符合需求并设计必要的支撑结构;触手.STL
和触手辅助.stl
应考虑功能性、灵活性和稳固的连接点;舵机支架x2.STL
需确保兼容性、稳定性和合适的安装孔;合叶.stl
要考虑承重、活动范围和耐用性;盒子.stl
和盒子盖子.stl
则需确保尺寸匹配、密封性和美观性。此外,所有STL文件应确保格式正确无误,打印前进行小批量测试以验证设计的可行性和打印质量。
6.1 ice.stl
在设计ice.stl
时,作为底部零件。根据用途选择合适的3D打印材料,如PLA、ABS、PETG等,这些材料各有特点,适用于不同的环境和需求。确保模型的尺寸精确,符合实际应用的要求。如果模型包含悬空或复杂的几何结构,需要设计支撑结构以确保打印过程中的稳定性和最终的打印质量。
6.2 触手.STL
`触手.STL`是一个3D模型文件,设计用于实现类似触手的功能,用于机器人的手臂,在设计`触手.STL`时,需要考虑其功能性,如移动、抓取或其他特定动作,并确保模型能够实现这些功能。为了增加触手的灵活性,可以考虑使用柔性材料或设计可活动的关节,以便于触手在不同方向和角度上的运动。同时,设计稳固的连接点是关键,以确保触手能够与其他部件(如舵机支架)牢固连接,从而保证整个系统的稳定性和可靠性。在选择材料和打印设置时,应考虑到触手的使用环境和预期寿命,以选择最合适的3D打印材料和参数。
6.3 触手辅助.stl
触手辅助.stl
是一个3D模型文件,作为触手.STL
的辅助部件,增强触手的功能性或稳定性。在设计触手辅助.stl
时,与主触手模型的兼容性和协同工作能力,包括额外的支撑结构、连接件或功能性组件,以提升触手的整体性能。例如,如果主触手需要额外的支撑以防止弯曲或断裂,辅助部件可以提供这种支持。或者,如果触手需要执行特定任务,如抓取或旋转,辅助部件可以包含相应的机械接口或传感器安装点。选择合适的材料和打印参数对于确保辅助部件的耐用性和功能性至关重要,同时也要确保其设计能够适应主触手的运动范围和操作需求。
6.4 舵机支架x2.STL
舵机支架x2.STL
是一个包含两个舵机支架的3D模型文件,设计用于固定和支撑两个舵机,以便它们可以安装在机器人、模型或其他自动化设备上。确保支架的尺寸和形状与所使用的舵机型号相匹配,以提供稳固的安装基础。支架应具备足够的强度和刚性,以承受舵机运转时的扭矩和振动。同时,设计应考虑到易于安装和拆卸,可能包括螺丝孔、定位销或其他固定机制。为了确保支架与设备的其他部分协调工作,可能需要进行精确的对齐和调整。选择合适的3D打印材料和参数对于确保支架的耐用性和可靠性至关重要,同时也要考虑到支架的重量和成本效益。
6.5 合叶.stl
合叶.stl
是一个设计用于3D打印的模型文件,它代表了一个合页,即两个物体连接并允许它们之间进行旋转的机械装置。在3D建模过程中,这个文件会详细描绘合页的各个组成部分,如销钉、连接臂和安装座,保证它们协同工作来实现平滑的开合动作。合页设计需要确保足够的强度以承受反复运动导致的磨损,并考虑如何通过螺丝或其他方式将其固定在两个旋转相连的表面上。此外,设计还应该考虑3D打印过程中材料的选择和打印方向,以确保合页的耐久性和功能性
6.6 盒子.stl
盒子.stl
是一个专为3D打印设计的模型文件,制作一个用于容纳和保护搞怪机器人的外壳。这个盒子设计考虑了机器人的尺寸、形状和功能需求,确保其内部空间足以容纳所有必要的电子元件和机械结构,同时提供足够的保护和美观的外观。设计中可能包括开口、切口或盖子,以便于访问机器人的控制面板、传感器和其他组件。此外,盒子可能还具备创意的外观设计,以增强搞怪机器人的趣味性和吸引力。在3D打印时,选择合适的材料和打印参数对于确保盒子的结构强度和耐用性至关重要,同时也要考虑到打印成本和时间效率。
6.7
盒子盖子.stl
盖子.stl
是一个为3D打印定制的模型文件,它设计用于覆盖和封闭一个盒子或其他容器,以保护内部物品免受外部环境的影响。这个盖子模型考虑了与盒子的精确匹配,确保紧密贴合以防止灰尘、水分或其他污染物进入。设计中可能包括把手、扣环或磁铁等固定机制,以便于打开和关闭盖子。此外,盖子可能还具有装饰性元素,以提升整体外观和用户体验。在3D打印过程中,选择适当的材料和打印设置对于确保盖子的密封性、耐用性和美观性至关重要。
详细资料:基于stm32单片机搞怪盒子设计.zip资源-CSDN文库
资料详情 :
code
models
README.md
材料清单:
mg995舵机x2 ,12*2元
0.96oled屏幕,10元
拨动开关,5元
c6t6核心板,6元
3d打印,180元
总计,235元
待优化点:
1.电池供电
2.板子整合,后面画个板子集成电路
视频地址:基于stm32搞怪的盒子设计_哔哩哔哩_bilibili
参考资料:https://www.bilibili.com/video/BV18h411d74v