45022浏览
楼主: taelons

[项目] 开贴扯蛋BLUNO乐高小车搭建过程(视频已更新)

[复制链接]

Angelo  初级技匠

发表于 2014-2-12 15:34:31

taelons 发表于 2014-2-12 11:48
bluno不支持向下兼容老版本的蓝牙吗?

是的~ 只能支持蓝牙4.0,无法兼容以前蓝牙的版本。
回复

使用道具 举报

社区活动向导  管理员

发表于 2014-2-12 16:43:22

本帖最后由 社区活动向导 于 2014-2-12 16:48 编辑

楼主果然高效率,作品这么快就出来了。以后用乐高盖个摩天大楼如何?
有空来参加我们的3D打印机大奖:https://mc.dfrobot.com.cn/thread-941-1-1.html,乐高的受欢迎度应该很高!!{:3_59:}
回复

使用道具 举报

taelons  中级技师
 楼主|

发表于 2014-2-12 21:36:23

社区活动向导 发表于 2014-2-12 16:43
楼主果然高效率,作品这么快就出来了。以后用乐高盖个摩天大楼如何?
有空来参加我们的3D打印机大奖:http: ...

现在还是样子货
我等3D打印版块的高人帮我打印一个电机外壳装上去。听说搬家了,没电没网,只能等下周了。
现在问题是我没有高大上的蓝牙4.0、安卓4.3的手机。
写好了安卓蓝牙控制代码和界面,可是bluno不支持向下兼容哦,等我向某土豪借到手机

乐高是个坑,各位慎入!:-)
回复

使用道具 举报

gwesley  学徒

发表于 2014-2-12 23:22:16

挺厉害  iphone4s 以上的机型都支持蓝牙4.0
回复

使用道具 举报

taelons  中级技师
 楼主|

发表于 2014-2-21 23:13:01

哈哈,电机乐高外壳出来了,扣在积木上,完美!
开贴扯蛋BLUNO乐高小车搭建过程(视频已更新)图1

回复

使用道具 举报

taelons  中级技师
 楼主|

发表于 2014-2-23 20:34:04

     由于暂时没有安卓4.3、蓝牙4.0的手机,只有4.04和普通蓝牙手机,不知道以下程序能否和bluno通讯,这里贴出来供参考。
bluno端的arduino程序--


  1. #include <Servo.h>  // servo library
  2. const int timing = 100;  //value to control delay in reading serial port, useful to control responsiveness to input
  3. int dir = 0;  //beginning value for determining last direction indicated, 0 - no direction, 1 - forward, 2 - reverse
  4. int pwm_a = 6;   //PWM control for Ardumoto outputs 1 and 2 is on digital pin 3
  5. int dir_a = 7;  //direction control for Ardumoto outputs 1 and 2 is on digital pin 12
  6. Servo servo1;  // servo control object
  7. void setup()
  8. {
  9.   pinMode(pwm_a, OUTPUT);  //set control pins to be outputs
  10.   pinMode(dir_a, OUTPUT);
  11.   
  12.   Serial.begin(9600);  //initialize serial
  13.   
  14.   servo1.attach(8);  //start sending control commands to the servo
  15. }
  16. void loop()
  17. {
  18.   //forw();
  19.   //forward();
  20.   char getData = Serial.read();  //read the serial port
  21.   delay(timing);
  22.     if(getData == 'w'){  //if 'w' is pressed, set motor to forward and go
  23.       forw();
  24.       forward();
  25.       dir = 1;
  26.     }else if(getData == 's'){  //if 's' is pressed, set motor to reverse and go
  27.       back();
  28.       backward();
  29.       dir = 2;
  30.     }else if(getData == 'a'){  //if 'a' is pressed, turn servo 45 degrees to the left and go in the last direction pressed
  31.       if(dir == 0){
  32.         servo1.write(155);
  33.       }else if(dir == 1){
  34.         servo1.write(155);
  35.         forw();
  36.         forward();
  37.       }else if(dir == 2){
  38.         servo1.write(155);
  39.                back();
  40.         backward();
  41.       }
  42.     }else if(getData == 'd'){  //if 'd' is pressed, turn servo 45 degrees to the right and go in the last direction pressed
  43.       if(dir == 0){
  44.         servo1.write(25);
  45.       }else if(dir == 1){
  46.         servo1.write(25);
  47.         forw();
  48.         forward();
  49.       }else if(dir == 2){
  50.         servo1.write(25);
  51.         back();
  52.         backward();
  53.       }
  54.     }else if(getData != 'w' || 'a' || 's' || 'd'){  //stop motor and set servo to 90 degrees (center) if nothing is pressed
  55.       stopped();
  56.       servo1.write(90);
  57.     }
  58. }
  59. void forw() // no pwm defined
  60. {
  61.   digitalWrite(dir_a, HIGH);  //set motor direction forward
  62. }
  63. void back() // no pwm defined
  64. {
  65.   digitalWrite(dir_a, LOW);  //set motor direction back
  66. }
  67. void forward() //full speed forward
  68. {
  69.   digitalWrite(dir_a, HIGH);  //set motor direction forward
  70.   analogWrite(pwm_a, 255);    //set motor to run at 100% duty cycle (fast)
  71. }
  72. void backward() //full speed backward
  73. {
  74.   digitalWrite(dir_a, LOW);  //set motor direction back
  75.   analogWrite(pwm_a, 255);   //set motor to run at 100% duty cycle (fast)
  76. }
  77. void stopped() //stop
  78. {
  79.   digitalWrite(dir_a, LOW); //set motor direction back
  80.   analogWrite(pwm_a, 0);    //set motor to stop
  81. }
复制代码




回复

使用道具 举报

taelons  中级技师
 楼主|

发表于 2014-2-23 20:36:53

安卓手机程序---

  1. package com.example.myfirstapp;
  2. import java.io.IOException;
  3. import java.io.OutputStream;
  4. import java.util.UUID;
  5. import android.app.Activity;
  6. import android.os.Bundle;
  7. import android.bluetooth.BluetoothAdapter;
  8. import android.bluetooth.BluetoothDevice;
  9. import android.bluetooth.BluetoothSocket;
  10. import android.content.DialogInterface;
  11. import android.content.DialogInterface.OnClickListener;
  12. import android.provider.ContactsContract.CommonDataKinds.Event;
  13. import android.util.Log;
  14. import android.view.MotionEvent;
  15. import android.view.View;
  16. import android.widget.Button;
  17. import android.widget.Toast;
  18. public class MainActivity extends Activity
  19. {
  20.         private static final String TAG = "THINBTCLIENT";
  21.         private static final boolean D = true;
  22.         private BluetoothAdapter mBluetoothAdapter = null;
  23.         private BluetoothSocket btSocket = null;
  24.         private OutputStream outStream = null;
  25.         Button mButtonF;
  26.         Button mButtonB;
  27.         Button mButtonL;
  28.         Button mButtonR;
  29.         Button mButtonS;
  30.         private static final UUID MY_UUID = UUID.fromString( "00001101-0000-1000-8000-00805F9B34FB" );
  31.         private static String address = "88:33:14:DF:1F:FD";
  32.         /** Called when the activity is first created. */
  33.         @Override
  34.         public void onCreate( Bundle savedInstanceState )
  35.         {
  36.                 super.onCreate(savedInstanceState);
  37.                 setContentView(R.layout.main);
  38.                 //前进
  39.                 mButtonF=(Button)findViewById(R.id.btnF);
  40.                 mButtonF.setOnTouchListener(new Button.OnTouchListener()
  41.                 {
  42.                         @Override
  43.                         public boolean onTouch(View v, MotionEvent event)
  44.                         {
  45.                                 String message;
  46.                                 byte[] msgBuffer;
  47.                                 int action = event.getAction();
  48.                                 switch(action)
  49.                                 {
  50.                                         case MotionEvent.ACTION_DOWN:
  51.                                                 try
  52.                                                 {
  53.                                                         outStream = btSocket.getOutputStream();
  54.                                                 }
  55.                                                 catch (IOException e)
  56.                                                 {
  57.                                                         Log.e(TAG, "ON RESUME: Output stream creation failed.", e);
  58.                                                 }
  59.                                                 message = "w";
  60.                                                 msgBuffer = message.getBytes();
  61.                                                 try
  62.                                                 {
  63.                                                         outStream.write(msgBuffer);
  64.                                                 }
  65.                                                 catch (IOException e)
  66.                                                 {
  67.                                                         Log.e(TAG, "ON RESUME: Exception during write.", e);
  68.                                                 }
  69.                                                 break;
  70.                                         case MotionEvent.ACTION_UP:
  71.                                                 try
  72.                                                 {
  73.                                                         outStream = btSocket.getOutputStream();
  74.                                                 }
  75.                                                 catch (IOException e)
  76.                                                 {
  77.                                                         Log.e(TAG, "ON RESUME: Output stream creation failed.", e);
  78.                                                 }
  79.                                                 message = "0";
  80.                                                 msgBuffer = message.getBytes();
  81.                                                 try
  82.                                                 {
  83.                                                         outStream.write(msgBuffer);
  84.                                                 }
  85.                                                 catch (IOException e)
  86.                                                 {
  87.                                                         Log.e(TAG, "ON RESUME: Exception during write.", e);
  88.                                                 }
  89.                                                 break;
  90.                                         }
  91.                                         return false;
  92.                         } // end of onTouch
  93.                 });
  94.                
  95.                 //后退
  96.                 mButtonB=(Button)findViewById(R.id.btnB);
  97.                 mButtonB.setOnTouchListener(new Button.OnTouchListener()
  98.                 {
  99.                         @Override
  100.                         public boolean onTouch(View v, MotionEvent event)
  101.                         {
  102.                                 // TODO Auto-generated method stub
  103.                                 String message;
  104.                                 byte[] msgBuffer;
  105.                                 int action = event.getAction();
  106.                                 switch(action)
  107.                                 {
  108.                                         case MotionEvent.ACTION_DOWN:
  109.                                                 try
  110.                                                 {
  111.                                                         outStream = btSocket.getOutputStream();
  112.                                                 }
  113.                                                 catch (IOException e)
  114.                                                 {
  115.                                                         Log.e(TAG, "ON RESUME: Output stream creation failed.", e);
  116.                                                 }
  117.                                                 message = "s";
  118.        
  119.                                                 msgBuffer = message.getBytes();
  120.        
  121.                                                 try
  122.                                                 {
  123.                                                         outStream.write(msgBuffer);
  124.                                                 }
  125.                                                 catch (IOException e)
  126.                                                 {
  127.                                                         Log.e(TAG, "ON RESUME: Exception during write.", e);
  128.                                                 }
  129.                                                 break;
  130.        
  131.                                         case MotionEvent.ACTION_UP:
  132.                                                 try
  133.                                                 {
  134.                                                         outStream = btSocket.getOutputStream();
  135.                                                 }
  136.                                                 catch (IOException e)
  137.                                                 {
  138.                                                         Log.e(TAG, "ON RESUME: Output stream creation failed.", e);
  139.                                                 }       
  140.                                                 message = "0";
  141.        
  142.                                                 msgBuffer = message.getBytes();
  143.                                                 try
  144.                                                 {
  145.                                                         outStream.write(msgBuffer);
  146.                                                 }
  147.                                                 catch (IOException e)
  148.                                                 {
  149.                                                         Log.e(TAG, "ON RESUME: Exception during write.", e);
  150.                                                 }
  151.                                                 break;
  152.                                 }
  153.        
  154.                                 return false;
  155.                         } // end of onTouch
  156.                 }); // end of setOnTouchListener
  157.        
  158.                 //左转
  159.                 mButtonL=(Button)findViewById(R.id.btnL);
  160.                 mButtonL.setOnTouchListener(new Button.OnTouchListener()
  161.                 {
  162.                         @Override
  163.                         public boolean onTouch(View v, MotionEvent event)
  164.                         {
  165.                                 // TODO Auto-generated method stub
  166.                                 String message;
  167.                                 byte[] msgBuffer;
  168.                                 int action = event.getAction();
  169.                                 switch(action)
  170.                                 {
  171.                                         case MotionEvent.ACTION_DOWN:
  172.                                                 try
  173.                                                 {
  174.                                                         outStream = btSocket.getOutputStream();
  175.                                                 }
  176.                                                 catch (IOException e)
  177.                                                 {
  178.                                                         Log.e(TAG, "ON RESUME: Output stream creation failed.", e);
  179.                                                 }
  180.                                                 message = "a";
  181.                                                 msgBuffer = message.getBytes();
  182.                                                 try
  183.                                                 {
  184.                                                         outStream.write(msgBuffer);
  185.                                                 }
  186.                                                 catch (IOException e)
  187.                                                 {
  188.                                                         Log.e(TAG, "ON RESUME: Exception during write.", e);
  189.                                                 }
  190.                                                 break;
  191.                                         case MotionEvent.ACTION_UP:
  192.                                                 try
  193.                                                 {
  194.                                                         outStream = btSocket.getOutputStream();
  195.                                                 }
  196.                                                 catch (IOException e)
  197.                                                 {
  198.                                                         Log.e(TAG, "ON RESUME: Output stream creation failed.", e);
  199.                                                 }
  200.                                                 message = "0";
  201.                                                 msgBuffer = message.getBytes();
  202.                                                 try
  203.                                                 {
  204.                                                         outStream.write(msgBuffer);
  205.                                                 }
  206.                                                 catch (IOException e)
  207.                                                 {
  208.                                                         Log.e(TAG, "ON RESUME: Exception during write.", e);
  209.                                                 }
  210.                                                 break;
  211.                                 }
  212.                                 return false;
  213.                         }
  214.                 });
  215.        
  216.                 //右转
  217.                 mButtonR=(Button)findViewById(R.id.btnR);
  218.                 mButtonR.setOnTouchListener(new Button.OnTouchListener()
  219.                 {
  220.                         @Override
  221.                         public boolean onTouch(View v, MotionEvent event)
  222.                         {
  223.                                 // TODO Auto-generated method stub
  224.                                 String message;
  225.                                 byte[] msgBuffer;
  226.                                 int action = event.getAction();
  227.                                 switch(action)
  228.                                 {
  229.                                         case MotionEvent.ACTION_DOWN:
  230.                                                 try
  231.                                                 {
  232.                                                         outStream = btSocket.getOutputStream();
  233.                                                 }
  234.                                                 catch (IOException e)
  235.                                                 {
  236.                                                         Log.e(TAG, "ON RESUME: Output stream creation failed.", e);
  237.                                                 }
  238.                                                 message = "d";
  239.                                                 msgBuffer = message.getBytes();
  240.                                                 try
  241.                                                 {
  242.                                                         outStream.write(msgBuffer);
  243.                                                 }
  244.                                                 catch (IOException e)
  245.                                                 {
  246.                                                         Log.e(TAG, "ON RESUME: Exception during write.", e);
  247.                                                 }
  248.                                                 break;
  249.        
  250.                                         case MotionEvent.ACTION_UP:
  251.                                                 try
  252.                                                 {
  253.                                                         outStream = btSocket.getOutputStream();
  254.                                                 }
  255.                                                 catch (IOException e)
  256.                                                 {
  257.                                                         Log.e(TAG, "ON RESUME: Output stream creation failed.", e);
  258.                                                 }
  259.                                                 message = "0";
  260.                                                 msgBuffer = message.getBytes();
  261.        
  262.                                                 try
  263.                                                 {
  264.                                                         outStream.write(msgBuffer);
  265.                                                 }
  266.                                                 catch (IOException e)
  267.                                                 {
  268.                                                         Log.e(TAG, "ON RESUME: Exception during write.", e);
  269.                                                 }
  270.                                                 break;
  271.                                 }
  272.        
  273.                                 return false;
  274.                         }
  275.                 });
  276.                 //停止
  277.                 mButtonS=(Button)findViewById(R.id.btnS);
  278.                 mButtonS.setOnTouchListener(new Button.OnTouchListener()
  279.                 {
  280.                         @Override
  281.                         public boolean onTouch(View v, MotionEvent event)
  282.                         {
  283.                                 // TODO Auto-generated method stub
  284.                                 if (event.getAction()==MotionEvent.ACTION_DOWN)
  285.                                         try
  286.                                         {
  287.                                                 outStream = btSocket.getOutputStream();
  288.                                         }
  289.                                         catch (IOException e)
  290.                                         {
  291.                                                 Log.e(TAG, "ON RESUME: Output stream creation failed.", e);
  292.                                         }
  293.        
  294.                                         String message = "0";
  295.        
  296.                                         byte[] msgBuffer = message.getBytes();
  297.        
  298.                                         try
  299.                                         {
  300.                                                 outStream.write(msgBuffer);
  301.                                         }
  302.                                         catch (IOException e)
  303.                                         {
  304.                                                 Log.e(TAG, "ON RESUME: Exception during write.", e);
  305.                                         }
  306.                                         return false;
  307.                         }
  308.                 });
  309.                 if ( D )
  310.                         Log.e(TAG, "+++ ON CREATE +++");
  311.                 mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
  312.                 if (mBluetoothAdapter == null)
  313.                 {
  314.                         Toast.makeText(this, "Bluetooth is not available.", Toast.LENGTH_LONG).show();
  315.                         finish();
  316.                         return;
  317.                 }
  318.                 if (!mBluetoothAdapter.isEnabled())
  319.                 {
  320.                         Toast.makeText(this, "Please enable your Bluetooth and re-run this program.", Toast.LENGTH_LONG).show();
  321.                         finish();
  322.                         return;
  323.                 }
  324.                 if ( D )
  325.                         Log.e(TAG, "+++ DONE IN ON CREATE, GOT LOCAL BT ADAPTER +++");
  326.         } // end of onCreate
  327.         @Override
  328.         public void onStart()
  329.         {
  330.                 super.onStart();
  331.                 if (D)
  332.                         Log.e(TAG, "++ ON START ++");
  333.         }
  334.         @Override
  335.         public void onResume()
  336.         {
  337.                 super.onResume();
  338.                 if ( D )
  339.                 {
  340.                         Log.e(TAG, "+ ON RESUME +");
  341.                         Log.e(TAG, "+ ABOUT TO ATTEMPT CLIENT CONNECT +");
  342.                 }
  343.                 BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);
  344.                 try
  345.                 {
  346.                         btSocket = device.createRfcommSocketToServiceRecord(MY_UUID);
  347.                 }
  348.                 catch (IOException e)
  349.                 {
  350.                         Log.e(TAG, "ON RESUME: Socket creation failed.", e);
  351.                 }
  352.                 mBluetoothAdapter.cancelDiscovery();
  353.                 try
  354.                 {
  355.                         btSocket.connect();
  356.                         Log.e(TAG, "ON RESUME: BT connection established, data transfer link open.");
  357.                 }
  358.                 catch (IOException e)
  359.                 {
  360.                         try
  361.                         {
  362.                                 btSocket.close();
  363.                         }
  364.                         catch (IOException e2)
  365.                         {
  366.                                 Log .e(TAG,"ON RESUME: Unable to close socket during connection failure", e2);
  367.                         }
  368.                 }
  369.                
  370.                 // Create a data stream so we can talk to server.
  371.                 if ( D )
  372.                         Log.e(TAG, "+ ABOUT TO SAY SOMETHING TO SERVER +");
  373.                 /* try {
  374.                 outStream = btSocket.getOutputStream();
  375.                 } catch (IOException e) {
  376.                 Log.e(TAG, "ON RESUME: Output stream creation failed.", e);
  377.                 }
  378.        
  379.        
  380.                 String message = "1";
  381.        
  382.                 byte[] msgBuffer = message.getBytes();
  383.        
  384.                 try {
  385.                 outStream.write(msgBuffer);
  386.        
  387.                 } catch (IOException e) {
  388.                 Log.e(TAG, "ON RESUME: Exception during write.", e);
  389.                 }
  390.                 */
  391.         }
  392.         @Override
  393.         public void onPause()
  394.         {
  395.                 super.onPause();
  396.                
  397.                 if ( D )
  398.                         Log.e(TAG, "- ON PAUSE -");
  399.                 if (outStream != null)
  400.                 {
  401.                         try
  402.                         {
  403.                                 outStream.flush();
  404.                         }
  405.                         catch (IOException e)
  406.                         {
  407.                                 Log.e(TAG, "ON PAUSE: Couldn't flush output stream.", e);
  408.                         }
  409.                 }
  410.                 try
  411.                 {
  412.                         btSocket.close();
  413.                 }
  414.                 catch (IOException e2)
  415.                 {
  416.                         Log.e(TAG, "ON PAUSE: Unable to close socket.", e2);
  417.                 }
  418.         }
  419.         @Override
  420.         public void onStop()
  421.         {
  422.                 super.onStop();
  423.                 if ( D )
  424.                         Log.e(TAG, "-- ON STOP --");
  425.         }
  426.         @Override
  427.         public void onDestroy()
  428.         {
  429.                 super.onDestroy();
  430.                 if ( D )
  431.                         Log.e(TAG, "--- ON DESTROY ---");
  432.         }
  433.        
  434. //        @Override
  435. //        protected void onCreate(Bundle savedInstanceState) {
  436. //                super.onCreate(savedInstanceState);
  437. //                setContentView(R.layout.activity_main);
  438. //        }
  439. //
  440. //        @Override
  441. //        public boolean onCreateOptionsMenu(Menu menu) {
  442. //                // Inflate the menu; this adds items to the action bar if it is present.
  443. //                getMenuInflater().inflate(R.menu.main, menu);
  444. //                return true;
  445. //        }
  446. }
复制代码



回复

使用道具 举报

taelons  中级技师
 楼主|

发表于 2014-2-23 20:41:57

打开手机的USB调试模式,在google的ADT中运行上面的安卓程序,手机上出现四个按钮,分别上‘前进’、‘后退’、‘左转’、‘右转’、‘停止’,
可能不支持4.04和普通蓝牙,无法连接bluno。求有经验的高人指点。。。。。。

To be continue......
回复

使用道具 举报

taelons  中级技师
 楼主|

发表于 2014-2-24 22:52:03

       没有安卓4.3、蓝牙4.0手机的情况下,bluno上的arduino程序还是可以调试的(某宝上dfrobot的技术支持人员还是要不断学习啊。。。。。)方法是使用串口助手----
开贴扯蛋BLUNO乐高小车搭建过程(视频已更新)图1


通过串口助手,连续发送字符w、s、a、d,验证bluno上的arduino程序运行完全正确,能够带动电机、舵机前进后退、左右转向


to be continue......
回复

使用道具 举报

taelons  中级技师
 楼主|

发表于 2014-2-26 09:04:09

社区活动向导 发表于 2014-2-12 16:43
楼主果然高效率,作品这么快就出来了。以后用乐高盖个摩天大楼如何?
有空来参加我们的3D打印机大奖:http: ...

盖个摩天大楼难道是为了DFcity?
回复

使用道具 举报

何处不江南  初级技匠

发表于 2014-2-26 13:12:22

taelons 发表于 2014-2-26 09:04
盖个摩天大楼难道是为了DFcity?

呵呵 有没有对Bluno的使用建议?
回复

使用道具 举报

taelons  中级技师
 楼主|

发表于 2014-2-28 23:46:19

定制的十字轴已到货,套在电机轴上,另一端套齿轮---

开贴扯蛋BLUNO乐高小车搭建过程(视频已更新)图1


准备做最后测试----

开贴扯蛋BLUNO乐高小车搭建过程(视频已更新)图2

回复

使用道具 举报

格鲁  初级技师

发表于 2014-3-1 08:20:13

taelons 发表于 2014-2-12 11:48
bluno不支持向下兼容老版本的蓝牙吗?

楼主,最近忙啥呢?期待小车视频。
回复

使用道具 举报

taelons  中级技师
 楼主|

发表于 2014-3-1 23:32:29

何处不江南 发表于 2014-2-26 13:12
呵呵 有没有对Bluno的使用建议?

不兼容老版蓝牙,主要是太贵了:lol
回复

使用道具 举报

taelons  中级技师
 楼主|

发表于 2014-3-1 23:40:54

格鲁 发表于 2014-3-1 08:20
楼主,最近忙啥呢?期待小车视频。

琐事缠身。。。。。。
没有蓝牙4.0手机,等下周红米手机到货
9g舵机需要用老版的,否则无法连乐高十字轴
电池需要一个转接头,我看df商城上有,2块多,现在暂时直接插在电脑上供电
线还没焊,直接插在板子和电机上

主要是第一个问题,只等测手机上的程序就OK了,再录视频
回复

使用道具 举报

格鲁  初级技师

发表于 2014-3-2 21:00:26

有朋友在乐高工作,看到你的小车非常感兴趣,嚷着让我更新报告进度。
回复

使用道具 举报

taelons  中级技师
 楼主|

发表于 2014-3-4 13:48:35

格鲁 发表于 2014-3-2 21:00
有朋友在乐高工作,看到你的小车非常感兴趣,嚷着让我更新报告进度。

没秒到红米手机,20万部5分钟就秒完了?
哪位借我一台安卓4.3、蓝牙4.0手机测试?
pc上插个usb蓝牙4.0配合google adt环境能不能测?
回复

使用道具 举报

jxgx0720  见习技师

发表于 2014-3-14 09:57:12

taelons 发表于 2014-3-4 13:48
没秒到红米手机,20万部5分钟就秒完了?
哪位借我一台安卓4.3、蓝牙4.0手机测试?
pc上插个usb蓝牙4.0配 ...

现在貌似还真挺少手机支持4.3的……不知道小米春季发布会不会把系统更新到4.3
回复

使用道具 举报

taelons  中级技师
 楼主|

发表于 2014-3-15 00:43:02

         前段时间一直忙店铺的时,每天备货到很晚,没时间搞小车,这两天没啥生意,总算有时了,今天继续---         由于没有安卓4.3、蓝牙4.0手机,哥用一个变通方法,买了块DF的BLE-Link和电源转接头

开贴扯蛋BLUNO乐高小车搭建过程(视频已更新)图1开贴扯蛋BLUNO乐高小车搭建过程(视频已更新)图2



        BLE-Link接电脑USB,和bluno蓝牙配对,BLE-Link为“主”,bluno为“从”,具体方法见DF官方资料,配置主从设置前,
BLE-Link和bluno都要拨到"AT"模式,配置好后,都拨回“Normal"模式,BLE-Link上绿色Link灯亮,同时bluno上红色Link灯亮,
表示自动配对成功,非常简单。
        bluno通过电源转接头用jst口的锂电池供电

开贴扯蛋BLUNO乐高小车搭建过程(视频已更新)图3


        之后打开OpenJumper串口助手,切换到键盘模式,电脑就可以遥控乐高小车了。
        一个人不方便拍视频,用手机简单拍了一下,不太习惯键盘操控,小车还要用乐高加固一下,明天上视频。


回复

使用道具 举报

taelons  中级技师
 楼主|

发表于 2014-3-15 21:17:43

本帖最后由 taelons 于 2014-3-16 16:24 编辑


回复

使用道具 举报

赛外奇雪  初级技师

发表于 2014-3-19 15:40:43

我的天,顶礼膜拜!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail