2018年2月5日 星期一

[Telemba] 遠端親臨機器人Android App程式設計


開放原始碼網址:https://github.com/start-jsk/telemba
可以看到有五個資料夾,分別為:
  1. android/TelembaController (APP)
  2. electric (電路)
  3. firmware/application (韌體,用來連接平板以及掃地機器人)
  4. hangouts (影音通話)
  5. mechanical/Telemba-012 (機構)
本篇文章將介紹APP,點選android/TelembaController,可以看到三個資料夾以及五個檔案。

點選src/jp/hackerspace/TelembaController,就可以看到2個資料夾以及4個檔案,分述如下:
打開MQTTClientService.java,重要的物聯網相關程式如下圖。


this.pubNode = new MQTTPublishNode() ; //建立物聯網發佈節點
this.brokerUrl = "tcp://telemba.jp:1883"; //設定物聯網仲裁主機的網址以及通訊埠
this.usb2roomba = new USB2Roomba(TelembaActivity.getActivity()) ;//建立USB到掃地機器人的物件
this.usb2roomba.setMQTTClient(this.pubNode);//設定物聯網發佈節點

有關MQTT客戶端(Client)是使用org.eclipse.paho.client.mqttv3.MqttClient;,請參考https://www.eclipse.org/paho/files/javadoc/org/eclipse/paho/client/mqttv3/MqttClient.html的說明。
以下是訂閱主題的程式說明:

在打開MQTTUtil有兩支程式分別是MQTTCallback.javaMQTTPublishNode.java,前者是負責處理訂閱主題後,收到伺服主機送主題更新資料的回呼程式,而後者則是發佈主題命令。

從上面程式,可以很清楚收到物聯網主題訊息後,如何把訊息轉換成命令來控制掃地機器人。下圖為收到"invite"命令後,啟動Hangout的情形。



進入USBUtil資料夾,打開RoombaCommand.java就可以查看平板程式是如何下命令來指揮掃地機器人,例如啟動則用START命令,也就是128。


沒有留言:

張貼留言