在本教程中,我們將使用樹莓派 Pico 來控制 31 個單獨可尋址的 LED 燈,它們安裝在兩片亞克力塑料圓盤之間。其中一片圓盤上涂有膠粘鏡片,另一片圓盤上貼有單向鏡膜;這樣可以給 LED 燈帶制造出 3D 無限效果。
不過,樹莓派目前還沒有自己的”等離子聚變能源”,所以我們還得用充電電池,然后把所有東西封裝在一個 3D 打印的外殼中。
組件清單
樹莓派 Pico
柔性條形彩色像素 LED 燈帶(通常以 1 米長度出售;我們使用了144 個 WS2812B 的燈帶,并將其切割為 31 個 LED 的長度,剩余的部分可以用于其他項目)
3mm 厚的亞克力板材,足夠切割兩塊直徑為 70mm 的圓盤
自粘式柔性鏡片瓦(不是玻璃)
單向鏡自粘膜(用于阻擋太陽的窗貼式膜片)
USB-C 5V 1A TP4506 充電板(或者使用 Micro USB 接口的等效充電板)
可充電的 3.7V 1100mAh 603449 鋰離子電池
2 位 3P SPDT 面板安裝微型滑動開關,鎖定開關
約 100cm 的 26AWG 硅膠絕緣銅線(或類似線材)
強力膠水
3D 打印的外殼零件(STL 設計文件可以文末免費獲?。?/p>
在初始設置過程中,你還需要:一臺電腦,一根 Micro USB 線和焊接設備和材料(本項目中的焊接量很少,所以如果你不擅長或者不會焊接,也不用擔心)。
安裝固件
樹莓派為樹莓派 Pico 提供了詳細的文檔,不過在這一步,非常簡單,我們只需要拖動固件到Pico上就行(就像把文件拷貝到 U 盤上一樣)。
在你的計算機上
下載適用于最新版本 Pico MicroPython 固件的 UF2 文件。MicroPython 是一種針對微控制器優化的 Python 實現,適合各種水平的程序員。
如果你的 Pico 還沒有顯示為 RPI-RP2 驅動器,你需要檢查一下你的電腦是否已正確安裝了 Pico 的驅動程序。
你可以按住 Pico 上的 BOOTSEL 按鈕(位于 USB 插口旁邊的小按鈕),同時將連接了 Pico 的 Micro USB 插入到電腦上來將 Pico 設置為啟動器模式。
然后,Pico 將會顯示為一個名為 RPI-RP2 的驅動器,如下所示(以 macOS 為例):
給 Pico 編程
下載、安裝并打開一個名為 Thonny 的 Python 集成開發環境(IDE)。后面我們會用這個給Pico編程。確認 Pico 仍然連接著,并且 Thonny 的界面應該是這樣的:
如果你在 Shell 窗口中看到 >>>,那么你已經成功連接到 Pico 并啟用了交互式會話,準備開始編程。如果你沒有看到這個提示,那么你需要檢查 Thonny 的設置是否正確。
點擊 Thonny 窗口的右下角,確保選擇了 MicroPython(Raspberry Pi Pico)解釋器;如果沒有選擇,請選擇它。
如果由于某種原因沒有成功地刷寫固件,Thonny 可能會提示你在這個階段安裝它;在這種情況下,嘗試重新刷寫固件。如果Pico 仍然沒有顯示為連接狀態,那需要斷開連接并重新連接,然后按下 Thonny 頂部菜單欄的紅色停止標志來重置一下。
然后,你應該就可以在 Shell 窗口中看到 >>> 提示了,說明我們已經連接成功。
將以下代碼復制粘貼到空白且尚未保存的 Thonny 程序窗口中:
import array, time from machine import Pin import rp2 # Configure the number of WS2812 LEDs. NUM_LEDS = 31 PIN_NUM = 28 brightness = 1 @rp2.asm_pio(sideset_init=rp2.PIO.OUT_LOW, out_shiftdir=rp2.PIO.SHIFT_LEFT, autopull=True, pull_thresh=24) def ws2812(): T1 = 2 T2 = 5 T3 = 3 wrap_target() label("bitloop") out(x, 1) .side(0) [T3 - 1] jmp(not_x, "do_zero") .side(1) [T1 - 1] jmp("bitloop") .side(1) [T2 - 1] label("do_zero") nop() .side(0) [T2 - 1] wrap() # Create the StateMachine with the ws2812 program, outputting on pin sm = rp2.StateMachine(0, ws2812, freq=8_000_000, sideset_base=Pin(PIN_NUM)) # Start the StateMachine, it will wait for data on its FIFO. sm.active(1) # Display a pattern on the LEDs via an array of LED RGB values. ar = array.array("I", [0 for _ in range(NUM_LEDS)]) ########################################################################## def pixels_show(): dimmer_ar = array.array("I", [0 for _ in range(NUM_LEDS)]) for i,c in enumerate(ar): r = int(((c >> 8) & 0xFF) * brightness) g = int(((c >> 16) & 0xFF) * brightness) b = int((c & 0xFF) * brightness) dimmer_ar[i] = (g<<16) + (r<<8) + b sm.put(dimmer_ar, 8) time.sleep_ms(10) def pixels_set(i, color): ar[i] = (color[1]<<16) + (color[0]<<8) + color[2] def pixels_fill(color): for i in range(len(ar)): pixels_set(i, color) def color_chase(color, wait): for i in range(NUM_LEDS): pixels_set(i, color) time.sleep(wait) pixels_show() time.sleep(0.2) def wheel(pos): # Input a value 0 to 255 to get a color value. # The colours are a transition r - g - b - back to r. if pos < 0 or pos > 255: return (0, 0, 0) if pos < 85: return (255 - pos * 3, pos * 3, 0) if pos < 170: pos -= 85 return (0, 255 - pos * 3, pos * 3) pos -= 170 return (pos * 3, 0, 255 - pos * 3) def rainbow_cycle(wait): for j in range(255): for i in range(NUM_LEDS): rc_index = (i * 256 // NUM_LEDS) + j pixels_set(i, wheel(rc_index & 255)) pixels_show() time.sleep(wait) BLACK = (0, 0, 0) RED = (255, 0, 0) YELLOW = (255, 150, 0) GREEN = (0, 255, 0) CYAN = (0, 255, 255) BLUE = (0, 0, 255) PURPLE = (180, 0, 255) WHITE = (255, 255, 255) COLORS = (BLACK, RED, YELLOW, GREEN, CYAN, BLUE, PURPLE, WHITE) while True: print("fills") for color in COLORS: pixels_fill(color) pixels_show() time.sleep(0.2) print("chases") for color in COLORS: color_chase(color, 0.01) print("rainbow") rainbow_cycle(0)
Thonny 的界面現在看起來是這樣的:
使用 MicroPython 的一個優點是它的很多代碼都是用可讀性強的英語編寫的。比如,在這個程序的開頭,我們可以看到 Pico 將通過引腳 28 控制 31 個 LED,以最大亮度顯示(亮度為 0-1 的比例,其中 0.5 表示 50% 的亮度)。
這個程序的剩余部分會指示 Pico 重復顯示圖案和顏色。
點擊 File 然后選擇 Save as…
組裝硬件
3D 打印的部件
需要四個 3D 打印的零件來容納所有的組件:背板、主體、Pico 支架和前蓋。我們只需要將它們粘在一起組裝成完整的裝置就行。
你可以在文末免費下載這些 3D 打印文件。建議使用易于打印的材料,比如 PLA 或 PETG 塑料絲材料來打印。
切割和準備亞克力圓盤
對于這個項目,我們需要兩塊厚度為 3mm,直徑為 70mm 的亞克力圓盤,其中一塊圓盤需要在中央鉆一個直徑約為 5mm 的孔,用于通過導線。
如果你可以使用激光切割機,制作這些部件很簡單?;蛘吣憧梢哉页瞿愕呐f文具盒,找到圓規。使用木工鋸切割出一個直徑為 70mm 的圓形,然后用砂紙或銼刀修整邊緣。最終的圓盤不需要完全無瑕疵,因為后續的步驟會遮蓋這些小瑕疵。
其中一塊圓盤在中心鉆一個直徑為 5mm 的孔,用于以后通過導線。
在柔性粘性鏡片上標記一個70mm的圓,在單向鏡自粘膜上標記另一個同樣大的圓。使用剪刀剪裁出圓形,而且可以剪得非常圓。
確保從亞克力圓片上撕掉了所有的保護層,然后依次撕掉鏡片背面的粘性支撐層。
把鏡片貼到帶有孔的圓片上,這個圓片會被用于安裝我們的Pico,然后將一片單向鏡膜貼到另一個圓片上。
布線和焊接電子器件
反應爐底部將會包含可充電電池、開關和 USB-C 充電板,這些我們需要將它們粘合到 3D 打印切割件內部的適配插槽中。
在這個階段,我們需要進行一些電線的剪切、剝離和焊接工作。
根據下面的照片,確保將電池的正負極線連接到正確的 USB-C 充電板正負極輸入上,并將板的正輸出線焊接到滑動開關的中間引腳上。
開關的正極線可以焊接到兩個外側開關引腳的任意一個上:
接下來,將另外三根導線直接焊接到 Pico 的背面。這些導線的長度應該足夠完成后面組裝過程中的連線電路:大約 20cm 的長度應該足夠了。
為了給 Pico 提供電源,還需要將紅色和黑色導線分別連接到標有 VBUS 和 GND 的引腳上。
我們需要第三根導線(藍色),在上面的照片中顯示,在藍色導線上將它焊接到標有 GP28 的引腳上。我們的 MicroPython 腳本中指定的是 Pico 用來與 LED 進行通信的引腳
LED 燈帶通常已經預先布線,但它們的連接點通常較大,我們需要自制一個布線束。使用剪刀,將任何現有的布線都剪掉,然后切割出一條 31 個 LED 的燈帶,確保剪切沿每個 LED 之間的縫隙進行:
燈帶上也標有箭頭,用于顯示正確的電流方向,”+”符號代表正線,”0″代表數據線,”G”代表負線或接地線。在切割時,確保沿著每個焊盤中間切開;如果不小心的話,很容易導致焊接線接觸不良。
在上面的照片中,像這樣焊接另外三根導線,長度也約為 20cm:紅色正線、藍色數據線和黑色地線。在焊接到焊盤時,你可能會發現從燈帶后面進行焊接會更方便一些。
組裝
將連接到你的樹莓派Pico的三根線穿過小型3D打印的Pico底座。然后將線通過鏡子圓板的孔,將底座粘在你的Pico底部和圓板的反光面。確保Pico在底座上坐立于鏡子表面之上。
這樣,我們就可以實現我們的目標,獲得一個 3D 無限效果
現在將帶單向膜的圓盤放入 3D 打印的主體中,并將前環粘合到主體上。由于圓盤是由前環固定的,所以可以隱藏一些形狀方面的細微缺陷。
將 31 個 LED 的燈帶粘貼在 3D 打印的主體的內部,確保布線和連接與主體的間隙對齊,這樣你可以輕松地將導線穿過安裝 Pico 的圓盤的一側。
大多數 LED 燈帶都有自粘背面,這有助于使這個過程變得簡單。
將已經粘合到鏡面圓盤上的 Pico 與裝有 LED 的主體和單向鏡組成一個完整的裝置,并與包含電池、充電板和開關的底座配對。
確保你的所有導線尾部都穿過到了反應爐底座上。將兩根藍色數據線焊接在一起,將三根紅色正線焊接在一起,將三根黑色負線焊接在一起,根據需要修剪任何多余長度的線材??梢允褂脽峥s套管或膠帶絕緣我們的連接點。
最后檢查
在將所有部件粘合在一起之前,檢查一切是否按預想的工作。通過滑動開關檢查 LED 是否點亮;使用 USB-C 手機充電器或 USB 充電寶測試充電板的功能;充電時,LED指示燈將亮起。
現在,我們只需要將部件粘合在一起就ok了。
升級
升級!每個人都喜歡升級,尤其是鋼鐵俠。其實我們還可以使用樹莓派 Pico W 運行一個 web 服務器,從手機瀏覽器上無線控制 LED。
或者也可以加一些涂料,在反應爐背面粘貼一些魔術貼,這樣我們就可以將它像托尼·斯塔克那樣佩戴在胸前了。
審核編輯:劉清
-
鋰離子電池
+關注
關注
85文章
3215瀏覽量
77549 -
驅動器
+關注
關注
52文章
8156瀏覽量
146009 -
led燈
+關注
關注
22文章
1592瀏覽量
107837 -
3D打印技術
+關注
關注
4文章
220瀏覽量
31869 -
樹莓派
+關注
關注
116文章
1699瀏覽量
105524
原文標題:用樹莓派 Pico 做一個鋼鐵俠反應爐
文章出處:【微信號:趣無盡,微信公眾號:趣無盡】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論