ARDUINO 積木式編輯器整理

原文地址:https://blog.everlearn.tw/arduino/arduino-%E7%A9%8D%E6%9C%A8%E5%BC%8F%E7%B7%A8%E8%BC%AF%E5%99%A8%E7%B8%BD%E6%95%B4%E7%90%86web

前言

雖然Arduino問世以久,可是身爲這波自創浪潮的元老之一,Arduino仍有至關的重要性。Arduino官方雖然一直都有提供功能完整的IDE,然而由於使用C++作爲開發語言,所以形成很多人上手時的門檻。尤爲對非英語系國家的青少年來講,在學習的路上更是難上加難。也所以,這幾年陸陸續續發展出了許多不一樣的積木式編輯器,可作爲學習時的敲門磚,甚至用來開發通常的項目也不成問題。網絡

在這篇文章中,我將討論選擇編輯器的考察事項,並對市面上衆多的積木式編輯器作一個摘要與整理,以做爲選擇時的參考。編輯器

考察事項

Scratch是否並不重要,一切回到需求

在這些衆多的編輯器當中,有很多跟Scratch有必定程度的關係,無論是透過外掛的方式、改寫、甚至是受到啓發。不過身爲一個使用者,這倒不是咱們最需在乎的一點。雖然對於學習過Scratch的人來講,直接在熟悉的環境或操做方式下操控Arduino是很符合直覺的選擇,可是其實這些編輯器大多與Scratch有相似的設計方式,不至於須要太多熟悉的轉換時間。反卻是編輯器自己可否知足咱們的需求才是最值得考察的重點。學習

教學vs項目製做

既然知足需求才是選擇編輯器的最主要考察,那咱們就來看看需求是甚麼。ui

若是是以教學或學習爲出發點,固然就是儘可能以積木功能以及支持周邊元件的數量爲主要考察。此外,中文化與否、安裝複雜度、以及穩定性也是很重要的考察項目。對於某些現場教學來講,是否支持離線版可能也是必須考察的重點。url

若是是項目製做呢?固然就是先把項目所需的功能與元件完整列出來,而後找尋最爲匹配的編輯器。基本上,通常模擬、數位腳位的輸出入功能都是必備的積木,因此重點應放在須要特殊處理的周邊元件的支持度。舉例來講,若是項目須要用到RGB Led燈泡,那麼直接提供RGB Led燈泡控制積木的編輯器就會是比較方便的選擇。固然,RGB Led燈泡的控制其實不難,直接控制不一樣腳位的輸出就能夠達到一樣的目的,因此實務上不必定要如此考察,每每直接使用最爲熟悉的編輯器便可。不過有時候某些硬件須要搭配特定的編輯器,此時咱們就沒有太多的選擇。好在這些編輯器的設計方式都大同小異,只要有相關操做經驗,在程序編輯上不會有太多的困難。比較麻煩是安裝步驟差距甚大,甚至很容易卡關。spa

獨立與否很重要

除了周邊元件是否直接支持外,還有一個經常被忽略卻更爲重要的考察,那就是是否支持程序刻錄的選項。簡單來講,Arduino的程序設計可分爲兩大分類,一類是操控Arduino時必須由兩個程序搭配而成,一個是執行在Arduino的特殊固件程序,另一個則是執行在電腦上的控制程序。在這種模式下,Arduino就像一個魁儡同樣,沒有本身的自我意識,徹底受控制程序的擺佈。電腦上的控制程序必須持續對Arduino下達控制指令才能產生做用,一旦電腦上的控制程序中止後Arduino就不會再產生任何反應。我將這種模式稱爲魁儡模式,運做方式可參考下圖:設計

魁儡模式下的Arduino

魁儡模式下的Arduino3d

問題來了,Arduino怎麼會自願成爲魁儡呢?電影裏的壞人,若是想要控制好人使其言聽計從,經常使用注射聽話藥劑這種方式。在這裏咱們能夠利用同樣的概念,先將聽話藥劑(特殊固件程序)注射(刻錄)到Arduino裏。這種特殊固件程序一般是Firmata/FirmataPlus,可是也多是自行開發的特殊固件。咱們修改上圖,加上刻錄的步驟:代理

魁儡模式下的Arduino(刻錄特殊固件)

魁儡模式下的Arduino(刻錄特殊固件)

基本上,以Scratch爲基礎的編輯器大可能是這樣的運做方式。在這種模式下主要的運算由電腦上的控制程序加以執行,所以比較容易完成複雜的功能,可是另外一方面卻也使得Arduino沒法擺脫USB線的束縛,並且還必須徹底依賴控制程序的指令。使用WiFi或藍牙等無線功能雖然可讓Arduino擺脫USB線的束縛,可是卻依舊必須受限於控制程序,所以無論在構架上或是應用時都會受到很多限制。

若是要徹底擺脫控制程序,則必須將咱們寫好的程序直接刻錄至Arduino。這一類編輯器將積木程序轉成Arduino IDE所支持的C++程序語言,而後進行編譯並刻錄至Arduino。透過這種方式,Arduino上的固件程序能夠獨立運做,而不須要依賴額外的控制程序。我將這種模式稱爲獨立模式,運做方式可參考下圖:

獨立模式下的Arduino

獨立模式下的Arduino

嚴格來講,魁儡模式與獨立模式都須要進行程序的刻錄,只不過傀儡模式下刻錄的是用來接受控制指令的特殊固件,而獨立模式下則是刻錄咱們所撰寫的程序。

這兩種模式之間並無哪一種比較優秀的問題,只有合適不合適。也就是說咱們必須從項目的總體構架來考察,若是須要或適合搭配控制程序,那就選擇魁儡模式的編輯器。若是須要獨立運做,那就選用獨立模式的編輯器。

最後,有些獨立運做的Arduino程序仍能夠接受外部來的設定與控制。舉例來講,咱們能夠利用無線控制的方式來設定前述示例中LED燈泡的亮度。儘管如此,LED燈泡的亮不亮以及所需亮度,仍需由Arduino上的程序作出最後決定,所以依舊屬於獨立模式開發方式。

結論

甚麼!明明都尚未講到任何的積木式編輯器,怎麼就直接作結論了?由於可供選擇的編輯器實在太多,爲了不看到文章後面精神不濟,因此咱們把結論搬到前面。

綜合來講,WFduino(尤爲是新版的WFduino 2)與motoBlockly是目前兩個最適合使用的積木式編輯器。WFduino支持 WF8266R,能夠無線控制Arduino。不過WFduino僅支持魁儡模式,而使用獨立模式的motoBlockly正好能夠相互搭配。再加上可直接編輯C++程序,對學習Arduino的C++程序來講至關方便。即便遇到現成積木沒有支持的周邊元件,也能夠透過Arduino IDE進行程序的功能擴充。

此外,Webduino Blockly則是用來製做物聯網的優先選擇。至於Transformer也是能夠考慮的選項,不過目前還不知道Transformer是否會支持新版的Scratch 3,並且僅限於社羣的應用也是必須考察的要點。想較於許多已經再也不更新的編輯器,這幾個編輯器的功能與開發情況都值得咱們優先考慮使用。並且這幾個編輯器恰好都是臺灣團隊所開發,中文的支持固然也都不成問題。

儘管積木式編輯器選擇衆多,並且能夠支持不一樣需求的構架,可是積木式編輯器對周邊元件的支持度仍遠低於Arduino官方IDE,因此對於複雜的項目亦可考慮使用Arduino IDE搭配其餘程序語言一塊兒完成項目的構架。

積木式編輯器摘要

S4A

可說是最老牌的Arduino積木式編輯器,以Scratch 1.x版本進行修改,穩定度高可是直接支持的周邊元件數量不算多,除了操做基本腳位外,僅支持馬達的控制。此外,Scratch 1.x的功能比起Scratch 二、甚至是Scratch 3來講都仍是較爲缺乏些。積木自己沒有中文化,也是美中不足的地方。

S2A

以Scratch 2外掛的方式與Arduino互動,從s2a演變爲s2a_fm,如今最新改版爲s2aio。除了操做基本腳位外,還支持伺服馬達、音調撥放等功能。界面支持中文,可是安裝過程頗爲複雜,須要安裝Python以及相關套件,並且必須自行刻錄Arduino所需的固件,對大多數新手來講是一個不小的門坎。

Transformer

宇宙機器人團隊所研發的軟件,嚴格來講Transformer並非一個積木式編輯器。可是透過Transformer,能夠直接開啓S4A與S2A的編輯器,並可自動刻錄Arduino所需的固件,大幅減小安裝以及使用S4A/S2A時的複雜度,對教學或學習的人可說是一大福音。不過要注意Transformer社羣版不能夠用在營利目的,使用時必須多加註意。

ScratchX外掛

ScratchX提供各式各樣的Scratch 2外掛,固然也包含Arduino的操控。除了通常性的積木外,ScratchX Arduino外掛還支持事件型的積木,能夠寫出更簡潔的互動程序。Arduino端採用Firmata固件,積木名稱則未支持中文。不過由於ScratchX使用者衆,所以還是很多人使用的設計環境。

mBlock

玩過mBot自走車的朋友對於mBlock必定不陌生,二者都是深圳市創客工場科技有限公司所推出的產品。mBlock 3以Scratch 2爲基礎,除了能夠用來操控mBot,還能夠用來鏈接Arduino。由於是中國公司的產品,中文(簡體)的支持天然不成問題。而mBlock最特別之處就是能夠同時支持兩種模式,也就是能夠直接控制Arduino,或是將程序刻錄至Arduino。不過這兩種模式可使用的積木是不同的,很多積木僅能在傀儡模式下使用。此外在獨立模式下,雖然能夠看到積木所對應出的C++代碼,可是卻沒法直接進行修改。必須複製到Arduino IDE中才能進行修改,如此一來纔可使用積木所不支持的功能。而最新版的mBlock 5以Scratch 3爲基礎,可是卻以支持自的硬件產品爲主,而再也不支持Arduino,着實惋惜。

BlockyDuino

BlockyDuino編輯器使用獨立模式,產生的C++程序必須自行復制到Arduino IDE進行編譯與刻錄,使用方便性稍嫌不足。雖然透過額外的arduino_web_server.py能夠自動進行刻錄,可是安裝步驟卻有些繁瑣。BlockyDunio與arduino_web_server.py沒有中文界面,並且已經許久未更新,再加上支持的周邊多以Grove元件爲主,所以一般可考慮其餘更爲合適的選擇。

ArduBlock

之外掛的方式替Arduino IDE加上積木式編輯功能,可是由於久未更新,所以在新的Arduino IDE 1.8.x系列沒法正常運做,僅能使用舊版的Arduino IDE 1.6,所以一般可考慮其餘更爲合適的選擇。

miniBloq

miniBloq一樣多年未更新,並且使用方式與其餘積木式編輯器有不小的差別,所以有至關的上手難度。再加上沒法正常運行在Windows 10的環境下,所以一般可考慮其餘更爲合適的選擇。

Modkid Micro

Modkid Micro一樣是一個已經再也不維護的編輯器,開發商已經轉爲開發Modkit for VEX,成爲支持自家硬件的付費軟件。

motoBlockly

慧手科技motoduino 所研發的在線積木式編輯器,屬於獨立模式。編輯時除了能夠看到對應的C++檔案,甚至能夠直接進行修改。並且提供額外的代理程序,能夠自動將編輯好的程序刻錄至Arduino。同時提供繁體中文與英文界面,上手門坎可謂至關的低。

Webduino Blockly

Webduino Blockly算是一個蠻獨特的產品,透過專屬的Arduino無線網絡擴充版Webduino Fly達到遠端遙控的功能。而Webdunio Blockly開發出來的程序屬於網頁的形式,也就是說咱們能夠從世界各地來控制Arduino,以達到物聯網的概念。

WFduino

WFduino有點相似Transformer,透過轉介的方式支持多種編輯環境或硬件元件。新版的WFduino 2可以使用的編輯環境包含Scratch 2與Scratch 3,而硬件部分除了支持Arduino、DiFi外,還支持WF8266R進行遠端遙控。WFduino 2提供許多Scratch 3的外掛,大幅提高Scratch 3與Arduino的互動能力。惟一惋惜的是,WFduino僅支持魁儡模式,而沒法進行程序的刻錄。

相關文章
相關標籤/搜索