【STM32项目】基于Stm32搞怪盒子的设计(完整工程资料)

基于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舵机21224
0.96 OLED屏幕11010
拨动开关155
C6T6核心板166
3D打印1180180
总计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=20msKEY_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度,1msOLED_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.5msTIM_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度,1msTIM_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.5msSysTick_Delay_Ms(2000);          
}//挨打void type_3(void)
{TIM_SetCompare1(TIM1,184); //45度,1msOLED_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.5msSysTick_Delay_Ms(2000); 
}//偷看void type_4(void)
{TIM_SetCompare1(TIM1,182); //45度,1msOLED_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.5msSysTick_Delay_Ms(5000);
}//调戏
void type_5(void)
{OLED_DrawBMP(0,0,128,8,(unsigned char *)BMP3);//测试BMP位图显示TIM_SetCompare1(TIM1,183); //45度,1msSysTick_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度,1msTIM_SetCompare2(TIM1,192);SysTick_Delay_Ms(1000);TIM_SetCompare2(TIM1,174);SysTick_Delay_Ms(500); TIM_SetCompare1(TIM1,177); //90,1.5msSysTick_Delay_Ms(2000);    TIM_SetCompare1(TIM1,183); //45度,1msTIM_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.5msSysTick_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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/41636.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache Seata分布式事务原理解析探秘

本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 前言 fescar发布已有时日,分布式事务一直是业界备受关注的领域,fesca…

【carla】ubuntu安装carla环境

我们可以通过查看 CARLA 的 GitHub release 页面来找到最新版本的下载链接。 下载 CARLA 压缩包 访问 CARLA Releases 页面: CARLA Releases on GitHub 查找最新版本: 找到最新的版本,点击下载,第一个压缩包 3. 解压 CARLA 包&…

VMware Workstation Pro 17.5.2 + license key

Workstation Pro是专为Windows操作系统设计的功能强大的虚拟化软件平台,它允许用户在其计算机上创建和运行虚拟机,这使他们能够同时与多个操作系统、应用程序和开发环境一起工作。 Workstation Pro的主要特点之一是其易用性,程序提供了直观的界面,允许用户轻松创建、配置和…

RocketMQ NettyRemotingServer、NettyRemotingClient 实例化、初始化、启动源码解析

🔭 嗨,您好 👋 我是 vnjohn,在互联网企业担任后端开发,CSDN 优质创作者 📖 推荐专栏:Spring、MySQL、Nacos、Java,后续其他专栏会持续优化更新迭代 🌲文章所在专栏&#…

数学系C++ 类与对象 STL(九)

目录 目录 面向对象:py,c艹,Java都是,但c是面向过程 特征: 对象 内敛成员函数【是啥】: 构造函数和析构函数 构造函数 复制构造函数/拷贝构造函数: 【……】 实参与形参的传递方式:值…

【LeetCode】螺旋矩阵

目录 一、题目二、解法完整代码 一、题目 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] 示例 2&…

go-redis 封装事件-client封装模型、批量数据处理的导出器设计

一、redis-go的封装实践-client模型 // Copyright 2020 Lingfei Kong <colin404foxmail.com>. All rights reserved. // Use of this source code is governed by a MIT style // license that can be found in the LICENSE file.package storageimport ("context&q…

Halcon 铣刀刀口破损缺陷检测

一 OTSU OTSU&#xff0c;是一种自适应阈值确定的方法,又叫大津法&#xff0c;简称OTSU&#xff0c;是一种基于全局的二值化算法,它是根据图像的灰度特性,将图像分为前景和背景两个部分。当取最佳阈值时&#xff0c;两部分之间的差别应该是最大的&#xff0c;在OTSU算法中所采…

排序 -- 万能测试oj

. - 力扣&#xff08;LeetCode&#xff09; 这道题我们可以使用我们学过的那些常见的排序方法来进行解答 //插入排序 void InsertSort(int* nums, int n) {for (int i 0; i < n-1; i){int end i;int tmp nums[end 1];while (end > 0){if (tmp < nums[end]){nums[…

PyVideoTrans:一款功能全面的视频翻译配音工具!【送源码】

PyVideoTrans是一款功能全面的视频翻译配音工具&#xff0c;专为视频内容创作者设计。它能够将视频中的语言翻译成另一种语言&#xff0c;并自动生成与之匹配的字幕和配音。支持多种语言&#xff0c;包括但不限于中文&#xff08;简繁体&#xff09;、英语、韩语、日语、俄语、…

Wormhole Filters: Caching Your Hash on Persistent Memory——泛读笔记

EuroSys 2024 Paper 论文阅读笔记整理 问题 近似成员关系查询&#xff08;AMQ&#xff09;数据结构可以高效地近似确定元素是否在集合中&#xff0c;例如Bloom滤波器[10]、cuckoo滤波器[23]、quotient滤波器[8]及其变体。但AMQ数据结构的内存消耗随着数据规模的增长而快速增长…

MSPM0G3507——串口0从数据线传输变为IO口传输

默认的跳线帽时这样的&#xff0c;这样时是数据线传输 需要改成这样&#xff0c;即可用IO口进行数据传输

windows系统本地端口被占用的问题

第一步&#xff1a;查找所有运行的端口 按住“WindowsR”组合键&#xff0c;打开命令窗口&#xff0c;输入【cmd】命令&#xff0c;回车。在弹出的窗口中输入 命令【netstat -ano】&#xff0c;再按一下回车键 Win系统端口被占用-查找所有运行的端口 第二步&#xff1a;查看…

opencv_C++学习笔记(入门30讲)

文章目录 1.配置开发环境2.图像读取与显示3.图像色彩空间转换4.图像对象的创建与赋值5.图像像素的读写操作6.图像像素的算数操作7.滚动条-调整图像亮度8.滚动条-调整对比度和亮度9.键盘响应操作10.图像像素的逻辑操作11.图像的通道分离和合并12.图像色彩空间转换13.图像的像素值…

阿里云存储的降本增效与运维

小浩负责公司存储架构层&#xff0c;需要确保存储层不会成为公司业务系统的性能瓶颈&#xff0c;让数据读写达到最佳性能。那么小浩可以从哪些方面着手优化性能呢&#xff1f;他继续求助系统架构师大雷。 小浩&#xff1a;雷哥&#xff0c;PD反馈公司系统最近响应很慢&#xff…

HTTP模块(一)

HTTP服务 本小节主要讲解HTTP服务如何创建服务&#xff0c;查看HTTP请求&响应报文&#xff0c;还有注意事项说明&#xff0c;另外讲解本地环境&Node环境&浏览器之间的链路图示&#xff0c;如何提取HTTP报文字符串&#xff0c;及报错信息查询。 创建HTTP服务端 c…

lspci

【原】Linux之PCIE三种空间解析 PCIe学习笔记——2.PCIe配置空间 PCIE学习&#xff08;2&#xff09;PCIE配置空间详解 开发者分享 | 使用 lspci 和 setpci 调试 PCIe 问题 b : 字节 w&#xff1a;word L&#xff1a; 4byte

LLM - 词表示和语言模型

一. 词的相似度表示 (1): 用一系列与该词相关的词来表示 (2): 把每个词表示一个独立的符号(one hot) (3): 利用该词上下文的词来表示该词 (3): 建立一个低维度的向量空间&#xff0c;用深度学习方法将该词映射到这个空间里(Word Embedding) 二&#xff1a;语言模型 (1): 根…

Redis源码整体结构

一 前言 Redis源码研究为什么先介绍整体结构呢?其实也很简单,作为程序员的,要想对一个项目有快速的认知,对项目整体目录结构有一个清晰认识,有助于我们更好的了解这个系统。 二 目录结构 Redis源码download到本地之后,对应结构如下: 从上面的截图可以看出,Redis源码一…

52-5 内网代理2 - LCX端口转发(不推荐使用LCX)

环境搭建: 本地开3台虚拟机:kali(必须)、windows2012与2008 (可换成其他windows虚拟机) kali - 网络配置成桥接模式 windows2012 - 设置两个网卡,NAT与桥接模式 注意:windows2012要关闭防火墙,要不然其他主机ping不通 关闭防火墙后再开启远程桌面连接 windwos20…