2011年1月22日 星期六

Design a program to connect LEGO NXT

http://4rdp.blogspot.com/2011/01/design-program-to-connect-lego-nxt.html?m=0

寒假開始了,研發養成所不例外要出題目給 NXT 玩家動腦筋,我想延續前一篇藍芽通訊 ─ 信箱法這個主題,因為 CAVE 目前有能力用 Android 控制 NXT,但是 NXT 卻是安裝 leJOS,那使用一般 NXT 的玩家該如何呢?

這次出題的目的,要讓指令型與信箱型的裝置能夠相互通訊,只要了解原理後,大家自然可以運用這樣的方式,改寫自己的程式,讓手機或電腦等非信箱型裝置,可與一般 NXT 相接控制。

題目:從指令型裝置,傳送文字、數值到一般 NXT 並顯示出來。

解決方案:
改寫指令型裝置端的程式,傳送資料格式須符合一般 NXT 藍芽資料格式,這樣就可以相互通訊。

VB 範例,請參考 http://4rdp.blogspot.com/2009/05/vb-communication-with-nxt-over.html

8 則留言:

  1. 想請教一下,為何用Android控制NXT,需要NXT使用leJOS?
    只要符合底層的NXT Bluetooth protocol,不論是Direct Command或Message,應該都可以完成才是?
    謝謝。

    回覆刪除
  2. 邱老師您好,

    Android 控制 NXT 是不需使用 leJOS NXT,只是 CAVE 用 Java 設計 Android 程式,使用 leJOS NXT 對他們比較方便。

    因此本篇出題目的,讓大家去搞清楚 NXT 底層 Bluetooth protocol 是甚麼?

    Thanks.

    回覆刪除
  3. 總算完成一個很簡單的介面可以操控nxt.
    http://cmackimo.blogspot.com/2011/08/nxt.html

    回覆刪除
  4. 薛老師您好,

    寫出第一個程式之後,以此為基礎,再補充設計其它功能就容易了。

    回覆刪除
  5. Dear Bridan:

    我現在用電腦藍芽連線-可以控制segway的前進後退-效果還不錯,我想問說VB是用byteOut取字元去控制NXT,那Android phone要怎麼去處理?不知有無文獻可參考?

    回覆刪除
  6. 薛老師您好,

    恭喜你,VB 只適合 Windows OS 的電腦,利用 Android 控制,那需要撰寫 Java 程式,CAVE 本月底就有新書上架,可參考他們的範例
    http://tw.myblog.yahoo.com/lego-caveschool/article?mid=6392&prev=6402&next=6390

    回覆刪除
  7. Dear Bridan:

    這兩天摸索App inventor的藍芽,總算在try error的過程找到了,現在可以從手機傳遞文字,透過mailbox的方式傳到nxt.
    我已整理至部落格,Bridan有空撥冗參考
    http://cmackimo.blogspot.com/2011/08/google-app-inventor-segway.html

    首先,App inventor在藍芽搜尋裝置,無須指定SerialPort,當你的程式引入BluetoothClient元件後,它會自動去抓已偵測到的鄰近裝置,由使用者點選並連線。

    其次,App inventor在mailbox傳遞訊息,與VB大相逕庭的是,VB是利用byteOut的陣列傳遞一串陣列值,而App inventor則利用NxtDirectCommand元件的MessageWrite方法,指定mailbox=1
    以及要傳遞的message即可。

    至於nxt的接收端的程式碼,似乎無須特別改變即可使用。

    回覆刪除
  8. 薛老師您好

    Android 程式並不是 PC 程式,所以它不是以 Serial port 處理。

    另外通訊採用一般 NXT 格式,所以 nxt 的接收端的程式碼,是無須特別改變即可使用。

    謝謝你的分享。

    回覆刪除