【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.pswp.cn/web/41636.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/41636.shtml
英文地址,請注明出處:http://en.pswp.cn/web/41636.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C語言中關鍵字

C語言中的關鍵字共有32個,這些關鍵字根據其功能可以劃分為以下幾類: 1. 數據類型關鍵字(12個) char:聲明字符型變量或函數,通常占用1個字節。double:聲明雙精度浮點數變量或函數,占…

C#面:C# 如何使? ActionFilterAttribute?

在C#中,ActionFilterAttribute是一個特性類,用于在控制器的動作方法執行前后添加自定義邏輯。它可以用于實現日志記錄、異常處理、權限驗證等功能。 要使用ActionFilterAttribute,可以按照以下步驟進行操作: 創建一個繼承自Acti…

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的主要特點之一是其易用性,程序提供了直觀的界面,允許用戶輕松創建、配置和…

uabntu安裝opencv

1. 安裝前置依賴 sudo apt update sudo apt upgrade sudo apt install build-essential cmake git pkg-config sudo apt install libjpeg-dev libtiff-dev libpng-dev # Image libraries sudo apt install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev # Vide…

RocketMQ NettyRemotingServer、NettyRemotingClient 實例化、初始化、啟動源碼解析

🔭 嗨,您好 👋 我是 vnjohn,在互聯網企業擔任后端開發,CSDN 優質創作者 📖 推薦專欄:Spring、MySQL、Nacos、Java,后續其他專欄會持續優化更新迭代 🌲文章所在專欄&#…

數學系C++ 類與對象 STL(九)

目錄 目錄 面向對象:py,c艸,Java都是,但c是面向過程 特征: 對象 內斂成員函數【是啥】: 構造函數和析構函數 構造函數 復制構造函數/拷貝構造函數: ?【……】 實參與形參的傳遞方式:值…

Node.js Stream

Node.js Stream Node.js 是一個基于 Chrome V8 引擎的 JavaScript 運行環境,它允許開發者使用 JavaScript 編寫服務器端代碼。Node.js 的一個核心特性是其對流(Stream)的處理能力。流是一種在 Node.js 中處理讀/寫文件、網絡通信或任何端到端…

【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…

MySQL性能優化 二、表結構設計優化

1.設計中間表 設計中間表&#xff0c;一般針對于統計分析功能&#xff0c;或者實時性不高的需求。 2.設計冗余字段 為減少關聯查詢&#xff0c;創建合理的冗余字段&#xff08;創建冗余字段還需要注意數據一致性問題&#xff09; 3.折表 對于字段太多的大表&#xff0c;考…

C++ STL容器:序列式容器-鏈list,forward_list

摘要&#xff1a; CC STL&#xff08;Standard Template Library&#xff0c;標準模板庫&#xff09;在C編程中的重要性不容忽視&#xff0c;STL提供了一系列容器、迭代器、算法和函數對象&#xff0c;這些組件極大地提高了C程序的開發效率和代碼質量。 STL 容器 分為 2 大類 …

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;、英語、韓語、日語、俄語、…

10、廣告-用戶數據中心

用戶數據中心 用戶數據中心在程序化廣告中扮演著至關重要的角色&#xff0c;它主要包括DMP原理、用戶畫像邏輯、Look Alike原理和DMP對接DSP四個部分。下面&#xff0c;我們將詳細講解每個部分的內容。 &#xff08;一&#xff09;DMP原理 數據管理平臺&#xff08;Data Man…

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口進行數據傳輸