有讀友留言如何在手機撰寫程式控制NXT樂高機器人,
探奇在這裡做一個統整,把目前可能的方式列出來。
手機操控NXT樂高機器人有兩種方式:
1. 手機(JAVA程式)藍牙訊息傳送-----藍牙訊息接收(NXT主機+獨立執行程式)
2. 手機(JAVA程式)藍牙Direct Command--------(NXT主機)
第一種方式是由藍牙傳送訊息Message,所以NXT主機也要有相對應的程式等待接收藍牙訊息。可以用NXT-G, NXC, RobotC或是leJOS(NXJ),LabVIEW撰寫(能夠單獨在NXT主機執行程式的程式語言)。
第二種方式是使用樂高官方的Direct command,NXT主機上不用執行程式。
為什麼NXT主機不用執行程式,因為NXT將藍牙功能開啟後,就一直在等待接收藍牙的資訊,如果這些資訊是符合Direct Command,NXT主機就會依照命令做事。想一想為什麼在NXT-G可以透過藍牙知道NXT的電量,為什麼可以透過藍牙下載程式到NXT主機,這些都是Direct Command的功能。
上述無論是哪一種方式都是透過藍牙連線,在手機端都需要寫程式。
一般手機
支援Java VM的手機,可以用Direct command方式控制,請參考探奇舊文章:
關於使用手機遙控NXT,手機控制NXT的另一種選擇
智慧型手機
可以分為iPhone, Windows Mobile, Android
iPhone控制了藍牙裝置,所以無法直接以NXT的藍牙通訊協定連接,大部分都是(透過WiFi)與PC (Mac)連線,再由PC(Mac)以藍牙送出訊號控制NXT,也就是在電腦上要有中繼程式。
(聽說有人JB後可以直接連線,還請大家提供消息)
2010/12/19 kevin提供:
軟體名稱是LegoDrive2在Cydia Store裡
Windows Mobile有比較多的支援,也可以執行Java程式。
對Android手機來說,就是寫出應用程式App,
目前也有兩種方式:
1. leJOS for Android:簡單的說,就是搭配Andoird SDK跟leJOS的 PC API,用Java語言直接寫出App。
2. 另一種就是Google App Inventor for Android(請參考探奇舊文章)
或者也可以試試MINDdroid(請參考探奇舊文章Android上的NXT樂高機器人控制程式(MINDdroid更新))看看別人的程式寫法。
至於三軸移動或是左右按鈕,就是用到Andoird的感應器來控制NXT馬達,
Java設定比較麻煩,我對於Java程式不太瞭解,也沒有Android手機,建議可以到CAVE部落格詢問,或是購買相關書籍參考。
至於Symbian、 Blackberry甚至WebOS,就等待大家的開發了!
2012.4.7更新:找到2006年的http://nxt-symbian.sourceforge.net/
最後探奇還想到用WiFi直接控制(請參考探奇文章:Xander的NXT WiFi實驗),
試想一下:將NXT樂高機器人丟在麥當勞,利用WiFly在遙遠的地方(Far Far Away)遠端遙控機器人,做一些事(當然是好事,不可以做壞事!)
歡迎專家達人一起討論指教。
沒有留言:
張貼留言
探奇歡迎大家留言討論!謝謝分享你的意見。