雖然這篇arduino同時執行兩個程式鄉民發文沒有被收入到精華區:在arduino同時執行兩個程式這個話題中,我們另外找到其它相關的精選爆讚文章
在 arduino同時執行兩個程式產品中有3篇Facebook貼文,粉絲數超過3,992的網紅台灣物聯網實驗室 IOT Labs,也在其Facebook貼文中提到, 迎接終端AI新時代:讓運算更靠近資料所在 作者 : Andrew Brown,Strategy Analytics 2021-03-03 資料/數據(data)成長的速度越來越快。據估計,人類目前每秒產出1.7Mb的資料。智慧與個人裝置如智慧型手機、平板電腦與穿戴式裝置不但快速成長,現在我...
arduino同時執行兩個程式 在 台灣物聯網實驗室 IOT Labs Facebook 的最佳解答
迎接終端AI新時代:讓運算更靠近資料所在
作者 : Andrew Brown,Strategy Analytics
2021-03-03
資料/數據(data)成長的速度越來越快。據估計,人類目前每秒產出1.7Mb的資料。智慧與個人裝置如智慧型手機、平板電腦與穿戴式裝置不但快速成長,現在我們也真正目睹物聯網(IoT)的成長,未來連網的裝置數量將遠遠超越地球的人口。
這包括種類繁多的不同裝置,像是智慧感測器與致動器,它們可以監控從震動、語音到視覺等所有的東西,以及幾乎大家可以想像到的所有東西。這些裝置無所不在,從工廠所在位置到監控攝影機、智慧手錶、智慧家庭以及自主性越來越高的車輛。隨著我們企圖測量生活週遭數位世界中更多的事物,它們的數量將持續爆炸性成長。
資料爆量成長,讓許多企業把資料從內部部署運作移到雲端。儘管集中到雲端運算的性質,在成本與資源效率、彈性與便利性有它的優點,但也有一些缺點。由於運算與儲存在遠端進行,來自終端、也就是那些在網路最邊緣裝置的資料,需要從起始點經過網際網路或其他網路,來到集中式的資料中心(例如雲端),然後在這裡處理與儲存,最後再傳回給用戶。
對於一些傳統的應用,這種方式雖然還可以接受,但越來越多的使用場景就是無法承受終端與雲端之間,資訊被接力傳遞產生的延遲。我們必須即時做出決策,網路延遲要越小越好。基於這些原因,開始有人轉向終端運算;越來越多人轉而使用智慧終端,而去中心化的程度也越來越高。此外,在這些即時應用中產生的龐大資料量,意味著處理與智慧必須在本地以分散的方式進行。
與資料成長連袂而來的,是人工智慧與機器學習(ML)也朝終端移動,並且越來越朝終端本身移動。大量來自真實世界的資訊,需要用ML的方式來進行詮釋與採取行動。透過AI與ML,是以最小的延遲分析影像、動作、影片或數量龐大的資料,唯一可行且合乎成本效益的方式。運用AI與ML的演算法與應用將在邊緣運作,在未來還將會直接在終端裝置上進行。
資料正在帶動從集中化到分散化的轉變
隨著資訊科技市場逐漸發展與成熟,網路的設計以及在其運作的所有裝置,也都跟著進化。全盛時期從服務數千個小型客戶端的主機,一直到客戶端伺服器模型中使用的越來越本地化的個人電腦運算效能,基礎架構持續重組與最佳化,以便更貼近網路上的裝置以及符合運作應用的需求。這些需求包含檔案存取與資料儲存,以及資料處理的需求。
智慧型手機與其他行動裝置的爆炸性成長,加上物聯網的快速成長,促使我們需要為如何讓資產進行最佳的部署與安排進行評估。而影響這個評估的因素,包括網路的可用性、安全性、裝置的運算力,以及把資料從終端傳送到儲存設備的相關費用,近來也已轉向使用分散式的運算模型。
從邊緣到終端:AI與ML改變終端典範
在成本、資源效率、彈性與便利性等方面,雲端有它的優點,裝置數量的急遽增加(如圖2),將導致資料產出量大幅增加。這些資料大部份都相當複雜且非結構化的,這也是為何企業只會分析1%~12% 的資料的原因之一。把大量非結構化的資料送到雲端的費用相當高、容易形成瓶頸,而且從能源、頻寬與運算力角度來看,相當沒有效率。
在終端執行進階處理與分析的能力,可協助為關鍵應用降低延遲、減少對雲端的依賴,並且更好地管理物聯網產出的巨量資料。
終端AI:感測、推論與行動
在終端部署更多智慧的主要原因之一,是為了創造更大的敏捷性。終端裝置處於網路的最邊緣與資料產生的地方,可以更快與更準確地做出回應,同時免除不必要的資料傳輸、延遲與資料移動中的安全風險,可以節省費用。
處理能力與神經網路的重大進展,正協助帶動終端裝置的新能力,另一股驅動力則是對即時資訊、效率(傳送較少的資訊到雲端)、自動化與在多數情況下,對近乎即時回應的需求。這是一個三道步驟的程序:傳送資料、資料推論(例如依據機器學習辨識影像、聲音或動作),以及採取行動(如物件是披薩,冰箱的壓縮機發出正常範圍外的聲音,因此發出警告)。
感測
處理器、微控制器與感測器產生的資料量相當龐大。例如,自駕車每小時要搜集25GB的資料。智慧家庭裝置、智慧牙刷、健身追蹤器或智慧手錶持續進化,並且與以往相比,會搜集更多的資料。
它們搜集到的資料極具價值,但每次都從各個終端節點把資料推回給雲端,數量又會過多。因此必須在終端進行處理。倘若部份的作業負載能在終端本身進行,就可以大幅提升效率。
推論
終端搜集到的資料是非結構性的。當機器學習從資料擷取到關聯性時,就是在進行推論。這表示使用AI與ML工具來幫忙訓練裝置辨識物件。拜神經網路的進展之賜,機器學習工具越來越能訓練物件以高度的精準度辨識影像、聲音與動作,這對體積越來越小的裝置,極為關鍵。
例如,圖4顯示使用像ONNX、PyTorch、Caffe2、Arm NN或 Tensorflow Lite 等神經網路工具,訓練高效能的意法半導體(ST)微控制器(MCU),以轉換成最佳化的程式碼,讓MCU進行物件辨識(這個的情況辨識對象是影像、聲音或動作)。更高效能的MCU越來越常利用這些ML工具來辨識動作、音訊或影像,而且準確度相當高,而我們接下來馬上就要對此進行檢視。這些動作越來越頻繁地從邊緣,轉移到在終端運作的MCU本身。
行動
資料一旦完成感測與推論後,結果就是行動。這有可能是回饋簡單的回應(裝置是開啟或關閉),或針對應用情況進行最佳化(戴耳機的人正在移動中,因此會針對穩定度而非音質進行最佳化),或是回饋迴路(根據裝置訓練取得的機器學習,輸送帶若發出聲音,顯示它可能歪掉了)。物聯網裝置將會變得更複雜且更具智慧,因為這些能力提升後,運算力也會因此增加。在我們使用新的機器學習工具後,一些之前在雲端或終端完成的關鍵功能,將可以移到終端本身的內部進行。
終端 AI:千里之行始於足下
從智慧型手機到車輛,今日所有電子裝置的核心都是許多的處理器、微控制器與感測器。它們執行各種任務,從最簡單到最複雜,並需要各式各樣的能力。例如,應用處理器是高階處理器,它們是為行動運算、智慧型手機與伺服器設計;即時處理器是為例如硬碟控制、汽車動力傳動系統,與無線通訊的基頻控制使用的非常高效能的處理器,至於微控制器處理器的矽晶圓面積則小了許多,能源效率也高出很多,同時擁有特定的功能。
這意味著利用ML工具訓練如MCU等較不複雜元件來執行的動作,之前必須透過威力更強大的元件才能完成,但現在邊緣與雲端則是理想的場所。這將讓較小型的裝置以更低的延遲執行更多種類的功能,例如智慧手錶、健康追蹤器或健康照護監控等穿戴式裝置。
隨著更多功能在較小型的終端進行,這將可以省下資源,包括資料傳輸費用與能源費用,同時也會產生極大的環境衝擊,特別是考量到全球目前已有超過200億台連網裝置,以及超過2,500億顆MCU(根據Strategy Analytics統計數據)。
TinyML、MCU與人工智慧
根據Google的TesnsorFlow 技術主管、同時也是深度學習與TinyML領域的指標人物 Pete Warden 表示:「令人相當興奮的是,我還不知道我們將如何使用這些全新的裝置,特別是它們後面代表的科技是如此的吸引人,我無法想像那些即將出現的全新應用。」
微型機器學習(TinyML)的崛起,已經催化嵌入式系統與機器學習結合,而兩者傳統上大多是獨立運作的。TinyML 捨棄在雲端上運作複雜的機器學習模型,過程包含在終端裝置內與微控制器上運作經過最佳化的模式識別模型,耗電量只有數毫瓦。
物聯網環境中有數十億個微型裝置,可以為各個產業提供更多的洞察與效率,包括消費、醫療、汽車與工業。TinyML 獲得 Arm、Google、Qualcomm、Arduino等業者的支持,可望改變我們處理物聯網資料的方式。
受惠於TinyML,微控制器搭配AI已經開始增添各種傳統上威力更強大的元件才能執行的功能。這些功能包括語音辨識(例如自然語言處理)、影像處理(例如物件辨識與識別),以及動作(例如震動、溫度波動等)。啟用這些功能後,準確度與安全性更高,但電池的續航力卻不會打折扣,同時也考量到各種更微妙的應用。
儘管之前提到的雲端神經網路框架工具,是取用這個公用程式最常用的方法,但把AI函式庫整合進MCU,然後把本地的AI訓練與分析能力插入程式碼中也是可行的。這讓開發人員依據從感測器、麥克風與其他終端嵌入式裝置取得的訊號導出資料模式,然後從中建立模型,例如預測性維護能力。
如Arm Cortex-M55處理器與Ethos U55微神經處理器(microNPU),利用CMSIS-DSP與CMSIS-NN等常見API來簡化程式碼的轉移性,讓MCU與共同處理器緊密耦合以加速AI功能。透過推論工具在低成本的MCU上實現AI功能並符合嵌入式設計需求極為重要,原因是具有AI功能的MCU有機會在各種物聯網應用中轉變裝置的設計。
AI在較小型、低耗電與記憶體受限的裝置中可以協助的關鍵功能,我們可以把其精華歸納至我們簡稱為「3V」的三大領域:語音(Voice,如自然語言處理)、視覺(Vision,如影像處理)以及震動(Vibration,如處理來自多種感測器的資料,包括從加速計到溫度感測器,或是來自馬達的電氣訊號)。
終端智慧對「3V」至關重要
多數的物聯網應用聚焦在一些特定的領域:基本控制(開/關)、測量(狀態、溫度、流量、噪音與震動、濕度等)、資產的狀況(所在地點以及狀況如何?),以及安全性功能、自動化、預測性維護以及遠端遙控(詳見圖 6)。
Strategy Analytics的研究顯示,許多已經完成部署或將要部署的物聯網B2B應用,仍然只需要相對簡單的指令,如基本的開/關,以及對設備與環境狀態的監控。在消費性物聯網領域中,智慧音箱的語音控制AI已經出現爆炸性成長,成為智慧家庭指令的中樞,包括智慧插座、智慧照明、智慧攝影機、智慧門鈴,以及智慧恆溫器等。消費性裝置如藍牙耳機現在已經具備情境感知功能,可以依據地點與環境,在音質優先與穩定度優先之間自動切換。
如同我們檢視的結果,終端AI可以在「3V」核心領域提供價值,而它觸及的許多物聯網領域,遍及B2B與B2C的應用:
震動:包含來自多種感測器資料的處理,從加速計感測器到溫度感測器,或來自馬達的電氣訊號。
視覺:影像與影片辨識;分析與識別靜止影像或影片內物件的能力。
語音:包括自然語言處理(NLP)、瞭解人類口中說出與寫出的語言的能力,以及使用人類語言與人類交談的能力-自然語言產生(NLG)。
垂直市場中有多種可以實作AI技術的使用場景:
震動
可以用來把智慧帶進MCU中的終端AI的進展,有各式各樣的不同應用領域,對於成本與物聯網裝置與應用的效用,都會帶來衝擊。這包括我們在圖6中點出的數個關鍵物聯網應用領域,包括:
溫度監控;
壓力監控;
溼度監控;
物理動作,包括滑倒與跌倒偵測;
物質檢測(漏水、瓦斯漏氣等) ;
磁通量(如鄰近感測器與流量監控) ;
感測器融合(見圖7);
電場變化。
一如我們將在使用場景單元中檢視的,這些能力有許多可以應用在各種被普遍部署的物聯網應用中。
語音
語音是進化的產物,也是人類溝通非常有效率的方式。因此我們常常想要用語音來對機器下指令,也不令人意外;聲音檢測是持續成長的類別。語音啟動在智慧家庭應用中很常見,例如智慧音箱,而它也逐漸成為啟動智慧家庭裝置與智慧家電的語音中樞,如電視、遊戲主機與其他新的電器。
在工業環境中,供車床、銑床與磨床等電腦數值控制(CNC)機器使用的電腦語音引擎正方興未艾。iTSpeex的ATHENA4是第一批專為這些產品設計的語音啟動作業系統。這些產品往往因為安全原因,有離線語音處理的需求,因此終端 AI 語音發展在這裡也創造出有趣的機會。用戶可以指示機器執行特定的運作,並從機器手冊與工廠文件,立即取用資訊。
語音整合在車輛中也相當關鍵。OEM 代工廠商持續對車載娛樂系統中的語音辨識系統,進行大量投資。語音有潛力成為最安全的輸入模式,因為它可以讓駕駛的眼睛持續盯著道路,而雙手仍持續握著方向盤。
對於使用觸控螢幕或硬體控制器通常需要多道步驟的複雜任務,語音辨識系統特別能勝任。這些任務包括輸入文字簡訊、輸入目的地、播放特定歌曲或歌曲子集,以及選擇廣播電台頻道。其他的服務包含如拋錨服務(或bCall)與禮賓服務。
視覺
正如我們之前已經檢視過,終端 AI 提供視覺領域全新的機會,特別是與物件檢測及辨識相關。這可能包括觀察生產線的製造瑕疵,以及找出自動販賣機需要補貨的庫存。其他實例包括農業應用,例如依據大小與品質為農產品分級。
曳引機裝上機器視覺攝影機後,我們幾乎可以即時檢測出雜草。雜草冒出後,AI可以分類雜草並估算它對農產收穫的潛在威脅。這讓農民可以鎖定特定的雜草,並打造客製的除草解決方案。機器視覺然後可以檢測除草劑的效用,並找出農地中仍具抗藥性的殘餘雜草。
使用場景
預測性維護工具已經從擷取與比較震動的量測資料,進化到提出即時的資產監控。藉由連接物聯網感測器裝置與維護軟體,我們也可能做到遠端監控。
震動分析
這種類型的預測性維護在旋轉型機器密集的製造工廠裡,相當常見。震動分析可以揭露鬆脫、不平衡、錯位與軸承磨損等狀況。例如,把震動計量器接上靠近選煤廠離心泵浦內部承軸處,就可以讓工程師建立起正常震動範圍的基線。超出這個範圍的震動,可能顯示滾珠軸承出現鬆動,需要更換。
磁感測器融合
磁感測器利用磁性浮筒與一系列可以感應並與液體表面一起移動的感測器,測量液面的高低。所有的這些應用都使用一個固定面上的磁感測器,它與附近平面的磁鐵一起作動,與這個磁鐵相對應的感測器也會移動。
聲學分析(聲音)
與震動分析相似,聲測方位分析也是供潤滑技師使用,主要是專注在主動採取潤滑措施。這意味我們可以避免移動設備時產生的過度磨損,否則會為了修理造成代價高昂的停機。實際的例子可能包括測量輸送皮帶的承軸狀況。出現過度磨損時,承軸會因為潤滑不足或錯位出現故障,可能造成整個生產流程的中斷。
聲學分析(超音波)
聲音聲學分析雖然可以用來進行主動與預測性維護,超音波聲學分析卻只能用於預測性維護。它可以在超音波範圍內找出與機器摩擦及壓力相關的聲音,並使用在會發出較細微聲音的電氣設備與機器設備。我們可以說這一類型的分析與震動或油量分析相比,更可以預測即將出現的故障。目前它部署起來比其他種類的預防性維護花費較高,但終端 AI 的進展可以促成這種細微層級的聲學檢測,大幅降低部署的費用。
熱顯影
熱顯影利用紅外線影像來監控互動機器零件的溫度,讓任何異常情況很快變得顯而易見。具備終端 AI 能力的裝置,可以長期檢測微細的變化。與其他對事故敏感的監視器一樣,它們會觸發排程系統,自動採取適當的行動來預防零件故障。
消費者與智慧家庭
將語音運用在消費者與智慧家庭,是最常看到的場景之一。這包括智慧型手機與平板電腦上、未包含電話整合功能的裝置,例如螢幕尺寸有限的穿戴式裝置。這類型的裝置包含智慧手錶與健康穿戴式裝置,可以為各種功能提供免動手的語音啟動。像 Amazon 的 Echo 或 Google 的 Home 等智慧音箱市場的成長,說明消費者對於可接收與提供語音互動等現有裝置的強勁需求,與日俱增。
消費者基於各種理由使用智慧音箱,最常見的使用場景為:
聽音樂;
控制如照明等智慧家庭裝置;
取得新聞與天氣預報的更新;
建立購物與待辦事項清單。
除了像智慧音箱與智慧電視等消費裝置,智慧家庭裝置語音的使用,也顯現相當的潛力。諸如連網門鈴(如 ring.com)等裝置與連網的煙霧偵測器(例如 Nest Protect 煙霧與一氧化碳警報)目前都已上市可供消費者選購,它們結合了語音與視覺的感測器融合功能以及運動檢測。有了連網的煙霧偵測器,裝置在偵測到煙霧或一氧化碳時,可以發出語音警告。
終端 AI 為強化這些能力提供了全新機會,而且常常結合震動(動作)、視覺與語音控制。例如,增加姿態辨識來控制例如電視等家電,或是把語音控制嵌入白色家電,即是以最低成本強化功能性最直接的方式。
健康照護
用來發現醫護資訊的 AI 驅動終端裝置的應用,將為病況的治療與診斷,提供更多的價值。這種資訊可能是資料,也可能是影像、影片以及說出的話,我們可以透過 AI 進行型態與診斷分析。這些資料將引發全新、更有效的治療方法,為整個產業節省成本。受惠於終端 AI 的進展,像 Google Duplex 等語音系統的複雜性將會降低。例如門診預約等勞力密集的工作,也可以轉換成 AI 活動。利用自然語言語音來延伸 AI 的使用,也可以把 AI 用在第一線的病人診斷,然後再由醫師接手提供諮詢。
其他健康照護實例包括像 Wewalk5 等物件,這是一個供半盲與全盲人員使用的智慧拐杖。它使用感測器來檢測胸口水平以上的物件,並搭配 Google Maps 與 Amazon Alexa 等 app,方便使用者提出問題。
結論
由於連網的終端裝置數量越來越多,這個世界也越來越複雜。連接到網際網路的裝置已經超過 300 億個,而微控制器的數量也超過 2,500 億,每年還會增加約 300 億個。越來越多的程序開始進行自動化,不過,把大量資料傳送到雲端涉及的延遲以及邊緣運算的額外費用,意味著許多全新、令人興奮且引人矚目的物聯網使用場景,可能無法開花結果。
解決這些挑戰的答案,並不是為雲端資料中心持續增添運算力。降低出現在邊緣的延遲雖然會有幫助,但不會解決日益分散的世界的所有挑戰。我們需要把智能應用到基礎架構中。
儘管為終端裝置增添先進的運算能力在十年前仍不可行,TinyML 技術近來的提升,已經讓位處相當邊緣的裝置 (也就是終端本身)增添智能的機會大大改觀。在終端增加運算與人工智慧能力,可以讓我們在源頭搜集到更多更具關聯性與相關的資訊。隨著裝置與資料的數量持續攀升,在源頭掌握情境化與具關聯性的資料,具有極大的價值,並將開啟全新的使用場景與營收機會。
終端裝置的機器學習,可以促成全新的終端 AI 世界。新的應用場景正在崛起,甚至跳過傳送大量資料的需求,因而紓解資料傳輸的瓶頸與延遲,並在各種作業環境中創造全新機會。終端 AI 將為我們開啟一個充滿全新機會與應用場景的世界,其中還有很多我們現在想像不到的機會。
附圖:圖1:從集中式到分散式運算的轉變。
(資料來源:《The End of Cloud Computing》,by Peter Levine,Andreessen Horowitz)
圖2:全球上網裝置安裝量。
(資料來源:Strategy Analytics)
圖3:深度學習流程。
圖4:MCU的視覺、震動與語音。
(資料來源:意法半導體)
圖5:AI 工具集執行模型轉換,以便在MCU上執行經最佳化的神經網路推論。
(資料來源:意法半導體)
圖6:物聯網企業對企業應用的使用-目前與未來。
(資料來源:Strategy Analytics)
圖7:促成情境感知的感測器融合。
(資料來源:恩智浦半導體)
資料來源:https://www.eettaiwan.com/20210303nt31-the-dawn-of-endpoint-ai-bringing-compute-closer-to-data/?fbclid=IwAR0JTRpNsJUl-DmSNpfIcymGQpkQaUgXixEaczwDpELxGCaCeJpkTyoqUtI
arduino同時執行兩個程式 在 Facebook 的最讚貼文
| 燒腦傷肝的工作(科技靈異故事) |
下圖是我們五年前在台灣的最後一場展覽,是與董陽孜老師合作的大型裝置展。這個展覽結束後,我就在這個領域中呈現退休狀態,為什麼?因為我覺得自己已經無法再承受這種巨大又驚悚的壓力了,今天來跟大家分享一下美麗展覽背後不為人知的辛酸與神奇的類靈異故事。
接下這個展覽時,我帶女兒在台灣唸書學中文。展覽合約書剛蓋好章、快遞寄出去時,我們台灣合作的技術夥伴建議我不要接這個案子,因為預算不多、布展時間短,他怕我們會砸了國寶級藝術家董陽孜老師的名聲。
我們當時的想法是在空間中設立7個旋轉結構體,結構體四面掛上董老師的巨型畫作,旋轉結構體用電腦程式控制隨機轉動停止,可以讓董老師精選的畫作片段有16384種不同的組合。
很簡單的想法,但是要找到承載一百公斤又能電腦控制的機械馬達,不訂做不行。而我離台已久,再回到台灣可以說是人生地不熟,不知道去哪裡訂做這樣的工業用旋轉機械馬達(還要會感應)。最後,我們決定在法國訂做空運回台。
朋友勸告我們的第一點預算不夠,在我們找到法國訂做馬達後就解決了這個問題。這些年下來,我發現很多東西在法國訂做的成本比在台灣便宜,為什麼?因為法國有很多專門為客人量身訂做的小公司,這種公司人數少、愛挑戰、不喜歡做大量重複的工作,相較於台灣習慣開模大量生產的工業化製造,有時反而預算低很多。
但是別忘了,朋友還有勸告我布展時間短,多短?三天。
三天的布展時間可能對一般的展覽算是足夠,但是對需要安裝、測試的多媒體展覽,是有些風險的。不過我們常常做一些商展的案子,也習慣極短的布展時間,基本上就是全在外面工廠做好、測試好,最後到現場組裝。
我們就這樣按著計畫執行,第一天將法國來的旋轉馬達底座就定位,我們開始牽線,同時木工進場固定底座、搭結構、上漆,我的工作就是趴在地上接線、焊接電線、電路板,我另一半則是在一旁做軟體的最後測試。
我們動作很快,布展第一天晚上就開始進行測試工作。但是,我們發現法國來的旋轉馬達少了一個像螺絲一樣的感應軸,不知道是我們拆卸過程掉落,還是原廠本來就少一個。第二天一早,我拿著一個法國來的特殊螺絲,先去工業螺絲行買了尺寸差不多的螺絲,再去興城街的打鐵鋪請師傅幫我打磨成跟法國一樣的螺絲。
我得意著自己完成了一個小有困難任務,但是第二天深夜的測試,喀喀,馬達的感應器不知怎的突然壞了,而且一晚的測試壞了二個!好險台灣是電子業強國,我們第三天一早馬上殺去光華商場找其他的感應器替代。然後我從原本的趴在地板上變成躺在地板上,因為我必須要伸手到木結構下安裝感應器。
熬到了第三天,我們還撐著測試,但是到了凌晨一點,我們從法國帶來的電路板突然燒了,整個無法運作。眼看著還有幾個小時展覽就要開幕,以董老師的身分,許多的達官政要都會來參加展覽開幕,還會有許多的記者媒體。
我只能死馬當活馬醫,上台灣arduino的論壇深夜裡高聲求救,有沒有人有mega arduino電路板可以救命?沒想到深夜裡,還有五六個網友回覆,其中有二位有我們用的這種電路板,一位在高雄、一位在新北。
我和新北市這位網友見面拿電路板,已經是凌晨二三點了,然後我順便邀請(綁架)這位網友到我們布展現場。那時候已經熬了三天,我突然像昏倒一樣的倒在旁邊的椅子上,就是下圖參觀者坐的椅子上。
我昏昏沈沈間,聽到這位網友和我另一半的交流討論,為何電路板會突然燒掉、感應器也會突然壞掉,是不是焊接的問題,他們倆用電錶測試沒問題,但運作始終斷斷續續不正常⋯⋯他們說的話我全部都有聽到,但我就是身體很沉、頭很昏、想吐又起不來。
早上七點多我總算在昏沈中坐起來了,我另一半和那位莫名其妙被我綁架來的網友還在地上接著線測試,我驚訝又非常不好意思的去買早餐給他們。邀請我們來做展覽的朋友此時也陪我們熬了三天三夜,她說:「我帶妳去買早餐,順便拜個土地公吧!」
我記得台灣開工都要拜拜,我們整個忘了。拜完土地公、買早餐不到三十分鐘回到展場後,整個展場乾乾淨淨的如下圖,所有亂七八糟的線、電腦都收的乾乾淨淨。還有,那位網友也不見了!!!剛剛我出門前,他們兩人不是還一團混亂?此時我另一半從廁所洗臉,精神氣爽的跟我說:「都搞定了!」那位網友呢?我是在做夢嗎?「他說他不吃早餐了,他回去睡覺比較重要!」
然後我們倆衝回家洗澡更衣,再趕回展場若無其事般地開幕、上台致詞、拍照留影。記者會結束後,我回到休息區繼續焊接零件,有些不穩定的地方當天晚上展覽結束後要再做更替。來看展的朋友們只覺得有趣,我難得化妝、頭髮微捲、穿著洋裝符合「旅法藝術家」藝術家的優雅,但手上卻忙著焊接。
這個展覽就這樣有驚無險的順利完成了,臨走時,我買了一包綠色乖乖放在微電腦上。如果你有看過這個展覽,一定會看到這包乖乖,因為它實在藏不住,微電腦就在作品的正中央,乖乖比一個香煙盒大小的微電腦還大。
這個展覽之後,我發現自己似乎受夠了這種開展前巨大的壓力和累過頭昏迷的狀態,所以開始呈現退休狀態。今天會想到跟大家分享這個故事,是因為我們現在又在這種狀態下了,這次是個只有一個月的不可能任務。我不想參與也沒有辦法,畢竟我和我另一半不只是生活上的夥伴,也是工作上的夥伴。
而我這個星期已經出現使用螢幕過久就開始頭昏想吐的症狀,所以錄好的podcast遲遲沒有上線。昨晚在辦公室加班回家的路上,因為宵禁的緣故,短短一百公尺的距離還要給自己開張公司證明。而法國從週六開始下午六點開始宵禁,疫情中存在著各種問題,我們這次能不能化險為夷?🤷♀️
arduino同時執行兩個程式 在 iThome Facebook 的精選貼文
【好文推薦】腦力科技之四:要複雜還是要簡單
成大資工係蘇文鈺教授從台灣企業看輕底層IT(忽略對OS、編譯器等等底層技術的投入)的價值,只顧搶商機的幾個真實小故事,來談臺灣資訊產業的困境和短視。
好文一篇,經蘇老師同意特轉貼!
"許多傳統的技術因為其他領域的技術的高度發展而導致被淘汰,也有許多早被丟棄在一邊多年的技術卻因此而重生。可是因為許多人無法看到幾個世代以來的技術發展過程,也欠缺終身學習的思維,因此常常固執的固守一項當下看來成功的技術與做法,這些人或公司最終都是會招致失敗的後果。
by 成功大學資訊工程學系蘇文鈺教授"
之前的po文,我修了一下文字。若是之前看過的可以跳過。
[腦力科技之四 要複雜還是要簡單]
前面說到的Dave Wilson要價數十萬美元的喇叭WAMM是個大傢伙,整個喇叭是多個分開的模組所構成,非常複雜,所以一般不熟WAMM人要把它調整好是很困難的,難怪要出動Dave Wilson本尊才行。問題是要聽好聲音一定要弄得這麼複雜嗎?
簡單的喇叭,一顆單體裝在一片木板上就可能可以很好聽了。到底要複雜,還是要簡單,其實這問題說是難回答的也不見得,想通後,也可以很簡單。以下是聖嚴師父說過的一個故事:
在我小的時候,有一天傍晚,我父親跟我正好經過一條河邊的小路,有一群鴨子本來在河岸上休息,見到我們父子倆走過,或許是受驚了,也或許是要讓路給我們,總之一群鴨子全部都下了河,從河的這一邊,游到另一邊去。接著又上岸去玩了。
父親看著在河裡游的鴨子,告訴我說:「孩子,你看到了嗎?這群鴨子裡,有大鴨、有小鴨。大鴨游出來的是大的路,小鴨游出來的是小的路。不管是大路還是小路,都是自己游出來的路,而且都到了河的對岸。」
又說:「孩子啊,人要學這些鴨子。你長大之後,不管游出大路或小路都沒有關係。可是不游是不行的,因為不游的話就沒有路可走了。」
也就是說,簡單有簡單的用處,複雜的有複雜的好,做的好,都有活路。
我們這個年紀的人當年用的是Apple II,學程式是從Basic入手,然後是Fortran,接著是Pascal和C,後兩者最大的障礙是要把當時認為抽象的資料結構(data structure)以及資料存放的位址(address)和指標(pointer)的關係搞懂。相對於Basic不知到複雜多少,可是用C能做的事,其實用 Basic也做的到,只不過後者做起來可能會很麻煩而已,程式可讀性與可再被利用性會大幅降低。後來一點我才知道其實所有的高階語言都會透過編譯器(compiler)轉為更低階的assembly(組合語言),所以實際上電腦是依照組合語言一步一步執行的,一個高階語言的指令通常是以多個低階語言來完成。當年在開發工具不足的情況下,我甚至被迫要直接用6502與Z80的機器碼(machine code)來寫程式,因為當時根本沒有如現在這些方便的滑鼠,鍵盤與螢幕可以用。一份工作是要用高階一點的語言來實做,還是用低階的語言來完成,應該依照需求與當下的技術成熟狀況來決定,而不是高階的就一定比較好,低階的就比較一定差,例如多數驅動程式,不用低階語言來做是不行的。反之亦然。
後來我的工作跟使用TI(德州儀器)的C3X與C4X等數位訊號處理器(Digital Signal Processors)有關,一些數位訊號處理的程式我與我的夥伴們都用組合語言來寫,因為編譯器轉出來的程式執行效率實在太差了。可是幾年以後,編譯器越來越強大,所編出來的程式的效能就慢慢提高了,在非關鍵處,我們已經不再堅持用組合語言來寫了。
後來的程式語言越演變越複雜,功能也越來越強大,從簡單的C,到後來的物件導向(Object Oriented),從為數不多的語言,到因為不同的需求而被開發的新語言如Java,LISP,Pearl,Python,Forth等等甚至有為了設計電路的硬體描述語言(HDL) ,慢慢的學校裡對組合語言的要求變少,學生也不願意學,造成許多需要低階語言的工作找不到人來做,不然就只好把人招進了公司後再來訓練。緊接著,為了不同的目的而開發的新的工具軟體變多了,例如為了特殊的資料流(data flow)程式模型而被開發的StreamIt,以至於目前開發iOS App而廣為使用的Object C(我們之後有機會再來談這個語言),為了平行程式所被開發的如OpenMP或MPI(Message Passing Interface),這世界上有關於寫程式這件事所被開發出了來工具多到滿出來,編譯器與中介軟體(middleware)越來越強大,各式各樣的新語言,新應用等等就越多。可是不要忘了,即使是有這麼多五花八門的產物,這世界上有一些角落裡的工作還是需要使用組合語言來做。
有些事需要用複雜的方式來做,有的事卻需要用簡單的方式來做。原本一隻簡單的程式,因為可以平行化,如今我們因為有多核心的機器與可平行的程式模型可以用,所以程式設計師會用更複雜的方式如多執行緒(multithread),資料流(data flow),Map-Reduce(如Hadoop),CUDA與OpenCL等來實做,程式的複雜度看起來提高很多,可是執行所需的時間實際上卻大幅降低。又如,在數位訊號處理裡常用的旋積(Convolution),本來是可以用沒幾行的程式就可以寫出來,但是因為快速富利葉轉換(FFT)的關係,讓我們可以在頻率域(Frequency Domain)裡運算以減少計算時間,但是程式複雜度卻高出許多。可是,因為多核心架構硬體與平行的程式模型的出現,加上時間域(Time Domain)的旋積具備高度可平行化的特性,現在反而是回到時間域來計算要快得多,同時也少了一些在頻率域(Frequency Domain)運算所造成的缺點,過去為了在頻率域運算所開發出來的演算法反而變得沒有多大用處了。
許多傳統的技術因為其他領域的技術的高度發展而導致被淘汰,也有許多早被丟棄在一邊多年的技術卻因此而重生。可是因為許多人無法看到幾個世代以來的技術發展過程,也欠缺終身學習的思維,因此常常固執的固守一項當下看來成功的技術與做法,這些人或公司最終都是會招致失敗的後果。
以上我們說了許多軟體的發展,接著來說硬體,尤其是電腦的核心,CPU(中央處理單元),也就是大家常聽到的Intel Pentium,IBM PowerPC或是ARM Cortex等等。早年的CPU如Apple II用的6502到今日的主流多核心CPU,其複雜度不知道已經高出多少倍,30年前的大型主機(我大學時用的是CDC Cyber,全校共用)的計算能力可能比不上今天的一部桌上型電腦。有一陣子,簡單架構的CPU不容易被聽到(但是實際上他們的用處很廣呢!),一般人知道的CPU都是INTEL出的(因為廣告打得兇),那時的人類似乎除了INTEL X86架構的CPU之外都不需要其他的了。可是曾幾何時,INTEL感受到ARM的架構簡單的省電CPU的強力威脅,所以INTEL也希望把它的CPU變成簡單又省電,但是與此同時,ARM卻在把它的CPU變得功能更強大,但是卻也更耗電。你們說,這兩家公司在爭的商機是甚麼呢?相信只要在這個產業的人都知道他們在玩什麼把戲。大家都知道的東西,在CPU設計落後先進國家的台灣在高階CPU上也就沒什麼好搶的了,那台灣的機會在哪裡呢?(當然,現在的聯發科跟晶心科技這兩家策略與市場都不一樣的公司看來是很有機會佔有一定的市場,有興趣的人可以去研究一下這兩家公司的CPU策略)
有一天,有朋友打電話給我,聊起他現在的公司也在做CPU,而且是八位元,或甚至位元數更低的CPU。我說,這麼低單價的東西有什麼好做的。他說,其實市場的量真正大的是簡單型的CPU,因為太多應用只需要用到簡單的CPU,這時連8051都還嫌太複雜,而且目前設計界常用的Arduino也可以在稍微複雜一點的八位元CPU跑起來。只要做的夠便宜夠省電,利潤還是有的。但是這其中還有一個大問題,那就是即使是這麼簡單的CPU,在今天的情況,工具鍊(toolchain)還是要完整,才會賣得出去。他問我可不可以幫他做編譯器,我說這非我專長,實在是愛莫能助。我不禁想,這年頭連賣一顆幾毛錢的CPU都要開始建完整工具鍊了,這錢還真難賺啊!
又有一次,有間廠商打電話過來問我有沒有興趣做一個建教合作計畫,是關於多核心的系統軟體的。那時候我一聽到多核心,腎上腺素就上來了,也沒多問細節就說可以見面討論。過兩天,我們一起聚在一起開了個會,才知道這個多核心原來是拿8051來當核心。我心想,連8051都拿來做多核心,會不會太奇怪。不過既然廠商堅持有他們的市場與考量,也可以賣得出去,我這商場門外漢就不好說甚麼了。接下來廠商希望我們可以幫忙做兩件事,第一件是為這顆多核心打造一個多核心作業系統,第二件是做一套中介軟體讓不同核心之間可以快速交換資料。當我心裡還在盤算著,且認為這應該可以做得到的時候,接著聽到的話讓我差點從椅子上掉下來。他說,但是這一切希望在16K bytes之內做到,而且在半年內做完,經費是30萬。接著我只能說我願意考慮看看,其實心裡說的是謝謝再連絡並祝福他們會成功,一刻鐘後我堆滿一臉笑容來隱藏底下的鐵青送他們出門。
這些事讓我想起來台灣過去幾年有關IC設計的問題,甚至是更多產業所面對的問題。那就是太重視硬體了,以為只要把硬體做出來,就可以賣出去的時代早就已經過去了,而目前全世界最大的高科技公司其實都是軟體為主的公司,連聯發科的軟體工程師數目早就超過硬體工程師的數目了。假如連一顆八位元的不到的CPU都需要一大堆軟體工具鍊,那麼我實在不清楚很多公司只注重看來是實際出貨用的硬體在想什麼,會逐漸失去商機不奇怪啊!我自己會想,要是早個十年我知道軟體的工具練會這麼重要,那麼我不就賺翻了嗎?可是上面的第二個故事告訴我,在台灣,不被重視的就是不被重視,早做也沒用。很多廠商把技術看得太廉價了,但是這家公司至少還願意出錢,有的台灣公司即使本身很賺錢卻根本就連錢都不出就想獲得技術。
2010之前的好幾年,韓國的政府讓許多家大學(我沒記錯的話是八家,連漢陽與首爾都在其中),參與企業(就是三星啦!)一起trace Android的核心的時候,台灣在做甚麼呢?大喊自由軟體,然後只要寫寫不知道能不能用的Java App就可以有獎金或補助。等到三星智慧型手機崛起,火燒屁股時,才急急忙忙由政府底下的若干研究單位出面協調,同時希望學界也能出面幫忙。
這整件事的荒謬在於,第一,商場如戰場,都火燒屁股,要馬上上戰場去賣的東西讓學界來幫忙怎麼會來得及呢?第二,學生寫的軟體你敢用嗎?一旦有bug不是退貨退到瘋掉?第三,這種核心技術早就該知道要做了,不然派個探子去美國,甚至是韓國轉一圈,也知道人家在做甚麼。然後,既然都火燒屁股又要找學界專家來幫忙,為什麼不乾脆花大錢挖學界懂這東西的一整個團隊進公司體系,還要找官方與半官方的機構出面協調,這不是浪費時間呢?台灣不是最流行超時工作,讓工程師燒肝(燒乾)工作的嗎?高薪一堆人進來,以台灣工程師的素質之高,其實不會沒救的。不過,我看到的情況只能用失望兩個字來形容。
有時人要挖空心思才可以看到商機,有時只要好好照著道理來做就會有商機,賣系統(不管是複雜到手機還是其他簡單的系統應用IC)卻不重視軟體就是沒照著道理來做。目前台灣所製造的電腦產品,只要是要用到稍微大型的軟體系統如Android,或甚至是小到一個小型的RTOS(即時作業系統),有多少是台灣所原創的呢?不能原創的原因很多,公司不重視軟體人才此其一,會教又提供學生實作機會的學校不多(因為做這類苦工無法出High Impact Factor的論文啊!)也是主因,政府科技與教育政策一樣難辭其咎。以編譯器(compiler)這樣傳統的學問來說,不管時代怎麼變,不變的是它對產業總是非常的重要,學校裡有多少人還在做編譯器的研究呢?再來恐怕都要找不到人來教了,因為有多少教授願意做一個傳統又難以發表High Impact Factor論文的研究呢?過幾年,整個硬體產業要是變成硬體慘業,我是一點也不意外。即使沒完蛋,還不是要乖乖每年繳一大堆權利金給外國提供軟體的廠商嗎?
你若是問我,難道台灣真的沒有那種看到軟體工具鍊與大型軟體的機會,堅持信念,終於媳婦熬成婆的團隊嗎?當然有,我也好希望我也是其中之一。可惜我沒有這麼堅強的毅力,要不然也不用在這裡狗吠火車了。
前面說過的話,這裡再重複一遍,但是用意與前面不同,這裡是希望為上面這幾段故事做小結:
許多傳統的技術因為其他領域的技術的高度發展而導致被淘汰,也有許多早被丟棄在一邊多年的技術卻因此而重生。可是因為許多人無法看到幾個世代以來的技術發展過程,也欠缺終身學習的思維,因此常常固執的固守一項當下看來成功的技術與做法,這些人或公司最終都是會招致失敗的後果。
時代在改變,有些事也會跟著變,但是有些事卻也一直不變,變與不變之間,要視實際狀況決定。就跟聖嚴師父說的一樣,大鴨子與小鴨子,只要願意努力前進,都可以游出自己的路。