42639浏览
查看: 42639|回复: 51

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

[复制链接]
本帖最后由 taelons 于 2014-3-16 16:24 编辑

感谢DFROBOT!感谢社区向导!有幸拿到BLUNO试用活动提供的板子!
年底大家都很忙,年终总结、系统测试上线、各路催债的、各种面子工程政绩工程、某监会又不失时机地给俺们增加工作量:Q(真想吐槽这些爷们。。。。。。)
总算能稍微喘口气,开贴记录一下BLUNO乐高小车搭建过程。哥在公司要伺候领导,到家要伺候小祖宗,等小祖宗睡了才能开整,否则逃不出小祖宗的小爪,非把板子废了不可,因此搭建、更新过程慢,请看官和社区向导谅解。。。。。。

秀一下拿到的板子。。。。。。

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


板子非常小巧,做工精良(只是BLUNO一个排母焊得稍微斜了点)

taelons  中级技师
 楼主|

发表于 2014-2-4 16:01:56

本帖最后由 taelons 于 2014-2-4 16:05 编辑

由于哥的iphone4蓝牙和wifi坏了,暂时不能调试蓝牙,先搭建小车底盘---

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

电机驱动板已插在bluno上,再看看反面---

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

除了两个螺丝螺母,其它都是乐高

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

继续加固---

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

晚上继续。。。。。。
回复

使用道具 举报

taelons  中级技师
 楼主|

发表于 2014-1-25 23:01:04

自己的装备。。。。。。
开贴扯蛋BLUNO乐高小车搭建过程(视频已更新)图1


电机:额定电压6v,最高9v,便宜得不能再便宜了,3块钱
舵机:最常见的SG90,不到10元。3D打印了一个外壳,可惜有误差,不能扣在乐高上,而且太紧,不小心弄断了。外壳不是必需的,当然如果有最好,但不同的3D打印机打印了好几个,都不理想
双鹿电池及电池扣:9v,这个在调试的时候用,因为手头的锂电池都是JST插头,不能直接接在DFROBOT提供的电机控制板上
锂电池:7.4v JST插头,这个将来成型后用,插头要改造一下
面包板一个、杜邦线一把就不贴出来了
回复

使用道具 举报

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-1-25 23:10:28

自己的乐高装备和小车想象图。。。。。。

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


上图的轮子是前轮,放错了地方,后轮和乐高的转向系统,由于手头缺少一些乐高配件,待以后贴出来

后轮驱动前进后退,前轮负责转向
上图从左到右一次是:前翼、转向系统、舵机、锂电池(留了空间,上图没有电池)BLUNO及电机板、电机、后翼
回复

使用道具 举报

cj2q  中级技匠

发表于 2014-1-26 12:06:39

火钳刘明 同为乐高玩家 托一把
回复

使用道具 举报

何处不江南  初级技匠

发表于 2014-1-27 10:18:54

乐高很强大,就是略贵。。。
回复

使用道具 举报

Phoebe  高级技匠

发表于 2014-1-27 10:38:39

期待完成的作品。。。
回复

使用道具 举报

Eric  初级技神

发表于 2014-1-27 11:36:32

taelons 发表于 2014-1-25 23:01
自己的装备。。。。。。

期待你的小车再度进展啊~~!!这样的帖子我们要顶起来啊~~~
回复

使用道具 举报

taelons  中级技师
 楼主|

发表于 2014-1-27 11:49:00

不打算详细讲乐高怎么搭,重点放在bluno上。昨天总算找到一根micro usb线(老爸三星手机的)给bluno用
现在快递都不发货了,缺的两个乐高配件无法派送,贴个图大家看看,一个简单的转向系统,没有悬挂避震功能

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



中间的轴一头接舵机

晚上如果有时间,测一下bluno带舵机、电机,再给大家汇报。
回复

使用道具 举报

lauren  高级技师

发表于 2014-1-27 12:06:40

demo布局很给力的感觉,期待成品
回复

使用道具 举报

nemon  中级技匠

发表于 2014-1-27 19:40:22

taelons 发表于 2014-1-27 11:49
不打算详细讲乐高怎么搭,重点放在bluno上。昨天总算找到一根micro usb线(老爸三星手机的)给bluno用
现在 ...

怎么接呢?很好奇
回复

使用道具 举报

taelons  中级技师
 楼主|

发表于 2014-1-27 23:33:55

本帖最后由 taelons 于 2014-1-27 23:35 编辑

bluno驱动370电机测试---

bluno插上电机驱动板(L298P Shield 2A),使用vin供电,micro usb接电脑,com4出现。
打开arduino ide,复制电机测试代码,编译、上传bluno成功
接电机前,先用万用表测了5v、gnd,得5.03V,M2+和M2-在1.xV至3.xV之间循环,M1和M2旁各有一个绿色的指示灯亮度渐变
接上电机(我接在M2上、M1空着),M2旁边还有一个红色指示灯亮度渐变
M2上的电机不停正反转。

看来,M1和M2旁的两个指示灯(红灯和绿灯)亮度渐变,说明电机驱动板和电机工作正常。

明天测一下舵机,舵机3根线,明天看看控制线插在哪里

Arduino PWM调速测试代码(摘自DFROBOT的L298P Shield 2A产品资料库,最后少了一个大括号):
  1. int E1 = 5;   
  2. int M1 = 4;
  3. int E2 = 6;                        
  4. int M2 = 7;                           
  5. void setup()
  6. {
  7.   pinMode(M1, OUTPUT);   
  8.   pinMode(M2, OUTPUT);
  9. }
  10. void loop()
  11. {
  12.   int value;
  13.   for(value = 0 ; value <= 255; value+=5)
  14. {
  15.   digitalWrite(M1,HIGH);   
  16.   digitalWrite(M2, HIGH);      
  17.   analogWrite(E1, value);   //PWM调速
  18.   analogWrite(E2, value);   //PWM调速
  19.   delay(30);
  20. }  
  21. }
复制代码


回复

使用道具 举报

taelons  中级技师
 楼主|

发表于 2014-1-29 22:12:05

bluno驱动sg90 9g舵机测试---


舵机接5v和gnd,控制线接D8


  1. #include <Servo.h>
  2. #define ServoPin 8
  3. Servo servo;
  4. int angle = 0;
  5. void calibrateServo(){
  6.   servo.write(90);
  7.   delay(15);
  8. }
  9. void setup(){  
  10.   servo.attach(ServoPin);
  11. }
  12. void loop(){
  13.   for (angle=0; angle< 160; angle++){
  14.     servo.write(angle);
  15.     delay(20);
  16.   }
  17.   for (angle=160; angle > 0; angle--){
  18.     servo.write(angle);
  19.     delay(20);
  20.   }
  21. }
复制代码



回复

使用道具 举报

taelons  中级技师
 楼主|

发表于 2014-1-29 22:16:30

bluno同时驱动电机舵机

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


  1. #include <Servo.h>
  2. #define ServoPin 8
  3. Servo servo;
  4. int angle = 0;
  5. int E1 = 5;   
  6. int M1 = 4;
  7. int E2 = 6;                        
  8. int M2 = 7;  
  9. void calibrateServo(){
  10.   servo.write( 90 );
  11.   delay( 15 );
  12. }
  13. void setup(){  
  14.   servo.attach(ServoPin);
  15.   pinMode(M1, OUTPUT);   
  16.   pinMode(M2, OUTPUT);
  17. }
  18. void loop()
  19. {
  20.   int value;
  21.   for ( value = 0 ; value <= 255; value += 5 )
  22.   {
  23.     digitalWrite( M1,HIGH );   
  24.     digitalWrite( M2, HIGH );      
  25.     analogWrite( E1, value );   //PWM调速
  26.     analogWrite( E2, value );   //PWM调速
  27.     delay( 30 );
  28.   }  
  29.   for ( angle = 0; angle < 160; angle++)
  30.   {
  31.     servo.write( angle );
  32.     delay( 20 );
  33.   }
  34.   for ( angle = 160; angle > 0; angle -- )
  35.   {
  36.     servo.write( angle );
  37.     delay( 20 );
  38.   }
  39. }
复制代码



回复

使用道具 举报

taelons  中级技师
 楼主|

发表于 2014-2-3 14:47:22

今天发现bluno和arduino uno板子的尺寸差不多,于是试了一下我那块arduino乐高积木外壳,bluno插上电机驱动板,放入外壳中,卡得很紧,倒置也不会掉下来,bluno可以摆脱“裸奔”了!但是插上Bluno扩展板 Accessory Shield就放不平了,需要加长一个乐高单位。


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

虽然外壳接近完美,但不打算用这种方法把板子固定到乐高小车上。
回复

使用道具 举报

lauren  高级技师

发表于 2014-2-3 17:56:33

taelons 发表于 2014-2-3 14:47
今天发现bluno和arduino uno板子的尺寸差不多,于是试了一下我那块arduino乐高积木外壳,bluno插上电机驱动 ...

擦,请问楼主这款乐高外壳哪里搞?
回复

使用道具 举报

taelons  中级技师
 楼主|

发表于 2014-2-6 15:17:33

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


等过两天缺的积木到了再继续
这款至少能放两块电池,一块在舵机后bluno前的预留空间,在的bluno下方再放一块电池没问题
由于dfrobot提供的安卓代码需要安卓4.3的手机,无法装到手头安卓4.04的三星手机里,下载了
google的安卓开发环境,准备自己改写控制代码。。。。。。
回复

使用道具 举报

mountain8848  见习技师

发表于 2014-2-7 17:31:31

无法装到手头安卓4.04的三星手机里,下载了
google的安卓开发环境,准备自己改写控制代码。。。。。。

这个赞,maker精神!
回复

使用道具 举报

taelons  中级技师
 楼主|

发表于 2014-2-9 15:02:00

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

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


积木部分基本上完成了,需要搭建步骤的,站内短我。。。。。。
回复

使用道具 举报

dannygto  学徒

发表于 2014-2-10 16:55:36

安卓代码需要安卓4.3的手机,无法装到手头安卓4.04的三星手机里,下载了
google的安卓开发环境,准备自己改写控制代码。。。。。。


这个真不好搞,蓝牙4.0是4.3系统以后才开始支持的。。
回复

使用道具 举报

taelons  中级技师
 楼主|

发表于 2014-2-12 11:48:01

dannygto 发表于 2014-2-10 16:55
安卓代码需要安卓4.3的手机,无法装到手头安卓4.04的三星手机里,下载了
google的安卓开发环境,准备自己改 ...

bluno不支持向下兼容老版本的蓝牙吗?
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail