比 UNO 更容易上手的 Maker-UNO
Arduino UNO 大概是 Arduino 所有的開發板中最受歡迎、用量最多的一塊。它伴隨著 Arduino IDE 1.0 一起問世,可以說是所有 Arduino 開發板的老祖宗。UNO 這個字在義大利文中就是 “ONE” 的意思,充分代表了它的身世。即使後來有了許多更新、功能更強大的 Arduino 開發板 (如有 USB device 功能的 Leonardo、有更多 I/O 和更大記憶體的 MEGA 2560、使用 Cortex-M0+ 處理器的 Zero… 等),但對許多第一次接觸 Arduino 的人來說,UNO 仍然是他們的首選。
UNO Arduino 已經是超過十年之前的設計,它上面的處理器 ATmega328P 甚至還是 DIP 包裝的。雖然經過幾次改版,但它的功能仍然漸漸有些不足,因此在 Arduino 的 Create Common 授權之下,市面上也開始有很多相容於 Arduino UNO 但是有著各種不同改進的板子。
AppWorks 第 15 屆的團隊 Cytron Technologies 是一間來自馬來西亞、專注於教育和 maker 市場的 marketplace,他們生產很多品質很好的教育套件和 maker 用的模組,當然也包括各式各樣的 Arduino 相容板。
Cytron 最近推出了一塊稱之為 Maker-UNO 的 Arduino 開發板,並且準備上 Kickstarter 群募。我向 Cytron 借了一塊熱騰騰剛出爐的 Maker-UNO,想要了解一下這塊為教育市場設計的板子有何過人之處。
Cytron 才說要寄一片 Maker-UNO 給我,隔天我就在公司收到來自 FedEx 的包裹。馬來西亞跟台灣之間的物流實在很厲害,這應該是這個區域經營跨境電商的重要助力。
這是 Cytron 產品一貫的藍色紙盒包裝,我看過很多 Cytron 的其他產品,包裝都蠻精緻的。
外盒打開,裡面還有一個更小的紫色紙盒,這裡面才是 Maker-UNO 的本尊。這個小紙盒是有玄機的,等下會介紹。
終於見到 Maker-UNO 本人了。它的電路板防焊層居然是紫色的!綠色、藍色這種常見的防焊顏色不稀奇,我看過紅色、黃色、甚至透明的防焊,但紫色還是第一次看到。不過我知道防焊的顏色其實可以用調的,以前曾經為了要讓某一片在台灣板廠生產的電路板符合日本生產的防焊顏色,就讓板廠調了很多介於兩個顏色的中間色來讓我比對。
這片 PCB 的品質算很不醋,CNC 切的板邊很平整,沒有毛邊。因為電路不是太複雜,所以線徑沒有很細,文字層也沒有非常細的圖案,但從 logo 的 free graphics 看起來網印的精細度蠻高的,對齊的精度也不差。SMD 焊點的錫量偏多,可能是為了要抓緊那四個排針插座,讓它們可以承受較大的應力。這四個插座是全 SMD 的零件,不像傳統的 UNO 板用的是插針的零件。
主要的特性
Maker-UNO 最重要的改進,就是在板子上加上了許多 “立即可用” 的 I/O,包括在 digital I/O pin 2 到 pin 13 上的 LED、在 pin 2 上的一顆按鈕,以及在 pin 8 上的一個壓電蜂鳴器。
原來的 Arduino UNO,除了一顆接在 pin 13 上的 LED,沒有其它可以跟外界溝通的零件。因此大部分使用 Aduino UNO 的第一個 project 都長這樣:
雖然板子上已經有 LED,但如果需要按鈕的話,無論如何,使用者都得外接幾條線才能辦得到。
Maker-UNO 很貼心地在所有的 I/O 腳都加上了 LED,光是這 12 顆 LED 能做出的效果和樂趣,就遠勝於只有一顆 LED 在那邊閃阿閃的 Aruino UNO。而對於比較進階的 project 來說,在 Arduino 主板上有一組一目了然的 LED,可以即時知道所有 I/O 腳的狀態,也是非常方便的功能。
而接在 pin 2 上的按鈕則解決了 Arduino UNO 長年以來最令人頭痛的問題: 板子上沒有可以跟使用者互動的輸入裝置。搭配像 OneButton 或 ClickButton 這樣的 library,一顆按鈕就可以做出很多跟使用者互動的有趣功能。按鈕接在 pin 2 也是有原因的: 在 ATmega328 的板子上,只有 pin 2 跟 pin 3 可以用 attachInterrupt() 設為外部中斷輸入。
至於 pin 8 上的 piezo buzzer,可以用來發出簡單的聲音,更是提供了一個 LED 之外跟使用者互動的輸出。為了保持跟 UNO 的相容性,這個 piezo buzzer 串了一個開關,需要它閉嘴的時候可以把它切掉。
其它貼心的設計
除了以上的主要特性外,Maker-UNO 還有一些貼心的小設計。
首先是將 Arduino UNO 上的 USB type-B 插座換成了 Micro-B 的插座,畢竟都已經 2018 年了,誰還在用 type-B 啊 ? 而且 Maker-UNO 也取消了 DC 電源插座和板子上的 linear regulator,因為絕大部份的使用者都是透過 USB 供電來使用 UNO。
Arduino UNO 上用了一顆 ATmega16U2 當做 USB-to-UART 的界面。在設計 UNO 的那個年代,USB-to-UART 的晶片選擇可能不多,只有少數如 FTDI FT232 這種昂貴的產品可以使用,但這麼多年下來,隨著 USB Forum 將 CDC (communication device class) 標準化之後,各式各樣的 USB-to-UART 晶片如雨後春筍般出現在市場上,實在沒有理由再繼續用 ATmega16U2 當作 USB-to-UART 的 bridge。雖然 UNO 上也保留了 16U2 的 ICSP 插座,讓使用者可以將它燒錄成 virtual serial port 以外的 USB 裝置,做一些更有創意的應用,但會這樣用的人畢竟少之又少,而且開發 USB 相關應用最適合的平台應該是 Arduino Leonardo。因此 Maker-UNO 上用 CH340 這顆這幾年在 maker 界非常流行的 USB-to-UART 晶片取代了 ATmega16U2。這顆晶片不僅常見於各種第第三方開發的 Arduino 板,也很常被用在 ESP8266 的實驗板上。
另外,早期的 Arduino 板子幾乎都是純 5V logic 的設計,板子上雖然有一個 3.3V 的 ragulator,可以透過 shield 上的電源腳供電給其它疊在一起的板子,但它的輸出只有 50mA 的能力,其實推不了什麼東西。如果 project 中需要用到比較大的 3.3V 電源,都要另外從 +5V 或 VIN 的 rail 去轉。但隨著現在 3.3V logic 的產品和應用越來越多,3.3V 反而變成系統中很重要的電源,因此 Maker-UNO 將 3.3V 的供電能力增加到 500mA。至於 5V 可以供多少電,就看它接的 USB 上游 VBUS 有多少供電能力而定。
除了以上所述的特點外,Maker-UNO 保有跟 Arduino UNO 的完美相容性,它的板子外型完全相容於 R3 shield,而軟體上也完全相容於 UNO,在 Arduino IDE 中 target board 只要選 “Arduino/Genuino UNO” 就可以了,不需要其它的 board support package,而且 Maker-UNO 出廠時預載的是 Optiboot 這個改良過的 bootloader,更小、更快、支援更高的 baudrate。
初登場
在小紙盒的上蓋背面,印著 “Hey MAKER! Let’s start making something!”。下面有幾個立即可做的實驗:執行 Arduino 的天字第一號範例 “Blink”、測試按鈕的範例 “DigitalInputPullUp”,以及讓蜂鳴器發出一小段旋律的範例 “toneMelody”。這幾個範例都內建在 Arduino IDE 中,使用者拿到板子照著盒子上的步驟就可以直接開啟專案、編譯、上傳,馬上看到結果。
而盒子地底部的 QR code 則會導引使用者到 Maker-UNO 的 Getting Started 頁面,告訴你如何下載、安裝 Arduino IDE,如何安裝 CH340 USB-to-UART 的驅動程式,如何編譯及上傳第一個專案。除了英文之外,下面還有馬來文的版本,因為馬來西亞是 Cytron 的母市場啊。
試了這幾個小範例之後,我也手癢想來玩一下這一整排 LED,因此就寫了一個小程式。
我本來想用結合 PWM 呼吸燈跟跑馬燈來寫一個會 fading 的霹靂燈,但是 ATmega328 的平台只有在 pin 3, 5, 6, 9, 10 上支援用 analogWrite() 產生 PWM 訊號,因此只好寫簡單一點的跑馬燈。
程式碼在這裡。
Maker-UNO 確實是一片比 Arduino UNO 更適合教育市場、更容易上手的板子。不必再準備麵包板,不必再準備額外的零件,拿到板子就可以開始做實驗。
最後,前面說過這個紫色的小盒子有個小機關,其實就是它旁邊開了一個讓 micro USB 接頭剛好可以插進去的洞,因此你可以就把小紙盒當作是 Maker-UNO 的盒子,將它放在裡面也可以用 micro USB 供電做實驗,是個非常貼心的設計!
Bird先進您好
在makerpro.cc看到您有關line level的文章,想跟您請教如果用Arduino、或是ESP32的GPIO產生5V的SMPTE方波訊號,要怎麼把訊號變成line level的標準訊號,是否直接連交連電容就可?另外,我參考github上https://github.com/dirkx/SMPTE-EBU-TimecodeGenerator-ESP32 這個專案的圖是否能夠符合標準line level? 註:SMPTE timecode是很傳統的攝影機用的同步訊號
SMPTE 在線上是 50-600ohm 的 source impedance,Vpp 大概 1.2V-2V,因此需要特性接近的 line driver。而且因爲 SMPTE 是方波,帶有 DC bias,不能用電容交連。可以簡單用一個 MOSFET 或 BJT 做到。
謝謝Bird先進回覆,聽起來可以參考小型喇叭與驅動電路的設計中的範例,一個BJT就能做到,我先用開發版試做看看好了,不是相關背景聽專有名詞有點辛苦XD,謝謝Bird先進解答。