“乐高遥控小车”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
疑难解答/FAQ
 
(未显示同一用户的6个中间版本)
第5行: 第5行:
  
  
==原理==
 
通过手机端的mTank软件发送指令,叠加在mCookie的蓝牙模块接收并解析指令
 
通过IIC通讯,mCookie控制LEGOShield,完成对NXT接口电机和传感器的控制
 
 
==设备==
 
{|class="wikitable"
 
|-
 
|模块||数量||功能
 
|-
 
|[[MCookie-CoreUSB/zh]]||1||核心板
 
|-
 
|[[MCookie-LEGOShield/zh]]||1||乐高底板
 
|-
 
|[[MCookie-BT/zh]]||1||蓝牙模块
 
|}
 
 
 
{| style="width: 1000px;"
 
|-
 
|
 
 
==概述==
 
==概述==
 
*项目名称:乐高蓝牙遥控小车
 
*项目名称:乐高蓝牙遥控小车
第37行: 第17行:
 
|width="33%" valign="top" align="left"|
 
|width="33%" valign="top" align="left"|
  
===模块清单 (Joypad模式)===
+
===模块清单 ===
{|class="wikitable"
 
|-
 
|模块||数量||功能
 
|-
 
|[[Microduino-Core/zh]]||2||核心模块
 
|-
 
|[[Microduino-USBTTL/zh]]||1||下载模块
 
|-
 
|[[Microduino-Module nRF/zh]]||2||通讯模块
 
|-
 
|[[Microduino-Module TFT/zh]]||1||显示模块
 
|-
 
|[[Microduino-Shield Joypad/zh]]||1||遥控底板
 
|-
 
|[[Microduino-Shield Robot/zh]]||1||驱动底板
 
|}
 
 
 
|width="33%" valign="top" align="left"|
 
 
 
===模块清单 (蓝牙模式)===
 
 
{|class="wikitable"
 
{|class="wikitable"
 
|-
 
|-
 
|模块||数量||功能
 
|模块||数量||功能
 
|-
 
|-
|[[Microduino-Core/zh]]||1||核心模块
+
|[[MCookie-CoreUSB/zh]]||1||核心模块
 
|-
 
|-
|[[Microduino-USBTTL/zh]]||1||下载模块
+
|[[MCookie-BT/zh]]||1||通讯模块
 
|-
 
|-
|[[Microduino-Module BLE/zh]]||1||通讯模块
+
|[[MCookie-LEGOShield/zh]]||1||乐高驱动底板
|-
 
|[[Microduino-Shield Robot/zh]]||1||驱动底板
 
 
|}
 
|}
  
第78行: 第36行:
 
|部件||数量||功能
 
|部件||数量||功能
 
|-
 
|-
|机器小车机架||1||车体
+
|NXT接口电机||2||驱动车轮
 
|-
 
|-
|螺丝||8||固定
+
|NXT连接线||2||连接电机与底板
 
|-
 
|-
|螺母||8||固定
+
|LEGO积木结构件||若干||搭建小车结构
 
|-
 
|-
 
|Micro-USB数据线||1||下载程序
 
|Micro-USB数据线||1||下载程序
 
|-
 
|-
|47mm车轮+电机固定座||2||车轮
+
|7.4v锂电池||1||供电
|-
 
|N20直流减速电机||2||驱动车轮
 
|-
 
|3.7v锂电池||1||供电
 
 
|}
 
|}
 
|}
 
|}
第102行: 第56行:
 
*本次我们主要使用两轮驱动的结构,通过控制两个轮子的旋转方向,实现前进后退,旋转等功能,当然还要加上辅助轮,这样才能保持平衡。
 
*本次我们主要使用两轮驱动的结构,通过控制两个轮子的旋转方向,实现前进后退,旋转等功能,当然还要加上辅助轮,这样才能保持平衡。
 
*该小车结构简单,主要包括三个方面:车轮、车身、控制系统。
 
*该小车结构简单,主要包括三个方面:车轮、车身、控制系统。
**1)车轮采用两个减速电机,扭力大,可PWM调速,控制简单。
+
**1)车轮采用两个NXT接口电机。
**2)车身采用木板,大小:8cm*8cm*8cm。
+
**2)车身采用乐高积木堆叠而成。
 
**3)整个控制系统包括四个部分:
 
**3)整个控制系统包括四个部分:
  
 
*中央处理器
 
*中央处理器
**采用'''[[Microduino-Core/zh]]'''作为核心,就像电脑的CPU,人的大脑,有一定思维能力,能够处理复杂事件。
+
**采用'''[[MCookie-CoreUSB/zh]]'''作为核心,就像电脑的CPU,人的大脑,有一定思维能力,能够处理复杂事件。
 
*无线通讯
 
*无线通讯
**Joypad模式下采用'''[[Microduino-Module nRF/zh]]'''无线通讯方案,通讯速度响应快,控制范围:空阔地域大约50米。
+
**采用'''[[MCookie-BT/zh]]'''无线通讯方案,配合手机APP直接控制,控制范围:空阔地域大约20米。
**蓝牙模式下采用'''[[Microduino-Module BLE/zh]]'''无线通讯方案,配合手机APP直接控制,控制范围:空阔地域大约20米。
 
 
*电机控制
 
*电机控制
**采用'''[[Microduino-Shield Robot/zh]]'''上自带的一组直流电机驱动单元,一个单元能够驱动两个电机。
+
**采用'''[[MCookie-LEGOShield/zh]]'''上自带的一组直流电机驱动单元,一个单元能够驱动两个电机,电机接口兼容乐高NXT接口。
 
*供电系统
 
*供电系统
**采用'''[[Microduino-Shield Robot/zh]]'''上自带的单节锂电池管理单元,管理充放电功能。
+
**采用'''[[MCookie-LEGOShield/zh]]'''上自带的锂电池管理单元,驱动电机以及MCU。
  
 
==程序下载==
 
==程序下载==
*Cube 机器人代码:'''[https://github.com/Microduino/Robot_Microduino Robot_Microduino]'''
+
*乐高遥控小车代码:'''[xxxxx]'''
  
 
==程序烧写==
 
==程序烧写==
*'''[[Microduino-Core/zh]]'''、'''[[Microduino-USBTTL/zh]]'''堆叠在一起。
+
*用数据线连接'''[[MCookie-CoreUSB/zh]]'''准备上传程序。
**用数据线连接其中的'''[[Microduino-USBTTL/zh]]'''准备上传程序。
+
**注意:最好不要将所有模块堆叠在乐高底板之后再上传程序
**注意:最好不要将所有模块堆叠在一起之后再上传程序
 
 
*打开Arduino IDE for Microduino,环境,(搭建参考:'''[[AVR核心:Getting started/zh]]''')
 
*打开Arduino IDE for Microduino,环境,(搭建参考:'''[[AVR核心:Getting started/zh]]''')
*点击'''【工具】''',确认'''板卡(Microduino-Core)处理器(Atmega328P@16M,5V)'''选择无误,并选中对应'''端口号(COMX)'''
+
*点击'''【工具】''',确认'''板卡(Microduino/MCookie-Core USB)处理器(USB)'''选择无误,并选中对应'''端口号(COMX)'''
*点击'''【文件】'''->'''【打开】''',浏览到项目程序地址,点击'''“Robot_Microduino.ino”'''程序打开
+
*点击'''【文件】'''->'''【打开】''',浏览到项目程序地址,点击'''“LEGO_Bluetooth_Car.ino”'''程序打开
 
*几项都无误后,点击'''"→"'''按钮下载程序到开发板上
 
*几项都无误后,点击'''"→"'''按钮下载程序到开发板上
  
第179行: 第131行:
  
 
*'''Step4''':
 
*'''Step4''':
*将以下模块堆叠在'''[[Microduino-Shield Robot/zh]]'''底板上
+
*将以下模块堆叠在'''[[MCookie-LEGOShield/zh]]'''底板上
**核心模块:'''[[Microduino-Core/zh]]'''模块
+
**核心模块:'''[[MCookie-CoreUSB/zh]]'''模块
**通讯模块:
+
**通讯模块:''"[[MCookie-BT/zh]]'''模块
***Joypad模式下,通讯模块为'''[[Microduino-Module nRF/zh]]'''('''注意先安装天线''')
+
*将'''电池'''连接在'''[[MCookie-LEGOShield/zh]]'''底板的'''电池接口'''
***蓝牙模式下,通讯模块为'''[[Microduino-Module BLE/zh]]'''
+
*将两个'''NXT电机'''通过""NXT连接线""分别连在'''[[MCookie-LEGOShield/zh]]'''底板的'''电机接口S3和S4'''上
*将'''电池'''连接在'''[[Microduino-Shield Robot/zh]]'''底板的'''电池接口'''
 
*将两个'''N20减速电机'''分别连在'''[[Microduino-Shield Robot/zh]]'''底板的'''电机接口A.A/A.B'''上
 
*使用螺丝将'''[[Microduino-Shield Robot/zh]]'''底板固定在'''结构-B1'''上
 
  
 
|width="50%" valign="top" align="left"|
 
|width="50%" valign="top" align="left"|
第223行: 第172行:
  
 
==操作说明==
 
==操作说明==
*'''如果堆叠nRF模块开机,默认会进入Joypad遥控模式,否则进入蓝牙模式'''
 
 
===Joypad遥控指南===
 
*搭建过程可参考以下页面:'''[https://www.microduino.cn/wiki/index.php/Microduino-Joypad_Getting_start/zh Joypad使用指南]'''
 
 
*'''Joypad通讯模式配置'''*
 
*模式配置可参考以下页面:'''[https://www.microduino.cn/wiki/index.php/Microduino-Joypad_Getting_start/zh#.E9.80.9A.E8.AE.AF.E6.A8.A1.E5.BC.8F 通讯模式配置]'''
 
**当我们使用'''[[Microduino-Module nRF/zh]]'''作为'''通讯模块'''时,Joypad对应选择'''nRF模式'''即可
 
 
*'''Joypad电池使用说明'''*
 
*特别要注意的是电池使用说明:'''[https://www.microduino.cn/wiki/index.php/Microduino-Joypad_Getting_start/zh#Step-3_.E7.94.B5.E6.B1.A0.E9.80.9A.E7.94.B5 电池使用说明]'''
 
 
 
 
===蓝牙遥控指南===
 
===蓝牙遥控指南===
 
*首先下载蓝牙遥控APP(Android):'''[[File:MTank.rar|mTank.zip]]'''
 
*首先下载蓝牙遥控APP(Android):'''[[File:MTank.rar|mTank.zip]]'''
第241行: 第177行:
 
*搜索到名为'''“Microduino”'''的蓝牙设备进行连接
 
*搜索到名为'''“Microduino”'''的蓝牙设备进行连接
 
*接下来就可以通过APP进行遥控了
 
*接下来就可以通过APP进行遥控了
 
==代码说明==
 
*在“user_def.h”文件是我们的配置文件
 
*以下代码可以配置nRF模式下通道,需要保证和Joypad遥控器一致
 
*Joypad的nRF模式通道配置可参考:[https://www.microduino.cn/wiki/index.php/Microduino-Joypad_Getting_start/zh#nRF.E6.A8.A1.E5.BC.8F.E9.80.9A.E9.81.93.E9.85.8D.E7.BD.AE nRF模式通道配置]
 
<source lang = "cpp">
 
#define NRF_CHANNEL 70  //nRF通道
 
</source>
 
  
 
*以下代码可以配置油门和转向对应通道
 
*对应通道说明可参考:[https://www.microduino.cn/wiki/index.php/Microduino-Joypad_Getting_start/zh#Step-5_.E9.80.9A.E9.81.93.2F.E6.93.8D.E4.BD.9C.E8.AF.B4.E6.98.8E 通道/操作说明]
 
<source lang = "cpp">
 
#define CHANNEL_THROTTLE  2 //油门通道
 
#define CHANNEL_STEERING  1 //转向通道
 
</source>
 
 
 
*以下代码可以修正两轮的转速比例
 
**值得范围是-1到1之间
 
**设置成-1,是最大转速比反转
 
**设置成1,是最大转速比正转,
 
**如果小车不能走直线,应该将较慢的一边轮子的转速比例值降低
 
<source lang = "cpp">
 
#define motor_fixL 1  //速度修正 -1到1之间
 
#define motor_fixR 1  //速度修正 -1到1之间
 
</source>
 
  
 
==疑难解答/FAQ==
 
==疑难解答/FAQ==
*Q:'''CUBE小车如何选择Joypad模式和蓝牙模式?'''
 
**A:不用手动选择,如果堆叠nRF模块开机,默认会进入Joypad遥控模式,否则进入蓝牙模式。
 
  
*Q:'''CUBE小车支持哪些电池?'''
+
*Q:'''乐高蓝牙小车支持哪些电池?'''
**A:CUBE支持3.7v 1S锂电池。
+
**A:乐高蓝牙小车支持7.4v 2S锂电池。
  
*Q:'''CUBE小车的电机怎么接?'''
+
*Q:'''乐高蓝牙小车的电机怎么接?'''
**A:两个电机分别接在电机接口A.A/A.B上即可。
+
**A:两个电机分别接在电机接口S3、S4上即可(可以通过修改程序修改)。
  
 
*Q:'''我的手机支持蓝牙遥控吗?'''
 
*Q:'''我的手机支持蓝牙遥控吗?'''
第284行: 第192行:
  
 
|}
 
|}
 
 
==程序说明==
 
 
<source lang=cpp>
 
#include <mCookieLEGO.h>
 
#include <Microduino_Protocol_HardSer.h>
 
#include "Wire.h"
 
 
 
uint16_t Data[8];
 
int speedLeft = 0;
 
int speedRight = 0;
 
Protocol ProtocolB(&Serial1, TYPE_NUM);
 
mCookieLEGO m;
 
 
void setup(){
 
    Wire.begin();
 
    Serial.begin(9600);
 
   
 
    ProtocolB.begin(9600);  //9600/19200/38400
 
    m.configSensorType(mCookieLEGO::S1, mCookieLEGO::SENSOR_ULTRA);
 
    m.configConnection(0xFFFF);
 
}
 
uint8_t dis;
 
 
void loop(){
 
  int sta = ProtocolB.parse(Data, MODE_WHILE);
 
  if (sta != P_NONE) {
 
    switch (sta) {
 
      case P_FINE:
 
        speedLeft = map(Data[1], 1000, 2000, -255, 255);
 
        speedRight = speedLeft;
 
        int speedTurn = map(Data[4], 1000, 2000, -255, 255);
 
        if(speedTurn < 0){
 
          speedLeft += speedTurn;
 
        }
 
        else{
 
        speedRight -=  speedTurn;
 
        }
 
        break;
 
//      default:
 
//        break;
 
    }
 
  }
 
  refreshSpeed();
 
  delay(10);
 
}
 
 
void refreshSpeed{
 
  m.motor_setFixedDrive(mCookieLEGO::M3, speedLeft);
 
  m.motor_setFixedDrive(mCookieLEGO::M4, speedRight);
 
}
 
 
 
</source>
 

2016年4月29日 (五) 06:18的最新版本

Language English


概述

  • 项目名称:乐高蓝牙遥控小车
  • 目的:通过mCookieLEGOShield,使用mCookie控制NXT接口的电机和传感器制作一个遥控小车。
  • 也可以支持蓝牙APP遥控
  • 难度:中级
  • 耗时:5小时

材料清单

模块清单

模块 数量 功能
MCookie-CoreUSB/zh 1 核心模块
MCookie-BT/zh 1 通讯模块
MCookie-LEGOShield/zh 1 乐高驱动底板

其他材料

部件 数量 功能
NXT接口电机 2 驱动车轮
NXT连接线 2 连接电机与底板
LEGO积木结构件 若干 搭建小车结构
Micro-USB数据线 1 下载程序
7.4v锂电池 1 供电

实验原理

  • 机器人小车种类比较多,如循迹,壁障,蓝牙遥控小车,电脑鼠等,不同功能需要采用不同传感器。
  • 但是其行走控制方式基本是一样的,无非就是前后左右四个方向运动。
  • 本次我们主要使用两轮驱动的结构,通过控制两个轮子的旋转方向,实现前进后退,旋转等功能,当然还要加上辅助轮,这样才能保持平衡。
  • 该小车结构简单,主要包括三个方面:车轮、车身、控制系统。
    • 1)车轮采用两个NXT接口电机。
    • 2)车身采用乐高积木堆叠而成。
    • 3)整个控制系统包括四个部分:
  • 中央处理器
    • 采用MCookie-CoreUSB/zh作为核心,就像电脑的CPU,人的大脑,有一定思维能力,能够处理复杂事件。
  • 无线通讯
    • 采用MCookie-BT/zh无线通讯方案,配合手机APP直接控制,控制范围:空阔地域大约20米。
  • 电机控制
    • 采用MCookie-LEGOShield/zh上自带的一组直流电机驱动单元,一个单元能够驱动两个电机,电机接口兼容乐高NXT接口。
  • 供电系统

程序下载

  • 乐高遥控小车代码:[xxxxx]

程序烧写

  • 用数据线连接MCookie-CoreUSB/zh准备上传程序。
    • 注意:最好不要将所有模块堆叠在乐高底板之后再上传程序
  • 打开Arduino IDE for Microduino,环境,(搭建参考:AVR核心:Getting started/zh
  • 点击【工具】,确认板卡(Microduino/MCookie-Core USB)处理器(USB)选择无误,并选中对应端口号(COMX)
  • 点击【文件】->【打开】,浏览到项目程序地址,点击“LEGO_Bluetooth_Car.ino”程序打开
  • 几项都无误后,点击"→"按钮下载程序到开发板上

拼装过程

  • Step1:
  • 利用电机固定座将两个作为动力的N20减速电机固定在结构-A1
  • 车轮轮胎联轴器组装后与固定后的N20减速电机进行装配


  • Step2:
  • 结构-A2垂直插入结构-A1两边的凹进结构
  • 用两个结构-A4辅助轮从底部固定在结构-A3
  • 再如图示将结构-A3结构-B1从上到下依次准备好


  • Step3:
  • 结构-B2结构-C1分别用于两侧面固定


  • Step5:
  • 用两个结构-C3辅助轮从底部固定在结构-C2
  • 结构-C2拼接在正侧面


  • Step6:
  • 结构-D2拼接在后侧面,可利用天线背面贴纸将天线贴在任意位置
  • 结构-D1作为顶面盖住,安装到此完成

操作说明

蓝牙遥控指南

  • 首先下载蓝牙遥控APP(Android):mTank.zip
  • 确定手机版本号是Android 4.3以上,确定当前蓝牙功能已打开
  • 搜索到名为“Microduino”的蓝牙设备进行连接
  • 接下来就可以通过APP进行遥控了


疑难解答/FAQ

  • Q:乐高蓝牙小车支持哪些电池?
    • A:乐高蓝牙小车支持7.4v 2S锂电池。
  • Q:乐高蓝牙小车的电机怎么接?
    • A:两个电机分别接在电机接口S3、S4上即可(可以通过修改程序修改)。
  • Q:我的手机支持蓝牙遥控吗?
    • A:只要是Android 4.3以上,都可以支持。