麻豆科技中心【國小資議】「開源網站與控制板應用-以『乒乓球時鐘』為例」實作研習 麻豆科技中心【國小科議】「電路設計與應用-以『乒乓球燈具』製作為例」實作研習 麻豆科技中心【新興科技】「AI助手與文科生也能寫程式-以『乒乓球時鐘』為例」研習
這次不是材料包式的課程,也不是教學式分享,而是透過我個人實作的經驗分享,讓大家以冒險的精神去完成這個專題,過程中你可以選擇不同的路徑,進行不同的試驗,因此,大家會以不同做法完成這個的專題。希望透過這些歷程,大家能感受到取用開源的知識並不困難,並且未來有能力善用這些資源,豐富自己未來的教學或自我實現。
介紹
Thingiverse 和 Instructable 概述
乒乓球時鐘
基礎知識
數位加工流程
Arduino 腳位認識
程式架構:setup、loop、function
控制板應用
控制板庫的安裝
程式註解和參數修改
串燈條測試與控制
雷切機與設計
雷切機的使用技巧
輔助器設計和製作
準備工作
杜邦線的製作
底板和邊框的切割
加工技巧
砂紙選擇和使用方法
串燈條連接和安裝
製作乒乓球時鐘
切割和黏合乒乓球
圖紙計算和程式參數設定
AI助手的應用
AI網站的選擇與使用
程式修改與進一步探索
0410(三)「電路設計與應用」
【新興科技】「AI助手與文科生也能寫程式-以『乒乓球時鐘』為例」研習
時鐘效果
實現時鐘效果的方法
控制板和燈具的協作
AI對談
利用AI助手進行對話
應用AI於課程項目的可能性探討
Wooden Desk Lamp With Levitating Dimmer / Color Changing LED
Egg Painter Mini (Eggbot derivative) v1.1 by Provlax
3D列印是一種製造技術,它能夠將數位模型轉換為實體對象。這種技術通過將材料逐層堆疊來建立對象,這就是為什麼3D列印有時被稱為「增材製造」。3D列印的優點包括快速原型製造、複雜形狀的製造以及減少材料浪費。然而,3D列印也有其限制,例如列印時間可能會較長,並且列印出來的對象可能需要進一步的後處理。
3D繪圖可以使用Autodesk 123D Design、Autodesk Tinkercad、SketchUp等工具來進行建模。完成建模後,可以使用Autodesk Meshmixer工具來對3D圖檔進行後處理,進一步優化和改進模型。
Autodesk 123D Design:下載64位元、下載32位元、下載MAC OS
Autodesk Tinkercad:網站
SketchUp:網站
Autodesk Meshmixer:下載
雷射切割是一種製造技術,它使用高能量雷射束來切割材料。這種技術可以用於切割各種材料,包括金屬、塑料、木材、玻璃等。雷射切割的優點包括準確度高、切割速度快、熱影響區域小等。
🛠️Rdwork 與雷射切割機的合作
Rdwork是一款雷射切割軟體,能讓您設計並控制雷射切割機的操作。首先,您需要在Rdwork中建立雷射切割的設計。這包括繪製切割線條,設定切割深度和速度等參數。完成設計後,您可以將設計檔案傳輸到雷射切割機並開始切割。使用Rdwork,您可以精確控制雷射切割機的所有切割參數,從而確保切割結果的精確性和一致性。
🎨Inkscape與雷射切割機的合作
Inkscape是一款免費且開源的向量繪圖軟體,常常被用於設計雷射切割的圖形。您可以使用Inkscape的多種工具來建立複雜的設計,然後將其匯出為雷射切割機可以讀取的格式(如SVG或DXF)。然後,您可以將這些檔案匯入到雷射切割機的控制軟體(如Rdwork)中,進行切割。Inkscape的強大繪圖功能讓您可以設計出各種複雜和專業的雷射切割圖案。
Rdwork v8:教學影片 Rdwork v8:下載 Inkscape:下載
要下載 Inkscape,請依照以下步驟:
首先,前往 Inkscape 的官方網站。網址是 https://inkscape.org/
在網站的主頁,找到並點選「下載」或「Download」的選項。
在下一頁中,根據您的作業系統(Windows、MacOS 或 Linux)選擇適合的版本進行下載。
在 Windows 的版本選擇中,您會看到「MSI」或「exe」兩種檔案類型,兩者都可以用來安裝 Inkscape。MSI 檔案是微軟安裝包,它包含了安裝某個軟體所需要的所有檔案與設定資訊。您只需要點選「MSI」下載連結,下載後開啟檔案並按照指示進行安裝即可。
完成以上步驟,即可成功下載並安裝 Inkscape。
Arduino是一種開源的微控制器,它允許我們使用簡單的程式碼來控制各種硬體裝置,如LED燈、馬達、感測器等等。Arduino的主要特點是易於使用和靈活性高,它是初學者學習編程和電子製作的理想選擇。
Arduino Nano是一款小巧且功能強大的微控制器板,它有多個腳位,每個腳位都有不同的功能。以下是Arduino Nano腳位的簡單介紹:
數位腳位(D2-D13):Arduino Nano有14個數位輸入/輸出腳位,其中D2至D13可以用作數位輸入或輸出。
類比腳位(A0-A7):Arduino Nano有8個類比輸入腳位,編號為A0至A7。這些腳位可以讀取類比信號,並將其轉換為數位值。
電源腳位(3.3V、5V、GND):Arduino Nano有一個3.3V輸出腳位,一個5V輸出腳位,以及兩個接地腳位(GND)。
特殊腳位(RST、TX、RX、D13、SCK、MISO、MOSI、SS):除了上述數位、類比和電源腳位外,Arduino Nano還有一些特殊腳位,包括重設(RST)、傳輸(TX)、接收(RX)、D13腳位(內置LED)、序列時鐘(SCK)、主輸入/從輸出(MISO)、主輸出/從輸入(MOSI)和片選(SS)腳位。
以上就是Arduino Nano腳位的基本介紹,使用Arduino Nano時,需要根據實際的硬件連接和程式需求,對這些腳位進行適當的使用。
數位和類比腳位的差異可以用音樂播放器來解釋。
數位腳位像是一種開關,它只能處於兩種狀態:開(通常表示為1)或關(通常表示為0)。這就像一個基本的音樂播放器,它只有兩個按鈕:播放和停止。
而類比腳位則能處理更為細微的變化。這像是一個高級的音樂播放器,它不僅有播放和停止按鈕,還有一個音量控制滑桿。這個滑桿可以在完全靜音(0)和最大音量(例如,100)之間任意滑動,提供了許多中間的可能性。這就像類比腳位,它可以處理一系列的值,而不僅僅是開或關。
DS3231是一款高精度的實時時鐘模塊,它可以提供年、月、日、星期、小時、分鐘和秒的信息。此外,DS3231也有一個內置的溫度補償晶振器,可以在各種溫度條件下保持高精度。這使得DS3231在需要精確時間的電子產品中被廣泛使用,例如在微控制器專案中管理時間相關的任務。
DS3231模塊的VCC腳位連接到Arduino Nano的5V腳位
DS3231模塊的GND腳位連接到Arduino Nano的GND腳位
DS3231模塊的SDA腳位連接到Arduino Nano的A4腳位
DS3231模塊的SCL腳位連接到Arduino Nano的A5腳位
請注意,DS3231是一個I2C設備,因此SDA(數據線)和SCL(時鐘線)腳位需要連接到Arduino Nano的相應I2C腳位上。
要在Arduino官網下載編譯軟體,請依照以下步驟進行:
首先,前往Arduino的官方網站。網址是https://www.arduino.cc/
在網站的主頁,找到並點選「Software」或「軟體」的選項。
在下拉選單中,選擇「Downloads」或「下載」。
此時,您將看到各種可供下載的Arduino軟體版本。請根據您的操作系統(Windows、MacOS或Linux)選擇適合的版本進行下載。
在下載選項中,可能會提示您是否願意捐款支持Arduino。如果您不希望捐款,請直接選擇「Just Download」。
下載完成後,開啟下載的檔案並依照指示進行安裝。在安裝過程中,Arduino可能會提示您要額外同意安裝各種軟件,請確認都同意以完成安裝。
完成以上步驟,即可成功下載並安裝Arduino的編譯軟體。
如果你想要將Arduino的語言設定改為中文,你可以遵循以下的步驟:
開啟你的Arduino IDE。
在選單欄中找到"File"(檔案)並點選它。
在下拉選單中,選擇"Preferences"(偏好設定)。
在"Preferences"視窗中,找到"Editor language"(編輯器語言)的選項,然後在下拉選單中選擇"中文(繁體)"或"中文(简体)"。
點擊"OK"來儲存設定,然後重新啟動Arduino IDE,語言設定就會變為中文。
想像 Arduino 程式的結構就像是一個馬戲團。
變數宣告就像是馬戲團的演員名單。在馬戲團表演開始之前,我們需要知道有哪些演員將會參與演出。同樣地,我們在Arduino程式中也需要先宣告我們將要使用的變數,讓程式知道這些變數的名字和型別。
setup 就像是馬戲團開場前的準備。在這個階段,我們會設定所有需要的設備,比如說燈光、音響等等,確保所有的設備都已經就緒,可以開始表演。
loop 就像是馬戲團的主要表演。在這個階段,馬戲團的表演者會一再地重複他們的表演,直到觀眾都看完為止。同樣地,loop 裡的程式碼也會一直重複執行,直到 Arduino 被關閉。
function 就像是馬戲團的各種特技。每一個特技都有特定的動作和動作順序,而且可以在不同的表演中重複使用。同樣地,每一個 function 也有特定的程式碼和執行順序,也可以在不同的 loop 中重複使用。
程式庫就像是馬戲團的道具庫。在馬戲團表演中,演員們會使用各種道具來豐富他們的表演。同樣地,在 Arduino 程式中,我們也可以使用程式庫來擴展我們的程式功能。
程式庫是一組預先寫好的程式碼,包含了一些常用的功能或複雜的演算法,我們可以在自己的程式中呼叫這些功能,而不需要自己從頭寫起。例如,我們在這裡使用的 FastLED 和 DS3232RTC 便是兩個常用的程式庫,它們分別提供了控制 LED 燈和讀取實時時鐘的功能。
要使用程式庫,我們首先需要在程式碼的開頭用 #include 指令來引入程式庫,然後就可以在程式中直接使用程式庫提供的功能了。例如,#include <FastLED.h> 和 #include <DS3232RTC.h> 便是引入 FastLED 和 DS3232RTC 程式庫的語句。
在 Arduino 開發環境中,我們可以透過菜單的「草稿碼」->「匯入程式庫」來匯入我們要使用的程式庫。如果找不到我們需要的程式庫,也可以選擇「管理程式庫」來搜尋和下載新的程式庫。
#include <FastLED.h>
#include <DS3232RTC.h>
#define LED_PIN 9
#define NUM_LEDS 128
DS3232RTC myRTC(false);
tmElements_t tm;
CRGB leds[NUM_LEDS];
CHSV colour( 0, 255, 180);
int counter=0;
const int Digits[10][10] =
{
{7,8,10,11,14,18,22,24},
{14,16,18,22,24},
{7,8,9,11,14,16,18,24},
{7,9,11,14,16,18,22,24},
{9,10,11,16,18,22,24},
{7,9,10,11,14,16,18,22},
{7,8,9,14,15,16,18,22},
{7,11,14,16,17,24},
{7,8,9,10,11,14,16,18,22,24},
{7,9,10,11,14,16,17,24},
};
void setup()
{
pinMode(17, OUTPUT); //ground and v5 for clock module
pinMode(16, OUTPUT);
digitalWrite(17, HIGH);
digitalWrite(16, LOW);
FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
myRTC.begin();
}
//function that uses the Digit aray to display numbers between 0 and 100
void displaynumber( int place , int number){
for (int i = 0 ; i < 10 ; i++) {
if (Digits[number/10][i] != 0) {
leds[(Digits[number/10][i]+place)] = CRGB(255,255,255);;
}
if (Digits[number%10][i] != 0) {
leds[(Digits[number%10][i]+28+place)] = CRGB(255,255,255);;
}
}
}
void loop(){
myRTC.read(tm);
//changes the colour of background every 10 cycles
if (counter<10){
counter++;
}else{
colour.hue = (colour.hue+1)%256;
counter=0;
}
// sets background to rainbow colours
for ( int i=0; i< 128;i++){
colour.hue = (colour.hue+1)%256;
leds[i]= colour;
}
colour.hue = (colour.hue+128)%256;
displaynumber(0,tm.Hour);
displaynumber(70,tm.Minute);
//display colons
if ( tm.Second%2 == 0 ){
leds[64] = CRGB(255,255,255);
leds[66] = CRGB(255,255,255);
}
FastLED.show();
}
在使用FastledExampleCode.ino範例程式測試LED燈條之前,我們需要首先完成LED燈條與Arduino Nano的接線。以下是簡單的接線教學:
將LED燈條的5V腳位(通常是紅色線)接到Arduino Nano的5V腳位。
將LED燈條的GND腳位(通常是黑色線)接到Arduino Nano的GND腳位。
將LED燈條的數據腳位(通常是綠色線)接到Arduino Nano的適當的數位輸出腳位(D9腳位)。
請注意,LED燈條有方向性,要順著箭頭
在Arduino開發環境中,我們可以透過以下步驟:
點選菜單的「草稿碼」。
選擇「匯入程式庫」以匯入我們要使用的程式庫。
如果找不到我們需要的程式庫FastLED,可以選擇「管理程式庫」。
在管理程式庫中搜尋「FastLED」然後點擊下載。
在Arduino IDE的工具選單中的板子選項設定為Arduino Nano。
處理器設定為你的Nano型號。
選擇正確的連接埠。你可以在「工具」->「連接埠」中選擇你的Arduino Nano所連接的連接埠。
在Arduino IDE中,點擊上方的「上傳」按鈕(箭頭指向右的按鈕),這將會開始上傳程式碼到你的Arduino Nano。
上傳完成後,Arduino IDE會在下方的「訊息」區域顯示「上傳完成」的訊息,這表示程式已經成功上傳到Arduino Nano。
若出現「上傳時出現錯誤」的訊息,這可能表示有連接問題或是其他問題,你需要檢查你的設定和連接,並再次嘗試上傳。
WS2812 LED 燈條由多顆 WS2812 LED 燈珠組成,每顆燈珠都內嵌有一個微型的控制器。這種設計讓每顆 LED 燈珠都可以單獨被控制,而且只需要一條數據線。
當我們向 WS2812 LED 燈條發送一串數據信號時,這串數據會首先被第一顆 LED 燈珠接收。每個 LED 燈珠都會從數據信號中讀取首先接收到的24個位元的數據(8位元代表紅色,8位元代表綠色,8位元代表藍色),並調整自身的顏色。讀取完24個位元後,剩下的數據會被傳遞到下一顆 LED 燈珠。然後,下一顆 LED 燈珠會以同樣的方式讀取接下來的24個位元的數據,並將剩下的數據再傳遞給下一顆 LED 燈珠。這個過程會一直持續,直到所有的 LED 燈珠都接收到了數據。我們可以用一條數據線來傳遞一串長度為 24n 位元的數據(n 是 LED 燈珠的數量),來分別控制 n 顆 LED 燈珠的顏色。
24位元是由24個0和1組成的數據,所以總共有2的24次方,即16,777,216種可能的狀態。
24位元可以被拆分成3個8位元,是因為在電腦科技中,8位元被定義為一個位元組(Byte)。位元組是最常用的數據單位,許多系統和協議都以位元組為基礎來處理和傳輸數據。
在WS2812 LED燈條的例子中,每個LED燈珠需要24位元的數據來設定其顏色。這24位元的數據被分成3個8位元,分別代表紅色、綠色和藍色的亮度。每個8位元可以表示256種狀態(從0到255),所以每種顏色可以有256種亮度等級,組合在一起就能產生16,777,216種可能的顏色。
RDWorks 是一款專為雷射切割機設計的軟體。在這個軟體中,我們可以選擇不同的圖案並設定不同的切割方式。主要有兩種切割方式:切割和雕刻,每種方式都可以選擇不同的顏色來代表不同的圖層。
激光切割:這種方式是用雷射直接切割材料,適合用在需要精準切割形狀的情況下。切割的速度和功率可以在軟體中設定。
畫線模式:這種方式是用雷射在材料表面進行雕刻,適合用在需要在材料上製作圖案或文字的情況下。雕刻的速度和功率也可以在軟體中設定。
切割和雕刻的功率設定會根據材料的厚度和種類而有所不同。例如,我們要切割的木頭有兩大類,一個是5mm合板,以及9mm的松木板。
對於5mm合板,建議的切割功率為70%,速度為20mm/s;雕刻功率為30%,速度為300mm/s。
對於9mm松木板,建議的切割功率為85%,速度為15mm/s;雕刻功率為40%,速度為200mm/s。
請注意,這些只是一般的設定建議,實際的設定可能需要根據切割機的實際性能和材料的實際情況進行調整。
所需材料
杜邦接頭
電線
壓接工具
壓製步驟
首先,將電線的一端剝去約5mm的絕緣層。
將剝去絕緣層的電線插入杜邦接頭中。
使用壓接工具固定接頭和電線。
教學網站:請點
所需材料
兩條杜邦線
焊接工具
焊錫
準備工作
確保你的焊接工具和工作區域都是清潔的。
預熱焊接鐵到適當的溫度。
剝線步驟
將兩條杜邦線的一端各剝去約5mm的絕緣層。
捆線步驟
將兩條剝去絕緣層的杜邦線緊密捆繞在一起。
焊接步驟
將焊錫線輕輕觸碰到焊接鐵的尖端,直到焊錫開始融化。溶化的焊錫應該包裹住焊接鐵的尖端。
把焊接鐵的尖端和溶化的焊錫一起放到你要焊接的地方。焊錫應該迅速流到兩條杜邦線之間,形成一個堅固的連接。
移開焊接鐵,但維持位置直到焊點冷卻並固化。避免在焊點冷卻之前移動電線,因為這可能會導致冷焊接,影響連接的強度和可靠性。
https://www.youtube.com/watch?v=UUIHBjsaMeM
我已經先畫好底板的樣貌,請使用Rdwork進行基本的分層處理
1.畫線:128顆乒乓球的位置、燈條的位置、底板內部的框線
2.激光切割:六角形的外框線。要記得使用rdwork分層處理。
但還不能進行切割,我們還要依據你是否要把燈帶繞到後面來進行規劃,如果你要把燈袋繞到後面,你還要在切割的圖層,畫出許多要鑽孔的位置。
切割的想法是,邊框都是5公分高,所以我們進行平面切割時,切出5條90*5的木條即可。
這些邊框長度都先比預計長度還要長,實際依據底板的邊長進行測量所需要的長度,要注意外邊框有要切出60度的斜角,因此在繪製時,要注意我們量的是短邊的內側,要把長邊的外側加回去。
我使用3D製作了60度畫線工具與60度切割導板
理解砂紙號數:砂紙號數越高,砂粒越細,研磨效果越細膩。相反,號數越低,砂粒越粗,研磨效果越粗糙。例如,80號砂紙比100號和180號更粗糙,適合去除大面積的粗糙表面或舊漆。
使用砂紙的技巧:使用砂紙時,應沿著木材的紋理方向研磨,避免交叉研磨,這樣可以最大程度減少刮痕。使用時應保持砂紙與木材的全面接觸,避免只用砂紙的邊緣接觸木材,這樣可以使研磨更均勻。
研磨步驟
首先,使用80號砂紙把雷切後的木板上的碳層磨除。沿著木紋方向輕輕研磨,直到碳層完全去除。
然後,換上100號砂紙進行研磨。這一步主要是去除80號砂紙可能留下的粗糙痕跡,使木材表面更平滑。
最後,使用180號砂紙進行細部研磨。這一步的目的是進一步平滑木材表面,為下一步的上漆或其他處理工作做好準備。
製作乒乓球時鐘
切割和黏合乒乓球
原本128顆燈,我們改成150顆燈,所以燈號順序的位置不同了,請使用兩張紙紀錄新版與舊版燈號順序,觀察出差異。找到的差異我們會請AI幫我們改程式
ChatGPT:
Claude 3:
Bing:
Google Gemini:
Gemini - chat to supercharge your ideas
Perplexity: