Java Embedded(1)從 Raspberry Pi 開始 by Michael | CodeData
top

Java Embedded(1)從 Raspberry Pi 開始

分享:

你可以在Google Play圖書Pubu購買「Java嵌入式程式設計-Raspberry Pi」電子書,採用ePub格式重新編排,在GitHub公開所有範例程式、高解析度彩色插圖與線路圖。或是購買Raspberry Pi嵌入式應用程式開發:使用Java

2015/04/30:改版。支援Raspberry Pi 2 Model B與Pi4J 1.0

1-1 Hello! Java Embedded!

任何一種技術的初學者,總會問這樣的問題:「它可以做什麼?」。Java可以做什麼?官方網站不斷的告訴我們「Java is Everywhere」,也就是說Java已經佔領地球了。不過我在回答別人這個問題的時候,通常會比較務實一些:Java技術使用單一程式設計語言,可以開發桌面、網頁、伺服器和行動裝置應用程式,而且還可以跨平台,對開發人員來說,的確是一種不錯而且划算的技術。可是它在嵌入式與工業控制上的應用,就比較不行了,這也是Java技術人員一直無法進入的領域。

Java技術從SE 7開始,出現一個以前沒有看過的名詞:「Embedded」,這個名詞通常會稱為「嵌入式」。慢慢的,開始有人使用它來開發一些很不一樣的應用程式,像是樂高機器人系列(Lego Mindstorms)。樂高一直在發展機器人系列的「玩具」,Mindstorms到目前為止已經發展到第三代,從前一代NXT開始,以Java SE Embedded 7為主要技術,使用Java程式語言控制機器人。

到了Java SE 8,Java嵌入式產品已經非常完整,比起之前的架構,可以達到大部份實務應用的要求,例如內嵌在各種電器,或是在各種工業自動控制上的應用,開發人員可以量身打造適合的執行環境,讓Java應用程式可以在各種裝置上順利的運作,而且穩定性與效率都讓大家覺得很滿意。對Java技術開發人員來說,應該是一個非常棒的演化,你可以繼續使用Java程式設計語言,讓技術領域延伸到嵌入式應用程式。

Java 8因為加入Embedded以後,產品線已經非常完整,在Embedded的部份,根據不同類型的裝置與不從的應用,可以分為Java Card、Java ME Embedded與Java SE Embedded三種,這是它們運作的環境與硬體圖型:

JavaEmbedded_01_01

這個系列的文章以Java SE Embedded 8的技術為主,Java SE Embedded 8最大的變化與特性,就是可以根據硬體與應用程式的需求,建立專用的Java執行時期環境。它採用「Compact Profile」的架構,這個圖型表示三種Compact Profile包含的執行環境內容:

JavaEmbedded_01_02

這種架構的概念在嵌入式應用程式特別重要,如果一個不需要使用者介面的嵌入式應用程式,例如在冷氣機裡面的應用程式,它就不需要java.awt、javax.swing或JavaFX的執行環境,這樣就可以節省很多執行環境的空間。

1-2 Hello! Raspberry Pi!

一般嵌入式與自動控制系統,使用的硬體設備都非常特殊,大部份設備都需要自己設計與製作,開發人員使用比較低階的程式語言,例如組合語言或C語言,開發控制硬體設備的應用程式。進入的門檻比較高是這個行業的特性,需要的技能包含電子、電機與比較低階的程式設計語言技術,就算是為了完成一個不太複雜的設備,如果沒有具備完整的基礎技能,就很難完成一個可以運作的專案。

資訊電子設備的發展,已經超過一般人的想像,各種功能強大的設備,不斷的被廠商製造出來,而且還越來越便宜,Raspberry Pi是一個很明顯的例子。Raspberry Pi是只有一張名片大小的單板電腦,由英國的Raspberry Pi基金會開發,板子上有ARM中央處理器,使用Micro SD記憶卡當作儲存設備,Ethernet網路、USB、HDMI與RCA介面,目前有Model A、Model B、Model B+和Raspberry Pi 2 Model B幾種型號,售價分別是25與35美元,差異是256MB與512MB的記憶體。這是Model B的外關與功能說明:

JavaEmbedded_01_03

Raspberry Pi在2014年7月14日發表Raspberry Pi Model B+,針對Model B做了一些改良:

JavaEmbedded_01_04

Raspberry Pi在2015年2月2日推出全新的「Raspberry Pi 2 Model B」(以下簡稱Pi 2)。下列是它與Model B+主要的差異:

  • 架構由「BCM2835」改為「BCM2836」。
  • 中央處理器改為「900MHz的quad-core ARM Cortex-A7」。
    記憶體由512MB(Model B與B+)昇級為「1GB LPDDR2 SDRAM」。

下列是Raspberry Pi 2 Model B與本書介紹的Model B+相同的部份:

  • 外型、尺寸與固定螺絲孔。
  • USB、Ethernet、A/V、Micro SD與Micro USB電源供應的數量與位置。
  • 照相機與顯示介面,還有40個針腳的GPIO。

這是Raspberry Pi 2 Model B的外觀,跟Model B+很相似,只有部份的晶片不一樣:

JavaEmbedded_01_10

你可以在這個網址參考Raspberry Pi 2 Model B官方的產品發佈說明:http://www.raspberrypi.org/raspberry-pi-2-on-sale/

Raspberry Pi可以在Micro SD記憶卡安裝Linux作業系統,包含Debian、Fedora、Arch、RISC OS、FeeeBSD和Plan 9。就跟一般的個人電腦一樣,作業系統支援大部份的周邊設備,你可以在Raspberry Pi的USB接上滑鼠、鍵盤、無線網卡。安裝好Raspberry Pi基金會開放的RASPBIAN作業系統,還內建Java SE 8的開發與執行環境,在Raspberry Pi執行Java應用程式,是完全沒有問題的。

1-3 Java Embedded與Raspberry Pi

或許你已經開始想像,Java技術延伸到嵌入式應用程式以後,可以讓系統有哪些不一樣的應用?用一個比較實際的專案來說明,例如一個在無線網路環境運作的餐廳點餐系統,由Java網頁應用程式負責管與查詢理餐廳的資料,例如餐點與訂單,使用行動裝置提供服務生與客人點菜、換桌與結帳的功能,還有在個人電腦上運作的Java桌面應用程式,在廚房與吧台顯示目前最新的訂單資訊:

JavaEmbedded_01_05

以目前的系統架構來說,如果採用Android平台的行動裝置,整個系統應用程式全部都是採用Java程式語言開發的,開發人員的工作就會比較單純一些。現在的焦點會放在桌面應用程式的部份,它用來顯示目前最新的訂單狀態,讓廚師可以很清楚的知道要準備哪一些餐點:

JavaEmbedded_01_06

這個Java SE應用程式,使用JavaFX建立使用者介面,透過RMI通訊協定與伺服器執行互動的工作。如果使用一般的設計方式,它必需要安裝在一台個人電腦上執行,可是如果把它安裝在建立好Java執行環境的Raspberry Pi上運作,好處應該非常明顯。對開發人員來說,還是使用Java技術開發這個應用程式,對客戶來說,他們可以節省一些硬體設備上的費用。

在瞭解這個實際的應用以後,這個餐廳點餐系統還有一些可以繼續討論的部份,例如類似網路點餐與得來速的功能。客戶在配備NFC設備的行動裝置上,透過網際網路點餐,在預約的時間到餐廳以後,使用行動裝置在餐廳的NFC設備上感應,伺服器就可以在接收到資料後處理後續的工作,例如通知廚房開始準備餐點。

JavaEmbedded_01_07

1-4 Java Embedded與樂高機器人

或許你在知道Java技術已經進入嵌入式應用程式的領域後,可能會有一個想法:Java程式可以控制機器人嗎?一直在做積木的樂高,很早就使用Java技術控制它的機器人產品Mindstorms,目前最新的第三代Mindstorms EV3、http://mindstorms.lego.com,採用Java SE Embedded 7為基礎,所以在Oracle的官方網站http://goo.gl/h5LfTi可以看到這個有趣的畫面:

JavaEmbedded_01_08

雖然大部份的人應該都會認為,樂高機器人只是一種比較「具有科技感的玩具」,不過它的確發展成一套很適合用來學習Java程式設計的玩具,而且複雜的工業用機器人,也是從這些基本的概念進化而來的。樂高為Mindstorms EV3發展一套開放的開發工具,可以在Eclipse上開發控制機器人的應用程式,透過傳輸線或無線網路,可以把應用程式傳送到機器人執行。這套工具的名稱是「leJOS」,如果你對這個產品有興趣的話,可以參考建立leJOS開發環境的專欄,有適用Mac OS的http://www.codedata.com.tw/?p=10802,與適用Windows的http://www.codedata.com.tw/?p=11022

使用一般的樂高積木搭配Mindstorms EV3,再使用leJOS開發控制機器人的應用程式,可以讓Duke變成「Java Robot Duke」:

JavaEmbedded_01_09

我在YouTube上傳一些影片,有紅外線追蹤和光線感應的應用程式示範:

Duke機器人(紅外線感應器)

Duke機器人(光線感應器)

這裡介紹樂高機器人的用意,是讓你可以認識Java技術更多不一樣的應用,後續的內容並不會介紹leJOS的開發技術,因為你必需有一套Lego Mindstorm EV3機器人套件,才可以執行寫好的應用程式,它的花費就會比較多一些了。

1-5 準備進入Java Embedded的世界

目前的Java技術人員大都是以開發網頁應用程式為主,所以想法也比較放在框架、HTTP和一些會在網頁應用程式遇到的技術。Java技術在JavaFX出現以後,可以在桌面應用程式有很棒的發展,不論是商業或遊戲應用程式,都可以擁有容易開發與滿意的效率。在Java Embedded正式上場以後,Java技術人員可以把應用程式延伸到完全不一樣的領域。

想要跟著這個系列的專欄文章學習Java嵌入式應用程式,除了基本的個人電腦外,還需要一些其它的設備,有一些設備雖然不會馬上用到,不過建議你可以先認識它們,或是根據自己的需求狀況,準備好這些必要的設備就可以了:

  • 個人電腦:Windwos或Mac都可以,安裝好Java SE JDK 8,還有NetBeans IDE 8(Java SE)。
  • Raspberry Pi:使用Raspberry Pi Model B、Model B+或Raspberry Pi 2 Model B,後續的內容會詳細介紹。
  • 電源:Micro USB 5V 2A的電源供應器,或是可以供應電源的USB Hub。
  • SD記憶卡:至少2GB以上的標準SD或Micro SD記憶卡,用來安裝Raspberry Pi作業系統。

其它會用到的的設備,例如USB無線網卡、麵包板、LED燈泡、NFC讀卡機,都會在後續的內容詳細說明。

接下來的內容可以讓Java開發人員快速瞭解Java嵌入式應用程式技術,認識基本的概念以後,除了一些比較小型的應用程式外,也會使用一個整合應用的專案,說明Java嵌入式應用程式可以如何發揮它強大的威力。

內容介紹:

  1. 從 Raspberry Pi 開始
  2. 安裝 Java Embedded 開發環境
  3. Raspberry Pi 硬體週邊與作業系統設定
  4. 建立 Raspberry Pi 上的 Java 執行環境
  5. 開發環境、遠端執行環境的建立
  6. 認識 Raspberry Pi 的 GPIO
  7. GPIO的基礎應用與實作(上)
  8. GPIO的基礎應用與實作(下)
  9. 紅外線測距模組與類比數位轉換
  10. GPIO進階應用 – 步進馬達達
  11. 控制直流馬達 – 使用L293D晶片
  12. 整合應用 – PiFan

課程相關的檔案都可以GitHub瀏覽與下載。

https://github.com/macdidi5/JavaEmbedded

後續 >> Java Embedded(2)安裝 Java Embedded 開發環境

分享:
按讚!加入 CodeData Facebook 粉絲群

相關文章

留言

留言請先。還沒帳號註冊也可以使用FacebookGoogle+登錄留言

熱門論壇文章

熱門技術文章