今天小編給大家帶來的是來自國外的Maker Arnov Sharma的多功能筆筒項目,這個多功能筆筒項目是使用3D打印零件進行搭建的,在筆筒的前端添加了XIAO擴展板,給這個筆筒添加一個顯示器,可以在顯示器上顯示許多內容,例如兩個眼睛,文本等等,這些使得這個筆筒更加有趣。
材料清單
硬件
XIAO擴展板
XIAO SAMD21 M0 微控制器版
3D打印零件
3.7V,1200mAh鋰電池
控制開關
M2螺絲
項目核心:
本項目的核心是使用Seeed Studio制造的XIAO擴展板并搭配XIAO SAMD21 M0開發板。它擁有豐富的外圍設備,包括OLED顯示器、RTC實時時鐘、SD卡插槽、被動蜂鳴器、復位/用戶按鈕、5V伺服連接器以及Grove連接器,可以將多個Grove設備與XIAO配對使用。我們將使用Li-ion 18650電池為整個設備供電。
擴展板上集成了OLED顯示器,可以用來顯示眼睛以及一些文字,給筆筒帶來更豐富的功能。
外觀設計
這個項目的模型一共由四個部分組成:前置支架部分,設計用于容納小物品如USB驅動器、硬幣等。上蓋部分覆蓋鋰電池并將搖桿開關固定在其位置。最后,一個帶有作者特色的標有項目標題“OverEngineered”的名牌位于支架的左側。
使用三個M2螺絲將上蓋安裝在支架部分中的螺柱上。使用位于支架部分正面的四個螺柱對XIAO擴展板進行安裝。這些螺柱允許XIAO擴展板略微突出于前面板之外,保持前面板和板的底部之間的小間隙。
在Fusion 360中創建模型后,我們導出網格文件,以便進行3D打印。
我們使用了透明PLA打印支架部分,橙色PLA打印上蓋部分,而PLA則用于打印前置支架部分。為了在名牌上打印字母,我們先打印出白色PLA基板,然后在打印中間切換至橙色PLA。
主體安裝
在組裝機身的過程中,將搖桿開關安裝在上蓋部分是第一步。
接下來,我們向搖桿開關的NC端口焊接了第二根電線,并將鋰電池的負極連接到開關的NO端口。開關的NC端將連接到擴展板鋰電池連接器的負極端。
然后將前置支架部分放置在支架部分的前面板上,并使用四個M2螺絲將其固定在原位。
將鋰電池插入支架部分,然后將上蓋部分放在其頂部。使用三個M2螺絲將兩個部分緊固在一起。
電路圖
?? ?
擴展版安裝
現在我們將擴展板與筆筒3D打印件進行配對。
首先,我們將擴展板的電池端口連接到鋰離子電池。
我們用電烙鐵將鋰離子電池的正極和負極連接到擴展板的電池端口上。
將XIAO擴展板固定在機箱正面,用4顆M2螺釘將電路版與支架固定在一起。
最后,我們用4顆M2螺釘將銘牌固定在合適的位置。
組裝完成!
在首次測試設置,我們添加了一個基于簡單動畫的程序,這個程序是通過向CHAT GPT輸入以下內容生成的:“編寫一個程序,瞳孔會擴大,兩只眼睛變得可見。在此草圖中,使用Adafruit的SSD1306庫來控制SSD1306顯示屏。“
Chatgpt生成的代碼效果十分出色,具體代碼內容如下:
#include #include #include #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels // Declaration for SSD1306 display connected using I2C #define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); // Define eye parameters const int eyeCenterX1 = 40; // X position for left eye const int eyeCenterX2 = 88; // X position for right eye const int eyeCenterY = 32; // Y position for both eyes const int eyeRadius = 20; // Radius of the eye const int minPupilRadius = 5; // Minimum radius of the pupil const int maxPupilRadius = 10; // Maximum radius of the pupil const int animationSpeed = 10; // Speed of the animation void setup() { // Initialize the display if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("SSD1306 allocation failed")); for(;;); // Don't proceed, loop forever } display.display(); delay(2000); // Pause for 2 seconds // Clear the buffer display.clearDisplay(); } void loop() { for (int i = minPupilRadius; i <= maxPupilRadius; i++) { drawCatEyes(i); delay(animationSpeed); } for (int i = maxPupilRadius; i >= minPupilRadius; i--) { drawCatEyes(i); delay(animationSpeed); } } // Function to draw the cat eyes with dilating pupils void drawCatEyes(int pupilRadius) { display.clearDisplay(); // Draw left eye display.drawCircle(eyeCenterX1, eyeCenterY, eyeRadius, SSD1306_WHITE); // Eye outline display.fillCircle(eyeCenterX1, eyeCenterY, pupilRadius, SSD1306_WHITE); // Pupil // Draw right eye display.drawCircle(eyeCenterX2, eyeCenterY, eyeRadius, SSD1306_WHITE); // Eye outline display.fillCircle(eyeCenterX2, eyeCenterY, pupilRadius, SSD1306_WHITE); // Pupil display.display(); }
這段代碼將在OLED顯示屏上模擬瞳孔擴大的效果,使貓眼動畫變得更加逼真。如果需要,可以調整眼睛中心坐標(eyeCenterX1、eyeCenterX2和eyeCenterY)以及半徑(radius)參數,以使其適合顯示屏。
文本顯示程序:
在最后面,我們測試了”文本顯示“的程序。
我們首先從ChatGPT生成了一堆巧妙的“帶屏幕的電子筆筒”的文本。
然后,我們選擇了其中的幾個,例如“I hold pens and your secrets.””We are going digital, so hold onto your pencils!”、“Shhh!”等等。對于SSD1306顯示屏,我們創建了一個基本的文本顯示程序,并將所有引語輸入其中,使每個文本間隔兩秒出現。
具體代碼如下:
#include #include #include #define OLED_WIDTH 128 #define OLED_HEIGHT 64 #define OLED_ADDR 0x3C Adafruit_SSD1306 display(OLED_WIDTH, OLED_HEIGHT); void setup() { display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR); display.clearDisplay(); } void loop() { display.clearDisplay(); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0, 20); display.println("I hold pens and your secrets. Shhh!"); //QUOTE01 display.display(); delay(2000); display.clearDisplay(); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0, 20); display.println("Hold onto your pens, we are going digital!"); //QUOTE02 display.display(); delay(2000); display.clearDisplay(); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0, 20); display.println("Penning down ideas, one byte at a time!"); //QUOTE03 display.display(); delay(2000); display.clearDisplay(); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0, 20); display.println("Who needs a diary when you have a pen holder with a screen?!"); //QUOTE04 display.display(); delay(2000); }
總結
最終結果是一個可編程顯示屏的筆筒,對于管理筆和其他物品非常有幫助。
由于有顯示屏,這里可以嘗試無數不同的概念。為了顯示時間,我們可以在XIAO上添加一個Internet Watch Sketch。或者,我們可以添加一個使用SD卡、顯示屏和蜂鳴器的旋律播放器Sketch。最后,我們可以在XIAO上添加類似Flappy Bird的游戲,可以使用內置按鈕進行游戲。
-
微控制器
+關注
關注
48文章
7651瀏覽量
152124 -
顯示器
+關注
關注
21文章
5010瀏覽量
140415 -
擴展板
+關注
關注
0文章
55瀏覽量
11458
原文標題:創客項目秀|基于XIAO SAMD21的多功能筆筒
文章出處:【微信號:ChaiHuoMakerSpace,微信公眾號:柴火創客空間】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論