[RoBoME] Smartphone Controller
原文網址: http://roboardgod.blogspot.tw/2013/07/robome-smartphone-controller.html最近進擊巨人很夯
所以機器人也要進擊一下這樣
http://4.bp.blogspot.com/-7Qd6zOnBP-Q/UdUV6UvPfpI/AAAAAAAAA2g/muQHMgyioSc/s320/img1.png
以下影片演示給大家看:
GmoSVw-jYsM
這次本魔開發的是RoBoME的控制器喔~
只要將你用RoBoME編寫的動作丟到智慧手機裡就可以做控制了!!
聽起來相當的容易吧~
以下教學
首先智慧手機上的程式我有打包apk供各位下載安裝囉~ LINK
然後RoBoard上必須要有接收端程式 LINK
附註: 接收端程式我預設是接到COM8 所以藍芽設定請設定到COM8
接著 只要在智慧手機根目錄下建置一個資料夾為RoBoME (如下圖)
http://1.bp.blogspot.com/-cpt7_TohXFc/UdURGNed7PI/AAAAAAAAA2I/FIVjkFZx74w/s320/01.png
然後將檔案放入即可喔!
無feedback的機器人記得要放入homeframe文件
或有聲音也要放入喔
http://1.bp.blogspot.com/-aE23xgevugI/UdURGVgtItI/AAAAAAAAA18/A30BOaIPLbQ/s320/02.png
開啟應用程式後 會看到兩個欄位
第一個欄位用來選rbm檔案
第二個欄位為選擇藍芽通道
http://1.bp.blogspot.com/-DAXiS_A7iI4/UdURGIcuTII/AAAAAAAAA14/xLHOcjnvJOI/s320/Screenshot_2013-07-04-11-46-59.png
完成後按下Start
http://4.bp.blogspot.com/-NigtHNZ0FIA/UdURHKZzjlI/AAAAAAAAA2Q/Bggh7VY2rWY/s320/Screenshot_2013-07-04-11-47-21.png
出現此介面後
先按下Start 再開啟Power 它就會給馬達電了
下面中文字的部分是我們已經編輯好的動作 它會自動生成按鈕來做整套的動作
相信眼睛很利的大家都有看到voice的按鈕
沒錯 這按鈕就是用來做聲控的
你只要念出下面按鈕的名稱 它就會做對應的動作囉!!
P.S.介面相當的陽春 不過別太介意啦=D 有時間的話再來認真的設計界面吧
please source code apk !!!! help help help
please source code apk !!!! can you let me know what you want to do?
like bluetooth, servo control or something else? can you let me know what you want to do?
like bluetooth, servo control or something else?
roboardgod 發表於 2013-7-30 17:37 http://www.robofun.net/forum/images/common/back.gif
I want my bluetooth to connect and control the servo. Then...? what's the problem?
Here is my process:
(Android) read file -> create buttons -> button onclick event -> send motion data
(Robot) waiting data -> get data -> servo control
Are you using RoBoard on your robot? 本帖最後由 goldpower 於 2013-7-31 21:58 編輯
Then...? what's the problem?
Here is my process:
(Android) read file -> create buttons -> button o ...
roboardgod 發表於 2013-7-31 16:41 http://www.robofun.net/forum/images/common/back.gif
I'm using the rb110 .
I'm using the mono android in visual studio 2012: http://xamarin.com/
How do I send astring from android phone to computer?
I need source code for Rb110 and Android phone ( sony xperia tipo). 本帖最後由 roboardgod 於 2013-8-1 11:42 編輯
回復 7# goldpower
okay..first, you need to install bluetooth driver on roboard
then, pair your devices
then, set com port for your device
Here's a simple sample code:
roboard (VC2008):
#include <windows.h>
#include <stdio.h>
#include <conio.h>
int main () {
int i;
DWORD dwBytesRead = 0;
unsigned char Read_Packet1 = {0};
HANDLE Serial = CreateFile(TEXT("\\\\.\\COM10"), GENERIC_READ, 0, 0, OPEN_EXISTING, 0, NULL);//to COM10
if (Serial == INVALID_HANDLE_VALUE){
printf("serial error");
getchar();
return 1;
}
DCB dcbSerialParams = {0};
dcbSerialParams.BaudRate=115200;
dcbSerialParams.ByteSize=8;
dcbSerialParams.StopBits=ONESTOPBIT;
dcbSerialParams.Parity=NOPARITY;
if(!SetCommState(Serial, &dcbSerialParams)){
printf("com setting error!!\n");
goto End;
}
COMMTIMEOUTS timeouts={0};
timeouts.ReadIntervalTimeout = MAXDWORD;
timeouts.ReadTotalTimeoutConstant = 500;
timeouts.ReadTotalTimeoutMultiplier = 20;
timeouts.WriteTotalTimeoutConstant = 20;
timeouts.WriteTotalTimeoutMultiplier = 20;
if (!SetCommTimeouts(Serial, &timeouts)){
printf("timeout error!\n");
goto End;
}
while(!kbhit()){ //loop until keyboard click
ReadFile(Serial, Read_Packet1, 1, &dwBytesRead, NULL);
Read_Packet1 = '\0';
if(Read_Packet1)
printf("%s", Read_Packet1);
Read_Packet1 = 0;
}
End:
CloseHandle(Serial);
getchar();
return 0;
}
Android phone(eclipse):
layout: one Button and one EditText
package com.example.bluetooth_client;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Set;
import java.util.UUID;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import android.app.Activity;
import android.bluetooth.*;
import android.content.Intent;
public class MainActivity extends Activity {
private static final String TAG = "DEBUG";
private static final boolean D = true;
private BluetoothAdapter mBluetoothAdapter = null;
private BluetoothSocket btSocket = null;
private OutputStream outStream = null;
private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
private static String address = "00:00:00:00:00:00"; //roboard's bluetooth device address
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button sendButton = (Button) findViewById(R.id.button);
sendButton.setOnClickListener(new Button.OnClickListener(){
public void onClick(View arg0){
TextView enteredText = (TextView)findViewById(R.id.entertext);
String message = enteredText.getText().toString();
byte[] msgBuffer = message.getBytes();
try {
outStream.write(msgBuffer);
} catch (IOException e) {
Log.e(TAG, "ON RESUME: Exception during write.", e);
}
}
});
if (D)
Log.e(TAG, "+++ ON CREATE +++");
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (mBluetoothAdapter == null) {
Toast.makeText(this,"Bluetooth is not available.", Toast.LENGTH_LONG).show();
finish();
return;
}
if (!mBluetoothAdapter.isEnabled()) {
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, 1);
}
if (!mBluetoothAdapter.isEnabled()) {
Toast.makeText(this, "Please enable your BT and re-run this program.", Toast.LENGTH_LONG).show();
finish();
return;
}
Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
if (pairedDevices.size() > 0) {
for (BluetoothDevice device : pairedDevices) {
Log.e(TAG,device.getName() + "\n" + device.getAddress());
}
}
}
@Override
public void onResume() {
super.onResume();
BluetoothDevice device = null;
if (D) {
Log.e(TAG, "+ ON RESUME +");
Log.e(TAG, "+ ABOUT TO ATTEMPT CLIENT CONNECT +");
}
if(BluetoothAdapter.checkBluetoothAddress(address))
device = mBluetoothAdapter.getRemoteDevice(address);
else{
Log.e(TAG, "+++ address fail +++");
}
try {
btSocket = device.createRfcommSocketToServiceRecord(MY_UUID);
} catch (IOException e) {
Log.e(TAG, "ON RESUME: Socket creation failed.", e);
}
mBluetoothAdapter.cancelDiscovery();
try {
btSocket.connect();
Log.e(TAG, "ON RESUME: BT connection established, data transfer link open.");
} catch (IOException e) {
try {
btSocket.close();
} catch (IOException e2) {
Log.e(TAG,"ON RESUME: Unable to close socket during connection failure", e2);
}
}
if (D)
Log.e(TAG, "+ ABOUT TO SAY SOMETHING TO SERVER +");
try {
outStream = btSocket.getOutputStream();
} catch (IOException e) {
Log.e(TAG, "ON RESUME: Output stream creation failed.", e);
}
}
@Override
public void onPause() {
super.onPause();
if (D)
Log.e(TAG, "- ON PAUSE -");
if (outStream != null) {
try {
outStream.flush();
} catch (IOException e) {
Log.e(TAG, "ON PAUSE: Couldn't flush output stream.", e);
}
}
try{
btSocket.close();
} catch (IOException e2) {
Log.e(TAG, "ON PAUSE: Unable to close socket.", e2);
}
}
}
and don't forget permission:
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH" /> Hi
Please attach the project eclipse. I'm already gave you a sample code
please try it yourself, thx cannot import android.os. ????
http://upload7.ir/images/52792033876233888998.png 本帖最後由 roboardgod 於 2013-8-2 16:03 編輯
Have you installed android SDK? 本帖最後由 goldpower 於 2013-8-6 00:00 編輯
All problems were solved.
Thank you
http://www.robofun.net/forum/images/smilies/default/biggrin.gifhttp://www.robofun.net/forum/images/smilies/default/biggrin.gifhttp://www.robofun.net/forum/images/smilies/default/biggrin.gifhttp://www.robofun.net/forum/images/smilies/default/biggrin.gifhttp://www.robofun.net/forum/images/smilies/default/biggrin.gifhttp://www.robofun.net/forum/images/smilies/default/biggrin.gifhttp://www.robofun.net/forum/images/smilies/default/biggrin.gifhttp://www.robofun.net/forum/images/smilies/default/biggrin.gifhttp://www.robofun.net/forum/images/smilies/default/biggrin.gifhttp://www.robofun.net/forum/images/smilies/default/biggrin.gifhttp://www.robofun.net/forum/images/smilies/default/biggrin.gif
頁:
[1]